{"id":771,"date":"2009-01-21T09:56:26","date_gmt":"2009-01-21T07:56:26","guid":{"rendered":"https:\/\/alax.info\/blog\/?p=771"},"modified":"2009-01-21T10:11:34","modified_gmt":"2009-01-21T08:11:34","slug":"the-easiest-yet-user-friendly-wtl-way-to-minimize-application-to-system-tray-icon","status":"publish","type":"post","link":"https:\/\/alax.info\/blog\/771","title":{"rendered":"The easiest yet user-friendly WTL way to Minimize Application to System Tray Icon"},"content":{"rendered":"<p>A good old task to easily minimize to system tray icon to not clog the application bar and without too much thinking about it. How To with WTL?<\/p>\n<p>The key points are:<\/p>\n<ul>\n<li>manage <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/bb773352(VS.85).aspx\">NOTIFYICONDATA<\/a> structure (obviously!), where non-zero .cbSize will be an indication of created icon<\/li>\n<li>create an icon in <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ms646360.aspx\">WM_SYSCOMMAND<\/a>\/SC_MINIMIZE handler and hide instead default minimization<\/li>\n<li>handle icon&#8217;s <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ms645606(VS.85).aspx\">WM_LBUTTONDBLCLK<\/a> to restore and <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ms646243(VS.85).aspx\">WM_RBUTTONUP<\/a> to pop up a menu<\/li>\n<li>use default dialog menu to avoid having private one, handle SC_RESTORE and SC_CLOSE system commands to restore and close from system tray icon popup menu<\/li>\n<\/ul>\n<p><a href=\"https:\/\/alax.info\/blog\/wp-content\/uploads\/2009\/01\/21-image001.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-772\" title=\"System Tray Menu Icon Menu\" src=\"https:\/\/alax.info\/blog\/wp-content\/uploads\/2009\/01\/21-image001-300x170.png\" alt=\"\" width=\"300\" height=\"170\" srcset=\"https:\/\/alax.info\/blog\/wp-content\/uploads\/2009\/01\/21-image001-300x170.png 300w, https:\/\/alax.info\/blog\/wp-content\/uploads\/2009\/01\/21-image001.png 371w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Relevant source code from application main window (dialog) class:<\/p>\n<p><!--more--><\/p>\n<pre style=\"background: #ffffff none repeat scroll 0% 0%; color: #000000;\"><span style=\"font-weight: bold; color: #800000;\">class<\/span> CMainDialog <span style=\"color: #800080;\">:<\/span>\r\n<span style=\"color: #808030;\">.<\/span><span style=\"color: #808030;\">.<\/span><span style=\"color: #808030;\">.<\/span>\r\n<span style=\"color: #800080;\">{<\/span>\r\n<span style=\"font-weight: bold; color: #800000;\">public<\/span><span style=\"color: #e34adc;\">:<\/span>\r\n\r\nBEGIN_MSG_MAP_EX<span style=\"color: #808030;\">(<\/span>CMainDialog<span style=\"color: #808030;\">)<\/span>\r\n<span style=\"color: #808030;\">.<\/span><span style=\"color: #808030;\">.<\/span><span style=\"color: #808030;\">.<\/span>\r\n    MSG_WM_INITDIALOG<span style=\"color: #808030;\">(<\/span>OnInitDialog<span style=\"color: #808030;\">)<\/span>\r\n    MSG_WM_DESTROY<span style=\"color: #808030;\">(<\/span>OnDestroy<span style=\"color: #808030;\">)<\/span>\r\n    MSG_WM_SYSCOMMAND<span style=\"color: #808030;\">(<\/span>OnSysCommand<span style=\"color: #808030;\">)<\/span>\r\n    MESSAGE_HANDLER_EX<span style=\"color: #808030;\">(<\/span>WM_SYSTEMTRAYICON<span style=\"color: #808030;\">,<\/span> OnSystemTrayIcon<span style=\"color: #808030;\">)<\/span>\r\n    COMMAND_ID_HANDLER_EX<span style=\"color: #808030;\">(<\/span>SC_RESTORE<span style=\"color: #808030;\">,<\/span> OnScRestore<span style=\"color: #808030;\">)<\/span>\r\n    COMMAND_ID_HANDLER_EX<span style=\"color: #808030;\">(<\/span>SC_CLOSE<span style=\"color: #808030;\">,<\/span> OnScClose<span style=\"color: #808030;\">)<\/span>\r\n<span style=\"color: #808030;\">.<\/span><span style=\"color: #808030;\">.<\/span><span style=\"color: #808030;\">.<\/span>\r\nEND_MSG_MAP<span style=\"color: #808030;\">(<\/span><span style=\"color: #808030;\">)<\/span>\r\n<span style=\"color: #808030;\">.<\/span><span style=\"color: #808030;\">.<\/span><span style=\"color: #808030;\">.<\/span>\r\n    <span style=\"font-weight: bold; color: #800000;\">enum<\/span>\r\n    <span style=\"color: #800080;\">{<\/span>\r\n        WM_FIRST <span style=\"color: #808030;\">=<\/span> WM_APP<span style=\"color: #808030;\">,<\/span>\r\n        WM_SYSTEMTRAYICON<span style=\"color: #808030;\">,<\/span>\r\n    <span style=\"color: #800080;\">}<\/span><span style=\"color: #800080;\">;<\/span>\r\n<span style=\"color: #808030;\">.<\/span><span style=\"color: #808030;\">.<\/span><span style=\"color: #808030;\">.<\/span>\r\n<span style=\"font-weight: bold; color: #800000;\">private<\/span><span style=\"color: #e34adc;\">:<\/span>\r\n    <span style=\"color: #603000;\">NOTIFYICONDATA<\/span> m_NotifyIconData<span style=\"color: #800080;\">;<\/span>\r\n<span style=\"color: #808030;\">.<\/span><span style=\"color: #808030;\">.<\/span><span style=\"color: #808030;\">.<\/span>\r\n<span style=\"font-weight: bold; color: #800000;\">public<\/span><span style=\"color: #e34adc;\">:<\/span>\r\n<span style=\"color: #696969;\">\/\/ CMainDialog<\/span>\r\n    CMainDialog<span style=\"color: #808030;\">(<\/span><span style=\"color: #808030;\">)<\/span> <span style=\"font-weight: bold; color: #800000;\">throw<\/span><span style=\"color: #808030;\">(<\/span><span style=\"color: #808030;\">)<\/span>\r\n    <span style=\"color: #800080;\">{<\/span>\r\n        <span style=\"color: #400000;\">ZeroMemory<\/span><span style=\"color: #808030;\">(<\/span><span style=\"color: #808030;\">&amp;<\/span>m_NotifyIconData<span style=\"color: #808030;\">,<\/span> <span style=\"font-weight: bold; color: #800000;\">sizeof<\/span> m_NotifyIconData<span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n        <span style=\"color: #808030;\">.<\/span><span style=\"color: #808030;\">.<\/span><span style=\"color: #808030;\">.<\/span>\r\n    <span style=\"color: #800080;\">}<\/span>\r\n\r\n<span style=\"color: #696969;\">\/\/ Window message handlers<\/span>\r\n    <span style=\"color: #603000;\">LRESULT<\/span> OnInitDialog<span style=\"color: #808030;\">(<\/span><span style=\"color: #603000;\">HWND<\/span><span style=\"color: #808030;\">,<\/span> <span style=\"color: #603000;\">LPARAM<\/span><span style=\"color: #808030;\">)<\/span>\r\n    <span style=\"color: #800080;\">{<\/span>\r\n        <span style=\"color: #400000;\">ZeroMemory<\/span><span style=\"color: #808030;\">(<\/span><span style=\"color: #808030;\">&amp;<\/span>m_NotifyIconData<span style=\"color: #808030;\">,<\/span> <span style=\"font-weight: bold; color: #800000;\">sizeof<\/span> m_NotifyIconData<span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n        <span style=\"color: #808030;\">.<\/span><span style=\"color: #808030;\">.<\/span><span style=\"color: #808030;\">.<\/span>\r\n    <span style=\"color: #800080;\">}<\/span>\r\n    <span style=\"color: #603000;\">LRESULT<\/span> OnDestroy<span style=\"color: #808030;\">(<\/span><span style=\"color: #808030;\">)<\/span>\r\n    <span style=\"color: #800080;\">{<\/span>\r\n        <span style=\"font-weight: bold; color: #800000;\">if<\/span><span style=\"color: #808030;\">(<\/span>m_NotifyIconData<span style=\"color: #808030;\">.<\/span>cbSize<span style=\"color: #808030;\">)<\/span>\r\n        <span style=\"color: #800080;\">{<\/span>\r\n            <span style=\"color: #400000;\">Shell_NotifyIcon<\/span><span style=\"color: #808030;\">(<\/span><span style=\"color: #7d0045;\">NIM_DELETE<\/span><span style=\"color: #808030;\">,<\/span> <span style=\"color: #808030;\">&amp;<\/span>m_NotifyIconData<span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n            <span style=\"color: #400000;\">ZeroMemory<\/span><span style=\"color: #808030;\">(<\/span><span style=\"color: #808030;\">&amp;<\/span>m_NotifyIconData<span style=\"color: #808030;\">,<\/span> <span style=\"font-weight: bold; color: #800000;\">sizeof<\/span> m_NotifyIconData<span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n        <span style=\"color: #800080;\">}<\/span>\r\n        <span style=\"color: #808030;\">.<\/span><span style=\"color: #808030;\">.<\/span><span style=\"color: #808030;\">.<\/span>\r\n    <span style=\"color: #800080;\">}<\/span>\r\n    <span style=\"color: #603000;\">LRESULT<\/span> OnSysCommand<span style=\"color: #808030;\">(<\/span><span style=\"color: #603000;\">UINT<\/span> nCommand<span style=\"color: #808030;\">,<\/span> <span style=\"color: #603000;\">CPoint<\/span><span style=\"color: #808030;\">)<\/span>\r\n    <span style=\"color: #800080;\">{<\/span>\r\n        <span style=\"font-weight: bold; color: #800000;\">switch<\/span><span style=\"color: #808030;\">(<\/span>nCommand<span style=\"color: #808030;\">)<\/span>\r\n        <span style=\"color: #800080;\">{<\/span>\r\n        <span style=\"font-weight: bold; color: #800000;\">case <\/span><span style=\"color: #7d0045;\">SC_MINIMIZE<\/span><span style=\"color: #e34adc;\">:<\/span>\r\n            <span style=\"font-weight: bold; color: #800000;\">if<\/span><span style=\"color: #808030;\">(<\/span><span style=\"color: #808030;\">!<\/span>m_NotifyIconData<span style=\"color: #808030;\">.<\/span>cbSize<span style=\"color: #808030;\">)<\/span>\r\n            <span style=\"color: #800080;\">{<\/span>\r\n                m_NotifyIconData<span style=\"color: #808030;\">.<\/span>cbSize <span style=\"color: #808030;\">=<\/span> NOTIFYICONDATAA_V1_SIZE<span style=\"color: #800080;\">;<\/span>\r\n                m_NotifyIconData<span style=\"color: #808030;\">.<\/span>hWnd <span style=\"color: #808030;\">=<\/span> m_hWnd<span style=\"color: #800080;\">;<\/span>\r\n                m_NotifyIconData<span style=\"color: #808030;\">.<\/span>uID <span style=\"color: #808030;\">=<\/span> <span style=\"color: #008c00;\">1<\/span><span style=\"color: #800080;\">;<\/span>\r\n                m_NotifyIconData<span style=\"color: #808030;\">.<\/span>uFlags <span style=\"color: #808030;\">=<\/span> NIF_ICON <span style=\"color: #808030;\">|<\/span> NIF_MESSAGE <span style=\"color: #808030;\">|<\/span> NIF_TIP<span style=\"color: #800080;\">;<\/span>\r\n                m_NotifyIconData<span style=\"color: #808030;\">.<\/span>uCallbackMessage <span style=\"color: #808030;\">=<\/span> WM_SYSTEMTRAYICON<span style=\"color: #800080;\">;<\/span>\r\n                m_NotifyIconData<span style=\"color: #808030;\">.<\/span>hIcon <span style=\"color: #808030;\">=<\/span> AtlLoadIconImage<span style=\"color: #808030;\">(<\/span>IDI_MODULE<span style=\"color: #808030;\">,<\/span> LR_DEFAULTCOLOR<span style=\"color: #808030;\">,<\/span> <span style=\"color: #400000;\">GetSystemMetrics<\/span><span style=\"color: #808030;\">(<\/span>SM_CXSMICON<span style=\"color: #808030;\">)<\/span><span style=\"color: #808030;\">,<\/span> <span style=\"color: #400000;\">GetSystemMetrics<\/span><span style=\"color: #808030;\">(<\/span>SM_CYSMICON<span style=\"color: #808030;\">)<\/span><span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n                <span style=\"color: #603000;\">CString<\/span> sWindowText<span style=\"color: #800080;\">;<\/span>\r\n                <span style=\"color: #400000;\">GetWindowText<\/span><span style=\"color: #808030;\">(<\/span>sWindowText<span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n                _tcscpy_s<span style=\"color: #808030;\">(<\/span>m_NotifyIconData<span style=\"color: #808030;\">.<\/span>szTip<span style=\"color: #808030;\">,<\/span> sWindowText<span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n                <span style=\"font-weight: bold; color: #800000;\">if<\/span><span style=\"color: #808030;\">(<\/span><span style=\"color: #808030;\">!<\/span><span style=\"color: #400000;\">Shell_NotifyIcon<\/span><span style=\"color: #808030;\">(<\/span><span style=\"color: #7d0045;\">NIM_ADD<\/span><span style=\"color: #808030;\">,<\/span> <span style=\"color: #808030;\">&amp;<\/span>m_NotifyIconData<span style=\"color: #808030;\">)<\/span><span style=\"color: #808030;\">)<\/span>\r\n                <span style=\"color: #800080;\">{<\/span>\r\n                    SetMsgHandled<span style=\"color: #808030;\">(<\/span>FALSE<span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n                    <span style=\"font-weight: bold; color: #800000;\">return<\/span> <span style=\"color: #008c00;\">0<\/span><span style=\"color: #800080;\">;<\/span>\r\n                <span style=\"color: #800080;\">}<\/span>\r\n            <span style=\"color: #800080;\">}<\/span>\r\n            <span style=\"color: #400000;\">ShowWindow<\/span><span style=\"color: #808030;\">(<\/span>SW_HIDE<span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n            <span style=\"font-weight: bold; color: #800000;\">break<\/span><span style=\"color: #800080;\">;<\/span>\r\n        <span style=\"color: #808030;\">.<\/span><span style=\"color: #808030;\">.<\/span><span style=\"color: #808030;\">.<\/span>\r\n<span style=\"color: #e34adc;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: bold; color: #800000;\">default<\/span><span style=\"color: #e34adc;\">:<\/span>\r\n            SetMsgHandled<span style=\"color: #808030;\">(<\/span>FALSE<span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n        <span style=\"color: #800080;\">}<\/span>\r\n        <span style=\"font-weight: bold; color: #800000;\">return<\/span> <span style=\"color: #008c00;\">0<\/span><span style=\"color: #800080;\">;<\/span>\r\n    <span style=\"color: #800080;\">}<\/span>\r\n    <span style=\"color: #603000;\">LRESULT<\/span> OnSystemTrayIcon<span style=\"color: #808030;\">(<\/span><span style=\"color: #603000;\">UINT<\/span><span style=\"color: #808030;\">,<\/span> <span style=\"color: #603000;\">WPARAM<\/span> wParam<span style=\"color: #808030;\">,<\/span> <span style=\"color: #603000;\">LPARAM<\/span> lParam<span style=\"color: #808030;\">)<\/span>\r\n    <span style=\"color: #800080;\">{<\/span>\r\n        ATLASSERT<span style=\"color: #808030;\">(<\/span>wParam <span style=\"color: #808030;\">=<\/span><span style=\"color: #808030;\">=<\/span> <span style=\"color: #008c00;\">1<\/span><span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n        <span style=\"font-weight: bold; color: #800000;\">switch<\/span><span style=\"color: #808030;\">(<\/span>lParam<span style=\"color: #808030;\">)<\/span>\r\n        <span style=\"color: #800080;\">{<\/span>\r\n        <span style=\"font-weight: bold; color: #800000;\">case <\/span><span style=\"color: #7d0045;\">WM_LBUTTONDBLCLK<\/span><span style=\"color: #e34adc;\">:<\/span>\r\n            <span style=\"color: #400000;\">SendMessage<\/span><span style=\"color: #808030;\">(<\/span><span style=\"color: #7d0045;\">WM_COMMAND<\/span><span style=\"color: #808030;\">,<\/span> SC_RESTORE<span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n            <span style=\"font-weight: bold; color: #800000;\">break<\/span><span style=\"color: #800080;\">;<\/span>\r\n        <span style=\"font-weight: bold; color: #800000;\">case <\/span><span style=\"color: #7d0045;\">WM_RBUTTONUP<\/span><span style=\"color: #e34adc;\">:<\/span>\r\n            <span style=\"color: #800080;\">{<\/span>\r\n                <span style=\"color: #400000;\">SetForegroundWindow<\/span><span style=\"color: #808030;\">(<\/span>m_hWnd<span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n                CMenuHandle Menu <span style=\"color: #808030;\">=<\/span> <span style=\"color: #400000;\">GetSystemMenu<\/span><span style=\"color: #808030;\">(<\/span>FALSE<span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n                Menu<span style=\"color: #808030;\">.<\/span><span style=\"color: #400000;\">EnableMenuItem<\/span><span style=\"color: #808030;\">(<\/span>SC_RESTORE<span style=\"color: #808030;\">,<\/span> MF_BYCOMMAND <span style=\"color: #808030;\">|<\/span> MF_ENABLED<span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n                Menu<span style=\"color: #808030;\">.<\/span><span style=\"color: #400000;\">EnableMenuItem<\/span><span style=\"color: #808030;\">(<\/span>SC_MOVE<span style=\"color: #808030;\">,<\/span> MF_BYCOMMAND <span style=\"color: #808030;\">|<\/span> MF_GRAYED<span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n                Menu<span style=\"color: #808030;\">.<\/span><span style=\"color: #400000;\">EnableMenuItem<\/span><span style=\"color: #808030;\">(<\/span>SC_SIZE<span style=\"color: #808030;\">,<\/span> MF_BYCOMMAND <span style=\"color: #808030;\">|<\/span> MF_GRAYED<span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n                Menu<span style=\"color: #808030;\">.<\/span><span style=\"color: #400000;\">EnableMenuItem<\/span><span style=\"color: #808030;\">(<\/span>SC_MINIMIZE<span style=\"color: #808030;\">,<\/span> MF_BYCOMMAND <span style=\"color: #808030;\">|<\/span> MF_GRAYED<span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n                Menu<span style=\"color: #808030;\">.<\/span><span style=\"color: #400000;\">EnableMenuItem<\/span><span style=\"color: #808030;\">(<\/span>SC_MAXIMIZE<span style=\"color: #808030;\">,<\/span> MF_BYCOMMAND <span style=\"color: #808030;\">|<\/span> MF_GRAYED<span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n                Menu<span style=\"color: #808030;\">.<\/span><span style=\"color: #400000;\">EnableMenuItem<\/span><span style=\"color: #808030;\">(<\/span>SC_CLOSE<span style=\"color: #808030;\">,<\/span> MF_BYCOMMAND <span style=\"color: #808030;\">|<\/span> MF_ENABLED<span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n                <span style=\"color: #603000;\">CPoint<\/span> Position<span style=\"color: #800080;\">;<\/span>\r\n                ATLVERIFY<span style=\"color: #808030;\">(<\/span><span style=\"color: #400000;\">GetCursorPos<\/span><span style=\"color: #808030;\">(<\/span><span style=\"color: #808030;\">&amp;<\/span>Position<span style=\"color: #808030;\">)<\/span><span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n                Menu<span style=\"color: #808030;\">.<\/span><span style=\"color: #400000;\">TrackPopupMenu<\/span><span style=\"color: #808030;\">(<\/span>TPM_LEFTALIGN <span style=\"color: #808030;\">|<\/span> TPM_BOTTOMALIGN<span style=\"color: #808030;\">,<\/span> Position<span style=\"color: #808030;\">.<\/span>x<span style=\"color: #808030;\">,<\/span> Position<span style=\"color: #808030;\">.<\/span>y<span style=\"color: #808030;\">,<\/span> m_hWnd<span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n            <span style=\"color: #800080;\">}<\/span>\r\n            <span style=\"font-weight: bold; color: #800000;\">break<\/span><span style=\"color: #800080;\">;<\/span>\r\n        <span style=\"color: #800080;\">}<\/span>\r\n        <span style=\"font-weight: bold; color: #800000;\">return<\/span> <span style=\"color: #008c00;\">0<\/span><span style=\"color: #800080;\">;<\/span>\r\n    <span style=\"color: #800080;\">}<\/span>\r\n    <span style=\"color: #603000;\">LRESULT<\/span> OnScRestore<span style=\"color: #808030;\">(<\/span><span style=\"color: #603000;\">UINT<\/span><span style=\"color: #808030;\">,<\/span> <span style=\"color: #603000;\">INT<\/span><span style=\"color: #808030;\">,<\/span> <span style=\"color: #603000;\">HWND<\/span><span style=\"color: #808030;\">)<\/span>\r\n    <span style=\"color: #800080;\">{<\/span>\r\n        <span style=\"font-weight: bold; color: #800000;\">if<\/span><span style=\"color: #808030;\">(<\/span>m_NotifyIconData<span style=\"color: #808030;\">.<\/span>cbSize<span style=\"color: #808030;\">)<\/span>\r\n        <span style=\"color: #800080;\">{<\/span>\r\n            <span style=\"color: #400000;\">Shell_NotifyIcon<\/span><span style=\"color: #808030;\">(<\/span><span style=\"color: #7d0045;\">NIM_DELETE<\/span><span style=\"color: #808030;\">,<\/span> <span style=\"color: #808030;\">&amp;<\/span>m_NotifyIconData<span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n            <span style=\"color: #400000;\">ZeroMemory<\/span><span style=\"color: #808030;\">(<\/span><span style=\"color: #808030;\">&amp;<\/span>m_NotifyIconData<span style=\"color: #808030;\">,<\/span> <span style=\"font-weight: bold; color: #800000;\">sizeof<\/span> m_NotifyIconData<span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n        <span style=\"color: #800080;\">}<\/span>\r\n        <span style=\"color: #400000;\">ShowWindow<\/span><span style=\"color: #808030;\">(<\/span>SW_SHOW<span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n        <span style=\"color: #400000;\">BringWindowToTop<\/span><span style=\"color: #808030;\">(<\/span><span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n        <span style=\"font-weight: bold; color: #800000;\">return<\/span> <span style=\"color: #008c00;\">0<\/span><span style=\"color: #800080;\">;<\/span>\r\n    <span style=\"color: #800080;\">}<\/span>\r\n    <span style=\"color: #603000;\">LRESULT<\/span> OnScClose<span style=\"color: #808030;\">(<\/span><span style=\"color: #603000;\">UINT<\/span><span style=\"color: #808030;\">,<\/span> <span style=\"color: #603000;\">INT<\/span><span style=\"color: #808030;\">,<\/span> <span style=\"color: #603000;\">HWND<\/span><span style=\"color: #808030;\">)<\/span>\r\n    <span style=\"color: #800080;\">{<\/span>\r\n        <span style=\"color: #400000;\">PostMessage<\/span><span style=\"color: #808030;\">(<\/span><span style=\"color: #7d0045;\">WM_COMMAND<\/span><span style=\"color: #808030;\">,<\/span> IDCANCEL<span style=\"color: #808030;\">)<\/span><span style=\"color: #800080;\">;<\/span>\r\n        <span style=\"font-weight: bold; color: #800000;\">return<\/span> <span style=\"color: #008c00;\">0<\/span><span style=\"color: #800080;\">;<\/span>\r\n    <span style=\"color: #800080;\">}<\/span><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>A good old task to easily minimize to system tray icon to not clog the application bar and without too much thinking about it. How To with WTL? The key points are: manage NOTIFYICONDATA structure (obviously!), where non-zero .cbSize will be an indication of created icon create an icon in WM_SYSCOMMAND\/SC_MINIMIZE handler and hide instead&hellip; <\/p>\n<p><a class=\"moretag\" href=\"https:\/\/alax.info\/blog\/771\">Read the full article<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[38,488,489],"class_list":["post-771","post","type-post","status-publish","format-standard","hentry","category-wtl","tag-c","tag-source","tag-wtl"],"_links":{"self":[{"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/posts\/771","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/comments?post=771"}],"version-history":[{"count":0,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/posts\/771\/revisions"}],"wp:attachment":[{"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/media?parent=771"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/categories?post=771"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/tags?post=771"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}