- 創建圖標
NOTIFYICONDATA data;
data.cbSize = sizeof(NOTIFYICONDATA);
data.hWnd = this->m_hWnd;
data.uID = IDR_MAINFRAME;
data.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
lstrcpyn(data.szTip, _T("單擊右鍵顯示菜單"), sizeof(_T("單擊右鍵顯示菜單")));
data.uCallbackMessage = WM_ONTRAY;
data.hIcon = ::LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME));
Shell_NotifyIcon(NIM_ADD, &data);
- 添加系統菜單
資源視圖->右鍵添加資源->menu->創建:
- 在dialog的頭文件中定義菜單變量:
CMenu menu;
- 爲菜單變量加載菜單,也是在OnInitDialog中
menu.LoadMenu(IDR_MENU1);
- 設置響應托盤點擊事件的方法
ON_MESSAGE(WM_ONTRAY, OnTray)
- 定義響應事件
afx_msg LRESULT OnTray(WPARAM wParam, LPARAM lParam);
- 響應事件方法實現
LRESULT CBcguess3Dlg::OnTray(WPARAM wParam, LPARAM lParam) {
UINT uMouseMsg = (UINT)lParam;
if (uMouseMsg == WM_RBUTTONDOWN) {
CMenu* pPopup = menu.GetSubMenu(0);
CPoint point;
GetCursorPos(&point);
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_VERTICAL,
point.x, point.y, AfxGetApp()->m_pMainWnd, TPM_LEFTALIGN);
}
if (uMouseMsg == WM_LBUTTONDBLCLK) {
ShowWindow(SW_SHOWNOACTIVATE);
}
return 0;
}
- 爲菜單上的按鈕添加事件
ON_COMMAND(ID_32771, OnBnClickedButton1)
ON_COMMAND(ID_32772, OnBnClickedButton2)
ON_COMMAND(ID_32773, OnBnClickedButton3)
- 方法定義和實現
afx_msg void OnBnClickedButton3();
void CBcguess3Dlg::OnBnClickedButton3()
{
}