TRAY programming using VC ++

xiaoxiao2021-03-06  39

TRAY programming using VC

1. Use the wizard to establish an MFC dialog application, assume that TRAYDEMO

2. Add message processing function Virtual bool onInitdialog (); AFX_MSG void OnDestroy (); AFX_MSG VOID ONSIZE (Uint NTYPE, INT CX, INT CY); AFX_MSG LRESULT Ontraynotify (WPARAM WPARAM, LPARAM LPARAM); / / Manual Addition

3. Add members private: notifyicondata m_nfdata in traydemodlg.h;

4. Add the following statement in TRAYDEMODLG.CPP Add #define WM_TRAY_NOTIFY WM_USER 100 #define ID_TRAY_ICON 1

Manually add ON_MESSAGE (WM_TRAY_NOTIFY, ONTRAYNOTIFY) between Begin_Message_Map and End_Message_map

Increase m_nfData.cbSize = sizeof (m_nfData) in CTrayDemoDlg :: OnInitDialog () function; m_nfData.hWnd = GetSafeHwnd (); m_nfData.uID = ID_TRAY_ICON; m_nfData.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE; m_nfData.uCallbackMessage = WM_TRAY_NOTIFY; m_nfData .hicon = AFXGETAPP () -> Loadicon; CString Strtip ("i, robot"); strcpy (m_nfdata.sztip, strtip); shell_notifyicon (nim_add, & m_nfdata); // When startup, add M_nfData in the TRAY area .uflags = nif_tip;

Add shell_notifyicon (Nim_Delete, & m_nfData) in the ctrayDemodlg :: overdestroy () (); // Remove from the TRAY area

Modify CTRAYDEMODLG :: OnSize (uint ntype, int cx, int CY) function is IF (ntype == size_minimized) {showwindow (sw_hide);} else cdialog :: Onsize (NTYPE, CX, CY);

OnTrayNotify increasing function LRESULT CTrayDemoDlg :: OnTrayNotify (WPARAM / * wParam * /, LPARAM lParam) {if (lParam == WM_LBUTTONDOWN) {ShowWindow (SW_RESTORE); SetForegroundWindow ();} else if (lParam == WM_RBUTTONDOWN) {POINT pos; CMenu Menupopup; GetCursorpos (& POS); Menupopup.LoadMenu (IDR_POPUP); menupopup.getsubmenu (0) -> TRACKPOPUPMENU (TPM_LEFTALIGN | TPM_RightButton, Pos.x, Pos.y, this);

Return 0;}

5. Add a floating menu IDR_POPUP

转载请注明原文地址:https://www.9cbs.com/read-69564.html

New Post(0)