日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

VC创建系统托盘

發布時間:2024/4/11 windows 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VC创建系统托盘 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


1.創建菜單資源? ID:? IDR_MENU_NOTIFY
??????????????? 添加子菜單? 顯示? IDM_NOTIFY_SHOW
??????????????????????????? 退出? IDM_NOTIFY_CLOSE
2.認識一個API
??????? Shell_NotifyIcon
???????? BOOL Shell_NotifyIcon(??????????????????? //向系統托盤中加入圖標
?????????????????????????? DWORD dwMessage,???????? //狀態????????? ?
?????????????????????????? PNOTIFYICONDATA lpdata?? //含有圖標? 消息響應 的一個結構體
???????? );

?3.認識NOTIFYICONDATA? 結構體:
?????????? typedef struct _NOTIFYICONDATA {
??? DWORD cbSize;?????? //結構體自身大小
??? HWND hWnd;????????? //托盤的父窗口? 托盤發出的消息由哪一個窗口響應
??? UINT uID;?????????? //顯示圖標的ID
??? UINT uFlags;???????? //托盤的狀態 (如有圖標,有氣泡提示,有消息響應等)
??? UINT uCallbackMessage; //托盤事件的消息響應函數
??? HICON hIcon;??????????? //圖標的變量
??? TCHAR szTip[64];??????? //氣泡的顯示文字
??? DWORD dwState;????????? //圖標的顯示狀態
??? DWORD dwStateMask;????? //圖標的顯示狀態
??? TCHAR szInfo[256];????? //氣泡的顯示文字? (可以忽略)
??? union {
??????? UINT uTimeout;
??????? UINT uVersion;
??? };
??? TCHAR szInfoTitle[64];
??? DWORD dwInfoFlags;
??? GUID guidItem;
??? HICON hBalloonIcon;
} NOTIFYICONDATA, *PNOTIFYICONDATA;

4.在oninitdialog函數中寫入加入系統脫盤的代碼:


??????? NOTIFYICONDATA nid; //這句話最好添加在頭文件里面
????? ?
??????? nid.cbSize = sizeof(nid);???? //大小賦值
?? ?nid.hWnd = m_hWnd;?????????? //父窗口
?? ?nid.uID = IDR_MAINFRAME;???? //icon? ID
?? ?nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;?? //托盤所擁有的狀態
?? ?nid.uCallbackMessage = UM_ICONNOTIFY;??????????? //回調消息
?? ?nid.hIcon = m_hIcon;??????????????????????????? //icon 變量
?? ?CString str="PCRemote遠程協助軟件.........";?????? //氣泡提示
?? ?lstrcpyn(nid.szTip, (LPCSTR)str, sizeof(nid.szTip) / sizeof(nid.szTip[0]));
?? ?Shell_NotifyIcon(NIM_ADD, &nid);?? //顯示托盤

5.演示 ,在窗口銷毀時托盤依然存在

6.添加WM_CLOSE消息并寫入代碼:
????? Shell_NotifyIcon(NIM_DELETE, &nid); //銷毀圖標

7.stdafx.h文件中加入自定義消息的定義
???? //自定義消息
enum
{
?? ?UM_ICONNOTIFY= WM_USER+0x100,
};


8.聲明消息處理函數:
???? afx_msg void OnIconNotify(WPARAM wParam,LPARAM lParam);


9.? cpp文件中寫入代碼:
?????? void CPCRemoteDlg::OnIconNotify(WPARAM wParam, LPARAM lParam)
{
?? ?switch ((UINT)lParam)
?? ?{
?? ?case WM_LBUTTONDOWN: // click or dbclick left button on icon
?? ?case WM_LBUTTONDBLCLK: // should show desktop
?? ??? ?if (!IsWindowVisible())
?? ??? ??? ?ShowWindow(SW_SHOW);
?? ??? ?else
?? ??? ??? ?ShowWindow(SW_HIDE);
?? ??? ?break;
?? ?case WM_RBUTTONDOWN: // click right button, show menu
?? ??? ?CMenu menu;
?? ??? ?menu.LoadMenu(IDR_MENU_NOTIFY);
?? ??? ?CPoint point;
?? ??? ?GetCursorPos(&point);
?? ??? ?SetForegroundWindow();
?? ??? ?menu.GetSubMenu(0)->TrackPopupMenu(
?? ??? ??? ?TPM_LEFTBUTTON|TPM_RIGHTBUTTON,
?? ??? ??? ?point.x, point.y, this, NULL);
?? ??? ?PostMessage(WM_USER, 0, 0);
?? ??? ?break;
?? ?}
}


10.添加消息響應:
?? ?ON_MESSAGE(UM_ICONNOTIFY,OnIconNotify) ?

11.添加顯示菜單消息響應
?? ?














1.創建菜單資源? ID:? IDR_MENU_NOTIFY
??????????????? 添加子菜單? 顯示? IDM_NOTIFY_SHOW
??????????????????????????? 退出? IDM_NOTIFY_CLOSE
2.認識一個API
??????? Shell_NotifyIcon
???????? BOOL Shell_NotifyIcon(??????????????????? //向系統托盤中加入圖標
?????????????????????????? DWORD dwMessage,???????? //狀態????????? ?
?????????????????????????? PNOTIFYICONDATA lpdata?? //含有圖標? 消息響應 的一個結構體
???????? );

?3.認識NOTIFYICONDATA? 結構體:
?????????? typedef struct _NOTIFYICONDATA {
??? DWORD cbSize;?????? //結構體自身大小
??? HWND hWnd;????????? //托盤的父窗口? 托盤發出的消息由哪一個窗口響應
??? UINT uID;?????????? //顯示圖標的ID
??? UINT uFlags;???????? //托盤的狀態 (如有圖標,有氣泡提示,有消息響應等)
??? UINT uCallbackMessage; //托盤事件的消息響應函數
??? HICON hIcon;??????????? //圖標的變量
??? TCHAR szTip[64];??????? //氣泡的顯示文字
??? DWORD dwState;????????? //圖標的顯示狀態
??? DWORD dwStateMask;????? //圖標的顯示狀態
??? TCHAR szInfo[256];????? //氣泡的顯示文字? (可以忽略)
??? union {
??????? UINT uTimeout;
??????? UINT uVersion;
??? };
??? TCHAR szInfoTitle[64];
??? DWORD dwInfoFlags;
??? GUID guidItem;
??? HICON hBalloonIcon;
} NOTIFYICONDATA, *PNOTIFYICONDATA;

4.在oninitdialog函數中寫入加入系統脫盤的代碼:


??????? NOTIFYICONDATA nid; //這句話最好添加在頭文件里面
????? ?
??????? nid.cbSize = sizeof(nid);???? //大小賦值
?? ?nid.hWnd = m_hWnd;?????????? //父窗口
?? ?nid.uID = IDR_MAINFRAME;???? //icon? ID
?? ?nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;?? //托盤所擁有的狀態
?? ?nid.uCallbackMessage = UM_ICONNOTIFY;??????????? //回調消息
?? ?nid.hIcon = m_hIcon;??????????????????????????? //icon 變量
?? ?CString str="PCRemote遠程協助軟件.........";?????? //氣泡提示
?? ?lstrcpyn(nid.szTip, (LPCSTR)str, sizeof(nid.szTip) / sizeof(nid.szTip[0]));
?? ?Shell_NotifyIcon(NIM_ADD, &nid);?? //顯示托盤

5.演示 ,在窗口銷毀時托盤依然存在

6.添加WM_CLOSE消息并寫入代碼:
????? Shell_NotifyIcon(NIM_DELETE, &nid); //銷毀圖標

7.stdafx.h文件中加入自定義消息的定義
???? //自定義消息
enum
{
?? ?UM_ICONNOTIFY= WM_USER+0x100,
};


8.聲明消息處理函數:
???? afx_msg void OnIconNotify(WPARAM wParam,LPARAM lParam);


9.? cpp文件中寫入代碼:
?????? void CPCRemoteDlg::OnIconNotify(WPARAM wParam, LPARAM lParam)
{
?? ?switch ((UINT)lParam)
?? ?{
?? ?case WM_LBUTTONDOWN: // click or dbclick left button on icon
?? ?case WM_LBUTTONDBLCLK: // should show desktop
?? ??? ?if (!IsWindowVisible())
?? ??? ??? ?ShowWindow(SW_SHOW);
?? ??? ?else
?? ??? ??? ?ShowWindow(SW_HIDE);
?? ??? ?break;
?? ?case WM_RBUTTONDOWN: // click right button, show menu
?? ??? ?CMenu menu;
?? ??? ?menu.LoadMenu(IDR_MENU_NOTIFY);
?? ??? ?CPoint point;
?? ??? ?GetCursorPos(&point);
?? ??? ?SetForegroundWindow();
?? ??? ?menu.GetSubMenu(0)->TrackPopupMenu(
?? ??? ??? ?TPM_LEFTBUTTON|TPM_RIGHTBUTTON,
?? ??? ??? ?point.x, point.y, this, NULL);
?? ??? ?PostMessage(WM_USER, 0, 0);
?? ??? ?break;
?? ?}
}


10.添加消息響應:
?? ?ON_MESSAGE(UM_ICONNOTIFY,OnIconNotify) ?

11.添加顯示菜單消息響應
?? ?












總結

以上是生活随笔為你收集整理的VC创建系统托盘的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。