//重载Form的wm_syscommand消息 procedure WMSYSCOMMAND(var Msg: TMessage); message wm_syscommandprocedure TForm1.WMSYSCOMMAND(var Msg: TMessage); begin if Msg.WParam = SC_ICON then // SC_ICON 最小 Msg.WParam := SC_ZOOM; // SC_ZOOM 最大 inherited; end; ================================================================曾经有一碗热辣辣的烧猪手面放在我面前,我没有珍惜,等到晾凉了之后才后悔莫及。
同意 Jerry529(我是衰哥我怕谁???)
谢谢 Jerry529(我是衰哥我怕谁???)
procedure winproc(var message:tmessage);override;//重载窗口过程 if message.msg=wm_minimizerd then//忘记了 //do something
procedure wmmessage(var msg:tmessage);message wm_syscommand;procedure tform1.wmmessage(var msg:tmessage); begin if msg.WParam=sc_icon then showmessage('最小化') else inherited; end;
procedure WMSYSCOMMAND(var Msg: TMessage); message wm_syscommandprocedure TForm1.WMSYSCOMMAND(var Msg: TMessage); begin if not ((Msg.WParam = SC_ICON)or(Msg.WParam = SC_Minimaze)) then // SC_ICON 最小 inherited; end
那就再加一点:procedure TForm1.FormCreate(Sender: TObject); begin deletemenu(GetSystemMenu (Application.Handle, FALSE),SC_icon,MF_BYCOMMAND ) end;
声明: procedure WMSysCommand(Var Msg:TWMSYSCOMMAND);Message WM_SYSCOMMAND;procedure WMSysCommand(Var Msg:TWMSysCommand); begin Case Msg.CmdType of SC_MINIMIZE:; else Inherited; end; end;
//再来一招 procedure DefaultHandler(var Message); override;procedure TForm1.DefaultHandler(var Message); begin if TMessage(Message).WParam = SC_ICON then begin Exit; end; inherited; end; //可以结帖了吧?!================================================================曾经有一碗热辣辣的烧猪手面放在我面前,我没有珍惜,等到晾凉了之后才后悔莫及。
我这个一定行! ======================== unit Unit1;interfaceuses 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_SHOWWINDOW) 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.
procedure WMSYSCOMMAND(var Msg: TMessage); message wm_syscommandprocedure TForm1.WMSYSCOMMAND(var Msg: TMessage);
begin
if Msg.WParam = SC_ICON then // SC_ICON 最小
Msg.WParam := SC_ZOOM; // SC_ZOOM 最大
inherited;
end;
================================================================曾经有一碗热辣辣的烧猪手面放在我面前,我没有珍惜,等到晾凉了之后才后悔莫及。
if message.msg=wm_minimizerd then//忘记了
//do something
begin
if msg.WParam=sc_icon then
showmessage('最小化')
else
inherited;
end;
消息中没有wm_minimizerd这个常量zhuxud(圣东方) :
任务栏右键菜单的最小化不会触发WM_SYSCOMMAND消息;
begin
if not ((Msg.WParam = SC_ICON)or(Msg.WParam = SC_Minimaze)) then
// SC_ICON 最小
inherited;
end
begin
deletemenu(GetSystemMenu
(Application.Handle, FALSE),SC_icon,MF_BYCOMMAND )
end;
procedure WMSysCommand(Var Msg:TWMSYSCOMMAND);Message WM_SYSCOMMAND;procedure WMSysCommand(Var Msg:TWMSysCommand);
begin
Case Msg.CmdType of
SC_MINIMIZE:;
else
Inherited;
end;
end;
procedure DefaultHandler(var Message); override;procedure TForm1.DefaultHandler(var Message);
begin
if TMessage(Message).WParam = SC_ICON then
begin
Exit;
end; inherited;
end;
//可以结帖了吧?!================================================================曾经有一碗热辣辣的烧猪手面放在我面前,我没有珍惜,等到晾凉了之后才后悔莫及。
========================
unit Unit1;interfaceuses
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_SHOWWINDOW) 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.
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
FOldProc = (FARPROC)SetWindowLong(Application->Handle,GWL_WNDPROC,long(AppWindowProc));
}
//---------------------------------------------------------------------------
//AppWindowProc
LRESULT CALLBACK AppWindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
if(uMsg == WM_SYSCOMMAND)
{
if(wParam == SC_MINIMIZE)
{
MessageBox(NULL,"You can not minimize:-).",NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING);
return 1;
}
} return CallWindowProc((FARPROC)FOldProc,hwnd,uMsg,wParam,lParam);
}
//---------------------------------------------------------------------------2、重载TForm的WndProc方法。void __fastcall TForm1::WndProc(Messages::TMessage &Message)
{
if(Message.Msg == WM_SYSCOMMAND)
{
if(Message.WParam == SC_MINIMIZE)
{
MessageBox(NULL,"You can not minimize MainWnd:-).",NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING);
return;
}
} TForm::WndProc(Message);
}
//---------------------------------------------------------------------------你要是还能最小化,我倒贴分给你:-)