我有自定义的bacground图像框架,没有边框,捕捉和控制如关闭,最小化和最大化。在代码中,我捕获拖动事件并根据新的鼠标坐标移动框架。
当我在任务栏下拖动框架时,我有问题。这一举动无论如何都没有阻止(但标准的窗口我不能掉进任务栏下的无法到达的区域,但我的框架我可以)。有没有办法捕捉这种情况,并防止光标在任务栏下移动? BTW我可以坚持屏幕边缘吗?
以下是拖动代码:
void MainFrame::OnMouseLeftDown(wxMouseEvent& event)
{
CaptureMouse();
wxPoint pos = ClientToScreen(event.GetPosition());
wxPoint origin = GetPosition();
int dx = pos.x - origin.x;
int dy = pos.y - origin.y;
m_PosDelta = wxPoint(dx, dy);
}
void MainFrame::OnMouseMove(wxMouseEvent& event)
{
if (event.Dragging() && event.LeftIsDown())
{
wxPoint pos = ClientToScreen(event.GetPosition());
Move(wxPoint(pos.x - m_PosDelta.x, pos.y - m_PosDelta.y));
}
}
void MainFrame::OnMouseLeftUp(wxMouseEvent& event)
{
if (HasCapture()) ReleaseMouse();
}
答案 0 :(得分:0)
您需要使用wxDisplay::GetFromPoint()
来确定当前显示的显示,然后wxDisplay::GetClientArea()
找到窗口位置的边界并进行调整,以便窗口完全适合客户区域