﻿<?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/deercoder/category/13115.html</link><description>&lt;P&gt;&lt;FONT style="FONT-SIZE: 20px" color=#ff0000&gt;积累，坚持！&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT style="FONT-SIZE: 20px" color=#ff0000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ---------我是一只IT小小鸟&lt;/FONT&gt;&lt;/P&gt;</description><language>zh-cn</language><lastBuildDate>Tue, 19 Apr 2011 08:17:27 GMT</lastBuildDate><pubDate>Tue, 19 Apr 2011 08:17:27 GMT</pubDate><ttl>60</ttl><item><title>利用MFC显示图像</title><link>http://www.cppblog.com/deercoder/archive/2011/04/18/144473.html</link><dc:creator>刘畅</dc:creator><author>刘畅</author><pubDate>Mon, 18 Apr 2011 08:15:00 GMT</pubDate><guid>http://www.cppblog.com/deercoder/archive/2011/04/18/144473.html</guid><wfw:comment>http://www.cppblog.com/deercoder/comments/144473.html</wfw:comment><comments>http://www.cppblog.com/deercoder/archive/2011/04/18/144473.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/deercoder/comments/commentRss/144473.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/deercoder/services/trackbacks/144473.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/deercoder/archive/2011/04/18/144473.html'>阅读全文</a><img src ="http://www.cppblog.com/deercoder/aggbug/144473.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/deercoder/" target="_blank">刘畅</a> 2011-04-18 16:15 <a href="http://www.cppblog.com/deercoder/archive/2011/04/18/144473.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用WinSocket实现SMTP邮件传输（一）</title><link>http://www.cppblog.com/deercoder/archive/2010/05/02/114170.html</link><dc:creator>刘畅</dc:creator><author>刘畅</author><pubDate>Sun, 02 May 2010 07:59:00 GMT</pubDate><guid>http://www.cppblog.com/deercoder/archive/2010/05/02/114170.html</guid><wfw:comment>http://www.cppblog.com/deercoder/comments/114170.html</wfw:comment><comments>http://www.cppblog.com/deercoder/archive/2010/05/02/114170.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/deercoder/comments/commentRss/114170.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/deercoder/services/trackbacks/114170.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 五一放假了，没有到哪里去玩，虽然说还是很多事情要做，不过先做做这个再说。于是花了大概一天半的时间，搞定了这个小的程序，也算是回报吧！以后会继续完善和补充的。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 话说上次腾讯2面的时候我表现太不好了，伤心啊~~~所以从现在起，要在忙中抽时间来继续Coding，增强实力。估计过段时间...&nbsp;&nbsp;<a href='http://www.cppblog.com/deercoder/archive/2010/05/02/114170.html'>阅读全文</a><img src ="http://www.cppblog.com/deercoder/aggbug/114170.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/deercoder/" target="_blank">刘畅</a> 2010-05-02 15:59 <a href="http://www.cppblog.com/deercoder/archive/2010/05/02/114170.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>文档与视图程序设计--------------文字输入</title><link>http://www.cppblog.com/deercoder/archive/2010/02/22/108215.html</link><dc:creator>刘畅</dc:creator><author>刘畅</author><pubDate>Mon, 22 Feb 2010 05:55:00 GMT</pubDate><guid>http://www.cppblog.com/deercoder/archive/2010/02/22/108215.html</guid><wfw:comment>http://www.cppblog.com/deercoder/comments/108215.html</wfw:comment><comments>http://www.cppblog.com/deercoder/archive/2010/02/22/108215.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/deercoder/comments/commentRss/108215.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/deercoder/services/trackbacks/108215.html</trackback:ping><description><![CDATA[功能：实现文字的输入！要求，回车在下一行输入，而BackSpace则删除一个字符。<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> CTest31View::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) <br /><img id="Codehighlighter1_65_675_Open_Image" onclick="this.style.display='none'; Codehighlighter1_65_675_Open_Text.style.display='none'; Codehighlighter1_65_675_Closed_Image.style.display='inline'; Codehighlighter1_65_675_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_65_675_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_65_675_Closed_Text.style.display='none'; Codehighlighter1_65_675_Open_Image.style.display='inline'; Codehighlighter1_65_675_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_65_675_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_65_675_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> TODO: Add your message handler code here and/or call default</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    CClientDC dc(</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    TEXTMETRIC tm;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    dc.GetTextMetrics(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">tm);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">0x0d</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> nChar)<br /><img id="Codehighlighter1_214_262_Open_Image" onclick="this.style.display='none'; Codehighlighter1_214_262_Open_Text.style.display='none'; Codehighlighter1_214_262_Closed_Image.style.display='inline'; Codehighlighter1_214_262_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_214_262_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_214_262_Closed_Text.style.display='none'; Codehighlighter1_214_262_Open_Image.style.display='inline'; Codehighlighter1_214_262_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_214_262_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_214_262_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        m_str.Empty();<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        m_point.y </span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000"> tm.tmHeight;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">0x08</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">nChar)<br /><img id="Codehighlighter1_287_449_Open_Image" onclick="this.style.display='none'; Codehighlighter1_287_449_Open_Text.style.display='none'; Codehighlighter1_287_449_Closed_Image.style.display='inline'; Codehighlighter1_287_449_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_287_449_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_287_449_Closed_Text.style.display='none'; Codehighlighter1_287_449_Open_Image.style.display='inline'; Codehighlighter1_287_449_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_287_449_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_287_449_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        COLORREF clr </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> dc.SetTextColor(dc.GetBkColor());<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        dc.TextOut(m_point.x,m_point.y,m_str);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        m_str </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> m_str.Left(m_str.GetLength()</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        dc.SetTextColor(clr);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_458_479_Open_Image" onclick="this.style.display='none'; Codehighlighter1_458_479_Open_Text.style.display='none'; Codehighlighter1_458_479_Closed_Image.style.display='inline'; Codehighlighter1_458_479_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_458_479_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_458_479_Closed_Text.style.display='none'; Codehighlighter1_458_479_Open_Image.style.display='inline'; Codehighlighter1_458_479_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_458_479_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_458_479_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        m_str </span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000"> nChar;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    CSize sz </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> dc.GetTextExtent(m_str);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    CPoint pt;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    pt.x </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> m_point.x </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> sz.cx;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    pt.y </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> m_point.y;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    SetCaretPos(pt);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    dc.TextOut(m_point.x,m_point.y,m_str);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    CView::OnChar(nChar, nRepCnt, nFlags);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span></div><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> CTest31View::OnCreate(LPCREATESTRUCT lpCreateStruct) <br /><img id="Codehighlighter1_58_309_Open_Image" onclick="this.style.display='none'; Codehighlighter1_58_309_Open_Text.style.display='none'; Codehighlighter1_58_309_Closed_Image.style.display='inline'; Codehighlighter1_58_309_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_58_309_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_58_309_Closed_Text.style.display='none'; Codehighlighter1_58_309_Open_Image.style.display='inline'; Codehighlighter1_58_309_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_58_309_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_58_309_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (CView::OnCreate(lpCreateStruct) </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> TODO: Add your specialized creation code here</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    CClientDC dc(</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    TEXTMETRIC tm;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    dc.GetTextMetrics(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">tm);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    CreateSolidCaret(tm.tmAveCharWidth</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">,tm.tmHeight);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    ShowCaret();<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> CTest31View::OnLButtonDown(UINT nFlags, CPoint point) <br /><img id="Codehighlighter1_60_221_Open_Image" onclick="this.style.display='none'; Codehighlighter1_60_221_Open_Text.style.display='none'; Codehighlighter1_60_221_Closed_Image.style.display='inline'; Codehighlighter1_60_221_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_60_221_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_60_221_Closed_Text.style.display='none'; Codehighlighter1_60_221_Open_Image.style.display='inline'; Codehighlighter1_60_221_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_60_221_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_60_221_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> TODO: Add your message handler code here and/or call default</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    SetCaretPos(point);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    m_str.Empty();<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    m_point </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> point;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    CView::OnLButtonDown(nFlags, point);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span></div><br />中心思想：m_point表示的是插入符的位置，m_str则表示的是输入的字符串！<br />对于回车和删除键，则用两个if来判断，具体的实现，参加代码部分，比较简单！！<img src ="http://www.cppblog.com/deercoder/aggbug/108215.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/deercoder/" target="_blank">刘畅</a> 2010-02-22 13:55 <a href="http://www.cppblog.com/deercoder/archive/2010/02/22/108215.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>文档与视图程序设计--------------路径层的使用</title><link>http://www.cppblog.com/deercoder/archive/2010/02/21/108168.html</link><dc:creator>刘畅</dc:creator><author>刘畅</author><pubDate>Sun, 21 Feb 2010 12:51:00 GMT</pubDate><guid>http://www.cppblog.com/deercoder/archive/2010/02/21/108168.html</guid><wfw:comment>http://www.cppblog.com/deercoder/comments/108168.html</wfw:comment><comments>http://www.cppblog.com/deercoder/archive/2010/02/21/108168.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/deercoder/comments/commentRss/108168.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/deercoder/services/trackbacks/108168.html</trackback:ping><description><![CDATA[目的：绘制一个网格，同时在网格中又显示出一个Hello，world！字样，注意的是字样不能够被网格贯穿。<br />考察点：路径层的使用，如何让它们在两个不同的图层！<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"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> CTest30View::OnDraw(CDC</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> pDC)<br /><img id="Codehighlighter1_35_461_Open_Image" onclick="this.style.display='none'; Codehighlighter1_35_461_Open_Text.style.display='none'; Codehighlighter1_35_461_Closed_Image.style.display='inline'; Codehighlighter1_35_461_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="DISPLAY: none" id="Codehighlighter1_35_461_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_35_461_Closed_Text.style.display='none'; Codehighlighter1_35_461_Open_Image.style.display='inline'; Codehighlighter1_35_461_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_35_461_Closed_Text"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_35_461_Open_Text"><span style="COLOR: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /> CTest30Doc</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> pDoc </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> GetDocument();<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /> ASSERT_VALID(pDoc);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /> </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> TODO: add draw code for native data here</span><span style="COLOR: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="COLOR: #000000"> CString str(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Hello,world!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /> CSize sz </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> pDC</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">GetTextExtent(str);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /> pDC</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">TextOut(</span><span style="COLOR: #000000">50</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">50</span><span style="COLOR: #000000">,str);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /> pDC</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">BeginPath();<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /> pDC</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Rectangle(</span><span style="COLOR: #000000">50</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">50</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">50</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">sz.cx,</span><span style="COLOR: #000000">50</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">sz.cy);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /> pDC</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">EndPath();<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /> pDC</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">SelectClipPath(RGN_DIFF);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /> </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">200</span><span style="COLOR: #000000">; i</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">)<br /><img id="Codehighlighter1_372_459_Open_Image" onclick="this.style.display='none'; Codehighlighter1_372_459_Open_Text.style.display='none'; Codehighlighter1_372_459_Closed_Image.style.display='inline'; Codehighlighter1_372_459_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="DISPLAY: none" id="Codehighlighter1_372_459_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_372_459_Closed_Text.style.display='none'; Codehighlighter1_372_459_Open_Image.style.display='inline'; Codehighlighter1_372_459_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.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_372_459_Closed_Text"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_372_459_Open_Text"><span style="COLOR: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />  pDC</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">MoveTo(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,i);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />  pDC</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">LineTo(</span><span style="COLOR: #000000">200</span><span style="COLOR: #000000">,i);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />  pDC</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">MoveTo(i,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />  pDC</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">LineTo(i,</span><span style="COLOR: #000000">200</span><span style="COLOR: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /> }</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"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span></div><br />函数（很多）：<br />BeginPath：打开一个路径层。<br />EndPath：关闭一个路径层。<br />SelectClipPath：将当前路径层作为一个剪切区域，以一定的模式和新的区域组合。<br />Moveto：移动到那一个点。<br />LineTo：绘制一条直线到那一点为止。。<br /><img src ="http://www.cppblog.com/deercoder/aggbug/108168.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/deercoder/" target="_blank">刘畅</a> 2010-02-21 20:51 <a href="http://www.cppblog.com/deercoder/archive/2010/02/21/108168.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>文档与视图程序设计--------------创建图像插入符</title><link>http://www.cppblog.com/deercoder/archive/2010/02/21/108166.html</link><dc:creator>刘畅</dc:creator><author>刘畅</author><pubDate>Sun, 21 Feb 2010 12:23:00 GMT</pubDate><guid>http://www.cppblog.com/deercoder/archive/2010/02/21/108166.html</guid><wfw:comment>http://www.cppblog.com/deercoder/comments/108166.html</wfw:comment><comments>http://www.cppblog.com/deercoder/archive/2010/02/21/108166.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/deercoder/comments/commentRss/108166.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/deercoder/services/trackbacks/108166.html</trackback:ping><description><![CDATA[前面的那个例子中，是插入一个普通的插入符，既没有文字，也没有图像，而只是一个竖线而已。<br />详见：<a href="/deercoder/archive/2010/02/21/108165.html">http://www.cppblog.com/deercoder/archive/2010/02/21/108165.html</a><br />下面，是插入一个Bitmap图像的程序：<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: #0000ff">int</span><span style="COLOR: #000000"> CTest28View::OnCreate(LPCREATESTRUCT lpCreateStruct) <br /><img id="Codehighlighter1_58_324_Open_Image" onclick="this.style.display='none'; Codehighlighter1_58_324_Open_Text.style.display='none'; Codehighlighter1_58_324_Closed_Image.style.display='inline'; Codehighlighter1_58_324_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="DISPLAY: none" id="Codehighlighter1_58_324_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_58_324_Closed_Text.style.display='none'; Codehighlighter1_58_324_Open_Image.style.display='inline'; Codehighlighter1_58_324_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_58_324_Closed_Text"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_58_324_Open_Text"><span style="COLOR: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (CView::OnCreate(lpCreateStruct) </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />    <br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> TODO: Add your specialized creation code here</span><span style="COLOR: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> CBitmap bitmap;        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">与资源相关的对象，在析构时销毁</span><span style="COLOR: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="COLOR: #000000">    bitmap.LoadBitmap(IDB_BITMAP1);        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">将变量与资源关联</span><span style="COLOR: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="COLOR: #000000">    CreateCaret(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">bitmap);    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">创建图形插入符</span><span style="COLOR: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="COLOR: #000000">    ShowCaret();    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">显示插入符</span><span style="COLOR: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="COLOR: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> CTest28View::OnLButtonDown(UINT nFlags, CPoint point) <br /><img id="Codehighlighter1_387_513_Open_Image" onclick="this.style.display='none'; Codehighlighter1_387_513_Open_Text.style.display='none'; Codehighlighter1_387_513_Closed_Image.style.display='inline'; Codehighlighter1_387_513_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="DISPLAY: none" id="Codehighlighter1_387_513_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_387_513_Closed_Text.style.display='none'; Codehighlighter1_387_513_Open_Image.style.display='inline'; Codehighlighter1_387_513_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_387_513_Closed_Text"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_387_513_Open_Text"><span style="COLOR: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> TODO: Add your message handler code here and/or call default</span><span style="COLOR: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="COLOR: #000000">    SetCaretPos(point);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />    CView::OnLButtonDown(nFlags, point);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span></div>简简单单的代码即实现了功能，因为这里只是插入图片而已，所以创建插入符比较简单，没有前面的字体那么复杂，不过也都相同，原理没有区别！<br /><img src ="http://www.cppblog.com/deercoder/aggbug/108166.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/deercoder/" target="_blank">刘畅</a> 2010-02-21 20:23 <a href="http://www.cppblog.com/deercoder/archive/2010/02/21/108166.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>文档与视图程序设计--------------创建插入符</title><link>http://www.cppblog.com/deercoder/archive/2010/02/21/108165.html</link><dc:creator>刘畅</dc:creator><author>刘畅</author><pubDate>Sun, 21 Feb 2010 11:51:00 GMT</pubDate><guid>http://www.cppblog.com/deercoder/archive/2010/02/21/108165.html</guid><wfw:comment>http://www.cppblog.com/deercoder/comments/108165.html</wfw:comment><comments>http://www.cppblog.com/deercoder/archive/2010/02/21/108165.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/deercoder/comments/commentRss/108165.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/deercoder/services/trackbacks/108165.html</trackback:ping><description><![CDATA[
		<p>     何谓插入符，其实之前也一直都不大明白，不过通过改参数，终于算是发现了，即一个竖直的线，不过有线的宽度，还有一个高度。</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">
				<img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" />
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> CTest27View::OnCreate(LPCREATESTRUCT lpCreateStruct) <br /><img id="Codehighlighter1_58_372_Open_Image" onclick="this.style.display='none'; Codehighlighter1_58_372_Open_Text.style.display='none'; Codehighlighter1_58_372_Closed_Image.style.display='inline'; Codehighlighter1_58_372_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="DISPLAY: none" id="Codehighlighter1_58_372_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_58_372_Closed_Text.style.display='none'; Codehighlighter1_58_372_Open_Image.style.display='inline'; Codehighlighter1_58_372_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_58_372_Closed_Text">
						<img src="http://www.cppblog.com/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_58_372_Open_Text">
						<span style="COLOR: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />    </span>
						<span style="COLOR: #0000ff">if</span>
						<span style="COLOR: #000000"> (CView::OnCreate(lpCreateStruct) </span>
						<span style="COLOR: #000000">==</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">1</span>
						<span style="COLOR: #000000">)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />        </span>
						<span style="COLOR: #0000ff">return</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">1</span>
						<span style="COLOR: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />    <br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000"> TODO: Add your specialized creation code here</span>
						<span style="COLOR: #008000">
								<br />
								<img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />
						</span>
						<span style="COLOR: #000000">    CClientDC dc(</span>
						<span style="COLOR: #0000ff">this</span>
						<span style="COLOR: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />    TEXTMETRIC tm;    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">TEXTMETRIC结构显示当前字体的信息</span>
						<span style="COLOR: #008000">
								<br />
								<img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />
						</span>
						<span style="COLOR: #000000">    dc.GetTextMetrics(</span>
						<span style="COLOR: #000000">&amp;</span>
						<span style="COLOR: #000000">tm);        </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">得到字体信息存入tm</span>
						<span style="COLOR: #008000">
								<br />
								<img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />
						</span>
						<span style="COLOR: #000000">    CreateSolidCaret((tm.tmAveCharWidth</span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000">20</span>
						<span style="COLOR: #000000">)</span>
						<span style="COLOR: #000000">/</span>
						<span style="COLOR: #000000">8</span>
						<span style="COLOR: #000000">,tm.tmHeight</span>
						<span style="COLOR: #000000">*</span>
						<span style="COLOR: #000000">20</span>
						<span style="COLOR: #000000">);  </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">创建插入符</span>
						<span style="COLOR: #008000">
								<br />
								<img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />
						</span>
						<span style="COLOR: #000000">    ShowCaret();    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">显示插入符</span>
						<span style="COLOR: #008000">
								<br />
								<img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />
						</span>
						<span style="COLOR: #000000">
								<br />
								<img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />    </span>
						<span style="COLOR: #0000ff">return</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" />
						<br />
						<img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" />
				</span>
				<span style="COLOR: #0000ff">void</span>
				<span style="COLOR: #000000"> CTest27View::OnLButtonDown(UINT nFlags, CPoint point) <br /><img id="Codehighlighter1_435_589_Open_Image" onclick="this.style.display='none'; Codehighlighter1_435_589_Open_Text.style.display='none'; Codehighlighter1_435_589_Closed_Image.style.display='inline'; Codehighlighter1_435_589_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="DISPLAY: none" id="Codehighlighter1_435_589_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_435_589_Closed_Text.style.display='none'; Codehighlighter1_435_589_Open_Image.style.display='inline'; Codehighlighter1_435_589_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_435_589_Closed_Text">
						<img src="http://www.cppblog.com/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_435_589_Open_Text">
						<span style="COLOR: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000"> TODO: Add your message handler code here and/or call default    </span>
						<span style="COLOR: #008000">
								<br />
								<img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />
						</span>
						<span style="COLOR: #000000">    SetCaretPos(point);        </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">改变插入符的位置,point是当前客户区的位置</span>
						<span style="COLOR: #008000">
								<br />
								<img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />
						</span>
						<span style="COLOR: #000000">    CView::OnLButtonDown(nFlags, point);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" />
				</span>
		</div>  此函数就是：CreateSolidCaret((tm.tmAveCharWidth+20)/8,tm.tmHeight*20);  //创建插入符<br />具体来说就是它决定了插入符的宽度和高度，也就是线长和线粗。<br /><br />本程序功能是：实现鼠标点击处显示一个插入符。。。。<img src ="http://www.cppblog.com/deercoder/aggbug/108165.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/deercoder/" target="_blank">刘畅</a> 2010-02-21 19:51 <a href="http://www.cppblog.com/deercoder/archive/2010/02/21/108165.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>工具栏和状态栏程序设计------创建时修改和创建后修改外观（补）</title><link>http://www.cppblog.com/deercoder/archive/2010/02/17/107984.html</link><dc:creator>刘畅</dc:creator><author>刘畅</author><pubDate>Wed, 17 Feb 2010 13:46:00 GMT</pubDate><guid>http://www.cppblog.com/deercoder/archive/2010/02/17/107984.html</guid><wfw:comment>http://www.cppblog.com/deercoder/comments/107984.html</wfw:comment><comments>http://www.cppblog.com/deercoder/archive/2010/02/17/107984.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/deercoder/comments/commentRss/107984.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/deercoder/services/trackbacks/107984.html</trackback:ping><description><![CDATA[不知道为何，写过的一个blog不见了，于是重新简单的整理下。本来有篇blog需要互相辅正的，不过没办法了。<br><br>创建时修改，即在CMainFrame的成员函数PreCreateWindow函数来实现。<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: #000000;">1</span><span style="color: #000000;">.创建时修改程序的外观：修改初始化的窗口大小等等属性。<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">在CMainFrame函数中，设置cs的各个属性，cs是一个结构体，设置cx，cy表示它的大小，设置其他的表示另外的大小。<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">注：原书由一个错误，可是，可以通过配套的源代码来看出。<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">就是书上是：&nbsp;&nbsp;&nbsp;&nbsp;cs.style&nbsp;</span><span style="color: #000000;">|=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">~</span><span style="color: #000000;">FWS_ADDTOTITLE;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">而代码上是：&nbsp;&nbsp;&nbsp;&nbsp;cs.style&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;WS_OVERLAPPEDWINDOW;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">如果按照书上的代码，就会假死，每次启动都失去响应，而且标题没有名称。<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">如果是代码上的&nbsp;&nbsp;&nbsp;&nbsp;cs.style&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;WS_OVERLAPPEDWINDOW;则不会出现这个结果。<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">修改的源代码如下：<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">BOOL&nbsp;CMainFrame::PreCreateWindow(CREATESTRUCT</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;cs)<br><img id="Codehighlighter1_340_622_Open_Image" onclick="this.style.display='none'; codehighlighter1_340_622_open_text.style.display="'none';" codehighlighter1_340_622_closed_image.style.display="'inline';" codehighlighter1_340_622_closed_text.style.display="'inline';"" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_340_622_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_340_622_closed_text.style.display="'none';" codehighlighter1_340_622_open_image.style.display="'inline';" codehighlighter1_340_622_open_text.style.display="'inline';"" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_340_622_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id="Codehighlighter1_340_622_Open_Text"><span style="color: #000000;">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(&nbsp;</span><span style="color: #000000;">!</span><span style="color: #000000;">CFrameWnd::PreCreateWindow(cs)&nbsp;)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;FALSE;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;TODO:&nbsp;Modify&nbsp;the&nbsp;Window&nbsp;class&nbsp;or&nbsp;styles&nbsp;here&nbsp;by&nbsp;modifying<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;&nbsp;the&nbsp;CREATESTRUCT&nbsp;cs</span><span style="color: #008000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"></span><span style="color: #000000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;cs.cx&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">500</span><span style="color: #000000;">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;cs.cy&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">300</span><span style="color: #000000;">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;cs.style&nbsp;=&nbsp;WS_OVERLAPPEDWINDOW;</span><span style="color: #008000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;cs.style&nbsp;</span><span style="color: #000000;">|=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">~</span><span style="color: #000000;">FWS_ADDTOTITLE;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;cs.lpszName&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Helloworld</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;TRUE;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: #000000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">注：可以通过修改CMainFrame的成员函数PreCreateWindow函数的CREATESTRUCT结构体来个性化窗口的外观。在单文档应用程序中，默认的窗口类型是WS_OVERLAPPEDWINDOW和FWS_ADDTOTILE，其中，FWS_ADDTOTITLE是一个MFC类型，将文档的标题添加到窗口标题。所以要设置窗口标题的内容，必须将FWS_ADDTOTITLE属性去掉。<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">但是，将属性设置改为</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">之后，就不会出现那个问题了。怪了&#8230;&#8230;&#8230;&#8230;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">特别注意的是，如果不讲属性设置为</span><span style="color: #000000;">~</span><span style="color: #000000;">FWS_ADDTOTITLE，就不会更改标题的名称，即使设置了lpszName也不行<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"></span></div>
具体的属性设置见：<a href="http://www.cppblog.com/deercoder/archive/2010/02/17/107962.html">http://www.cppblog.com/deercoder/archive/2010/02/17/107962.html</a><br><br><br>2.创建后设置的话，需要在CMainFrame和View中的OnCreate函数中，实现SetClassLong函数的使用。<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;CMainFrame::OnCreate(LPCREATESTRUCT&nbsp;lpCreateStruct)<br><img id="Codehighlighter1_56_912_Open_Image" onclick="this.style.display='none'; codehighlighter1_56_912_open_text.style.display="'none';" codehighlighter1_56_912_closed_image.style.display="'inline';" codehighlighter1_56_912_closed_text.style.display="'inline';"" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_56_912_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_56_912_closed_text.style.display="'none';" codehighlighter1_56_912_open_image.style.display="'inline';" codehighlighter1_56_912_open_text.style.display="'inline';"" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_56_912_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id="Codehighlighter1_56_912_Open_Text"><span style="color: #000000;">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(CFrameWnd::OnCreate(lpCreateStruct)&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">m_wndToolBar.CreateEx(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">,&nbsp;TBSTYLE_FLAT,&nbsp;WS_CHILD&nbsp;</span><span style="color: #000000;">|</span><span style="color: #000000;">&nbsp;WS_VISIBLE&nbsp;</span><span style="color: #000000;">|</span><span style="color: #000000;">&nbsp;CBRS_TOP<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">|</span><span style="color: #000000;">&nbsp;CBRS_GRIPPER&nbsp;</span><span style="color: #000000;">|</span><span style="color: #000000;">&nbsp;CBRS_TOOLTIPS&nbsp;</span><span style="color: #000000;">|</span><span style="color: #000000;">&nbsp;CBRS_FLYBY&nbsp;</span><span style="color: #000000;">|</span><span style="color: #000000;">&nbsp;CBRS_SIZE_DYNAMIC)&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">!</span><span style="color: #000000;">m_wndToolBar.LoadToolBar(IDR_MAINFRAME))<br><img id="Codehighlighter1_317_397_Open_Image" onclick="this.style.display='none'; codehighlighter1_317_397_open_text.style.display="'none';" codehighlighter1_317_397_closed_image.style.display="'inline';" codehighlighter1_317_397_closed_text.style.display="'inline';"" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_317_397_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_317_397_closed_text.style.display="'none';" codehighlighter1_317_397_open_image.style.display="'inline';" codehighlighter1_317_397_open_text.style.display="'inline';"" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_317_397_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id="Codehighlighter1_317_397_Open_Text"><span style="color: #000000;">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TRACE0(</span><span style="color: #000000;">"</span><span style="color: #000000;">Failed&nbsp;to&nbsp;create&nbsp;toolbar\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;fail&nbsp;to&nbsp;create</span><span style="color: #008000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">m_wndStatusBar.Create(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">!</span><span style="color: #000000;">m_wndStatusBar.SetIndicators(indicators,<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(indicators)</span><span style="color: #000000;">/</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(UINT)))<br><img id="Codehighlighter1_520_603_Open_Image" onclick="this.style.display='none'; codehighlighter1_520_603_open_text.style.display="'none';" codehighlighter1_520_603_closed_image.style.display="'inline';" codehighlighter1_520_603_closed_text.style.display="'inline';"" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_520_603_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_520_603_closed_text.style.display="'none';" codehighlighter1_520_603_open_image.style.display="'inline';" codehighlighter1_520_603_open_text.style.display="'inline';"" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_520_603_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id="Codehighlighter1_520_603_Open_Text"><span style="color: #000000;">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TRACE0(</span><span style="color: #000000;">"</span><span style="color: #000000;">Failed&nbsp;to&nbsp;create&nbsp;status&nbsp;bar\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;fail&nbsp;to&nbsp;create</span><span style="color: #008000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;TODO:&nbsp;Delete&nbsp;these&nbsp;three&nbsp;lines&nbsp;if&nbsp;you&nbsp;don't&nbsp;want&nbsp;the&nbsp;toolbar&nbsp;to<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;&nbsp;be&nbsp;dockable</span><span style="color: #008000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;EnableDocking(CBRS_ALIGN_ANY);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;DockControlBar(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">m_wndToolBar);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;SetClassLong(m_hWnd,GCL_HICON,(LONG)LoadIcon(NULL,IDI_ERROR));&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">更改窗口图标，同前面的AfxRegisterWndClass函数</span><span style="color: #008000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"></span><span style="color: #000000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: #000000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;CTest14View::OnCreate(LPCREATESTRUCT&nbsp;lpCreateStruct)&nbsp;<br><img id="Codehighlighter1_973_1239_Open_Image" onclick="this.style.display='none'; codehighlighter1_973_1239_open_text.style.display="'none';" codehighlighter1_973_1239_closed_image.style.display="'inline';" codehighlighter1_973_1239_closed_text.style.display="'inline';"" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_973_1239_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_973_1239_closed_text.style.display="'none';" codehighlighter1_973_1239_open_image.style.display="'inline';" codehighlighter1_973_1239_open_text.style.display="'inline';"" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_973_1239_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id="Codehighlighter1_973_1239_Open_Text"><span style="color: #000000;">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(CView::OnCreate(lpCreateStruct)&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;TODO:&nbsp;Add&nbsp;your&nbsp;specialized&nbsp;creation&nbsp;code&nbsp;here</span><span style="color: #008000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;SetClassLong(m_hWnd,GCL_HBRBACKGROUND,(LONG)GetStockObject(GRAY_BRUSH));<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;SetClassLong(m_hWnd,GCL_HCURSOR,(LONG)LoadCursor(NULL,IDC_HELP));<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: #000000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"></span></div>
详见《Visual C++编程范例开发金典》 P96--99 <img src ="http://www.cppblog.com/deercoder/aggbug/107984.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/deercoder/" target="_blank">刘畅</a> 2010-02-17 21:46 <a href="http://www.cppblog.com/deercoder/archive/2010/02/17/107984.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>工具栏和对话框程序设计----------显示和隐藏工具栏</title><link>http://www.cppblog.com/deercoder/archive/2010/02/17/107969.html</link><dc:creator>刘畅</dc:creator><author>刘畅</author><pubDate>Wed, 17 Feb 2010 09:09:00 GMT</pubDate><guid>http://www.cppblog.com/deercoder/archive/2010/02/17/107969.html</guid><wfw:comment>http://www.cppblog.com/deercoder/comments/107969.html</wfw:comment><comments>http://www.cppblog.com/deercoder/archive/2010/02/17/107969.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/deercoder/comments/commentRss/107969.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/deercoder/services/trackbacks/107969.html</trackback:ping><description><![CDATA[如何显示和隐藏工具栏，前面已经很详细的解释了如何创建工具栏，那么如何显示和隐藏了。<br />经过以前的锻炼，已经知道了显示和隐藏的话只需要用ShowWindow(),然后在相关的参数中设置为显示还是隐藏而已。<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"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> CMainFrame::OnNewTool() <br /><img id="Codehighlighter1_30_308_Open_Image" onclick="this.style.display='none'; Codehighlighter1_30_308_Open_Text.style.display='none'; Codehighlighter1_30_308_Closed_Image.style.display='inline'; Codehighlighter1_30_308_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="DISPLAY: none" id="Codehighlighter1_30_308_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_30_308_Closed_Text.style.display='none'; Codehighlighter1_30_308_Open_Image.style.display='inline'; Codehighlighter1_30_308_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_30_308_Closed_Text"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_30_308_Open_Text"><span style="COLOR: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> TODO: Add your command handler code here</span><span style="COLOR: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> CRect rectNew;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(m_newToolBar.IsWindowVisible())<br /><img id="Codehighlighter1_137_176_Open_Image" onclick="this.style.display='none'; Codehighlighter1_137_176_Open_Text.style.display='none'; Codehighlighter1_137_176_Closed_Image.style.display='inline'; Codehighlighter1_137_176_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="DISPLAY: none" id="Codehighlighter1_137_176_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_137_176_Closed_Text.style.display='none'; Codehighlighter1_137_176_Open_Image.style.display='inline'; Codehighlighter1_137_176_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.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_137_176_Closed_Text"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_137_176_Open_Text"><span style="COLOR: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />        m_newToolBar.ShowWindow(SW_HIDE);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />    }</span></span><span style="COLOR: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />    </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_185_224_Open_Image" onclick="this.style.display='none'; Codehighlighter1_185_224_Open_Text.style.display='none'; Codehighlighter1_185_224_Closed_Image.style.display='inline'; Codehighlighter1_185_224_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="DISPLAY: none" id="Codehighlighter1_185_224_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_185_224_Closed_Text.style.display='none'; Codehighlighter1_185_224_Open_Image.style.display='inline'; Codehighlighter1_185_224_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.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_185_224_Closed_Text"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_185_224_Open_Text"><span style="COLOR: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />        m_newToolBar.ShowWindow(SW_SHOW);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />    }</span></span><span style="COLOR: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />    RecalcLayout();  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">必须重新设置窗口布局，否则即使工具栏显示，窗口外观也会变化</span><span style="COLOR: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="COLOR: #000000">    DockControlBar(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">m_newToolBar);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span></div>然后如何实现菜单的勾勾呢？利用消息UP_COMMAND_UI对应的响应函数来实现。<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: #0000ff">void</span><span style="COLOR: #000000"> CMainFrame::OnUpdateNewTool(CCmdUI</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> pCmdUI) <br /><img id="Codehighlighter1_50_158_Open_Image" onclick="this.style.display='none'; Codehighlighter1_50_158_Open_Text.style.display='none'; Codehighlighter1_50_158_Closed_Image.style.display='inline'; Codehighlighter1_50_158_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="DISPLAY: none" id="Codehighlighter1_50_158_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_50_158_Closed_Text.style.display='none'; Codehighlighter1_50_158_Open_Image.style.display='inline'; Codehighlighter1_50_158_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_50_158_Closed_Text"><img src="http://www.cppblog.com/images/dot.gif" /></span><span id="Codehighlighter1_50_158_Open_Text"><span style="COLOR: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> TODO: Add your command update UI handler code here</span><span style="COLOR: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="COLOR: #000000">    pCmdUI</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">SetCheck(m_newToolBar.IsWindowVisible());<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="COLOR: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span></div>此消息就控制了如何显示菜单等等显示。<br /><br /><br />注记：在上面的显示和隐藏中，必须用到:RecalLayout()来重新设置，否则的话即使隐藏了，但是还是会显示出来工具栏所在的空间，而不会将这部分抹除。调用了之后，一旦隐藏了，那么此部分没有用处，就会隐藏了，实现了功能。<img src ="http://www.cppblog.com/deercoder/aggbug/107969.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/deercoder/" target="_blank">刘畅</a> 2010-02-17 17:09 <a href="http://www.cppblog.com/deercoder/archive/2010/02/17/107969.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>