如何实现子窗口中按下鼠标移动,就和按下父窗口标题一样让整个父窗口移动

解决方案 »

  1.   

    就是如何欺骗windows 让它认为子窗口是父窗口的标题
      

  2.   

    在OnMove消息里通过MoveWindow移动父窗口
      

  3.   

    鼠标拖动子窗口时候
    给父窗口发送消息SendMessage,父窗口句柄,WM_NCLBUTTDOWN,HTCAPTION,NULL
      

  4.   


    谢谢 已经实现了不过是放在OnMoving里,因为父窗口也调用MoveWindow调整子窗口的位置过,MoveWindow的时候回触发消息OnMove无法实现应该是在子窗口的OnNcLButtonDown里发送SendMessage,父窗口句柄,WM_NCLBUTTDOWN,HTCAPTION,NULL这个消息吧
    但是鼠标移动的时候发送什么消息给父窗口通知他移动位置呢
      

  5.   


    刚才有试了一下
    当子窗口是Child 类型时和标题还是有差距的 :子窗口的移动范围太窄了,而父窗口标题可以到处移动
      

  6.   

    http://download.csdn.net/detail/korekara88730/3699848
    LZ要的是这个效果么
      

  7.   

    实现ON_WM_NCHITTEST()这个消息LRESULT CDriverUpdatesDlg::OnNcHitTest(CPoint point)
    {
    CPoint tempPoint(point);
    CRect topRect;

    ScreenToClient(&tempPoint);
            GetClientRect(&topRect);
            //这里+30表示 窗口上30的高度
    topRect.bottom = topRect.top + 30;
    if (topRect.PtInRect(tempPoint))
    {
    return HTCAPTION;
    } return CDialog::OnNcHitTest(point);
    }
    代码如上
      

  8.   


    处理子窗口的WM_LBUTTONDOWN
    这个事件里,给父窗口发送消息
    SendMessage(hWinMain,WM_NCBUTTONDOW,HTCAPTION,0)我用汇编作的,WIN32  SDK,MFC不会用
    .elseif eax==WM_LBUTTONDOWN && ecx==hWinSub
    invoke SendMessage,hWinMain,WM_NCLBUTTONDOWN,HTCAPTION,0
      

  9.   


    不是在子窗口的 WM_NCLBUTTONDOWN,
    是在子窗口的 WM_LBUTTONDOWN ,给父窗口发送 消息你给父窗口发送WM_NCLBUTTONDOWN ,相当于欺骗WINDOWS,说你点的时 父窗口的标题,
    至于坐标和移动的细节,LZ不必理会,WINDOWS给你做好了
      

  10.   

    非常感谢korekara88730 效果已经实现