1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
CMenu m_menu; NOTIFYICONDATA m_notifyData; LRESULT (WPARAM wParam, LPARAM lParam); void CvideoHelperDlg::OnTraymenuRestore(); void CvideoHelperDlg::OnTraymenuExit(); void CvideoHelperDlg::OnTraymenuStartService(); void CvideoHelperDlg::OnTraymenuStopService();
ON_MESSAGE(WM_TRAY_MESSAGE, OnTrayNotify) ON_COMMAND(ID_RMENU_SHOWWINDOW, &CvideoHelperDlg::OnTraymenuRestore) ON_COMMAND(ID_RMENU_EXIT, &CvideoHelperDlg::OnTraymenuExit) ON_COMMAND(ID_RMENU_STARTSERVICE, &CvideoHelperDlg::OnTraymenuStartService) ON_COMMAND(ID_RMENU_STOPSERVICE, &CvideoHelperDlg::OnTraymenuStopService)
void CvideoHelperDlg::OnTraymenuRestore() { ShowWindow(SW_SHOW); ShowWindow(SW_RESTORE); Shell_NotifyIcon(NIM_DELETE, &m_notifyData); }
void CvideoHelperDlg::OnTraymenuExit() { Shell_NotifyIcon(NIM_DELETE, &m_notifyData); clean4quit(); OnOK(); }
LRESULT CvideoHelperDlg::OnTrayNotify(WPARAM wParam, LPARAM lParam) { switch ((UINT)lParam) { case WM_LBUTTONUP: OnTraymenuRestore(); break; case WM_RBUTTONUP: case WM_CONTEXTMENU: CPoint pt; GetCursorPos(&pt); SetForegroundWindow(); m_menu.GetSubMenu(0)->TrackPopupMenu(TPM_BOTTOMALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON, pt.x, pt.y, this); break; } return 0; }
OnInitDialog m_menu.LoadMenu(IDR_MENU_TRAY);
ZeroMemory(&m_notifyData, sizeof(NOTIFYICONDATA)); m_notifyData.cbSize = sizeof(NOTIFYICONDATA); m_notifyData.hWnd = this->m_hWnd; m_notifyData.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; m_notifyData.uID = IDR_MAINFRAME; m_notifyData.uCallbackMessage = WM_TRAY_MESSAGE; m_notifyData.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); _tcscpy_s(&m_notifyData.szTip[0], 128, TEXT("服务器程序"));
PostMessage(WM_SYSCOMMAND, SC_MINIMIZE);
void CvideoHelperDlg::OnDestroy() { CDialogEx::OnDestroy(); Shell_NotifyIcon(NIM_DELETE, &m_notifyData); }
void CvideoHelperDlg::OnSize(UINT nType, int cx, int cy) { CDialogEx::OnSize(nType, cx, cy);
if (nType == SIZE_MINIMIZED) { if (FALSE == Shell_NotifyIcon(NIM_ADD, &m_notifyData)) { MessageBox(TEXT("Unable to set tray icon"), TEXT("Error")); return; } ShowWindow(SW_HIDE); } }
|
近期评论