<?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 14:00:31 +0000</pubDate> 
<guid>//gm.angeldm.com/post//</guid> 
<description>
<![CDATA[ 
	在VC++中,想实现最小化MFC程序的时候,最小化到系统托盘,需要调用NOTIFYICONDATA类<br/><br/>下面我们就来讲解一下如何简单实现一个系统托盘 我们以对话框程序为列<br/><br/>第一步：在Dlg类中//定义一个NOTIFYICONDATA类的成员变量,用来设置托盘<br/><div class="code"><br/>NOTIFYICONDATA NotifyIcon;<br/></div><br/>第二步：声明一个消息响应函数<br/><div class="code"><br/>afx_msg void OnNotifyIcon(WPARAM wParam,LPARAM IParam);<br/></div><br/><br/>上面那条代码也放在Dlg的头文件中<br/><br/>第三步：定义一个自定义消息<br/><div class="code"><br/>#define WM_NC WM_USER+1<br/></div><br/>上面那条代码也在Dlg的头文件中声明<br/><br/>注册消息<br/><div class="code"><br/>ON_MESSAGE(WM_NC,OnNotifyIcon)<br/></div><br/>上面那条代码在Dlg类中<br/><br/>第四步：在Dlg头文件中添加一个函数 用来响应点击最小化按钮<br/><div class="code"><br/>void changeMini();<br/></div><br/>并在Dlg类中实现这个函数<br/><div class="code"><br/>//响应最小化消息<br/>void CChangeScreenDlg::changeMini()<br/>&#123;<br/>ShowWindow(SW_HIDE);<br/>NotifyIcon.cbSize=sizeof(NOTIFYICONDATA);<br/>NotifyIcon.hIcon=AfxGetApp()-&gt;LoadIcon(IDR_MAINFRAME);<br/>NotifyIcon.hWnd=m_hWnd;<br/>lstrcpy(NotifyIcon.szTip,&quot;MediaCraft EMMG&quot;);<br/>NotifyIcon.uCallbackMessage=WM_NC;<br/>NotifyIcon.uFlags=NIF_ICON &#124; NIF_MESSAGE &#124; NIF_TIP;<br/>Shell_NotifyIcon(NIM_ADD,&amp;NotifyIcon);<br/>&#125;<br/></div><br/>第五步：截获最小化事件<br/><br/>在Dlg类中找到OnSysCommand函数<br/><br/>修改代码如下<br/><div class="code"><br/>if ((nID &amp; 0xFFF0) == IDM_ABOUTBOX)<br/>&#123;<br/>&nbsp;&nbsp; CAboutDlg dlgAbout;<br/>&nbsp;&nbsp; dlgAbout.DoModal();<br/>&#125;<br/>//拦截最小化事件<br/>if(nID==SC_MINIMIZE)<br/>&#123;<br/>&nbsp;&nbsp; //ToTray();<br/><br/>//用我们自己的消息响应最小化事件<br/>&nbsp;&nbsp; changeMini();<br/>&#125;<br/>else<br/>&#123;<br/>&nbsp;&nbsp; CDialog::OnSysCommand(nID, lParam);<br/>&#125;<br/></div><br/>第六步：响应托盘的鼠标事件 也是实现我们第二部声明的消息响应函数<br/><div class="code"><br/>void CChangeScreenDlg::OnNotifyIcon(WPARAM wParam,LPARAM IParam)<br/>&#123;<br/>if ((IParam == WM_LBUTTONDOWN) &#124;&#124; (IParam == WM_RBUTTONDOWN))<br/>&#123;<br/>ModifyStyleEx(0,WS_EX_TOPMOST);<br/>ShowWindow(SW_SHOW);<br/>&#125;<br/>&#125;<br/></div><br/>最后一步：在类的析构函数中 记得销毁托盘图标对象<br/><div class="code"><br/>Shell_NotifyIcon(NIM_DELETE, &amp;NotifyIcon);<br/></div><br/>以上NOTIFYICONDATA类的一些具体参数，请参阅MSDN<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>