这种方法不好,窗口要处理的鼠标消息总会有不一样的时候
另外“所有”时什么概念呢?比如WM_MOUSEMOVE消息,它还有鼠标位置的参数,你送给

解决方案 »

  1.   

    (SORRY)
    你送给其它窗口对窗口的移动也没有意义啊
    请问你使用这种方法实现了吗?if yes,请说得详细一些
      

  2.   

    不会吧?在movewindow的时候调用别的窗口的moveWindow函数不行?我试过好象不会分离吧,你还作了什么操作?
      

  3.   

    “在movewindow的时候调用别的窗口的moveWindow函数”
    这种简单的方法快速移动时会有窗口分离的现象
    BTW:我的几个窗口没有parent-child关系
    想想看:如果是父窗口移动时,子窗口的移动不会有分离的现象,可能是SetRedraw(FALSE)然后再SetRedraw(TRUE)?但是没有成功
      

  4.   

    50分少了点儿………………我还是收下了,呵呵……………………
    首先,你建立你的一个窗口的WM_MOVING消息的影射函数:void CDlg1::OnMoving(UINT fwSide, LPRECT pRect) 
    {     MoveWindow(pRect);    CRect rc2;
        pDlg2->GetWindowRect(&rc2);    //让对话框2在1的右边
        pDlg2->MoveWindow(pRect->right,pRect->top,rc2.Width(),rc2.Height());    pDlg3->GetWindowRect(&rc2);    //让对话框3在1的下边
        pDlg3->MoveWindow(pRect->left,pRect->bottom,rc2.Width(),rc2.Height()); 
    }好了,你可以给分了:)
      

  5.   

    注意,上面的消息是WM_MOVING一般窗口移动的历程是:WM_MOVING -> WM_MOVING ->WM_MOVING ->WM_MOVEWM_MOVE是代表窗口已经结束移动,这个时候你再Move别的Window自然会让窗口们出现分离。
      

  6.   

    我试验了OnMoving,但是效果还是不好
    我把问题再说得清楚一些,我现在是想作一个类似Windows MediaPlayer
    界面的东西,所以窗口是不规则的,而且我用了三个窗口来实现类似抽屉的打开/关闭窗口功能,结果在移动窗口时窗口会分离
    OnMoving的方法好像对普通窗口看不出问题,是不是不规则的窗口(还有背景贴图)移动时更新的时间太多?请各位给出更好的答复!
      

  7.   

    ok
    现在已经解决啦!
    同时移动多个窗口,请使用DeferWindowPos() !
    达到了完美的效果,其实MFC中就是这么做的,大家可以看CWnd的源代码,到wincore.cpp中查找即可
    为了答谢各位回复朋友的支持,加一半分如何?