[MFC]Dialog上的控件MoveWindow时会触发主窗体的WM_MOUSEMOVE

来源:互联网 发布:硕士论文一个数据造假 编辑:程序博客网 时间:2024/05/05 04:23

在Timer中让Button控件一段时间调用一次MoveWindow;

BOOL CmfctestDlg::OnInitDialog(){    SetTimer(0, 1000, nullptr);    return TRUE;  // return TRUE  unless you set the focus to a control}
void CmfctestDlg::OnTimer(UINT_PTR nIDEvent){    // Get control size.    CRect rt;    GetDlgItem(IDC_BUTTON1)->GetClientRect(rt);    static int y = 0;    GetDlgItem(IDC_BUTTON1)->MoveWindow(0, ++y, rt.Width(), rt.Height());    CDialogEx::OnTimer(nIDEvent);}

在主窗体的OnMouseMove中打印鼠标位置及调用次数;
void CmfctestDlg::OnMouseMove(UINT nFlags, CPoint point){    static int i = 0;    TRACE(_T("OnMouseMove, %d, %d, %d\n"), point.x, point.y, ++i);    CDialogEx::OnMouseMove(nFlags, point);}


        运行程序并将鼠标放于窗体上除Button控件的其他位置;打印结果显示每执行一次Button的MoveWindow都会触发一次主窗体的ON_MOUSEMOVE。
        将MoveWindow换成GetDlgItem(IDC_BUTTON1)->SetWindowPos(nullptr, 0, ++y, rt.Width(), rt.Height(), SWP_NOACTIVATE);也不行。
原创粉丝点击