亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? delphi中任務欄狀態區的編程 (2001年3月17日).txt

?? 自己對DELPHI學習的一點體會
?? TXT
字號:
Delphi中任務欄狀態區的編程 (2001年3月17日) 

網友更新  分類:雜類   作者:劉明華   推薦:steven9dong   閱讀次數:297  
(http://www.codesky.net)  

--------------------------------------------------------------------------------
  在Windows桌面的任務欄上有一個凹陷的區域,其中顯示著系統時鐘以及一些圖標,這個長方形的區域便是Windows的任務欄狀態區(taskbar status area)。本文將介紹使用Borland Delphi進行任務欄狀態區的編程,即怎樣將應用程序的圖標顯示在任務欄狀態區中。 

---- 實現原理 

---- 任務欄狀態區的圖標添加、刪除、以及修改是通過Windows API函數Shell_NotifyIcon來實現的,該函數是由Windows的SHELL32.DLL動態聯接庫提供的。在Delphi中,Shell_NotifyIcon函數是在ShellAPI單元聲明的,其 

---- 函數原型如下: 

---- function Shell_NotifyIcon(dwMessage: DWORD; lpData: PNotifyIconData): BOOL; stdcall; 

---- 其中參數dwMessage的取值決定函數Shell_NotifyIcon所要進行的操作的類型,它的取值可以是以下三者之一: 

---- NIM_ADD(值為0):在任務欄狀態區插入一個圖標。 

---- NIM_DELETE(值為1):從任務欄狀態區刪除一個圖標。 

---- NIM_MODIFY(值為2):修改任務欄狀態區的圖標、提示信息、或者通知消息。 

---- 參數lpData 是一個記錄類型(結構類型)的指針,記錄類型NotifyIconData的定義如下: 

NOTIFYICONDATA = record 
cbSize: DWORD; 
Wnd: HWND; 
uID: UINT; 
uFlags: UINT; 
uCallbackMessage: UINT; 
hIcon: HICON; 
szTip: array [0..63] of AnsiChar; 
end; 

---- cbSize:NOTIFYICONDATA記錄的大小。 
---- Wnd:與此狀態區圖標相關聯的窗口句柄,此窗口將負責處理uCallbackMessage消息。 

---- uID:程序自定義的狀態區圖標的標識符。 

---- uFlags:這個字段指明NOTIFYICONDATA記錄中的成員uCallbackMessage、hIcon和szTip這三者的哪些項的值有效。它的取值可以是下列三者的組合(or運算): 

---- NIF_MESSAGE (值為1):uCallbackMessage項包含了有效的信息。 

---- NIF_ICON(值為2):hIcon項包含了有效的信息。 

---- NIF_TIP(值為4): szTip項包含了有效的信息。 

---- uCallbackMessage:程序定義的消息標識符(32位的整數)。當鼠標在狀態區圖標上移動或者點擊(即,發生了鼠標事件)時,操作系統將向Wnd指定的那個窗口發送uCallbackMessage消息。在uCallbackMessage消息中,lParam參數包含了Windows的鼠標消息的類型,而wParam參數則包含了圖標標識(即uID)。有效的鼠標消息包括以下幾個:WM_LBUTTONDOWN、WM_RBUTTONDOWN、WM_MBUTTONDOWN、WM_LBUTTONUP、WM_RBUTTONUP、WM_MBUTTONUP、WM_MOUSEMOVE、WM_LBUTTONDBLCLK、WM_RBUTTONDBLCLK以及WM_MBUTTONDBLCLK。 

---- hIcon:指定一個圖標句柄。 

---- szTip:顯示在圖標上的提示信息(少于63個字符)。 

---- Delphi中的實現 

---- 通過上面的介紹中,我們不難看出,任務欄狀態區的編程主要是處理兩方面的工作:添加、刪除、修改圖標;以及處理通知消息。對于圖標的添加、刪除、修改操作,可以通過調用Shell_NotifyIcon函數來實現。而對于自定義的通知消息,我們就應該在消息循環中給予處理了。 

---- 下面的示例給出了狀態區圖標的添加、修改和刪除操作的例子,以及圖標的通知消息的基本處理框架。 

unit Unit1; 

interface 

uses 
Windows, Messages, SysUtils, Classes, Graphics, 
Controls, Forms, Dialogs, ExtCtrls, ShellAPI; 

const 
WM_TRAYNOTIFY=WM_USER+1;//定義通知消息 

type 
TForm1 = class(TForm) 
Timer1: TTimer; 
procedure FormCreate(Sender: TObject); 
procedure Timer1Timer(Sender: TObject); 
procedure FormDestroy(Sender: TObject); 
private 
{ Private declarations } 
public 
{ Public declarations } 
procedure WndProc(var Msg: TMessage); override; 
end; 

var 
Form1: TForm1; 
nd0, nd1:NotifyIconData; 
hs:array[0..9]of LongWord; 

implementation 
{$R *.DFM} 

procedure TForm1.FormCreate(Sender: TObject); 
begin 
//加載Icon0..Icon9這10個圖標資源, 
并且保存它們的句柄。 
//圖標Icon0..Icon9分別對應與0..9這9個數字。 
hs[0]:=LoadIcon(hInstance, 'Icon0'); 
hs[1]:=LoadIcon(hInstance, 'Icon1'); 
hs[2]:=LoadIcon(hInstance, 'Icon2'); 
hs[3]:=LoadIcon(hInstance, 'Icon3'); 
hs[4]:=LoadIcon(hInstance, 'Icon4'); 
hs[5]:=LoadIcon(hInstance, 'Icon5'); 
hs[6]:=LoadIcon(hInstance, 'Icon6'); 
hs[7]:=LoadIcon(hInstance, 'Icon7'); 
hs[8]:=LoadIcon(hInstance, 'Icon8'); 
hs[9]:=LoadIcon(hInstance, 'Icon9'); 

//填充NotifyIconData記錄型變量nd0 
nd0.cbSize := sizeof(NotifyIconData); 
nd0.Wnd := handle; 
nd0.uID := 0; 
nd0.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP; 
nd0.uCallbackMessage := WM_TRAYNOTIFY; 
nd0.hIcon := hs[0]; 
StrPLCopy(nd0.szTip, 'Hello, World!', 63); 

//填充NotifyIconData記錄型變量nd1 
nd1.cbSize := sizeof(NotifyIconData); 
nd1.Wnd := handle; 
nd1.uID := 1; 
nd1.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP; 
nd1.uCallbackMessage := WM_TRAYNOTIFY; 
nd1.hIcon := hs[0]; 
StrPLCopy(nd1.szTip, 'Simon Loves Daisy', 63); 

//在任務欄狀態區添加圖標 
Shell_NotifyIcon(NIM_ADD, @nd0); 
Shell_NotifyIcon(NIM_ADD, @nd1); 
end; 

procedure TForm1.Timer1Timer(Sender: TObject); 
var 
st:SystemTime; 
begin 
//每秒鐘更新一次圖標:圖標0顯示秒數的十位, 
圖標1顯示秒數的個位。 
GetLocalTime(st); 
nd0.hIcon := hs[st.wSecond div 10]; 
nd1.hIcon := hs[st.wSecond mod 10]; 
//修改任務欄狀態區的圖標 
Shell_NotifyIcon(NIM_MODIFY, @nd0); 
Shell_NotifyIcon(NIM_MODIFY, @nd1); 
end; 

procedure TForm1.FormDestroy(Sender: TObject); 
begin 
//將圖標從任務欄狀態區刪除 
Shell_NotifyIcon(NIM_DELETE, @nd0); 
Shell_NotifyIcon(NIM_DELETE, @nd1); 
end; 

//處理 通知消息 
procedure TForm1.WndProc(var Msg: TMessage); 
var 
IconID:integer; 
pt:TPOINT; 
begin 
if msg.Msg = WM_TRAYNOTIFY then 
begin 
{ 
在通知消息中,wParam參數為圖標的uID, 
lParam參數為鼠標事件的類型。 
} 
iconID := msg.WParam; 
//獲取鼠標的在屏幕上的位置 
GetCursorPos(pt); 

//通知消息的處理的基本框架結構如下: 
case msg.lParam of 
WM_LBUTTONDOWN: 
begin 
//鼠標右鍵被按下 
end; 
WM_RBUTTONDOWN: 
begin 
//鼠標左鍵被按下 
end; 
WM_LBUTTONUP: 
begin 
//釋放鼠標左鍵 
end; 
WM_RBUTTONUP: 
begin 
//釋放鼠標右鍵 
end; 
WM_MOUSEMOVE: 
begin 
//鼠標在圖標上移動 
end; 
WM_LBUTTONDBLCLK: 
begin 
//鼠標左鍵雙擊 
end; 
WM_RBUTTONDBLCLK: 
begin 
//鼠標右鍵雙擊 
end; 
end; //end case 
end 
else//調用父類的WndProc方法處理其它消息 
inherited; 
end; 

end. 
 
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色噜噜狠狠成人网p站| 99精品视频在线观看| 亚洲h在线观看| 欧美不卡视频一区| 日韩av电影免费观看高清完整版在线观看| 免费高清不卡av| 亚洲精品国产高清久久伦理二区| 精品视频123区在线观看| 欧美美女激情18p| 美日韩一级片在线观看| 欧美激情资源网| av激情亚洲男人天堂| 欧美日韩午夜在线视频| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 欧美在线免费播放| 久久综合狠狠综合久久激情| 洋洋成人永久网站入口| 欧美精品第1页| 亚洲色图在线看| 开心九九激情九九欧美日韩精美视频电影| 中文字幕+乱码+中文字幕一区| 国产在线国偷精品产拍免费yy | 成人av在线播放网站| 国产在线国偷精品免费看| 亚洲欧美日韩国产综合| 成人av电影在线观看| 国产精品99久久久久| 国产福利不卡视频| 日本不卡不码高清免费观看| 国产精品久久久久aaaa| 色呦呦日韩精品| 亚洲大片免费看| 亚洲一区二区三区四区五区黄| 日韩亚洲国产中文字幕欧美| 精品一二三四区| 国产天堂亚洲国产碰碰| 日本成人在线看| 成人黄色片在线观看| 亚洲免费在线视频一区 二区| 97久久超碰精品国产| 一区二区成人在线| 色婷婷狠狠综合| 久久99热狠狠色一区二区| 成人午夜电影网站| 日韩一区精品视频| 91麻豆国产福利精品| 国产精一品亚洲二区在线视频| 国产精品久久久久久久久晋中| 综合分类小说区另类春色亚洲小说欧美| 色婷婷综合视频在线观看| 亚洲综合一区二区| 丝袜美腿亚洲色图| 日韩欧美第一区| 日韩午夜在线观看| 精品亚洲欧美一区| 国产精品456| 欧美性色欧美a在线播放| 国产福利91精品一区| 日韩中文欧美在线| 91丨porny丨户外露出| 老司机午夜精品99久久| 国产欧美一区二区精品性色| 欧洲精品一区二区| 久久久久久久av麻豆果冻| 国产视频视频一区| 欧美剧情片在线观看| 午夜日韩在线电影| 2021久久国产精品不只是精品| 欧美在线观看一区| 国产日韩精品一区二区浪潮av| 99久久精品免费看| 欧美国产成人在线| 日韩成人伦理电影在线观看| 精品国一区二区三区| 欧美一区二区三级| aaa欧美日韩| 亚洲成人黄色影院| 国产日韩三级在线| 日韩欧美一区电影| 色婷婷久久久综合中文字幕 | 亚洲成人av资源| 三级欧美韩日大片在线看| 日韩激情一二三区| 欧美在线你懂的| 久久久777精品电影网影网 | 国产精品久久久久一区二区三区| 亚洲青青青在线视频| 91免费看视频| 91国偷自产一区二区使用方法| 国产美女主播视频一区| 日韩毛片视频在线看| 欧美tickling挠脚心丨vk| 日本强好片久久久久久aaa| 欧美国产精品一区二区| 欧美一区二区三区日韩视频| 国产69精品久久久久777| 亚洲成人资源网| 国产精品久久午夜| 精品国产乱子伦一区| 欧美三级日本三级少妇99| 99久久久久久| 成人动漫一区二区在线| 精品一区二区在线视频| 亚洲摸摸操操av| 亚洲天堂av一区| 亚洲欧美综合在线精品| 1024国产精品| 国产精品每日更新| 亚洲三级电影网站| 精品91自产拍在线观看一区| 99久久久精品| 国产福利不卡视频| 美日韩一区二区三区| 日韩成人一级片| 久久aⅴ国产欧美74aaa| 成人网在线免费视频| 在线免费观看日本欧美| 9191精品国产综合久久久久久| 日韩一区二区三区视频| 日韩欧美aaaaaa| caoporn国产一区二区| 欧美一卡二卡三卡四卡| 欧美老女人在线| 精品国产乱码久久久久久久| 久久日韩精品一区二区五区| 欧美一区二区三区日韩| 久久亚洲影视婷婷| 欧美国产日韩亚洲一区| 国产精品国产馆在线真实露脸| 亚洲另类色综合网站| 亚洲精品免费播放| 日韩av中文字幕一区二区| 激情文学综合丁香| 91黄色激情网站| 精品免费99久久| 亚洲一二三区视频在线观看| 久草精品在线观看| 欧日韩精品视频| wwwwxxxxx欧美| 蜜臀91精品一区二区三区| 盗摄精品av一区二区三区| 91精品国产麻豆国产自产在线| 国产亚洲精品免费| 日韩高清国产一区在线| 91亚洲精品乱码久久久久久蜜桃| 欧美一区二区久久久| 亚洲国产美女搞黄色| 成人精品国产一区二区4080| 欧美成人午夜电影| 日本亚洲电影天堂| 欧美精品99久久久**| 国产精品伦一区二区三级视频| 激情伊人五月天久久综合| 欧美色精品在线视频| 亚洲高清免费在线| 国产乱码一区二区三区| 精品视频1区2区| 午夜精品久久久久久久久久久| 蜜臀久久99精品久久久久宅男 | 秋霞国产午夜精品免费视频| 日韩国产精品久久久久久亚洲| av影院午夜一区| 91色九色蝌蚪| 一区二区理论电影在线观看| 国产经典欧美精品| 国产拍欧美日韩视频二区| 成人精品免费网站| 亚洲美女在线国产| 欧美一区二区三区喷汁尤物| 日韩av中文字幕一区二区| 精品国产91九色蝌蚪| a级高清视频欧美日韩| 欧美mv日韩mv| 国产成人在线视频播放| 中文字幕色av一区二区三区| 欧美丝袜丝交足nylons| 久久精品av麻豆的观看方式| 中文字幕乱码日本亚洲一区二区 | 国产女同性恋一区二区| 色综合天天综合在线视频| 青青草原综合久久大伊人精品优势 | 色狠狠一区二区三区香蕉| 美女一区二区久久| 亚洲老司机在线| 国产午夜精品久久| 337p亚洲精品色噜噜噜| 99精品视频一区二区三区| 久久综合综合久久综合| 亚洲自拍偷拍麻豆| 国产区在线观看成人精品| 日韩欧美电影在线| 欧美人与禽zozo性伦| 91香蕉视频污在线| 99久久精品国产一区| 精品夜夜嗨av一区二区三区| 亚洲国产视频在线| 艳妇臀荡乳欲伦亚洲一区| 一区二区中文视频| 中文字幕日韩av资源站| 国产欧美日韩在线视频|