精品国产亚洲一区二区三区,男女作爱在线观看免费网站,欧美的又大又长做禁片A片,97国产精品人妻无码久久久
注冊(cè)
|
提交需求
|
訂閱
|
English
首 頁(yè)
解決方案
產(chǎn) 品
服 務(wù)
支 持
EDN系統(tǒng)
成功案例
關(guān)于我們
聯(lián)系我們
樹(shù)結(jié)構(gòu)圖
EDN系統(tǒng)
圖形圖像
網(wǎng)絡(luò)安全
項(xiàng)目專題
WEB開(kāi)發(fā)
辦公系列
操作系統(tǒng)
數(shù)據(jù)庫(kù)
程序設(shè)計(jì)
TOP 10
在Foxmail中如何使…
Ftp 子命令
BigDecimal
MSN在線客服功能模塊使…
會(huì)員卡使用方法說(shuō)明
DataInputStr…
留言板功能說(shuō)明
CScript
BufferedInpu…
設(shè)置打印機(jī)
您現(xiàn)在的位置:
>
技術(shù)沙龍
>
程序設(shè)計(jì)
>
VC
>
VC編程制作系統(tǒng)托盤程序
相關(guān)軟件
>
VC編程制作系統(tǒng)托盤程序
創(chuàng)建者:
webmaster
更新時(shí)間:
2005-05-17
23:55
Windows操作系統(tǒng)中的某些程序運(yùn)行時(shí)不顯示運(yùn)行窗口,只在任務(wù)欄上顯示一個(gè)圖標(biāo),表示程序正在運(yùn)行,用戶可以通過(guò)鼠標(biāo)與應(yīng)用程序交互,比如金山毒霸等應(yīng)用程序,我們有時(shí)也需要編制一些僅在后臺(tái)運(yùn)行的類似程序,為了不干擾前臺(tái)程序的運(yùn)行界面和不顯示不必要的窗口,應(yīng)使程序運(yùn)行時(shí)的主窗口不可見(jiàn)。同時(shí)將一個(gè)圖標(biāo)顯示在任務(wù)欄右端靜態(tài)通告區(qū)中并響應(yīng)用戶的鼠標(biāo)動(dòng)作。下面介紹Visual C++開(kāi)發(fā)這類程序的設(shè)計(jì)方法。
一、隱藏程序的主窗口
首先,要使程序的主窗口不可見(jiàn),并且不在任務(wù)欄上出現(xiàn)任務(wù)按鈕,要做到這兩點(diǎn),需分別設(shè)置主邊框窗口的風(fēng)格和擴(kuò)展風(fēng)格:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
cs.style =WS_POPUP;//使主窗口不可見(jiàn)
cs.dwExStyle |=WS_EX_TOOLWINDOW;//不顯示任務(wù)按鈕
return CFrameWnd::PreCreateWindow(cs);
}
二、將表示程序運(yùn)行的圖標(biāo)加入任務(wù)欄
在主框架窗口的CMainFrame::OnCreate()函數(shù)中調(diào)用上述函數(shù),就可以在任務(wù)條上顯示圖標(biāo)這一步是利用系統(tǒng)API函數(shù)Shell_NotifyIcon()將一個(gè)圖標(biāo)顯示在任務(wù)欄的通告區(qū)中。該函數(shù)的原型為:在調(diào)用該函數(shù)之前,需要確定其參數(shù)的取值。其中Shell_NotifyIcon()函數(shù)的第一個(gè)參數(shù)是一個(gè)預(yù)定義的消息,可以取如下值之一:NIM_ADD、NIM_DELETE或NIM_MODIFY,分別表示添加圖標(biāo)、刪除圖標(biāo)或修改圖標(biāo)。另一個(gè)參數(shù)為指向NOTIFYICONDATA類型的指針。其原型為:
typedef struct _NOTIFYICONDATA {
DWORD cbSize;
HWND hWnd;
UINT uID;
UINT uFlags;
UINT uCallbackMessage;
HICON hIcon;
charszTip[64]; }
NOTIFYICONDATA
在該結(jié)構(gòu)的成員中,cbSize為該結(jié)構(gòu)所占的字節(jié)數(shù),hWnd為接受該圖標(biāo)所發(fā)出的消息的窗口的句柄(鼠標(biāo)在任務(wù)欄上程序圖標(biāo)上動(dòng)作時(shí)圖標(biāo)將發(fā)出消息,這個(gè)消息用戶要自己定義),uID為被顯示圖標(biāo)的ID,uFlags指明其余的幾個(gè)成員(hIcon、uCallBackMessage和szTip)的值是否有效,uCallbackMessage為一個(gè)用戶自定義的消息,當(dāng)用戶在該圖標(biāo)上作用一些鼠標(biāo)動(dòng)作時(shí),圖標(biāo)將向應(yīng)用程序的主框架窗口(hWnd成員中指定的窗口)發(fā)出該消息,。hIcon為將在任務(wù)欄上被顯示圖標(biāo)的句柄,szTip鼠標(biāo)停留在該圖標(biāo)上時(shí)顯示的字符串。
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
NOTIFYICONDATA tnd;
tnd.cbSize=sizeof(NOTIFYICONDATA);
tnd.hWnd=this->m_hWnd;
tnd.uID=IDR_MAINFRAME;
tnd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
tnd.uCallbackMessage=WM_MYMESSAGE;
file://用戶自定義的消息,即鼠標(biāo)在任務(wù)欄上程序圖標(biāo)上動(dòng)作時(shí)圖標(biāo)發(fā)送的消息
tnd.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
strcpy(tnd.szTip,"測(cè)試程序");//圖標(biāo)提示為"測(cè)試程序"
Shell_NotifyIcon(NIM_ADD,&tnd);//向任務(wù)欄添加圖標(biāo)
}
三、用戶與程序交互的實(shí)現(xiàn)
用戶進(jìn)行交互,也就是當(dāng)用戶在該圖標(biāo)上單擊或雙擊鼠標(biāo)左鍵或右鍵時(shí)要執(zhí)行相應(yīng)的操作,至少也要響應(yīng)用戶終止該程序的意愿。上面已經(jīng)提到,當(dāng)用戶在圖標(biāo)上進(jìn)行鼠標(biāo)動(dòng)作時(shí),將向hWnd成員中指定的窗口發(fā)出自定義的消息,該消息為uCallbackMessage成員所指定的WM_MYESSAGE,取值為WM_USER+101(如何自定義消息,我就不多說(shuō)了)。我們要實(shí)現(xiàn)任務(wù)就是在hWnd窗口中響應(yīng)該自定義消息:
void CMainFrame::OnMYMESSAGE(WPARAM wParam,LPARAM lParam)
{
UINT uID;//發(fā)出該消息的圖標(biāo)的ID
UINT uMouseMsg;//鼠標(biāo)動(dòng)作
POINT pt;
uID=(UINT) wParam;
uMouseMsg=(UINT) lParam;
if(uMouseMsg==WM_RBUTTONDOWN)//如果是單擊右鍵
{
switch(uID)
{
case IDR_MAINFRAME://如果是我們的圖標(biāo)
GetCursorPos(&pt);//取得鼠標(biāo)位置
AfxGetApp( )-> m_pMainWnd->ShowWindow(SW_SHOWNORMAL);//顯示程序窗口
break;
default:
}
}
return;
}
四、程序結(jié)束時(shí)刪除程序圖標(biāo)
當(dāng)程序結(jié)束時(shí),需要?jiǎng)h去通告區(qū)中的圖標(biāo),這時(shí)還應(yīng)該調(diào)用Shell_NotifyIcon函數(shù),只不過(guò)第一個(gè)參數(shù)是表示刪除圖標(biāo)的NIM_DELETE了:
void CMainFrame::~CmainFrame()
{
NOTIFYICONDATA tnid;
tnid.cbSize=sizeof(NOTIFYICONDATA);
tnid.hWnd=this->m_hWnd;
tnid.uID=IDR_MAINFRAME;//保證刪除的是我們的圖標(biāo)
Shell_NotifyIcon(NIM_DELETE,&tnid);
}
上述實(shí)現(xiàn)步驟可以實(shí)現(xiàn)托盤程序,筆者在開(kāi)發(fā)的IC卡程序中就應(yīng)用了以上技術(shù),希望可以對(duì)朋友們有所幫助。
相關(guān)文章
前一則:
屏幕取詞的原理
后一則:
VC++實(shí)現(xiàn)對(duì)文件夾時(shí)間的修改
本頁(yè)查看次數(shù):
公司公告
|
客戶調(diào)查
|
法律聲明
|
誠(chéng)聘英才
|
給我們投稿
|
繁
閃
頭像
京ICP備05031245號(hào)
Copyright @ REDCOME.com ALL Rights Reserved
北京怡康軟件科技有限公司 地址:北京市昌平區(qū)東小口立湯路188號(hào)北方明珠大廈1號(hào)樓2708 郵編:102218 電話:84909966 傳真:84909900 QQ:335601661