弹出一个窗口,会跑到最底下去,调用时想把它放在最前面。我试过了,不是用SetWindowPos,会一直置顶请问我应该如何操作?

解决方案 »

  1.   

    BOOL SetForegroundWindow(HWND hWnd);
      

  2.   

    SetWindowPos只是设置窗口的焦点,它没有对窗口控制的动作,所以不能置前!  
      

  3.   

    SetActiveWindow + SetForegroundWindow
      

  4.   

    1.SetWindowPos 先置顶,然后马上取消掉置顶
    2.SetForegroundWindow
    保持关注...
      

  5.   

    直接用这一个函数SetForegroundWindow
      

  6.   

    永远在顶的窗口:::SetWindowPos( yourWndHandle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOREPOSITION );
      

  7.   

    要想确保自己的界面在最前面,必须保证置顶,但这个问题你可以换个思路:
    在弹出时,设置该窗口置顶,但加载OnKillFocus这个消息函数处理。当其他窗口弹出时,会触发当前窗口失去焦点的消息,进入OnKillFocus,在这个消息函数里做一个当前窗口的隐藏处理。
      

  8.   

    BOOL WINAPI SetForegroundWindow(
      __in  HWND hWnd
    );
    应该就是这个函数。
      

  9.   

    应该这个SetActiveWindow 就可以实现LZ的目的了
      

  10.   

    没遇过!
    前一个ShowWindow(SW_HIDE);
    后一个MoveWindow
    ShowWindow(SW_SHOW)
      

  11.   

    你是想让你的程序弹出的子对话框一直在你程序的最前面??
    这样建立个模式对话框试试。
    如果是想让程序一直在桌面窗口的最前面 就用
    ::SetWindowPos( yourWndHandle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOREPOSITION )