﻿<?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++博客-daiybh@ this-&gt;cppblog-随笔分类-mfc</title><link>http://www.cppblog.com/daiybh/category/3458.html</link><description>我的，我的，还是我的！！</description><language>zh-cn</language><lastBuildDate>Tue, 30 Jun 2009 06:41:42 GMT</lastBuildDate><pubDate>Tue, 30 Jun 2009 06:41:42 GMT</pubDate><ttl>60</ttl><item><title>让窗体永远显示在桌面上</title><link>http://www.cppblog.com/daiybh/archive/2009/06/30/88885.html</link><dc:creator>代李</dc:creator><author>代李</author><pubDate>Tue, 30 Jun 2009 05:25:00 GMT</pubDate><guid>http://www.cppblog.com/daiybh/archive/2009/06/30/88885.html</guid><wfw:comment>http://www.cppblog.com/daiybh/comments/88885.html</wfw:comment><comments>http://www.cppblog.com/daiybh/archive/2009/06/30/88885.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/daiybh/comments/commentRss/88885.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/daiybh/services/trackbacks/88885.html</trackback:ping><description><![CDATA[<div><font face="Courier New, Courier, mono" size="-1"><div>HWND hDesktop = ::FindWindow(_T("Progman"),_T("Program Manager"));</div><div>::SetParent(this-&gt;m_hWnd,hDesktop);</div></font></div>
<img src ="http://www.cppblog.com/daiybh/aggbug/88885.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/daiybh/" target="_blank">代李</a> 2009-06-30 13:25 <a href="http://www.cppblog.com/daiybh/archive/2009/06/30/88885.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[zt]使用StretchBlt之前一定要用SetStretchBltMode(COLORONCOLOR)啊！！！ </title><link>http://www.cppblog.com/daiybh/archive/2008/09/28/62986.html</link><dc:creator>代李</dc:creator><author>代李</author><pubDate>Sun, 28 Sep 2008 06:02:00 GMT</pubDate><guid>http://www.cppblog.com/daiybh/archive/2008/09/28/62986.html</guid><wfw:comment>http://www.cppblog.com/daiybh/comments/62986.html</wfw:comment><comments>http://www.cppblog.com/daiybh/archive/2008/09/28/62986.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/daiybh/comments/commentRss/62986.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/daiybh/services/trackbacks/62986.html</trackback:ping><description><![CDATA[<div>近日使用StretchDIBits 发生事故 情况与转帖 一样。特此标记。</div><div>转帖地址 &#160;http://blog.vckbase.com/longest/archive/2006/11/21/23194.html</div><img src ="http://www.cppblog.com/daiybh/aggbug/62986.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/daiybh/" target="_blank">代李</a> 2008-09-28 14:02 <a href="http://www.cppblog.com/daiybh/archive/2008/09/28/62986.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[zt]实战VC时间控制函数</title><link>http://www.cppblog.com/daiybh/archive/2007/11/06/35977.html</link><dc:creator>代李</dc:creator><author>代李</author><pubDate>Tue, 06 Nov 2007 10:15:00 GMT</pubDate><guid>http://www.cppblog.com/daiybh/archive/2007/11/06/35977.html</guid><wfw:comment>http://www.cppblog.com/daiybh/comments/35977.html</wfw:comment><comments>http://www.cppblog.com/daiybh/archive/2007/11/06/35977.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/daiybh/comments/commentRss/35977.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/daiybh/services/trackbacks/35977.html</trackback:ping><description><![CDATA[
<p>实战VC时间控制函数<br/>孙鹤泉<br/><br/>--------------------------------------------------------------------------------<br/><br/>　　随着软硬件的飞速发展，计算机技术已经广泛地应用到自动化控制领域，为了实现实时控制，控制程序必须能够精确地完成定时和计时功能。VC提供了很多关于时间操作的函数，下面根据它们精度的不同，分别进行说明。<br/><br/>　　一般时控函数<br/><br/>　　VC程序员都会利用Windows的WM-TIMER消息映射来进行简单的时间控制：1.调用函数SetTimer()设置定时间隔，如SetTimer(0,200,NULL)即为设置200毫秒的时间间隔；2.在应用程序中增加定时响应函数OnTimer()，并在该函数中添加响应的处理语句，用来完成时间到时的操作。这种定时方法是非常简单的，但其定时功能如同Sleep()函数的延时功能一样，精度较低，只可以用来实现诸如位图的动态显示等对定时精度要求不高的情况，而在精度要求较高的条件下，这种方法应避免采用。<br/><br/>　　精度时控函数<br/><br/>　　在要求误差不大于1毫秒的情况下，可以采用GetTickCount()函数，该函数的返回值是DWORD型，表示以毫秒为单位的计算机启动后经历的时间间隔。使用下面的编程语句，可以实现50毫秒的精确定时，其误差小于1毫秒。<br/><br/>　　DWORD dwStart, dwStop;<br/><br/>　　// 起始值和终止值<br/><br/>　　dwStop = GetTickCount();<br/><br/>　　while(TRUE)<br/><br/>　　{<br/><br/>　　 dwStart = dwStop;<br/><br/>　　// 上一次的终止值变成新的起始值<br/><br/>　　// 此处添加相应控制语句<br/><br/>　　 do<br/><br/>　　 {<br/><br/>　　dwStop = GetTickCount();<br/><br/>　　 } while(dwStop － 50 &lt; dwStart);<br/><br/>　　}<br/><br/>　　高精度时控函数<br/><br/>　　对于一般的实时控制，使用GetTickCount()函数就可以满足精度要求，但要进一步提高计时精度，就要采用QueryPerformanceFrequency()函数和QueryPerformanceCounter()函数。这两个函数是VC提供的仅供Windows 9X使用的高精度时间函数，并要求计算机从硬件上支持高精度计时器。QueryPerformanceFrequency()函数和QueryPerformanceCounter()函数的原型为：<br/><br/>　　BOOL QueryPerformanceFrequency(LARGE-INTEGER ＊lpFrequency);<br/><br/>　　BOOL QueryPerformanceCounter(LARGE-INTEGER ＊lpCount) ;<br/><br/>　　数据类型LARGE-INTEGER既可以是一个作为8字节长的整型数，也可以是作为两个4字节长的整型数的联合结构，其具体用法根据编译器是否支持64位而定。该类型的定义如下：<br/><br/>　　typedef union -LARGE-INTEGER<br/><br/>　　{<br/><br/>　　 struct<br/><br/>　　 {<br/><br/>　　DWORD LowPart; // 4字节整型数<br/><br/>　　LONG　　HighPart; // 4字节整型数<br/><br/>　　};<br/><br/>　　LONGLONG　　QuadPart;<br/><br/>　　// 8字节整型数<br/><br/>　　} LARGE-INTEGER;<br/><br/>　　在进行计时之前，应该先调用QueryPerformanceFrequency()函数获得机器内部计时器的时钟频率。笔者在主频为266、300、333的三种PentiumⅡ机器上使用该函数，得到的时钟频率都是1193180Hz。接着，笔者在需要严格计时的事件发生之前和发生之后分别调用QueryPerformanceCounter()函数，利用两次获得的计数之差和时钟频率，就可以计算出事件经历的精确时间。以下程序是用来测试函数Sleep(100)的精确持续时间。<br/><br/>　　LARGE-INTEGER litmp;<br/><br/>　　LONGLONG QPart1,QPart2;<br/><br/>　　double dfMinus, dfFreq, dfTim;<br/><br/>　　QueryPerformanceFrequency(＆litmp);<br/><br/>　　// 获得计数器的时钟频率<br/><br/>　　dfFreq = (double)litmp.QuadPart;<br/><br/>　　QueryPerformanceCounter(＆litmp);<br/><br/>　　// 获得初始值<br/><br/>　　QPart1 = litmp.QuadPart;<br/><br/>　　Sleep(100) ;<br/><br/>　　QueryPerformanceCounter(＆litmp);<br/><br/>　　// 获得终止值<br/><br/>　　QPart2 = litmp.QuadPart;<br/><br/>　　dfMinus = (double)(QPart2 － QPart1);<br/><br/>　　dfTim = dfMinus / dfFreq;<br/><br/>　　// 获得对应的时间值<br/><br/>　　执行上面程序，得到的结果为dfTim=0.097143767076216(秒)。细心的读者会发现，每次执行的结果都不一样，存在一定的差别，这是由于Sleep()自身的误差所致。<br/><br/>　　本文介绍了三种定时或计时的实现方法，读者可以根据自己的实际情况进行选择，以达到程序的定时和计时功能。以上程序均在VC 6.0、Windows 98环境下调试通过。</p>
<img src ="http://www.cppblog.com/daiybh/aggbug/35977.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/daiybh/" target="_blank">代李</a> 2007-11-06 18:15 <a href="http://www.cppblog.com/daiybh/archive/2007/11/06/35977.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>修正vc6中的一些（不一样）吧</title><link>http://www.cppblog.com/daiybh/archive/2007/08/09/29641.html</link><dc:creator>代李</dc:creator><author>代李</author><pubDate>Thu, 09 Aug 2007 06:03:00 GMT</pubDate><guid>http://www.cppblog.com/daiybh/archive/2007/08/09/29641.html</guid><wfw:comment>http://www.cppblog.com/daiybh/comments/29641.html</wfw:comment><comments>http://www.cppblog.com/daiybh/archive/2007/08/09/29641.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/daiybh/comments/commentRss/29641.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/daiybh/services/trackbacks/29641.html</trackback:ping><description><![CDATA[
<p>不知道这些算的上是错误不。就用（不一样）来代替吧。</p>
<ol>
<li>
<p>在for里面定义的int i 可以在for 后面使用。。<br/><span style="FONT-SIZE: 0.75em">这个问题在移植过程中修改起来很累。当然也算的上错误了<br/>解决方法： 在afxwin.h 或者在afx.h中添写<br/>#define for if(0); else for</span></p>
</li>
<li>
<p>在程序中使用winsock2。<br/>在afxsock.h中<br/><br/></p>
<ul>
<li style="FONT-SIZE: 0.75em">修改<br/>#ifndef _WINSOCKAPI_<br/><span style="COLOR: #ff0000">#include &lt;winsock.h&gt;</span><br/>#endif<br/>为<br/>#ifndef _WINSOCKAPI_<br/><span style="COLOR: #ff0000">#include &lt;winsock2.h&gt;<br/></span> #endif</li>
</ul>
<ul>
<li>
<p><span style="FONT-SIZE: 0.75em">修改<br/>#pragma comment(lib, "<span style="COLOR: #ff0000">wsock32.lib</span>")<br/>为<br/>#pragma comment(lib, "<span style="COLOR: #ff0000">ws2_32.lib</span>")</span></p>
</li>
</ul>
</li>
</ol>
<img src ="http://www.cppblog.com/daiybh/aggbug/29641.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/daiybh/" target="_blank">代李</a> 2007-08-09 14:03 <a href="http://www.cppblog.com/daiybh/archive/2007/08/09/29641.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GUI程序也能使用控制台窗口 </title><link>http://www.cppblog.com/daiybh/archive/2007/05/09/23695.html</link><dc:creator>代李</dc:creator><author>代李</author><pubDate>Wed, 09 May 2007 03:59:00 GMT</pubDate><guid>http://www.cppblog.com/daiybh/archive/2007/05/09/23695.html</guid><wfw:comment>http://www.cppblog.com/daiybh/comments/23695.html</wfw:comment><comments>http://www.cppblog.com/daiybh/archive/2007/05/09/23695.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/daiybh/comments/commentRss/23695.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/daiybh/services/trackbacks/23695.html</trackback:ping><description><![CDATA[在&nbsp;<a href="http://www.cppblog.com/wish/">wish</a> 那里看到这个文章&nbsp;<a href="http://www.cppblog.com/wish/archive/2007/05/08/23643.html">GUI程序也能使用控制台窗口</a> <br>根据&nbsp;&nbsp;&nbsp;&nbsp;<a id=AjaxHolder_Comments_CommentList_ctl02_NameLink href="http://www.cppblog.com/eXile/" target=_blank><font style="BACKGROUND-COLOR: #c0c0c0" size=2>eXile</font></a>&nbsp;的评论 做了一番 果然行.<br>特记录一下.<br>1 按照正常顺序生成gui程序，当然程序里面的写入cout printf等语句。<br>2 在命令行里用 <span style="COLOR: #ff9900">editbin /SUBSYSTEM:CONSOLE $(TargetPath)</span>&nbsp;&nbsp;<br>&nbsp; $(TargetPath)&nbsp;&nbsp;就是生成好的exe程序。<br>3 完了后运行该程序即可<br>4&nbsp;为了方便 也可以把2 里面的语句加入vc的工具里面 估计 <a id=AjaxHolder_Comments_CommentList_ctl02_NameLink href="http://www.cppblog.com/eXile/" target=_blank><font style="BACKGROUND-COLOR: #c0c0c0" size=2>eXile</font></a>&nbsp;就这样干的。<br>&nbsp;
<img src ="http://www.cppblog.com/daiybh/aggbug/23695.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/daiybh/" target="_blank">代李</a> 2007-05-09 11:59 <a href="http://www.cppblog.com/daiybh/archive/2007/05/09/23695.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在mfc中使用RichEdit 该注意的.</title><link>http://www.cppblog.com/daiybh/archive/2007/01/17/17718.html</link><dc:creator>代李</dc:creator><author>代李</author><pubDate>Wed, 17 Jan 2007 05:27:00 GMT</pubDate><guid>http://www.cppblog.com/daiybh/archive/2007/01/17/17718.html</guid><wfw:comment>http://www.cppblog.com/daiybh/comments/17718.html</wfw:comment><comments>http://www.cppblog.com/daiybh/archive/2007/01/17/17718.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/daiybh/comments/commentRss/17718.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/daiybh/services/trackbacks/17718.html</trackback:ping><description><![CDATA[
		<font size="4">在mfc中使用工具栏里的RichEdit 控件时,应该在程序初始话时加入 </font>
		<font size="4">
				<font color="#ff6600">AfxInitRichEdit</font>,或者 </font>
		<font size="4">
				<font color="#ff0000">AfxInitRichEdit2</font>
				<br />否则的话 程序会起不来.也没有任何错误信息.<br />这俩函数 是加载 Riched20.dll(</font>Riched32.dll <font size="4">)的.<br /><br /><br /><br />----------------------------------------------------------------<br />具体查阅 <br /><a target="" class="" title="" href="http://support.microsoft.com/kb/316375/zh-cn">微软中文</a>(机器自动翻译的)<br /><br /><br /></font><div class="indent">
AfxInitRichEdit<br /><span class="ll"><a href="http://msdn.microsoft.com/library/en-us/vclib/html/_mfc_AfxInitRichEdit.asp">http://msdn.microsoft.com/library/en-us/vclib/html/_mfc_AfxInitRichEdit.asp</a></span><span class="pLink"></span></div>
AfxInitRichEdit2<br /><span class="ll"><a href="http://msdn.microsoft.com/library/en-us/vclib/html/vclrfafxinitrichedit2.asp">http://msdn.microsoft.com/library/en-us/vclib/html/vclrfafxinitrichedit2.asp</a></span><br /><img src ="http://www.cppblog.com/daiybh/aggbug/17718.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/daiybh/" target="_blank">代李</a> 2007-01-17 13:27 <a href="http://www.cppblog.com/daiybh/archive/2007/01/17/17718.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CTreeCtl控件</title><link>http://www.cppblog.com/daiybh/archive/2005/09/29/489.html</link><dc:creator>代李</dc:creator><author>代李</author><pubDate>Thu, 29 Sep 2005 10:02:00 GMT</pubDate><guid>http://www.cppblog.com/daiybh/archive/2005/09/29/489.html</guid><wfw:comment>http://www.cppblog.com/daiybh/comments/489.html</wfw:comment><comments>http://www.cppblog.com/daiybh/archive/2005/09/29/489.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/daiybh/comments/commentRss/489.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/daiybh/services/trackbacks/489.html</trackback:ping><description><![CDATA[若要改变树控件中的字符，<br>
在mfc中重载 TVN _BEGINLABELEDIT和TVN _ENDLABELEDIT消息<br>
并使得TVN _ENDLABELEDIT 的消息返回为真(<font color="#00309c">*pResult = TRUE;</font>)<br>
<img src ="http://www.cppblog.com/daiybh/aggbug/489.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/daiybh/" target="_blank">代李</a> 2005-09-29 18:02 <a href="http://www.cppblog.com/daiybh/archive/2005/09/29/489.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>