Image 按钮控件不获取/转发mouseDown/mouseUp/MouseMove消息

Image 按钮控件不获取/转发mouseDown/mouseUp/MouseMove消息,image,mfc,controls,drag,messages,Image,Mfc,Controls,Drag,Messages,我有无标题的MFC对话框。 因此,如果你拖动它,它不会移动,你需要自己小心移动。 我是这样做的: bool mbMousedown; void MyDialog::OnLButtonDown(UINT nFlags, CPoint point) { mbMousedown = true; CDialogEx::OnLButtonDown(nFlags, point); } void MyDialog::OnLButtonUp(UINT nFlags, CPoint point)

我有无标题的MFC对话框。 因此,如果你拖动它,它不会移动,你需要自己小心移动。 我是这样做的:

bool mbMousedown;
void MyDialog::OnLButtonDown(UINT nFlags, CPoint point)
{
    mbMousedown = true;
    CDialogEx::OnLButtonDown(nFlags, point);
}
void MyDialog::OnLButtonUp(UINT nFlags, CPoint point)
{
    mbMousedown = false;
    CDialogEx::OnLButtonUp(nFlags, point);
}

afx_msg LRESULT MyDialog::OnNcHitTest(CPoint point)
{
    CRect r;
    GetClientRect(&r);
    ClientToScreen(&r);
    if (r.PtInRect(point))
    {
        if (mbMousedown)
        {
            return HTCAPTION;
        }
    }
    return CDialogEx::OnNcHitTest(point);
}
它工作-当我拖动对话框时,它会移动。 但是,当我在对话框上放置button控件时(是的,我将notify设置为true),button控件只向前单击对话框中的消息,而不是mousedown/mouseup/mousemove。 它只是在类向导中没有这些处理程序。 所以,如果用户按下按钮控件内的图像并像这样拖动对话框,则不会发生任何事情,因为对话框没有从按钮控件获取任何消息

我知道我可以用activeX解决这个问题-我不想添加activeX。
我知道我可以从button box中派生并实现这一点,但实际上没有比这更简单的解决方案了:当用户使用图片控件拖动按钮时,让按钮传递通知或使对话框移动?对话框上有许多按钮控件…

禁用的控件不会拦截鼠标消息。如果希望图片控件对鼠标消息透明,请禁用control.Hi。不知道这有多大帮助。我有一个没有标题的对话。该对话框包含按钮和类似按钮的图片控件。为了简单起见,假设对话框上只有按钮。当用户试图拖动对话框时,用户很可能会点击按钮,因为它们占据了90%的对话框空间。如果我禁用按钮,用户将无法单击它们…我还编辑了问题-从图片到按钮。我甚至尝试对按钮进行子类化,并在这些子类化函数中传递mousedown/mouseup/nchitterst,我调用GetParent()->SendMessage,但我的对话框没有收到这些消息,但我不知道如何处理它们-我几乎尝试了所有方法。。。所以现在的新问题是,我确实从按钮到对话框收到通知,当鼠标在按钮上拖动时,如何使对话框移动???从NcHitTest发送HTCAPTION并不能做到这一点。。。