防止框架进入任务栏

时间:2015-01-05 06:11:34

标签: c++ windows-7 wxwidgets

我有自定义的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();
}

1 个答案:

答案 0 :(得分:0)

您需要使用wxDisplay::GetFromPoint()来确定当前显示的显示,然后wxDisplay::GetClientArea()找到窗口位置的边界并进行调整,以便窗口完全适合客户区域