我想让我的MessageBox总是显示在最上面,不被别的东西遮挡,请问如何解决?谢谢!!!

解决方案 »

  1.   

    我的程序是这样的,MessageBox("ok"),我怎样用SetWindowPos?谢谢回答!!!
      

  2.   

    MessageBox已经在你当前程序的最前面了吧
      

  3.   

    SetWindowPos 
    好象要用到 放到最上面的 窗口 的 HWND,MessageBox 好象没有HWND,
    不如自己照着  MessageBox  做一个模式对话框,然后用某些事件触发,使它显出来,然后在用 SetWindowPos 带到 最上面。
      

  4.   

    补充:用FindWindow 函数可以找 有标题的 MessageBox,然后用SetWindowPos
      

  5.   

    同意penter朋友的意见。我就不多说啦
      

  6.   

    ::SetWindowPos(m_hWnd,HWND_TOPMOST,GetSystemMetrics(SM_CXSCREEN)/3,0,326,41,SWP_NOMOVE|SWP_NOSIZE);
      

  7.   

    你的问题是不是不管哪个当前窗口在上面,都要使自己的MessageBox还在它上面?设一个全局挂钩;
      

  8.   

    penter(净土):
    不好意思,偶不懂你说的全局挂钩,能讲得清楚点吗?谢谢!!!
      

  9.   

    把你调用MessageBox的窗口设置为TOPMOST就行了,MessageBox是肯定在其父窗口上面的
      

  10.   

    我打字很慢,钩子的问题,这样可说不清楚。简单来讲,Windows钩子就是在操作系统的消息机制里面的陷阱。可以用自己的代码代替系统的消息处理过程。具体的资料,建议你查一下《Windows核心编程》,或者是《程序员》2002.7~2002.8。我的意思是,任何窗口被带到前台来的时候,都应该收到WM_PAINT消息,可以在系统一级设定对WM_PAINT消息的拦截,先执行系统的代码,重画窗口,然后把你的MessageBox 带到最上面。这样,就是有窗口切换,比如你的应用程序失去焦点,放到了其他窗口的后面,MessageBox也会因为系统要处理WM_PAINT消息而在最上面。方法我认为是有MessageBox的HWND的情况下,调用SetWindowPos,不过这个函数好象有限制。不知道这样做是不是可以?