如何點擊「關閉」缺實現「最小化」 |
尚未結案
|
ffprince
初階會員 發表:66 回覆:62 積分:25 註冊:2003-08-16 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
補充: >點擊界面右上角的「×(關閉)」,卻實現的是最小化的功能?
type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private procedure ONSYSCOMMAND(Var Msg:TMessage);Message WM_SYSCOMMAND; public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.ONSYSCOMMAND(Var Msg:TMessage); begin { 按下關閉按鈕等於按下最小化 } Case MSg.WParam of SC_CLOSE : MSg.WParam := SC_MINIMIZE; end; inherited; end; procedure TForm1.Button1Click(Sender: TObject); begin CLOSE; {才可以關掉!} end; |
cxg
中階會員 發表:116 回覆:192 積分:76 註冊:2004-02-12 發送簡訊給我 |
unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs; type
TForm1 = class(TForm)
private
{ Private declarations }
PROCEDURE WMCLOSE(var Msg:TMessage); Message WM_CLOSE;
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm} procedure TForm1.WMCLOSE(var Msg:TMessage);
begin
APPLICATION.Minimize;
end; end.
|
cxg
中階會員 發表:116 回覆:192 積分:76 註冊:2004-02-12 發送簡訊給我 |
//重新補充一下
//先將FORM1的ICO屬性加一個ICO圖標,它將在最小化時在右下角顯示。 unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, SHELLAPI; CONST
WM_BARICON=WM_USER 200; type
TForm1 = class(TForm)
private
{ Private declarations }
PROCEDURE WMCLOSE(var Msg:TMessage); Message WM_CLOSE; procedure WMSysCommand(var LMessage: TMessage); message WM_SYSCOMMAND;
procedure WMBarIcon(var LMessage:TMessage);message WM_BARICON;
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm} procedure TForm1.WMCLOSE(var Msg:TMessage);
begin
MSG.WParam := SC_ICON;
WMSysCommand( MSG);
end; procedure TForm1.WMSysCommand(var LMessage:TMessage);
var
lpData:PNotifyIconData;
// TP: array [0..63] of AnsiChar;
begin
if LMessage.WParam = SC_ICON then
begin
//如果用户最小化窗口则将窗口 隐藏并在任务栏上添加图标
lpData := new(PNotifyIconDataA);
lpData.cbSize := 88; //SizeOf(PNotifyIconDataA);
lpData.Wnd := Form1.Handle;
lpData.hIcon := Form1.Icon.Handle;
lpData.uCallbackMessage := WM_BARICON;
lpData.uID :=0;
lpData.szTip := '我的應用程序'; lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
Shell_NotifyIcon(NIM_ADD,lpData);
dispose(lpData);
Form1.Visible := False;
end else begin
//如果是其它的SystemCommand 消息则调用系统缺省处理函数处理之。
DefWindowProc(Form1.Handle,LMessage.Msg,LMessage.WParam,LMessage.LParam);
end; end; procedure TForm1.WMBarIcon(var LMessage:TMessage);
var
lpData:PNotifyIconData;
X, Y:INTEGER;
// A, B:TAGMOUSEMOVEPOINT; , Z
begin
if (LMessage.LParam = WM_LBUTTONDOWN) then
begin
//如果用户点击任务栏图标则将图标删除并回复窗口。
lpData := new(PNotifyIconDataA);
lpData.cbSize := 88;
//SizeOf(PNotifyIconDataA);
lpData.Wnd := Form1.Handle;
lpData.hIcon := Form1.Icon.Handle;
lpData.uCallbackMessage := WM_BARICON;
lpData.uID :=0;
// lpData.szTip := 'Samples';
lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
Shell_NotifyIcon(NIM_DELETE,lpData);
dispose(lpData);
Form1.Visible := True;
END;
end; end.
|
ffprince
初階會員 發表:66 回覆:62 積分:25 註冊:2003-08-16 發送簡訊給我 |
|
jest0024
高階會員 發表:11 回覆:310 積分:224 註冊:2002-11-24 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |