托盘图标的使用
Shell_NotifyIcon 此API函数用来对托盘图标进行操作。
在相应的相应函数中添加如下代码:
void CLockTestDlg::OnBnClickedButtonHid() { // TODO: Add your control notification handler code here NOTIFYICONDATA nid = {0}; nid.cbSize = sizeof(nid); nid.hWnd = m_hWnd; nid.uID = 10; nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP ; nid.hIcon = AfxGetApp()->LoadIcon(IDI_ICON_TEST); nid.uCallbackMessage = UM_NOTIFI; _tcscpy(nid.szTip, _T("测试")); Shell_NotifyIcon(NIM_ADD, &nid); ShowWindow(SW_HIDE); }
在默认的消息处理函数中添加:
LRESULT CLockTestDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) { // TODO: Add your specialized code here and/or call the base class if (UM_NOTIFI == message) { if (WM_LBUTTONDBLCLK == lParam) { ShowWindow(SW_SHOW); } if (WM_RBUTTONUP == lParam) { } } return CDialog::DefWindowProc(message, wParam, lParam); }
为了能够在进程结束后,图标正常消失,应添加如下代码:
void CLockTestDlg::OnClose() { // TODO: Add your message handler code here and/or call default NOTIFYICONDATA nid = {0}; nid.cbSize = sizeof(nid); nid.hWnd = m_hWnd; nid.uID = 10; Shell_NotifyIcon(NIM_DELETE, &nid); CDialog::OnClose(); }
为了使用其他程序的图标可以在VS菜单中选择,文件,文件|打开|文件选择相应的EXE文件后,将图标导出即可。

浙公网安备 33010602011771号