我的程序有个提醒功能,但每次出现提醒窗口时,只能让提醒窗口在应用程序中始终在最上面。如果运行了其它的程序,如excels等,提醒窗口就不能显示在其它程序之上了。
怎么解决?
(我的提醒窗口属性已设为fsStayOnTop)

解决方案 »

  1.   

    public
      procedure CreateParams(var Params: TCreateParams); override; //在你的窗体中重载
        { Public declarations }
      end;procedure Tform1.CreateParams(var Params: TCreateParams);
    begin
      inherited;
      Params.EXStyle := Params.ExStyle or WS_EX_TOOLWINDOW;
      Params.WndParent := GetDesktopWindow; // 重新定义Parent对象句柄,看你的需要了。
    end;
      

  2.   


    SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE)
      

  3.   

    直接在窗口的OnCreate中加上这句就可以了。
      

  4.   

    SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE)
    肯定是不行的
    public
      procedure CreateParams(var Params: TCreateParams); override; //在你的窗体中重载
        { Public declarations }
      end;procedure Tform1.CreateParams(var Params: TCreateParams);
    begin
      inherited;
      Params.EXStyle := Params.ExStyle or WS_EX_TOOLWINDOW;
      Params.WndParent := GetDesktopWindow; // 重新定义Parent对象句柄,看你的需要了。
    end;
    这个是可以的
    试过了的
    不过,
    这是从网上找来的,不知道是谁写的了
      

  5.   

    to: insert2003(高级打字员) 
    你说的对,Dlwxn(流云)的方法没作用。
    你用的不是MDI,是弹出式窗口,你上面的过程在什么时候调用?在窗体创建时?
    还有“重新定义Parent对象句柄,看你的需要了。”这是什么?请说说再次谢谢大家。
      

  6.   

    晕了,这不是很简单吗
    formstyle属性设置成fsStayOnTop
    position设置成poDesktopCenter
      

  7.   

    to:ADWARDS00(大拇指) 
    你说的是在程序当中还行,可是有其它程序时,它就会躲在后面了。
    我说的是像QQ那样,不管有什么程序窗口,它始络在最上面!
      

  8.   

    你用的不是MDI,是弹出式窗口,你上面的过程在什么时候调用?在窗体创建时?
    还有“重新定义Parent对象句柄,看你的需要了。”这是什么?请说说比如说你要弹出的窗口为Form2,
    unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TForm2 = class(TForm)
      private
        { Private declarations }
      public
        procedure CreateParams(var Params: TCreateParams); override;
        { Public declarations }
      end;var
      Form2: TForm2;implementation{$R *.dfm}
    procedure Tform2.CreateParams(var Params: TCreateParams);
    begin
      inherited;
      Params.EXStyle := Params.ExStyle or WS_EX_TOOLWINDOW;
      Params.WndParent := GetDesktopWindow; // 重新定义Parent对象句柄,看你的需要了。
    end;end.不需调用。“重新定义Parent对象句柄,看你的需要了。”
    这不用去管。
      

  9.   

    是啊,我刚才试过了,放了一个TIMER控件,每隔1秒钟显示FORM2,FORM2的属性就如我说的那样设置,然后我开了WORD,浏览器等窗口在它前面,等时间一到FORM2就跳到最前面来了,你试了没?