我有无标题的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);
}
它有效 - 当我拖动它移动的对话框。 但是当我在对话框上放置按钮控件时(是的,我将通知设置为true),然后按钮控制转发仅向对话框单击消息而不是mousedown / mouseup / mousemove。 它只是在类向导中没有这些处理程序。 因此,如果用户按下按钮控件内的图像并像这样拖动对话框,则没有任何反应,因为对话框没有从按钮控件中获取任何消息。
我知道我可以使用activeX解决这个问题 - 我不想添加activeX。 我知道我可以从按钮框派生出来并且这样做 - 但实际上没有最简单的解决方案来获取按钮来传递通知或者当用户使用图片控件拖动它时让我的对话框移动?我在对话框上有很多按钮控件......