rt,这么实现子窗口随父窗口的移动而移动??求详细解答

解决方案 »

  1.   

    1、用变量保存你的子窗口相对主窗口的偏移
    2、在主窗口的OnMove里得到主窗口现在的位置,然后使用上面的偏移量计算子窗口的坐标,然后用MoveWindow移动子窗口
      

  2.   


    void CParentWnd::OnMove(int x, int y)
    {
    CDialog::OnMove(x, y); if(NULL == m_pChileWnd)
    return; CRect rcClient;
    GetClientRect(rcClient);
    ClientToScreen(rcClient); m_pChileWnd->MoveWindow(rcClient);
    m_pChileWnd->ShowWindow(SW_SHOW);
    }
    子窗口始终覆盖父窗口,并随这父窗口的移动而移动
      

  3.   

    在父窗口中通过子窗口的句柄进行移动啊,用MoveWindow也好还是发消息都可以
      

  4.   

    子窗口使用cstatic,cbotten等等控件,父窗口用cdialog.
      

  5.   

    通常情况下,子窗口都会自动随父窗口移动,MS已经是做好的.比如各种控件,都是一个子窗口,还有如child类型的tab属性页等.
    如果都不是,那应该属于窗口联动了,那就要想办法主动通知了.
      

  6.   

    楼主说的肯定是在父窗口外的子窗口,象这样的移动要做到同步应该用DeferWindowPos来同时移动多个窗口
      

  7.   

    如果是child,不可能跑到父窗口外面么?
      

  8.   

    跑到外面,最多是owner窗口。没有父子关系。包括toolbar窗口、popup窗口等。
      

  9.   

    popup实际上就可以成为这样的子窗口,用的GetParent()访问父窗口,父窗口消失它也消失,显示隐藏都和父窗口同步,这就可以看作父子关系。