托盤程式就是執行在系統托盤區域的程式,顯示為桌面右下角顯示區域的乙個小圖示。通常托盤程式帶有幾種功能:托盤選單,托盤圖示,氣泡提示,托盤提示。例如qq收到訊息後,會在系統右下角顯示閃動qq圖示。
主程式tray.cpp
[cpp]view plain
copy
#include
#include "resource.h"
#define wm_tray (wm_user + 100)
#define wm_taskbar_created registerwindowmessage(text("taskbarcreated"))
notifyicondata nid; //托盤屬性
hmenu
hmenu;
//托盤選單
//例項化托盤
void
inittray(
hinstance
hinstance,
hwnd
hwnd)
//演示托盤氣泡提醒
void
showtraymsg()
lresult
callback wndproc(
hwnd
hwnd,
uint
umsg,
wparam
wparam,
lparam
lparam)
break
; case
wm_lbuttondown:
break
; case
wm_lbuttondblclk:
break
; }
break
; case
wm_destroy:
//視窗銷毀時刪除托盤
shell_notifyicon(nim_delete, &nid);
postquitmessage(0);
break
; case
wm_timer:
showtraymsg();
killtimer(hwnd, wparam);
break
; }
if(umsg == wm_taskbar_created)
return
defwindowproc(hwnd, umsg, wparam, lparam);
} int
winapi winmain(
hinstance
hinstance,
hinstance
/*hprevinstance*/
,
lpstr
/*lpcmdline*/
, int
icmdshow)
; wc.style = null;
wc.hicon = null;
wc.cbcl***tra = 0;
wc.cbwndextra = 0;
wc.hinstance = hinstance;
wc.lpfnwndproc = wndproc;
wc.hbrbackground = null;
wc.lpszmenuname = null;
wc.hcursor = null;
if(!registerclass(&wc))
return
0;
cw_usedefault, cw_usedefault, cw_usedefault, null, null, hinstance, null);
showwindow(hwnd, icmdshow);
updatewindow(hwnd);
inittray(hinstance, hwnd); //例項化托盤
settimer(hwnd, 3, 1000, null); //定時發訊息,演示氣泡提示功能
while
(getmessage(&msg, null, 0, 0))
return
msg.wparam;
}
資源標頭檔案 resource.h
[cpp]view plain
copy
#define idi_tray 101
#define id_show 40001
#define id_exit 40002
資源檔案 resource.rc
[cpp]view plain
copy
#include "resource.h"
idi_tray icon discardable "ico.ico"
編譯很簡單,使用 visual studio建立乙個空專案,建好以上3個檔案,再找乙個ico圖示,儲存為ico.ico,即可編譯。
簡單實現系統托盤
使用 delphi 提供的 ttrayicon 類,兩三行程式甚至不寫程式 設計時選擇幾下 即可實現.設計時的準備工作 1 新增 ttrayicon tpopupmenu 控制項,tpopupmenu 用於托盤的右鍵選單.2 隨意給 tpopupmenu 新增些選單項.檔案 unitunit1 in...
win 32Api獲取系統記憶體函式
windows程式設計中 獲取系統記憶體資訊有2個api,分別是globalmemorystatus和globalmemorystatu globalmemorystatus函式可以在c語言咧直接呼叫,但是globalmemorystatu 卻不可以直接呼叫,因為globalmemorystatu ...
win32彙編使用win32 api實現字串拷貝
字串拷貝,呼叫win32的lstrcpy函式 拷貝了以後用訊息框顯示一下 386 model flat,stdcall option casemap none include s masm32 include windows.inc include s masm32 include user32.i...