鼠标在应用程序的标题栏上双击,应用程序就最大化了,这是发生的是什么事件?

lemon_wei 2003-10-18 06:06:05
如题:
  鼠标在应用程序的标题栏上双击,应用程序就最大化了,这时发生的是什么事件?
  因为程序最大化时要重新计算控件的位置,所以我截获消息,当是最大化时,控件的位置就变化。但是当鼠标在应用程序的标题栏上双击时,窗体也可以最大化,但是控件的位置确没有改变,我用showmessage(inttostr(msg.wparam));发现发出了一个值为61458的消息,于是我用: 
  if msg.WParam=61458 then 执行控件位置改变函数;
但是控件也没改变。
...全文
108 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
lemon_wei 2003-10-20
  • 打赏
  • 举报
回复
多谢各位,问题解决了
方法如下:
procedure tform1.ghyghost_msg(var msg:tWMNCLBUTTONDBLCLK);
begin

发一个最大化消息;

end;
cpilq 2003-10-19
  • 打赏
  • 举报
回复
TWMNCLButtonDblClk 这个吧!
nyf1220 2003-10-19
  • 打赏
  • 举报
回复
楼上晕了?
sixgj 2003-10-19
  • 打赏
  • 举报
回复
呵呵。直接设置成固定大小的窗体,不要别人调整大小!
youcheng1 2003-10-19
  • 打赏
  • 举报
回复
不用这么复杂吧,设置panel的Anchors里的4个属性就可以了,而且每个控件都有Anchors属性的,试试调整4个值为true或其中的几个为true。
  • 打赏
  • 举报
回复
呵呵:)

pankun 2003-10-19
  • 打赏
  • 举报
回复
呵呵,乱改名字是侵犯了公民的基本权利!!!
  • 打赏
  • 举报
回复
参考
“贱神一笑”高手的设计思路. ^_^

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Memo1: TMemo;
private
procedure ghyghost_msg(var msg:tWMNCLBUTTONDBLCLK);message WM_NCLBUTTONDBLCLK; { Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure tform1.ghyghost_msg(var msg:tWMNCLBUTTONDBLCLK);
begin
showmessage('');
inherited;
end;

end.
pankun 2003-10-19
  • 打赏
  • 举报
回复
要不你就拦
WM_NCLBUTTONDBLCLK吧,这是鼠标在标题栏上双击的事件.
  • 打赏
  • 举报
回复
unit Unit1;

interface

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

type
TForm1 = class(TForm)
private
procedure wmsize(var msg:tmessage);message wm_size;{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
procedure tform1.wmsize(var msg:tmessage);
begin
showmessage('');
end;


end.

试试
lemon_wei 2003-10-19
  • 打赏
  • 举报
回复
可能的两位没有明的我的意思,程序如下:
procedure TFrmMain.WMSysCommand(var msg: TMessage);
begin
//showmessage(inttostr(msg.wparam))
if (msg.WParam=SC_MAXIMIZE) then
begin
Inherited;
FrmMax(panel2,panel5);//最大化时调整位置的函数
exit;
end;
if (msg.WParam=SC_RESTORE) then
begin
Inherited;
   FrmNormal(ftop1,fleft1,panel5);//Normal时调整位置的函数
exit;
end;

Inherited;
end;

现在点标题栏上的最大化及还原按钮位置都可以调整,查是如果你是用鼠标在应用程序的标题栏上双击,窗体也最大化了,但这时位置确没有调整,有什么办法可以让位置在这种情况下也调整?
楼上的几位除了“三波萝”,其它的人的办法都试过了,还是不行。“三波萝”的方法我还不会用,可不可说详细点? “晓松”的方法我也试了,由于我的窗体上有多个PageControl,所以也不行,只有一个时是可以的。
  盼高手指点!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
PengHanxin 2003-10-19
  • 打赏
  • 举报
回复
pankun(剑神一笑 ^_^) 说的对头的
pankun 2003-10-19
  • 打赏
  • 举报
回复
最大化是WM_SYSCOMMAND消息,wParam为SC_MAXIMIZE (or SC_ZOOM)
saien 2003-10-18
  • 打赏
  • 举报
回复
试试 WM_SIZE
karach 2003-10-18
  • 打赏
  • 举报
回复
DblClick不可以吗?
hwyang80 2003-10-18
  • 打赏
  • 举报
回复
试试'WM_GETMINMAXINFO'
frogshero 2003-10-18
  • 打赏
  • 举报
回复
TWMNCLButtonDblClk
youcheng1 2003-10-18
  • 打赏
  • 举报
回复
OnResize事件吧

5,388

社区成员

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

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