我有一个对话框窗口,对应一个类型同为对话框的子窗口,现在的需求是,父窗口一直要挡在子窗口的前面,我在创建子窗口的函数中用了以下代码:
WINDOWPLACEMENT wp;
m_pChildWindow->GetWindowPlacement(&wp);
GetWindowPlacement(&wp);
wp.rcNormalPosition.top = wp.rcNormalPosition.bottom - 16;
wp.rcNormalPosition.bottom = wp.rcNormalPosition.top + 2; m_pChildWindow->SetWindowPos(this, wp.rcNormalPosition.left, wp.rcNormalPosition.top, 0, 0, SWP_NOSIZE | SWP_SHOWWINDOW | SWP_NOOWNERZORDER);当子窗口创建好后,的确被父窗口挡在后面,但当从父窗口切换到其他窗口再切换回来时,子窗口就一直挡在父窗口前面,而且再执行上面的代码也没效果。
各位朋友能否帮我解决这个问题?谢谢!!

解决方案 »

  1.   

    BOOL SetForegroundWindow(
      HWND hWnd   // handle to window to bring to foreground
    );
    ::SetForegroundWindow(m_hWnd);
    用这个试试,能否满足你的要求!
      

  2.   

    handong1978()这种办法好像不行。。
      

  3.   

    我终于把这个问题解决了,但不是修改Z-Order,而是把在上面的窗口的Rgn给了下面的窗口,由下面的窗口做一个剪切,把重叠的部分切掉,这样看上去的效果就像A窗口一直在B窗口前面了-____-~~这种办法适用于两个窗口不能移动的情况,给后来的朋友做个借鉴吧!