我想请教一下各位大虾,如何使MessageBox弹出的对话框永远是在窗体的最上层,无论当前窗体是否和Application有关,我用的是
MessageBox(GetActiveWindow, 'aa', 'aa', MB_OK or MB_ICONINFORMATION);
    但是很多时候 MessageBox还是不在最上层只是在工具栏里面出来一个标题而已各位有什么办法能让自己应用程序的MessageBox永远是在窗体的最上层

解决方案 »

  1.   

    可以自己定义一个MESSAGEBOX窗体,然后SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width,Height,SWP_SHOWWINDOW);
    就搞定
      

  2.   

    自己写一个form,设置windowstate为Always on top
    showmodal就是了
    既然不能,就自己来吗,呵呵
      

  3.   

    将你的窗体的FormStyle属性设为fsStayOnTop;
    弹出的messagebox自然在最上面了
      

  4.   

    MessageBox(Getforegroundwindow, 'aa', 'aa', MB_OK or MB_ICONINFORMATION);
    不过要慎用,特别是调试的时候,一定要跳过他,不能调试,否则delphi死掉,因为他是必须响应的,delphi的窗口会呼不出来。
      

  5.   

    这样就可以了:MessageBox(0, '总在最前', '提示', MB_ICONINFORMATION + MB_SYSTEMMODAL + MB_OK);
      

  6.   

    form1为对话框procedure CreateParams(Var Params:TCreateParams);override;procedure TForm1.CreateParams(var Params: TCreateParams);
    begin
      inherited;
      With Params do
        begin
        wndParent:=GetDesktopwindow;
        ExStyle:=ExStyle or WS_EX_TOPMOST;
      end;
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Form2.show;
      ShowWindow(Application.handle,sw_show);
    end;form2为主窗体
    procedure TForm2.Button1Click(Sender: TObject);
    begin
      with tform1.create(self) do show;
       hide; 
       ShowWindow(Application.handle,sw_hide); 
    end;
    ok...
      

  7.   

    设置了messagebox的handle为'0'表示为桌面为父句柄
    任何时候都可以在最前面了
      

  8.   

    MessageBox(handle, 'aa', 'aa', MB_OK or MB_ICONINFORMATION);
    即可
      

  9.   

    使MessageBox弹出的对话框永远是在窗体的最上层:
      with Application do
      begin
        NormalizeTopMosts;
        MessageBox('This should be on top.', 'Look', [smbOK]);
        RestoreTopMosts;
      end;
      

  10.   

    MessageBox(0, '内容, '提示', MB_ICONINFORMATION + MB_SYSTEMMODAL + MB_OK);