那位仁兄知道如何使窗体一直保持在最上?(0分)

  • 主题发起人 主题发起人 delphifiend
  • 开始时间 开始时间
D

delphifiend

Unregistered / Unconfirmed
GUEST, unregistred user!
那位仁兄知道如何使窗体一直保持在最上?
 
改窗体属性formstyle:fsStayOnTop(记不清了)
 
你可以设FormStyle :=fsStayOnTop
还可如下,以下是C++的代码,你就将就着看吧。
你一分都不给,我也没有时间给你改了:)
你自己用delphi改装一下吧。

主要是重载Form的虚拟函数CreateParams,
改变TCreateParams的成员WndParent就可以了。
class TForm2 : public TForm
{
__published: // IDE-managed Components
private: // User declarations
protected:
virtual void __fastcall CreateParams(TCreateParams & Param);
public: // User declarations
__fastcall TForm2(TComponent* Owner);
};
void __fastcall TForm2::CreateParams(TCreateParams & Param)
{
//调用基类的函数
TForm::CreateParams(Param);
Param.ExStyle ¦= WS_EX_TOPMOST;
//这儿最关键的是只要Param.WndParent不是Application- >Handle就可以了,
//不一定非要用GetDesktopWindow(),用其它的窗口也可以。
Param.WndParent = GetDesktopWindow();
}
 
两种方法:
1,在IDE里改窗口属性,正如D影子D所说;
2,用API函数SetWindowPos,其中有一参数HWND_TOPMOST即你要的效果,具体看帮助!
 
重载CreateParams。你把这段代码抄过去看看。
private
procedure CreateParams(var Params: TCreateParams); override;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
self.Top := 5;
self.Left := Screen.Width - self.Width - 5;
SetForegroundWindow(form1.Handle);
BringWindowToTop(form1.Handle);
end;
 
非常感谢!
 
后退
顶部