﻿<?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>BlogJava-wenger的天空-随笔分类-C/C++/C#</title><link>http://www.blogjava.net/wenger/category/3593.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 01 Mar 2007 21:47:28 GMT</lastBuildDate><pubDate>Thu, 01 Mar 2007 21:47:28 GMT</pubDate><ttl>60</ttl><item><title>用C仿真MFC的消息映射</title><link>http://www.blogjava.net/wenger/archive/2005/11/15/19827.html</link><dc:creator>wenger的天空</dc:creator><author>wenger的天空</author><pubDate>Tue, 15 Nov 2005 03:42:00 GMT</pubDate><guid>http://www.blogjava.net/wenger/archive/2005/11/15/19827.html</guid><wfw:comment>http://www.blogjava.net/wenger/comments/19827.html</wfw:comment><comments>http://www.blogjava.net/wenger/archive/2005/11/15/19827.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wenger/comments/commentRss/19827.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wenger/services/trackbacks/19827.html</trackback:ping><description><![CDATA[<P>&nbsp;&nbsp;&nbsp;&nbsp; 越来越发现MFC的消息映射的精妙，很久没有写过blog了。用C写了一个简单的例子，权当作为一种自我安慰吧！：）<BR><BR>#include&lt;iostream.h&gt;<BR>#define ELEMENT_NUM 4;<BR>#define MENUM_NUM 2;</P>
<P>enum{OK=1,CANCEL=0};<BR>//系统菜单定义<BR>struct SysMenu{<BR>&nbsp;char* text; //菜单文本<BR>&nbsp;int xPos;&nbsp; //x坐标<BR>&nbsp;int yPos;&nbsp; //y坐标<BR>&nbsp;void (*onOKFun)(); //OK响应函数<BR>&nbsp;void (*onCancelFun)(); //Cancel响应函数<BR>};<BR>//各个menu的相应函数<BR>void menu1OK()<BR>{<BR>&nbsp;cout &lt;&lt; "menu1 ok" &lt;&lt;endl;<BR>}</P>
<P>void menu1Cancel()<BR>{<BR>&nbsp;cout &lt;&lt; "menu1 cancel" &lt;&lt;endl;<BR>}</P>
<P>void menu2OK()<BR>{<BR>&nbsp;cout &lt;&lt; "menu2 Ok" &lt;&lt; endl;<BR>}</P>
<P>void menu2Cancel()<BR>{<BR>&nbsp;cout &lt;&lt;"menu2 Cancel" &lt;&lt; endl;<BR>}</P>
<P>static SysMenu menu[2]=<BR>{<BR>&nbsp;{<BR>&nbsp;&nbsp;"menu1",0,48,menu1OK,menu1Cancel<BR>&nbsp;}<BR>&nbsp;,<BR>&nbsp;{<BR>&nbsp;&nbsp; "menu2",7,48,menu2OK,menu2Cancel<BR>&nbsp;}<BR>};</P>
<P>/*struct Element {<BR>&nbsp;SysMenu menu;<BR>&nbsp;SysButton button;<BR>};*/</P>
<P>//将窗口元素和消息映射函数封装在窗口中<BR>struct windows<BR>{<BR>&nbsp;int currentFocus;<BR>&nbsp;//Element element[ELEMENT_NUM];<BR>&nbsp;void (*messageFun)(int keyvalue,int elementID);<BR>&nbsp;&nbsp;&nbsp; //....<BR>};</P>
<P>//消息映射函数<BR>void MessageFunction(int keyvalue, int elementID)<BR>{<BR>&nbsp;switch(keyvalue) {<BR>&nbsp;case OK:<BR>&nbsp;&nbsp;//实际上element[elementID].onOKFun();<BR>&nbsp;&nbsp;menu[elementID].onOKFun();<BR>&nbsp;&nbsp;break;<BR>&nbsp;case CANCEL:<BR>&nbsp;&nbsp;menu[elementID].onCancelFun();<BR>&nbsp;}<BR>}</P>
<P><BR>void main()<BR>{<BR>&nbsp; //windows win;<BR>&nbsp; windows win[1]={{0,MessageFunction}};<BR>&nbsp; win[0].messageFun(CANCEL,0);<BR>}</P><img src ="http://www.blogjava.net/wenger/aggbug/19827.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wenger/" target="_blank">wenger的天空</a> 2005-11-15 11:42 <a href="http://www.blogjava.net/wenger/archive/2005/11/15/19827.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用C++流读文件，文件末尾多加了空格怎么办</title><link>http://www.blogjava.net/wenger/archive/2005/09/22/13723.html</link><dc:creator>wenger的天空</dc:creator><author>wenger的天空</author><pubDate>Thu, 22 Sep 2005 03:26:00 GMT</pubDate><guid>http://www.blogjava.net/wenger/archive/2005/09/22/13723.html</guid><wfw:comment>http://www.blogjava.net/wenger/comments/13723.html</wfw:comment><comments>http://www.blogjava.net/wenger/archive/2005/09/22/13723.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/wenger/comments/commentRss/13723.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wenger/services/trackbacks/13723.html</trackback:ping><description><![CDATA[<P>先来看一段小代码</P>
<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.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">#include </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">iostream</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>#include </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">fstream</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>using namespace std;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000"> main()<BR><IMG id=Codehighlighter1_73_178_Open_Image onclick="this.style.display='none'; Codehighlighter1_73_178_Open_Text.style.display='none'; Codehighlighter1_73_178_Closed_Image.style.display='inline'; Codehighlighter1_73_178_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_73_178_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_73_178_Closed_Text.style.display='none'; Codehighlighter1_73_178_Open_Image.style.display='inline'; Codehighlighter1_73_178_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_73_178_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.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_73_178_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>    </SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> i;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>    ifstream fis(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">input.txt</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>    </SPAN><SPAN style="COLOR: #0000ff">while</SPAN><SPAN style="COLOR: #000000"> (</SPAN><SPAN style="COLOR: #000000">!</SPAN><SPAN style="COLOR: #000000">fis.eof())<BR><IMG id=Codehighlighter1_132_162_Open_Image onclick="this.style.display='none'; Codehighlighter1_132_162_Open_Text.style.display='none'; Codehighlighter1_132_162_Closed_Image.style.display='inline'; Codehighlighter1_132_162_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_132_162_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_132_162_Closed_Text.style.display='none'; Codehighlighter1_132_162_Open_Image.style.display='inline'; Codehighlighter1_132_162_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>    </SPAN><SPAN id=Codehighlighter1_132_162_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.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_132_162_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>        fis</SPAN><SPAN style="COLOR: #000000">>></SPAN><SPAN style="COLOR: #000000">i;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>        cout</SPAN><SPAN style="COLOR: #000000"><<</SPAN><SPAN style="COLOR: #000000">i</SPAN><SPAN style="COLOR: #000000"><<</SPAN><SPAN style="COLOR: #000000">endl;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>    }</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>    fis.close();<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV>input.txt文件里面是一些数字，如果是<BR>23 23  44  5  23  56   空格 回车<BR>那么读出的结果将是多出一个56来，为什么会这样呢？<BR>因为fis.eof()并没有指向文件的末尾，fis>>i 由于读出类型与int不同，忽略。<BR>而i的值还是上一次输入的56，故多输出了一次。<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.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">#include </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">iostream</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>#include </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">fstream</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>using namespace std;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000"> main()<BR><IMG id=Codehighlighter1_73_166_Open_Image onclick="this.style.display='none'; Codehighlighter1_73_166_Open_Text.style.display='none'; Codehighlighter1_73_166_Closed_Image.style.display='inline'; Codehighlighter1_73_166_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_73_166_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_73_166_Closed_Text.style.display='none'; Codehighlighter1_73_166_Open_Image.style.display='inline'; Codehighlighter1_73_166_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_73_166_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.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_73_166_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>    </SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> i;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>    ifstream fis(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">input.txt</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>    </SPAN><SPAN style="COLOR: #0000ff">while</SPAN><SPAN style="COLOR: #000000"> (fis</SPAN><SPAN style="COLOR: #000000">>></SPAN><SPAN style="COLOR: #000000">i)<BR><IMG id=Codehighlighter1_129_150_Open_Image onclick="this.style.display='none'; Codehighlighter1_129_150_Open_Text.style.display='none'; Codehighlighter1_129_150_Closed_Image.style.display='inline'; Codehighlighter1_129_150_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_129_150_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_129_150_Closed_Text.style.display='none'; Codehighlighter1_129_150_Open_Image.style.display='inline'; Codehighlighter1_129_150_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>    </SPAN><SPAN id=Codehighlighter1_129_150_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.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_129_150_Open_Text><SPAN style="COLOR: #000000">{    <BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>        cout</SPAN><SPAN style="COLOR: #000000"><<</SPAN><SPAN style="COLOR: #000000">i</SPAN><SPAN style="COLOR: #000000"><<</SPAN><SPAN style="COLOR: #000000">endl;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>    }</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>    fis.close();<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV><img src ="http://www.blogjava.net/wenger/aggbug/13723.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wenger/" target="_blank">wenger的天空</a> 2005-09-22 11:26 <a href="http://www.blogjava.net/wenger/archive/2005/09/22/13723.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>今天被#include"wincrypt.h"郁闷了很久</title><link>http://www.blogjava.net/wenger/archive/2005/09/20/13549.html</link><dc:creator>wenger的天空</dc:creator><author>wenger的天空</author><pubDate>Tue, 20 Sep 2005 10:45:00 GMT</pubDate><guid>http://www.blogjava.net/wenger/archive/2005/09/20/13549.html</guid><wfw:comment>http://www.blogjava.net/wenger/comments/13549.html</wfw:comment><comments>http://www.blogjava.net/wenger/archive/2005/09/20/13549.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wenger/comments/commentRss/13549.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wenger/services/trackbacks/13549.html</trackback:ping><description><![CDATA[         <FONT color=#000000>在#include<WINCRYPT.H>的时候，老是提示我变量没有定义。<BR>原来是要在前面定义</FONT><FONT color=#000000><FONT size=3><FONT style="BACKGROUND-COLOR: #ffff00">#define _WIN32_WINNT 0x0400<BR></FONT>可以任意大于</FONT>0x0400的数<BR>         .Net的wincrypt.h中的函数声明比VC6的多了几个了。</FONT><img src ="http://www.blogjava.net/wenger/aggbug/13549.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wenger/" target="_blank">wenger的天空</a> 2005-09-20 18:45 <a href="http://www.blogjava.net/wenger/archive/2005/09/20/13549.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>