﻿<?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++博客-老茂-随笔分类-MFC</title><link>http://www.cppblog.com/maosher/category/10168.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 20 Feb 2011 16:32:06 GMT</lastBuildDate><pubDate>Sun, 20 Feb 2011 16:32:06 GMT</pubDate><ttl>60</ttl><item><title>AfxGetMainWnd()在线程里使用的问题</title><link>http://www.cppblog.com/maosher/archive/2010/08/26/124783.html</link><dc:creator>Brandon</dc:creator><author>Brandon</author><pubDate>Thu, 26 Aug 2010 03:08:00 GMT</pubDate><guid>http://www.cppblog.com/maosher/archive/2010/08/26/124783.html</guid><wfw:comment>http://www.cppblog.com/maosher/comments/124783.html</wfw:comment><comments>http://www.cppblog.com/maosher/archive/2010/08/26/124783.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/maosher/comments/commentRss/124783.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/maosher/services/trackbacks/124783.html</trackback:ping><description><![CDATA[<font size=1>AfxGetMainWnd()的使用依赖于线程<br>具体参加源代码<br><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"><span style="COLOR: #008080">&nbsp;1</span><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">_AFXWIN_INLINE&nbsp;CWnd</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;AFXAPI&nbsp;AfxGetMainWnd()<br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img id=Codehighlighter1_44_142_Open_Image onclick="this.style.display='none'; Codehighlighter1_44_142_Open_Text.style.display='none'; Codehighlighter1_44_142_Closed_Image.style.display='inline'; Codehighlighter1_44_142_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_44_142_Closed_Image onclick="this.style.display='none'; Codehighlighter1_44_142_Closed_Text.style.display='none'; Codehighlighter1_44_142_Open_Image.style.display='inline'; Codehighlighter1_44_142_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_44_142_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_44_142_Open_Text><span style="COLOR: #000000">{&nbsp;CWinThread</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pThread&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;AfxGetThread();<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;pThread&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;NULL&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;pThread</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">GetMainWnd()&nbsp;:&nbsp;NULL;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">而AfxGetThread获取的是当前线程，而不是主线程！</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #008000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #000000">CWinThread</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;AFXAPI&nbsp;AfxGetThread()<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img id=Codehighlighter1_211_392_Open_Image onclick="this.style.display='none'; Codehighlighter1_211_392_Open_Text.style.display='none'; Codehighlighter1_211_392_Closed_Image.style.display='inline'; Codehighlighter1_211_392_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_211_392_Closed_Image onclick="this.style.display='none'; Codehighlighter1_211_392_Closed_Text.style.display='none'; Codehighlighter1_211_392_Open_Image.style.display='inline'; Codehighlighter1_211_392_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_211_392_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_211_392_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;check&nbsp;for&nbsp;current&nbsp;thread&nbsp;in&nbsp;module&nbsp;thread&nbsp;state</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #008000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">AFX_MODULE_THREAD_STATE</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pState&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;AfxGetModuleThreadState();<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">CWinThread</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pThread&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;pState</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">m_pCurrentWinThread;<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;pThread;<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span></div>
</font>所以在非主线程里使用可能会有问题，解决方法，在新创建的线程里使用AfxGetApp()-&gt;m_pMainWnd;
<img src ="http://www.cppblog.com/maosher/aggbug/124783.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/maosher/" target="_blank">Brandon</a> 2010-08-26 11:08 <a href="http://www.cppblog.com/maosher/archive/2010/08/26/124783.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RadioButton</title><link>http://www.cppblog.com/maosher/archive/2010/07/26/121276.html</link><dc:creator>Brandon</dc:creator><author>Brandon</author><pubDate>Mon, 26 Jul 2010 00:19:00 GMT</pubDate><guid>http://www.cppblog.com/maosher/archive/2010/07/26/121276.html</guid><wfw:comment>http://www.cppblog.com/maosher/comments/121276.html</wfw:comment><comments>http://www.cppblog.com/maosher/archive/2010/07/26/121276.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/maosher/comments/commentRss/121276.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/maosher/services/trackbacks/121276.html</trackback:ping><description><![CDATA[<p>RadioButton的分组是按TabStop来分的，第一个Group为true 直到碰到下一个Group为true前，一直是一组</p>
<img src ="http://www.cppblog.com/maosher/aggbug/121276.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/maosher/" target="_blank">Brandon</a> 2010-07-26 08:19 <a href="http://www.cppblog.com/maosher/archive/2010/07/26/121276.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于MFC画图的一些总结，MFC （Draw）</title><link>http://www.cppblog.com/maosher/archive/2009/04/30/81565.html</link><dc:creator>Brandon</dc:creator><author>Brandon</author><pubDate>Thu, 30 Apr 2009 07:07:00 GMT</pubDate><guid>http://www.cppblog.com/maosher/archive/2009/04/30/81565.html</guid><wfw:comment>http://www.cppblog.com/maosher/comments/81565.html</wfw:comment><comments>http://www.cppblog.com/maosher/archive/2009/04/30/81565.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/maosher/comments/commentRss/81565.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/maosher/services/trackbacks/81565.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 转自：http://www.cnblogs.com/volnet/articles/472794.html首先对按下鼠标的一点进行记录，因此在WM_LBUTTONDOWN添加代码：void&#160;CDrawView::OnLButtonDown(UINT nFlags, CPoint point){&#160;&#160;&#160;&#160;&#160;// TODO:&#160;...&nbsp;&nbsp;<a href='http://www.cppblog.com/maosher/archive/2009/04/30/81565.html'>阅读全文</a><img src ="http://www.cppblog.com/maosher/aggbug/81565.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/maosher/" target="_blank">Brandon</a> 2009-04-30 15:07 <a href="http://www.cppblog.com/maosher/archive/2009/04/30/81565.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CEdit里的光标</title><link>http://www.cppblog.com/maosher/archive/2009/04/03/78796.html</link><dc:creator>Brandon</dc:creator><author>Brandon</author><pubDate>Fri, 03 Apr 2009 03:14:00 GMT</pubDate><guid>http://www.cppblog.com/maosher/archive/2009/04/03/78796.html</guid><wfw:comment>http://www.cppblog.com/maosher/comments/78796.html</wfw:comment><comments>http://www.cppblog.com/maosher/archive/2009/04/03/78796.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/maosher/comments/commentRss/78796.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/maosher/services/trackbacks/78796.html</trackback:ping><description><![CDATA[
<span style="font-family: ����; font-size: 12px;"><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); 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: #0000FF; ">int</span><span style="color: #000000; ">&#160;&#160;&#160;nStart,&#160;&#160;&#160;nEnd;&#160;&#160;&#160;<br><br>m_edit1.GetSel(nStart,&#160;&#160;&#160;nEnd);&#160;&#160;&#160;<br><br></span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(nStart&#160;&#160;&#160;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&#160;&#160;&#160;nEnd)&#160;&#160;&#160;<br>{&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;m_edit1.SetSel(nStart</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,&#160;&#160;&#160;nEnd</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br>}</span></div>CEdit不支持<span style="font-family: Verdana; font-size: 17px; font-weight: bold; ">SetCaretPos()详见：<a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;259949#appliesto">http://support.microsoft.com/default.aspx?scid=kb;en-us;259949#appliesto</a></span></span><div><span style="font-family: Verdana; font-size: 17px; font-weight: bold;"><br></span></div><img src ="http://www.cppblog.com/maosher/aggbug/78796.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/maosher/" target="_blank">Brandon</a> 2009-04-03 11:14 <a href="http://www.cppblog.com/maosher/archive/2009/04/03/78796.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MFC时间</title><link>http://www.cppblog.com/maosher/archive/2009/04/01/78571.html</link><dc:creator>Brandon</dc:creator><author>Brandon</author><pubDate>Wed, 01 Apr 2009 06:59:00 GMT</pubDate><guid>http://www.cppblog.com/maosher/archive/2009/04/01/78571.html</guid><wfw:comment>http://www.cppblog.com/maosher/comments/78571.html</wfw:comment><comments>http://www.cppblog.com/maosher/archive/2009/04/01/78571.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/maosher/comments/commentRss/78571.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/maosher/services/trackbacks/78571.html</trackback:ping><description><![CDATA[
一、使用MFC可以用以下代码得到 <br>CTime time = CTime::GetCurrentTime();&#160;&#160; ///构造CTime对象 <br>int m_nYear = time.GetYear();&#160;&#160;&#160;&#160; ///年 <br>int m_nMonth = time.GetMonth();&#160;&#160;&#160;&#160; ///月 <br>int m_nDay = time.GetDay();&#160;&#160;&#160;&#160; ///日 <br>int m_nHour = time.GetHour();&#160;&#160;&#160;&#160; ///小时 <br>int m_nMinute = time.GetMinute();&#160;&#160; ///分钟 <br>int m_nSecond = time.GetSecond();&#160;&#160; ///秒 <br>OF LaUeM_M&#160; <br>我们还可以用CTime::Format函数将CTime对象转换为字符串对象 <br>例如: 5ay~J00O E&#160; <br>CString m_strTime = time.Format("%Y-%m-%d %H:%M:%S"); <br>运行结果:m_strTime为 2001-8-1 12:11:05 <br>二、使用GetSystemTime()这个API函数得到系统时间<br><br>SYSTEMTIME ti; <br>GetSystemTime(&amp;ti);<br>////我们可以通过读取SYSTEMTIME结构体成员直接得到时间<br>typedef struct _SYSTEMTIME <br>&#160; WORD wYear; <br>&#160; WORD wMonth; <br>&#160; WORD wDayOfWeek;<br>&#160; WORD wDay;<br>&#160; WORD wHour; <br>&#160; WORD wMinute; <br><br><br>一、使用MFC的CTime类来得到时间：<br>&#160;&#160;&#160; CTime必须调用赋值函数，使用其静态函数来初始化<br>&#160;&#160;&#160; 例如：<br>&#160;&#160;&#160; CTime time＝CTime::GetCurrentTime（）；<br>&#160;&#160;&#160; 这样就可以直接调用time的内部方法得到你想要的当前的时间了。<br>&#160;&#160;&#160; <br>二、使用MFC的COleDateTime来得到时间：<br>&#160;&#160;&#160; 同上一样，使用MFC 的COleDataTime来处理当前系统的时间也需要首先使用其静态函数来初始化<br>&#160;&#160;&#160; 例如：<br>&#160;&#160;&#160; COleDataTime time＝COleDataTime::GetCurrentTime（）；<br>&#160;&#160;&#160; 这样之后就可以直接调用time的所有方法了。<br><br>针对上面两种MFC的调用方法，MFC帮他们封装好了显示格式的函数，并且能够直接返回CString的格式。同样，也可以自己指定显示格式，具体的显示情况如下%a：显示星期英文的前面几个字母<br>%A：显示星期的全部英文名称<br>%b：显示月份英文的前面几个字母<br>%B：显示月份的全部英文名称<br>%c：以百分号的形式显示日期时间如：06/02/25/ 01:13:57<br>%d：显示月份的序号(01 &#8211; 31)<br>%H：显示时间24小时制(00 &#8211; 23)<br>%I：显示时间12小时制(01 &#8211; 12)<br>%j：显示当前是一年中的第几天(001 &#8211; 366)<br>%m：显示月份序号(01 &#8211; 12)<br>%M：显示分钟(00 &#8211; 59)<br>%p：显示当前时间是上午还是下午 A.M./P.M.<br>%S：显示秒钟(00 &#8211; 59)<br>%U：显示当前是一年中的第几周(00 &#8211; 53)<br>%w：显示星期的序号(0 &#8211; 6; 星期日为 0)<br>%W：显示当前是一年中的第几周(00 &#8211; 53)<br>%x：以百分号的形式显示日期 如：06/02/25/<br>%X：以冒号的形式显示时间 如：01:12:45<br>%y：两位显示年号(00 &#8211; 99)<br>%Y：四位显示年号<br>%#c:显示时间 如：Tuesday, March 14, 1995, 12:41:29<br>%#x:显示时间 如：Tuesday, March 14, 1995<br>具体的其他参考请查看MSDN上面的说明；<br><img src ="http://www.cppblog.com/maosher/aggbug/78571.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/maosher/" target="_blank">Brandon</a> 2009-04-01 14:59 <a href="http://www.cppblog.com/maosher/archive/2009/04/01/78571.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>