程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 怎樣建立簡單的任務欄應用程序(2)

怎樣建立簡單的任務欄應用程序(2)

編輯:Delphi

這個窗口使用普通的窗口函數創建。注意這個窗口的類型是“ws_OverlappedWindow”,但是這個尺寸是0,並且它是隱藏的,所有,它將不會顯示出來。

下一步是加(注冊)我們的圖標。這將需要使用Shell_NotifyIcon這個API函數,這個函數實際上可以完成三個功能,這裡只需要它的增加的特性。

Procedure AddTrayIcon;
Var IconData : TNotifyIconData;
B n
With IconData do Begin
cbSize := SizeOf(IconData);
Wnd := MainWindow;
uID := 0;
uFlags := nif_Icon Or nif_Message Or nif_Tip;
uCallBackMessage := wm_MyCallBack;
hIcon := LoadIcon(hInstance,MYICON);
StrCopy(szTip,PChar(TrayIconTip));
End;
Shell_NotifyIcon(nim_Add,@IconData);
End;

這個最重要的事情是TNotifyIconData的數據結構,它是一個設置Window句柄的數據結構,是一個記錄參數,對我們來說,我們需要設置這個圖標的窗口句柄(這將定義哪個窗口處理消息循環),回調消息號,圖標,工具提示等。一旦這個數據設置了,我們就可以增加一個圖標到任務欄上了。為了完成這個工作,使用nim_Add程序。

現行我們已經加了我們的圖標到任務欄,下面需要決定如何處理消息。

Const
wm_MyCallback = wm_User+1000;
cm_Exit = 100; { we worry about... }
cm_About = 101; { ...these later }

這個實際的窗口處理過程也是相當普通。幾個窗口消息(如wm_NCCreate)必須處理。然而,對我們來說,更重要的事情是處理wm_MyCallback和wm_Command消息:

Function WndProc(Window : hWnd; Msg,WParam,LParam : Integer): Integer; StdCall;
Begin
Result := 0;
Case Msg of
wm_NCCreate : Result := 1;
wm_Destroy : PostQuitMessage(0);
wm_Command : Begin { a command was chosen from the popup menu }
If (WParam = cm_Exit) Then
PostMessage(Window,wm_Destroy,0,0)
Else If (WParam = cm_About) Then
MessageBox(0,Shell Test Copyright ?+
Jani J?vinen 1996.,
About Shell Test,mb_OK)
Else OpenDesktopIcon(WParam-cm_About);
End;
wm_MyCallback : Begin { our icon was clicked }
If (LParam = wm_LButtonDown) Then
ShowIconPopupMenu
Else If (LParam = wm_RButtonDown) Then
ShowAboutPopupMenu;
End;
Else Result := DefWindowProc(Window,Msg,WParam,LParam);
End;
End;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved