亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
中文字幕亚洲综合久久菠萝蜜| 国产日韩在线不卡| 日韩一区二区三区免费看| 欧美不卡在线视频| 亚洲欧洲三级电影| 午夜精品视频在线观看| 国产在线播放一区三区四| 91视视频在线观看入口直接观看www | 黄网站免费久久| 99精品欧美一区二区蜜桃免费| 91麻豆国产自产在线观看| 欧美一区二区三区日韩| 国产免费久久精品| 日本成人在线看| 成人免费高清视频在线观看| 51精品视频一区二区三区| 欧美国产日韩亚洲一区| 日韩精品91亚洲二区在线观看| 国产激情一区二区三区| 成人午夜av影视| 51午夜精品国产| 中文字幕亚洲成人| 高清视频一区二区| 欧美精品123区| 亚洲精品自拍动漫在线| 久久精品久久综合| 欧美综合欧美视频| 国产精品毛片久久久久久| 亚洲永久免费视频| 国产成人丝袜美腿| 日韩欧美色综合网站| 综合久久国产九一剧情麻豆| 国产精品香蕉一区二区三区| 日韩欧美在线网站| 1区2区3区国产精品| 国产一区999| 91精品国产全国免费观看| 亚洲欧洲www| 国产成人精品www牛牛影视| 日韩欧美成人午夜| 亚洲风情在线资源站| 国产黄色精品网站| www国产精品av| 麻豆精品新av中文字幕| 777奇米四色成人影色区| 亚洲国产美国国产综合一区二区| www.欧美日韩国产在线| 欧美精品一区二区三区在线| 老司机免费视频一区二区三区| 欧美三级乱人伦电影| 亚洲在线一区二区三区| www.亚洲色图.com| 尤物av一区二区| 在线观看精品一区| 亚洲午夜精品17c| 欧美日韩国产首页| 视频在线观看一区二区三区| 在线视频国内自拍亚洲视频| 久久精品久久99精品久久| 爽好久久久欧美精品| 美女网站视频久久| 国产一区 二区 三区一级| 99re这里只有精品6| 精品久久国产老人久久综合| 日本一区二区动态图| 午夜视频在线观看一区二区| 国内外成人在线视频| 视频精品一区二区| 国产成人精品一区二区三区四区| 日韩一区二区三区高清免费看看| 奇米影视一区二区三区| 久久黄色级2电影| 337p亚洲精品色噜噜狠狠| 精品伦理精品一区| 国模无码大尺度一区二区三区| 久久人人超碰精品| 国产成人av一区二区三区在线观看| 欧美激情一二三区| 欧美在线免费视屏| 麻豆91免费观看| 国产精品私房写真福利视频| 色婷婷综合激情| 美国十次综合导航| 国产精品久久久久久久久动漫| 91亚洲精品一区二区乱码| 亚洲成av人片| 久久综合色鬼综合色| 一本大道久久a久久精品综合| 三级一区在线视频先锋| 中文子幕无线码一区tr| 欧美四级电影在线观看| 韩国午夜理伦三级不卡影院| 亚洲女同ⅹxx女同tv| 欧美一区二区人人喊爽| 国产在线一区二区| 一区二区三区色| 欧美一区二区三区在线观看| 粉嫩av一区二区三区在线播放| 亚洲福利一区二区三区| 国产精品美女久久久久高潮| 在线播放中文一区| 波多野结衣的一区二区三区| 捆绑调教美女网站视频一区| 中文字幕一区二区三区蜜月| 欧美一三区三区四区免费在线看| 粉嫩绯色av一区二区在线观看| 亚洲成国产人片在线观看| 国产精品美女久久福利网站| 日韩精品一区二区在线| 欧美群妇大交群中文字幕| av资源网一区| 处破女av一区二区| 亚洲国产综合色| 国产精品欧美极品| 久久综合九色综合97婷婷| 成人精品免费视频| 久久99国产精品免费网站| 亚洲电影中文字幕在线观看| 最新不卡av在线| 欧美极品aⅴ影院| 精品久久久久久久久久久久包黑料 | 久久色在线视频| 91精品国产综合久久国产大片| 在线看国产一区| 色噜噜夜夜夜综合网| 91影视在线播放| 99综合影院在线| 不卡欧美aaaaa| 成人午夜免费视频| 国产高清视频一区| 国产福利一区在线观看| 激情小说亚洲一区| 狠狠色综合日日| 国产精品自在在线| 国产一区二区精品久久| 国内精品伊人久久久久av一坑| 免费久久精品视频| 亚洲免费观看高清完整版在线观看| 91精品婷婷国产综合久久竹菊| 在线播放中文一区| 91精品国产综合久久精品性色| 欧美高清hd18日本| 91精品国产综合久久小美女| 欧美久久久久久久久久| 欧美一区二区三区免费| 日韩手机在线导航| 久久久久久久综合色一本| 久久久99久久精品欧美| 国产精品免费视频观看| 亚洲欧美激情插| 亚洲成av人**亚洲成av**| 亚洲动漫第一页| 蜜桃一区二区三区在线| 国产精品1区二区.| caoporm超碰国产精品| 欧美亚州韩日在线看免费版国语版| 欧美性色aⅴ视频一区日韩精品| 欧美日韩三级视频| 欧美又粗又大又爽| 欧美日韩电影一区| 欧美精品一区二区三区久久久 | 亚洲三级小视频| 五月婷婷激情综合网| 激情综合网最新| 成人免费视频视频在线观看免费| 99久久精品免费| 成人av免费在线播放| 99精品国产视频| 91精品国产色综合久久ai换脸| 久久综合九色综合97婷婷| 亚洲色欲色欲www| 免费xxxx性欧美18vr| 国产精品一区专区| 在线亚洲一区二区| 日韩免费性生活视频播放| 国产精品久久久久久久岛一牛影视 | 69堂精品视频| 亚洲国产成人在线| 日本三级亚洲精品| 欧美视频第二页| 亚洲日本乱码在线观看| 国产精品一区一区| 欧美成va人片在线观看| 五月天久久比比资源色| 欧洲国产伦久久久久久久| 亚洲欧洲av在线| 成人黄色在线看| 国产女人18水真多18精品一级做| 蜜臀av在线播放一区二区三区| 欧美视频精品在线观看| 一区二区三区四区av| 色一情一乱一乱一91av| 亚洲欧洲国产专区| 91小视频在线观看| 一区在线观看免费| 91老师国产黑色丝袜在线| 亚洲色图在线播放| 91在线观看污| 一区二区三区在线看| 日本精品一区二区三区高清 |