怎么样将窗口固定在屏幕中间?

scarletg 2002-08-31 11:48:38
就是固定住,不可以被拉动
怎么设置?
...全文
315 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wyvern2000 2002-08-31
  • 打赏
  • 举报
回复
form: none;
position: ScreenCenter;
象Delphi的启动窗口。
再想个办法可以关闭就行了。
liuren2001 2002-08-31
  • 打赏
  • 举报
回复
你可以看看你的显示器的分辨率是多少

然后要用窗体的属性,把分辨率除2然后赋给相应的属性
blueeagle007 2002-08-31
  • 打赏
  • 举报
回复
没有标题栏,可以用panel来做一个
position设为screen center. 即可实现
Dephiuser 2002-08-31
  • 打赏
  • 举报
回复
设定form属性none;
from position 屏幕中心
myok 2002-08-31
  • 打赏
  • 举报
回复
同意talisman的!
scarletg 2002-08-31
  • 打赏
  • 举报
回复
sigh,知道有这样的小程序,但是因为东西都做好了
所以现在如果编程就很麻烦了,要不然,当初可以编号一个做继承就可以了
talisman 2002-08-31
  • 打赏
  • 举报
回复
呵呵,截获windows消息,当点击标题栏时,给windows消息点击的是内容区信息,很多书上都有这样的小例子
dafeifei 2002-08-31
  • 打赏
  • 举报
回复
把窗口设置成无标题栏的,然后再自己做一个标题栏和关闭按钮.
个人觉得用 panel 就能做出很好的效果
chunfly 2002-08-31
  • 打赏
  • 举报
回复
application.creatform(TfrmTest,frmTest);
frmTest.position := poScreenCenter;
frmTest.showmodal;
scarletg 2002-08-31
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
bwinstat:boolean;
procedure WMwindowposchanging(var msg:twmwindowposchanging);
message wm_windowposchanging;
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
const
uflag = SWP_NOMOVE ;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
bwinstat:=true;
end;
procedure TForm1.WMwindowposchanging(var msg:twmwindowposchanging);
begin
inherited;
msg.WindowPos.x:=188;
msg.WindowPos.y:=122;
if bwinstat then
msg.windowpos^.flags:=msg.windowpos.flags or SWP_NOMOVE;
end;

end.


我用的是一上的程序
后果就是msg.WindowPos.x:=188;
msg.WindowPos.y:=122;
这两个值不知道怎么取好,就是保证在屏幕中间


hjd_cw() 你的程序只能固定死了,无法最大最小,也无法关闭阿
hjd_cw 2002-08-31
  • 打赏
  • 举报
回复
屏蔽 WM_HITTEST消息,就可以了!
=======================================
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure SubClassWndProc(var Message: TMessage);
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation

{$R *.DFM}
procedure Tform1.SubClassWndProc(var Message: TMessage);

begin
if (message.Msg = WM_NCHITTEST) then
MESSAGE.Result := 1

else
form1.WndProc(Message);

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
WindowProc := SubClassWndProc;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
application.Terminate;
end;

end.
scarletg 2002-08-31
  • 打赏
  • 举报
回复
我用了twmwindowposchanging来做,
但是糟糕的是,我只能用固定x,y,来确定在屏幕中间了
怎么样才能确定在屏幕中间呢?
因为用了msg后,原来摄制的screencenter的属性就不认了

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧