TOPMOST的時候在所有窗口的前面,當然也包括你的MSGBOX你只要在SetWindowPos時把placement-order handle設成HWND_TOP,而不是HWND_TOPMOST

解决方案 »

  1.   

    to nerk:
    但是这样,好象就不能达到该窗体在其他窗体之上了!
    我在VB的编译环境下运行后(HWND_TOP),但是该窗体就隐藏到了VB后面!
    不知是什么原因?
    谢谢
      

  2.   

    如果你要将某窗体放于其他窗体之前,并且用setwindowpos函数不行时,可以用VB提供的模块窗体,创建sub main过程,将你要首先显示的窗体置于初始化的第一步.不妨一试.
      

  3.   

    不会呀,msgbox会自动跑到前面去呀。是用 form.show 1才会被覆盖。
      

  4.   

    to prefix:
    你好!不知你是怎样试的,如果我采用HWND_TOPMOST的话,msgbox在后面,如果你的不是,请指教一下!谢谢
      

  5.   

    你在MSGBOX 之前
    把那个"总在最前"的窗口设为一般的窗口
    MSGBOX 之后,
    再把那个"总在最前"的窗口设为"总在最前"解决了没有?
      

  6.   

    我就是和平时一样SetWindowPos为topmost,这里msgbox就和平常一样呀。从来没遇到你说的问题。倒是有过设置为topmost后show另一个form时另一个form总会被覆盖,不过已经解决了。就是从没见过你说的这个问题。从我的经验来看,所有windows的窗口,如msgbox或common dialog等,都不会受topmost后的窗口的影响,显示时都和没有topmost一样。
      

  7.   

    to y1g1y1:
    谢谢你的关心!
    我想这样太麻烦了,每次msgbox还要更改窗体属性!
      

  8.   

    to prefix:
    谢谢!
    所以我觉得奇怪!那这样我想也就失去了窗体在最上面的意义了!
    但是我的问题还是没有解决!
    就干脆让窗体是一个一般窗体算了!
      

  9.   

    你可以编一个子程序:
    sub myMsgbox ( 参数与 msgbox 相同!)
       设那个窗口为一般窗口
       msgbox ……
       设那个窗口为顶层窗口
    end sub