MFC添加系统托盘图标
先在dlg.cpp中定义两个宏1
2
3
在dlg.h中添加变量
1 | NOTIFYICONDATA m_nid; |
NOTIFYICONDATA结构定义:(具体解释可自行百度)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19typedef struct _NOTIFYICONDATA {
DWORD cbSize; // 结构体的大小,以字节为单位。
HWND hWnd; // 窗口的句柄
UINT uID; // 应用程序定义的任务栏图标的标识符
UINT uFlags;
UINT uCallbackMessage; // 应用程序定义的消息标示
HICON hIcon; // 增加、修改或删除的图标的句柄
TCHAR szTip[64]; // 指向一个以\0结束的字符串的指针。
DWORD dwState; // 图标的状态
DWORD dwStateMask; // 指明dwState成员的那些位可以被设置或者访问
TCHAR szInfo[256]; // 指向一个以\0结束的字符串的指针,字符串的内容为气球提示内容
union { // 和uVersion成员为联合体。uTimeout表示气球提示超时的时间
UINT uTimeout;
UINT uVersion;
};
TCHAR szInfoTitle[64]; // 指向一个以\0结束的字符串的指针。字符串的内容为气球提示的标题
DWORD dwInfoFlags; // 设置此成员用来给气球提示框增加一个图标。
GUID guidItem;
} NOTIFYICONDATA, *PNOTIFYICONDATA;
在OnInitDialog()中初始化m_nid;
1 | m_nid.cbSize = sizeof( NOTIFYICONDATA ); |
重写WindowProc函数;
1 | LRESULT CUDiskDetectionDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) |
ShowSystemTrary函数:
1 | BOOL CUDiskDetectionDlg::ShowSystemTrary(WPARAM wParam, LPARAM lParam) |
后台运行按键加入代码:1
SendMessage(MY_BACKGROUNDER_DLG);
增加的退出菜单增加代码:1
2SendMessage(WM_CLOSE);
::Shell_NotifyIcon(NIM_DELETE, &m_nid);