<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[观夏Note]]></title> 
<link>//gm.angeldm.com/index.php</link> 
<description><![CDATA[新技术番]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[观夏Note]]></copyright>
<item>
<link>//gm.angeldm.com/post//</link>
<title><![CDATA[MFC下托盘图标的实现和托盘菜单]]></title> 
<author>果面 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[程序开发]]></category>
<pubDate>Tue, 21 Feb 2012 13:20:18 +0000</pubDate> 
<guid>//gm.angeldm.com/post//</guid> 
<description>
<![CDATA[ 
	对话框头文件XXXDlg.h:<br/><br/>1.添加成员变量<br/><div class="code">NOTIFYICONDATA m_nid;</div><br/><br/>2.添加tray消息响应函数的声明<br/><br/><div class="code">afx_msg LRESULT OnTrayNotify(WPARAM wParam, LPARAM lParam);</div><br/><br/>对话框实现文件XXXDlg.cpp:<br/><br/>1.定义tray消息<br/><div class="code">#define UM_TRAYNOTIFY WM_USER + 11</div><br/><br/>2.CXXXDlg的构造函数添加<br/><div class="code"><br/> memset(&amp;m_nid, 0, sizeof(m_nid)); // Initialize NOTIFYICONDATA struct<br/> m_nid.cbSize = sizeof(m_nid);<br/> m_nid.uFlags = NIF_ICON &#124; NIF_TIP &#124; NIF_MESSAGE;<br/></div><br/>3.CXXXDlg的析构函数添加<br/><div class="code"><br/> m_nid.hIcon = NULL;<br/> Shell_NotifyIcon(NIM_DELETE, &amp;m_nid);<br/></div><br/>4.添加消息映射：<br/><div class="code"><br/>BEGIN_MESSAGE_MAP(CMFC2Dlg, CDialog)<br/> //...<br/> ON_MESSAGE(UM_TRAYNOTIFY, &amp;CMFC2Dlg::OnTrayNotify)<br/> //...<br/>END_MESSAGE_MAP() <br/></div><br/>5.OnInitDialog函数添加：<br/><div class="code"><br/>m_nid.hWnd = GetSafeHwnd();<br/> m_nid.uCallbackMessage = UM_TRAYNOTIFY;<br/><br/> // Set tray icon and tooltip<br/> m_nid.hIcon = m_hIcon;<br/><br/> // Set tray notification tip information<br/> CString strToolTip = _T(&quot;托盘程序&quot;);<br/> _tcsncpy_s(m_nid.szTip, strToolTip, strToolTip.GetLength());<br/> Shell_NotifyIcon(NIM_ADD, &amp;m_nid);<br/></div><br/>6.OnTrayNotify函数的实现：<br/><div class="code"><br/>LRESULT CXXXDlg::OnTrayNotify(WPARAM wParam, LPARAM lParam)<br/>&#123;<br/> UINT uMsg = (UINT)lParam;<br/><br/> switch(uMsg)<br/> &#123;<br/> case WM_RBUTTONUP:<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp; //右键处理<br/>&nbsp;&nbsp;CMenu menuTray;<br/>&nbsp;&nbsp;CPoint point;<br/>&nbsp;&nbsp;int id;<br/>&nbsp;&nbsp;GetCursorPos(&amp;point);<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;menuTray.LoadMenu(IDR_MENU_TRAY);<br/>&nbsp;&nbsp;id = menuTray.GetSubMenu(0)-&gt;TrackPopupMenu(TPM_RETURNCMD &#124; TPM_LEFTALIGN&#124;TPM_RIGHTBUTTON, point.x, point.y, this);<br/>#if 0<br/>&nbsp;&nbsp;CString strInfo;<br/>&nbsp;&nbsp;strInfo.Format(L&quot;menuid %d&quot;, id);<br/>&nbsp;&nbsp;LPCTSTR strtmp;<br/>&nbsp;&nbsp;strtmp = strInfo.GetBuffer(0);<br/>&nbsp;&nbsp;MessageBox(strtmp, L&quot;test&quot;);<br/>#endif<br/>&nbsp;&nbsp;switch(id)&#123;<br/>&nbsp;&nbsp; case IDR_TRAY_EXIT:<br/>&nbsp;&nbsp;&nbsp;&nbsp;OnOK();<br/>&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp; case IDR_TRAY_RESTORE:<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;//窗口前端显示<br/>&nbsp;&nbsp;&nbsp;&nbsp;SetForegroundWindow();<br/>&nbsp;&nbsp;&nbsp;&nbsp;ShowWindow(SW_SHOWNORMAL);<br/>&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp; default:<br/>&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&#125;<br/> case WM_LBUTTONDBLCLK:<br/>&nbsp;&nbsp;SetForegroundWindow();<br/>&nbsp;&nbsp;ShowWindow(SW_SHOWNORMAL);<br/>&nbsp;&nbsp;break;<br/> default:<br/>&nbsp;&nbsp;break;<br/> &#125;<br/> return 0;<br/>&#125;<br/></div><br/>7.添加WM_SIZE消息处理：<br/><div class="code"><br/>void CMFC2Dlg::OnSize(UINT nType, int cx, int cy)<br/>&#123;<br/> CDialog::OnSize(nType, cx, cy);<br/><br/> if(nType == SIZE_MINIMIZED)&#123;<br/>&nbsp;&nbsp;ShowWindow(SW_HIDE);<br/> &#125;<br/>&#125;<br/></div><br/>8.菜单。<br/><br/>添加菜单资源 , 比如IDR_MENU_TRAY.<br/><br/>定义一个子菜单Tray，有若干个菜单项，比如“恢复窗口”, ID是IDR_TRAY_RESTORE，“退出”, ID是IDR_TRAY_EXIT。<br/><br/>在OnTrayNotify函数中捕获右击消息，弹出菜单，参考第6步。<br/><br/> <br/><br/>至此，添加托盘的功能基本完成。<br/>
]]>
</description>
</item><item>
<link>//gm.angeldm.com/read.php?&amp;guid=0#topreply</link>
<title><![CDATA[[评论] MFC下托盘图标的实现和托盘菜单]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>//gm.angeldm.com/read.php?&amp;guid=0#topreply</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>