C++ 防止框架进入任务栏下方

C++ 防止框架进入任务栏下方,c++,windows-7,wxwidgets,C++,Windows 7,Wxwidgets,我有一个自定义背景图像和无边框的框架,捕捉和控制像关闭,最小化和最大化。在代码中,我捕获了拖动事件,并根据新的鼠标坐标移动帧 当我在任务栏下拖动框架时,我遇到了问题。这一举动无论如何都不会阻止(但我不能将标准窗口放入任务栏下无法访问的区域,但我的框架可以)。有没有办法捕捉这种情况并防止光标在任务栏下移动?顺便说一句,我可以粘到屏幕边缘吗 以下是用于拖动的代码: void MainFrame::OnMouseLeftDown(wxMouseEvent& event) { Captu

我有一个自定义背景图像和无边框的框架,捕捉和控制像关闭,最小化和最大化。在代码中,我捕获了拖动事件,并根据新的鼠标坐标移动帧

当我在任务栏下拖动框架时,我遇到了问题。这一举动无论如何都不会阻止(但我不能将标准窗口放入任务栏下无法访问的区域,但我的框架可以)。有没有办法捕捉这种情况并防止光标在任务栏下移动?顺便说一句,我可以粘到屏幕边缘吗

以下是用于拖动的代码:

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();
}

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

谢谢!但我想让我的框架像标准窗口一样移动——我可以不受限制地向左和向右移动窗口(默认情况下,我的框架是这样工作的),我不能将光标移动到屏幕底部的任务栏上方或任务栏所在的任何位置(顶部、左侧或向右),因为窗口管理器(shell)已经在内部这样做了。因为你不使用它的大小调整代码,你必须自己做,这里没有魔法。我完全困惑了。你能改进我的原始文章中的代码以实现本机窗口行为吗?我真的很感激,因为我找不到这方面的工作代码示例,我自己也做不到