|
result:=FIcon.Handle
else
result:=FDfIcon;
end;
//托盘消息的截获,以调用相应的事件调度方法
procedure TMyTray.WndProc(var Msg: TMessage);
var p:TPoint;
begin
if (Msg.Msg=WM_TrayMsg)and(FActive) then
begin
case Msg.LParam of
WM_LBUTTONDBLCLK://左双击
begin
GetCursorPos(p);
DblClick;
MouseDown(mbLeft, KeysToShiftState(TWMMouse(Msg).Keys)+[ssDouble], P.X, P.Y);
if FRmode=LDbclick then
begin
ShowWindow(Application.Handle,SW_SHOW);
//这里很重要的一个就是恢复窗口风格,不然下次把Active设为True
//最小化后,窗口依然会往左下角飞去,而托盘图标却看不见了.
SetWindowLong(Application.Handle,GWL_EXSTYLE ,OldStyleEX);
SendMessage(Application.Handle,WM_SYSCOMMAND,SC_RESTORE,0);
SetTray(NIM_DELETE);
end;
end;
WM_RBUTTONDBLCLK://右双击
begin
GetCursorPos(P);
DblClick;
MouseDown(mbRight, KeysToShiftState(TWMMouse(Msg).Keys)+[ssDouble], P.X, P.Y);
if FRmode=RDbclick then
begin
ShowWindow(Application.Handle,SW_SHOW);
SetWindowLong(Application.Handle,GWL_EXSTYLE ,OldStyleEX);
SendMessage(Application.Handle,WM_SYSCOMMAND,SC_RESTORE,0);
SetTray(NIM_DELETE );
end;
end;
WM_MOUSEMOVE: //鼠标移动
begin
GetCursorPos(P);
MouseMove(KeysToShiftState(TWMMouse(Msg).Keys), P.X, P.Y);
end;
WM_LBUTTONDOWN: //左单击下
begin
GetCursorPos(P);
IsClickIn:=True;
MouseDown(mbLeft, KeysToShiftState(TWMMouse(Msg).Keys) + [ssLeft], P.X, P.Y);
end;
WM_LBUTTONUP: //左单击弹起
begin
GetCursorPos(P);
if IsClickIn then
begin
IsClickIn:=False;
Click;
if FRmode=LClick then
begin
ShowWindow(Application.Handle,SW_SHOW);
SetWindowLong(Application.Handle,GWL_EXSTYLE ,OldStyleEX);
SendMessage(Application.Handle,WM_SYSCOMMAND,SC_RESTORE,0);
SetTray(NIM_DELETE );
end;
&nbs 上一页 [1] [2] [3] [4] [5] [6] [7] 下一页 |