﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-tiger7-文章分类-VC</title><link>http://www.cppblog.com/tiger7/category/16431.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 30 Jul 2011 19:04:57 GMT</lastBuildDate><pubDate>Sat, 30 Jul 2011 19:04:57 GMT</pubDate><ttl>60</ttl><item><title>（转）doc类，view类，frame类之间互相调用   作者：Fansy2000 (顶顶)   </title><link>http://www.cppblog.com/tiger7/articles/113483.html</link><dc:creator>tiger7</dc:creator><author>tiger7</author><pubDate>Sat, 30 Jul 2011 12:09:00 GMT</pubDate><guid>http://www.cppblog.com/tiger7/articles/113483.html</guid><wfw:comment>http://www.cppblog.com/tiger7/comments/113483.html</wfw:comment><comments>http://www.cppblog.com/tiger7/articles/113483.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tiger7/comments/commentRss/113483.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tiger7/services/trackbacks/113483.html</trackback:ping><description><![CDATA[<h4 align="center">（转）doc类，view类，frame类之间互相调用<br />
作者：Fansy2000&nbsp;&nbsp; (顶顶)&nbsp;&nbsp;</h4>
<p align="left"><br />
&nbsp;访问应用程序的其它类&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;获得CWinApp:&nbsp;&nbsp; <br />
&nbsp; -在CMainFrame,CChildFrame,CDocument,CView中直接调用AfxGetApp()或用theApp&nbsp;&nbsp; <br />
&nbsp; -在其它类中只能用AfxGetApp()&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp; 获得CMainFrame:&nbsp;&nbsp; <br />
&nbsp; -在CMinApp中用AfxGetMainWnd()或者m_pMainWnd&nbsp;&nbsp; <br />
&nbsp; -在CChildFrame中可用GetParentFrame()&nbsp;&nbsp; <br />
&nbsp; -在其它类中用AfxGetMainWnd()&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp; 获得CChildFrame:&nbsp;&nbsp; <br />
&nbsp; -在CView中用GetParentFrame()&nbsp;&nbsp; <br />
&nbsp; -在CMainFrame中用MDIGetActive()或GetActiveFrame()&nbsp;&nbsp; <br />
&nbsp; -在其它类中用AfxGetMainWnd()-&gt;MDIGetActive()或AfxGetMainWnd()-&gt;GetActiveFrame()&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp; 获得CDocument:&nbsp;&nbsp; <br />
&nbsp; -在CView中用GetDocument()&nbsp;&nbsp; <br />
&nbsp; -在CChildFrame中用GetActiveView()-&gt;GetDocument()&nbsp;&nbsp; <br />
&nbsp; -在CMainFrame中用&nbsp;&nbsp; <br />
&nbsp; -if&nbsp;&nbsp; SDI:GetActiveView()-&gt;GetDocument()&nbsp;&nbsp; <br />
&nbsp; -if&nbsp;&nbsp; MDI:MDIGetActive()-&gt;GetActiveView()-&gt;GetDocument()&nbsp;&nbsp; <br />
&nbsp; -在其它类中&nbsp;&nbsp; <br />
&nbsp; -if&nbsp;&nbsp; SDI:AfxGetMainWnd()-&gt;GetActiveView()-&gt;GetDocument()&nbsp;&nbsp; <br />
&nbsp; -if&nbsp;&nbsp; MDI:AfxGetMainWnd()-&gt;MDIGetActive()-&gt;GetActiveView()-&gt;GetDocument()&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp; 获得CView:&nbsp;&nbsp; <br />
&nbsp; -在CDocument中&nbsp;&nbsp; POSITION&nbsp;&nbsp; pos&nbsp;&nbsp; =&nbsp;&nbsp; GetFirstViewPosition();GetNextView(pos)&nbsp;&nbsp; <br />
&nbsp; -在CChildFrame中&nbsp;&nbsp; GetActiveView()&nbsp;&nbsp; <br />
&nbsp; -在CMainFrame中&nbsp;&nbsp; <br />
&nbsp; -if&nbsp;&nbsp; SDI:GetActiveView()&nbsp;&nbsp; <br />
&nbsp; -if&nbsp;&nbsp; MDI:MDIGetActive()-&gt;GetActiveView()&nbsp;&nbsp; <br />
&nbsp; -在其它类中&nbsp;&nbsp; <br />
&nbsp; -if&nbsp;&nbsp; SDI:AfxGetMainWnd()-&gt;GetActiveView()&nbsp;&nbsp; <br />
&nbsp; -if&nbsp;&nbsp; MDI:AfxGetMainWnd()-&gt;MDIGetActive()-&gt;GetActiveView()&nbsp; </p>
<img src ="http://www.cppblog.com/tiger7/aggbug/113483.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tiger7/" target="_blank">tiger7</a> 2011-07-30 20:09 <a href="http://www.cppblog.com/tiger7/articles/113483.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WTL学习：在DDX_TEXT(controlID, variable)中第二个参数是CString的问题（cannot convert parameter 2 from 'WTL::CString' to 'LPTSTR'）</title><link>http://www.cppblog.com/tiger7/articles/WTL-DDX_TEXT.html</link><dc:creator>tiger7</dc:creator><author>tiger7</author><pubDate>Fri, 10 Jun 2011 03:01:00 GMT</pubDate><guid>http://www.cppblog.com/tiger7/articles/WTL-DDX_TEXT.html</guid><wfw:comment>http://www.cppblog.com/tiger7/comments/148405.html</wfw:comment><comments>http://www.cppblog.com/tiger7/articles/WTL-DDX_TEXT.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tiger7/comments/commentRss/148405.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tiger7/services/trackbacks/148405.html</trackback:ping><description><![CDATA[<blockquote style>
<p>在学习WTL中的DDX_XXX时，写入DDX_MAP时，</p>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #000000; ">BEGIN_DDX_MAP(CMainDlg)<br />
&nbsp;&nbsp;&nbsp;&nbsp;DDX_CONTROL(IDC_EDIT,&nbsp;m_wndEdit)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">DDX_TEXT(IDC_EDIT,&nbsp;m_sEditContents)<br />
</span><span>END_DDX_MAP()</span></div>
<p>其中红色部分编译时碰到一个问题，提示语是：&#8220; error C2664: 'BOOL WTL::CWinDataExchange&lt;T&gt;::DDX_Text(UINT,LPTSTR,int,BOOL,BOOL,int)' : cannot convert parameter 2 from 'WTL::CString' to 'LPTSTR'&#8221;，直接在google上搜索这个问题，基本上没有看到解决方法，最后只好去查找源码，发现有处定义为：</p>
<p>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #0000FF; ">#if</span><span style="color: #000000; ">&nbsp;defined(</span><span style="color: #ff0000">_WTL_USE_CSTRING</span><span style="color: #000000; ">)&nbsp;||&nbsp;defined(__ATLSTR_H__)</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;BOOL&nbsp;DDX_Text(UINT&nbsp;nID,&nbsp;_CSTRING_NS::CString</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">&nbsp;strText,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; ">cbSize</span><span style="color: #008000; ">*/</span><span style="color: #000000; ">,&nbsp;BOOL&nbsp;bSave,&nbsp;BOOL&nbsp;bValidate&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;FALSE,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;nLength&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />
{<br />
<img src="http://www.cppblog.com/Images/dot.gif"  alt="" /><img src="http://www.cppblog.com/Images/dot.gif"  alt="" />.<br />
}</span></div>
</p>
<p>因为平时在查看参考资料时，看到的都是告诉我们要使用CString要先定义下&#8220;#define _ATL_USE_CSTRING&#8221;，前面都没有写过这个定义，马上在google上搜索下&#8220;_WTL_USE_CSTRING&#8221;，这下好了，终于找到解答了：</p>
<p>
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">ATL3的环境下，</span><span style="color: #ff0000">#define</span><span style="color: #ff0000">&nbsp;&nbsp;_WTL_USE_CSTRING&nbsp;这个定义其实非常必要。如果不定义这个直接包含atlmisc.h，这样只是你的程序知道用CString，WTL的库并不知道。这个时候，使用DDX_TEXT就会出现问题。</span></div>
最后在stdafx.h中，将&#8220;_ATL_USE_CSTRING&#8221;改为&#8220;_WTL_USE_CSTRING&#8221;，在编译，程序终于正常了~~~~~~~</p>
<p><br />
</p>
</blockquote>
<img src ="http://www.cppblog.com/tiger7/aggbug/148405.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tiger7/" target="_blank">tiger7</a> 2011-06-10 11:01 <a href="http://www.cppblog.com/tiger7/articles/WTL-DDX_TEXT.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WaitForSingleObject</title><link>http://www.cppblog.com/tiger7/articles/143313.html</link><dc:creator>tiger7</dc:creator><author>tiger7</author><pubDate>Sat, 02 Apr 2011 14:11:00 GMT</pubDate><guid>http://www.cppblog.com/tiger7/articles/143313.html</guid><wfw:comment>http://www.cppblog.com/tiger7/comments/143313.html</wfw:comment><comments>http://www.cppblog.com/tiger7/articles/143313.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tiger7/comments/commentRss/143313.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tiger7/services/trackbacks/143313.html</trackback:ping><description><![CDATA[WaitForSingleObject函数原型：<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">DWORD&nbsp;WaitForSingleObject(<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;HANDLE&nbsp;hHandle,<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;DWORD&nbsp;dwMilliseconds<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">);</span></div>
<p>参数说明：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hHandle：是一个事件的句柄。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwMilliseconds：是时间间隔。如果时间内是有信号状态返回WAIT_OBJECT_0，如果时间超过dwMilliseconds值但时间事件还是无信号状态则返回WAIT_TIMEOUT。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WaitForSingleObject函数用来检测hHandle对象的信号状态，当函数的执行时间超过dwMilliseconds就返回，但如果参数dwMilliseconds为INFINITE时函数将直到相应时间事件变成有信号状态才返回，否则就一直等待下去，直到WaitForSingleObject有返回直才执行后面的代码。<br><br>HANDLE对应的对象及这些对象状态对应的情况有：<br><span style="COLOR: red">Thread 线程：</span><br>&nbsp; 当线程结束时，线程对象即被激发。当线程还在进行时，则对象处于未激发状态。 </p>
<p><span style="COLOR: red">Process 进程：</span><br>&nbsp; 当进程结束时，进程对象即被激发。当进程还在进行时，则对象处于未激发状态。 </p>
<p><span style="COLOR: red">Change Notification：<br></span>&nbsp; 当一个特定的磁盘子目录中发生一件特别的变化时，此对象即被激发。此对象系由 FindFirstChangeNotification() 产生。</p>
<p><span style="COLOR: red">Console Input ：</span><br>&nbsp; 当console 窗口的输入缓冲区中有数据可用时，此对象将处于激发状态。CreateFile （）和GetStdFile （）两函数可以获得console handle 。 </p>
<p><span style="COLOR: red">Event 事件：</span>&nbsp;<br>&nbsp; Event 对象的状态直接受控于应用程序所使用的三个 Win32 函数： SetEvent （）， PulseEvent （）， ResetEvent （）。 CreateEvent （）和 OpenEvent （）都可以传回一个 event object handle 。 Event 对象的状态也可以被操作系统设定——如果使用于&#8220;overlapped&nbsp; &#8221;操作时。当Event激活时，WaitForSingleObject将会得到一个WAIT_OBJECT_0的值。</p>
<p><span style="COLOR: red">Mutex 互斥体：</span><br>&nbsp; 如果mutex 没有被任何线程拥有，他就是处于激发状态。一旦一个等待mutex 的函数返回了，mutex 也就自动重置为未激发状态。CreateMutex （）和OpenMutex （）都可以获得一个 Mutext 的 handle 。</p>
<p><span style="COLOR: red">Semaphore 信号量 ：</span><br>&nbsp; Semaphore 有点像mutex ，但他有个计数器，可以约束其拥有者（线程）的个数。当计数器内容大于0 时， semaphore 处于激发状态，当计数器内容等于0 时，semaphore 处于未激发状态。CreateSemaphore （）和OpenSemaphore（）可以传回一个semaphore handle 。<br><br><span style="COLOR: red">Job：<br></span>&nbsp;&nbsp; 暂时没搜到到内容。。。。。<br><br><span style="COLOR: red">Waitable timer计时：</span><br>&nbsp;&nbsp; 如果计时的时间间隔到达时，他就处于激活状态。CreateWaitableTimer（）传回一个Waitable timer handle。SetWaitableTimer（），如果SetWaitableTimer调用时waitable timer已经在计时中，则中止前面的计时，重新开始计时。这一过程不会使 waitable timer变成singled状态。只有当定时的间隔到时，waitable timer才会变成singled状态。CancelWaitableTimer （）中止waitable time对象的计时。</p>
<img src ="http://www.cppblog.com/tiger7/aggbug/143313.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tiger7/" target="_blank">tiger7</a> 2011-04-02 22:11 <a href="http://www.cppblog.com/tiger7/articles/143313.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>怎样使用WIN32的事件（Event）核心对象----How to use WIN32 Event Kernel Object（源码下载）</title><link>http://www.cppblog.com/tiger7/articles/143238.html</link><dc:creator>tiger7</dc:creator><author>tiger7</author><pubDate>Fri, 01 Apr 2011 14:23:00 GMT</pubDate><guid>http://www.cppblog.com/tiger7/articles/143238.html</guid><wfw:comment>http://www.cppblog.com/tiger7/comments/143238.html</wfw:comment><comments>http://www.cppblog.com/tiger7/articles/143238.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/tiger7/comments/commentRss/143238.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tiger7/services/trackbacks/143238.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1、说明&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;事件的同步是一个很麻烦的区域，虽然有很多方法去处理它。市面上也有很多书和文章介绍怎样避免多线程产生的噩梦。通过处理这些噩梦，我渐渐理解了WIN32的事件（Win32 Kernel objects）。在最初时，我不能理解怎么通过在线程中使用全局变量来使用全局的核心事件；后来我理解后，我...&nbsp;&nbsp;<a href='http://www.cppblog.com/tiger7/articles/143238.html'>阅读全文</a><img src ="http://www.cppblog.com/tiger7/aggbug/143238.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tiger7/" target="_blank">tiger7</a> 2011-04-01 22:23 <a href="http://www.cppblog.com/tiger7/articles/143238.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>（转）VC++显示弹出式菜单的两种方法   --  曾棕根 2005-1-26</title><link>http://www.cppblog.com/tiger7/articles/110495.html</link><dc:creator>tiger7</dc:creator><author>tiger7</author><pubDate>Thu, 25 Mar 2010 02:40:00 GMT</pubDate><guid>http://www.cppblog.com/tiger7/articles/110495.html</guid><wfw:comment>http://www.cppblog.com/tiger7/comments/110495.html</wfw:comment><comments>http://www.cppblog.com/tiger7/articles/110495.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tiger7/comments/commentRss/110495.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tiger7/services/trackbacks/110495.html</trackback:ping><description><![CDATA[<p align=left>这里记录下2中弹出右键菜单的方法，一个是弹出已建立的，一个是灵活加载菜单项的。<br>方法一：调入菜单资源（这里要先建立一个菜单）</p>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><font style="BACKGROUND-COLOR: #ffffff" color=#0000ff>// CMy1View message handlers<br>///先在Menu资源中添加弹出式菜单，命名：IDR_MENU1<br>///再添加CView类的消息WM_CONTEXTMENU<br>///在消息处理函数中添加函数<br></font><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&#160;CMy1View::OnContextMenu(CWnd</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&#160;pWnd,&#160;CPoint&#160;point)&#160;<br><img id=Codehighlighter1_56_237_Open_Image onclick="this.style.display='none'; Codehighlighter1_56_237_Open_Text.style.display='none'; Codehighlighter1_56_237_Closed_Image.style.display='inline'; Codehighlighter1_56_237_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_56_237_Closed_Image onclick="this.style.display='none'; Codehighlighter1_56_237_Closed_Text.style.display='none'; Codehighlighter1_56_237_Open_Image.style.display='inline'; Codehighlighter1_56_237_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_56_237_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_56_237_Open_Text><span style="COLOR: #000000">{&#160;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&#160;&#160;&#160;CMenu&#160;menu;&#160;menu.LoadMenu(IDR_MENU1);<br><img id=Codehighlighter1_137_174_Open_Image onclick="this.style.display='none'; Codehighlighter1_137_174_Open_Text.style.display='none'; Codehighlighter1_137_174_Closed_Image.style.display='inline'; Codehighlighter1_137_174_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_137_174_Closed_Image onclick="this.style.display='none'; Codehighlighter1_137_174_Closed_Text.style.display='none'; Codehighlighter1_137_174_Open_Image.style.display='inline'; Codehighlighter1_137_174_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&#160;&#160;&#160;CMenu&#160;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&#160;popup</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&#160;menu.GetSubMenu(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_137_174_Closed_Text>/**/</span><span id=Codehighlighter1_137_174_Open_Text><span style="COLOR: #808080">///</span><span style="COLOR: #008000">0是指IDR_MENU1中第0列菜单。可以随便取一项菜单，编号0~n</span><span style="COLOR: #808080"></span></span><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif"><span style="COLOR: #000000">&#160;&#160;&#160;popup</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">);&#160;}</span></span><span style="COLOR: #000000">&#160;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span></div>
<p>方法二：自主添加菜单项<br></p>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><font style="BACKGROUND-COLOR: #ffffff" color=#0000ff>///自己创建菜单项<br></font><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&#160;CMy2View::OnContextMenu(CWnd</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&#160;pWnd,&#160;CPoint&#160;point)&#160;<br><img id=Codehighlighter1_56_389_Open_Image onclick="this.style.display='none'; Codehighlighter1_56_389_Open_Text.style.display='none'; Codehighlighter1_56_389_Closed_Image.style.display='inline'; Codehighlighter1_56_389_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_56_389_Closed_Image onclick="this.style.display='none'; Codehighlighter1_56_389_Closed_Text.style.display='none'; Codehighlighter1_56_389_Open_Image.style.display='inline'; Codehighlighter1_56_389_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_56_389_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_56_389_Open_Text><span style="COLOR: #000000">{&#160;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&#160;&#160;&#160;&#160;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&#160;TODO:&#160;Add&#160;your&#160;message&#160;handler&#160;code&#160;here&#160;</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&#160;&#160;&#160;&#160;CMenu&#160;menuPopup;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&#160;&#160;&#160;&#160;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(menuPopup.CreatePopupMenu())<br><img id=Codehighlighter1_169_387_Open_Image onclick="this.style.display='none'; Codehighlighter1_169_387_Open_Text.style.display='none'; Codehighlighter1_169_387_Closed_Image.style.display='inline'; Codehighlighter1_169_387_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_169_387_Closed_Image onclick="this.style.display='none'; Codehighlighter1_169_387_Closed_Text.style.display='none'; Codehighlighter1_169_387_Open_Image.style.display='inline'; Codehighlighter1_169_387_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&#160;&#160;&#160;&#160;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_169_387_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_169_387_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;menuPopup.AppendMenu(MF_STRING,ID_FILE_SAVE,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">保存文件\tCtrl+S</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;menuPopup.AppendMenu(MF_STRING,ID_FILE_PRINT,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">打印文件\tCtrl+P</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;menuPopup.TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&#160;&#160;&#160;&#160;&#160;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">&#160;</span></div>
<p>&#160;</p>
 <img src ="http://www.cppblog.com/tiger7/aggbug/110495.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tiger7/" target="_blank">tiger7</a> 2010-03-25 10:40 <a href="http://www.cppblog.com/tiger7/articles/110495.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>