﻿<?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++博客-帅哥帅-随笔分类-c++</title><link>http://www.cppblog.com/lll109383670/category/18665.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 04 Mar 2012 16:13:51 GMT</lastBuildDate><pubDate>Sun, 04 Mar 2012 16:13:51 GMT</pubDate><ttl>60</ttl><item><title>3D Graphic File Formats</title><link>http://www.cppblog.com/lll109383670/archive/2012/03/01/166830.html</link><dc:creator>帅哥帅</dc:creator><author>帅哥帅</author><pubDate>Wed, 29 Feb 2012 18:11:00 GMT</pubDate><guid>http://www.cppblog.com/lll109383670/archive/2012/03/01/166830.html</guid><wfw:comment>http://www.cppblog.com/lll109383670/comments/166830.html</wfw:comment><comments>http://www.cppblog.com/lll109383670/archive/2012/03/01/166830.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lll109383670/comments/commentRss/166830.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lll109383670/services/trackbacks/166830.html</trackback:ping><description><![CDATA[<a href="http://www.mediatel.lu/workshop/graphic/3D_fileformat/h_format.html">http://www.mediatel.lu/workshop/graphic/3D_fileformat/h_format.html</a><img src ="http://www.cppblog.com/lll109383670/aggbug/166830.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lll109383670/" target="_blank">帅哥帅</a> 2012-03-01 02:11 <a href="http://www.cppblog.com/lll109383670/archive/2012/03/01/166830.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>wxWidget小试</title><link>http://www.cppblog.com/lll109383670/archive/2012/02/24/166370.html</link><dc:creator>帅哥帅</dc:creator><author>帅哥帅</author><pubDate>Thu, 23 Feb 2012 16:53:00 GMT</pubDate><guid>http://www.cppblog.com/lll109383670/archive/2012/02/24/166370.html</guid><wfw:comment>http://www.cppblog.com/lll109383670/comments/166370.html</wfw:comment><comments>http://www.cppblog.com/lll109383670/archive/2012/02/24/166370.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lll109383670/comments/commentRss/166370.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lll109383670/services/trackbacks/166370.html</trackback:ping><description><![CDATA[之前用wxlua写过脚本界面，今天尝试了一下wxWidget的win32版本。<br />没有界面设计工具怎么行，什么年代了肯定不能纯手工打造界面。<br />于是找得code:Blocks，开源的，才22M，一用，很牛B，基本上编译器功能全了，基于插件的设计和ECLIPCE一样强大。<br />但是如果用vs自带的cl编译的话，还要配置很多，设置断点还得用cdb，太麻烦了，我不就是想找一个界面设计的工具么，你给我连编译器都准备好了，过了。window下还是习惯Vs，没办法，房子都是别人建的，在别人房子里还是得守别人的规则。<br />不过有一点，如果是跨平台的话，用code:Blocks+GCC+wxWidget绝对是强大，而且还能在mac中一样用啊，强大啊强大，汗奔。不过鉴于本人太懒，不想编译gcc版本的wxWidget了，还是先放下这个诱人的工具。<br />最后尝试开源的，也没什么好选择的，就WxFormBuilder这个东东了。<br />设计与编码分离，也算是比较不错的选择了，以后做界面就用他了。MFC,win32的东西实在是不想碰，实在是不利于水平的提高，界面也丑死了。<br />不过wx，几M的dll，也是很蛋疼的。快速开发界面的有木有，有木有，一定要我用脚本来界面么。<br /><br />设计好界面，做一个继承类，直接加入工程中，以后就界面就交给基类了，改动的话，直接复制过来就好了，我们的部分逻辑在派生的类中进行。<br />用widget2.9+wXForm3.2做界面时，调试时会报错：<br />无法解析Sizer::Remove(wxWindow*) ，跟踪进去看发现如下定义 
<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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">1</span><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">#if</span><span style="color: #000000">&nbsp;WXWIN_COMPATIBILITY_2_6</span><span style="color: #000000"><br /></span><span style="color: #008080">2</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Deprecated&nbsp;in&nbsp;2.6&nbsp;since&nbsp;historically&nbsp;it&nbsp;does&nbsp;not&nbsp;delete&nbsp;the&nbsp;window,<br /></span><span style="color: #008080">3</span><span style="color: #008000"><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;use&nbsp;Detach&nbsp;instead.</span><span style="color: #008000"><br /></span><span style="color: #008080">4</span><span style="color: #008000"><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;wxDEPRECATED(&nbsp;</span><span style="color: #0000ff">virtual</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;Remove(&nbsp;wxWindow&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">window&nbsp;)&nbsp;);<br /></span><span style="color: #008080">5</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">#endif</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;WXWIN_COMPATIBILITY_2_6</span></div>原来这个东东已经过时了，是为了兼容2.6所保留了，由于我用的是2.9，只兼容2.8，由于在生成wx库的时候，没有定义2.6的宏，所以肯定没这没个函数的定义啦。<br />但是由于wx/setup 
<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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;WXWIN_COMPATIBILITY_2_6&nbsp;1</span></div>里，有如下定义，这样生成库时不兼容2.6，头文件里却定义为1.<br />改回来：<br />#define WXWIN_COMPATIBILITY_2_6 0<br /><br />wxFrom自动生成四个文件<br />BaseForm.h BaseForm.cpp<br />AppForm.h AppForm.cpp<br />全部复制到工程里<br />然后：<br />.h<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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">&nbsp;1</span><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">#pragma&nbsp;&nbsp;once<br /></span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">wx</span><span style="color: #000000">/</span><span style="color: #000000">wx.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;TestWxFrame&nbsp;:&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;wxApp<br /></span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img id="Codehighlighter1_67_143_Open_Image" onclick="this.style.display='none'; Codehighlighter1_67_143_Open_Text.style.display='none'; Codehighlighter1_67_143_Closed_Image.style.display='inline'; Codehighlighter1_67_143_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_67_143_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_67_143_Closed_Text.style.display='none'; Codehighlighter1_67_143_Open_Image.style.display='inline'; Codehighlighter1_67_143_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_67_143_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 alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_67_143_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000">:<br /></span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;TestWxFrame();<br /></span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">virtual</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">~</span><span style="color: #000000">TestWxFrame();<br /></span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">virtual</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;OnInit();<br /></span><span style="color: #008080">10</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /></span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000">;<br /></span><span style="color: #008080">12</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="color: #008080">13</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />DE CLARE_APP(TestWxFrame)</span></div><br />.cpp<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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">1</span><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">IMPLEMENT_APP(TestWxFrame)<br /></span><span style="color: #008080">2</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;TestWxFrame::OnInit()<br /></span><span style="color: #008080">3</span><span style="color: #000000"><img id="Codehighlighter1_54_137_Open_Image" onclick="this.style.display='none'; Codehighlighter1_54_137_Open_Text.style.display='none'; Codehighlighter1_54_137_Closed_Image.style.display='inline'; Codehighlighter1_54_137_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_54_137_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_54_137_Closed_Text.style.display='none'; Codehighlighter1_54_137_Open_Image.style.display='inline'; Codehighlighter1_54_137_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_54_137_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 alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_54_137_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">4</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;AppForm</span><span style="color: #000000">*</span><span style="color: #000000">TF&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;AppForm((wxWindow</span><span style="color: #000000">*</span><span style="color: #000000">)NULL);<br /></span><span style="color: #008080">5</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;TF</span><span style="color: #000000">-&gt;</span><span style="color: #000000">Show(</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br /></span><span style="color: #008080">6</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br /></span><span style="color: #008080">7</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br /></span><span style="color: #008080">8</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="color: #008080">9</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /></span></div><br /><br />DECLARE_APP()这个不用说了，和MFC一样的，动态声明全局函数wxGetApp()<br /><span style="color: #008080">
<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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">1</span><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;wxDECLARE_APP(appname)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\</span><span style="color: #000000"><br /></span><span style="color: #008080">2</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">extern</span><span style="color: #000000">&nbsp;appname</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;wxGetApp()</span></div></span><br />IMPLEMENT_APP()没什么新意，界面消息等机制就那么一回事，包括XNA,OGRE等的回调机制都是利用多虚性。这个基类A定义好虚函数，在派生类B中重载虚函数如上面的OnInit(),然后再在循环中调用A * = GetApp()得到B类的指针，这样不管B怎么变，只要是A的派生类，重载了一些固有的行为，整个框架都不需要任何改变。（- -！，这也是刚学习MFC时，会被搞晕了的原因，因为所有的细节都被隐藏起来了，更不用说他的消息回调机制了，太过方便了就让人变得蠢，所以不太喜欢微软的东东，越学越成为一个CODE FARMER，不用费脑筋的。不过DX除外）<br />下面是隐藏的东东，一目了然，把它脱光光一看，就没有之前的欲望啦，原来也是main，原来也是地球人写的代码。 
<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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">&nbsp;1</span><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;wxIMPLEMENT_APP(appname)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\</span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;wxIMPLEMENT_WX_THEME_SUPPORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br /></span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;wxIMPLEMENT_APP_NO_THEMES(appname)<br /></span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;wxIMPLEMENT_APP_NO_THEMES(appname)&nbsp;&nbsp;\</span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;wxIMPLEMENT_WXWIN_MAIN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br /></span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;wxIMPLEMENT_APP_NO_MAIN(appname)<br /></span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">//</span><span style="color: #008000">：）熟悉的WinMain来了</span><span style="color: #008000"><br /></span><span style="color: #008080">10</span><span style="color: #008000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;wxIMPLEMENT_WXWIN_MAIN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\</span><span style="color: #000000"><br /></span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">extern</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">C</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;WINAPI&nbsp;WinMain(HINSTANCE&nbsp;hInstance,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br /></span><span style="color: #008080">12</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HINSTANCE&nbsp;hPrevInstance,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br /></span><span style="color: #008080">13</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wxCmdLineArgType&nbsp;WXUNUSED(lpCmdLine),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br /></span><span style="color: #008080">14</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nCmdShow)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br /></span><span style="color: #008080">15</span><span style="color: #000000"><img id="Codehighlighter1_682_1314_Open_Image" onclick="this.style.display='none'; Codehighlighter1_682_1314_Open_Text.style.display='none'; Codehighlighter1_682_1314_Closed_Image.style.display='inline'; Codehighlighter1_682_1314_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_682_1314_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_682_1314_Closed_Text.style.display='none'; Codehighlighter1_682_1314_Open_Image.style.display='inline'; Codehighlighter1_682_1314_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_682_1314_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 alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_682_1314_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br /></span><span style="color: #008080">16</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wxDISABLE_DEBUG_SUPPORT();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br /></span><span style="color: #008080">17</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br /></span><span style="color: #008080">18</span><span style="color: #000000"><img id="Codehighlighter1_923_989_Open_Image" onclick="this.style.display='none'; Codehighlighter1_923_989_Open_Text.style.display='none'; Codehighlighter1_923_989_Closed_Image.style.display='inline'; Codehighlighter1_923_989_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_923_989_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_923_989_Closed_Text.style.display='none'; Codehighlighter1_923_989_Open_Image.style.display='inline'; Codehighlighter1_923_989_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_923_989_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">/**/</span><span id="Codehighlighter1_923_989_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000">&nbsp;NB:&nbsp;We&nbsp;pass&nbsp;NULL&nbsp;in&nbsp;place&nbsp;of&nbsp;lpCmdLine&nbsp;to&nbsp;behave&nbsp;the&nbsp;same&nbsp;as&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000">&nbsp;\<br /></span><span style="color: #008080">19</span><span style="color: #000000"><img id="Codehighlighter1_1002_1068_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1002_1068_Open_Text.style.display='none'; Codehighlighter1_1002_1068_Closed_Image.style.display='inline'; Codehighlighter1_1002_1068_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_1002_1068_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1002_1068_Closed_Text.style.display='none'; Codehighlighter1_1002_1068_Open_Image.style.display='inline'; Codehighlighter1_1002_1068_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1002_1068_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">/**/</span><span id="Codehighlighter1_1002_1068_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Borland-specific&nbsp;wWinMain()&nbsp;above.&nbsp;If&nbsp;it&nbsp;becomes&nbsp;needed&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000">&nbsp;\<br /></span><span style="color: #008080">20</span><span style="color: #000000"><img id="Codehighlighter1_1081_1147_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1081_1147_Open_Text.style.display='none'; Codehighlighter1_1081_1147_Closed_Image.style.display='inline'; Codehighlighter1_1081_1147_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_1081_1147_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1081_1147_Closed_Text.style.display='none'; Codehighlighter1_1081_1147_Open_Image.style.display='inline'; Codehighlighter1_1081_1147_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1081_1147_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">/**/</span><span id="Codehighlighter1_1081_1147_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;pass&nbsp;lpCmdLine&nbsp;to&nbsp;wxEntry()&nbsp;here,&nbsp;you'll&nbsp;have&nbsp;to&nbsp;fix&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000">&nbsp;\<br /></span><span style="color: #008080">21</span><span style="color: #000000"><img id="Codehighlighter1_1160_1226_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1160_1226_Open_Text.style.display='none'; Codehighlighter1_1160_1226_Closed_Image.style.display='inline'; Codehighlighter1_1160_1226_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_1160_1226_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1160_1226_Closed_Text.style.display='none'; Codehighlighter1_1160_1226_Open_Image.style.display='inline'; Codehighlighter1_1160_1226_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1160_1226_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">/**/</span><span id="Codehighlighter1_1160_1226_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wWinMain()&nbsp;above&nbsp;too.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000">&nbsp;\<br /></span><span style="color: #008080">22</span><span style="color: #000000"><img alt="" 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;wxEntry(hInstance,&nbsp;hPrevInstance,&nbsp;NULL,&nbsp;nCmdShow);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br /></span><span style="color: #008080">23</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br /></span><span style="color: #008080">24</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;wxIMPLEMENT_WXWIN_MAIN_BORLAND_NONSTANDARD<br /></span><span style="color: #008080">25</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="color: #008080">26</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">//</span><span style="color: #008000">&lt;动态定义GetApp()之类的来了</span><span style="color: #008000"><br /></span><span style="color: #008080">27</span><span style="color: #008000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;wxIMPLEMENT_APP_NO_MAIN(appname)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\</span><span style="color: #000000"><br /></span><span style="color: #008080">28</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;wxAppConsole&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">wxCreateApp()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br /></span><span style="color: #008080">29</span><span style="color: #000000"><img id="Codehighlighter1_1620_1936_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1620_1936_Open_Text.style.display='none'; Codehighlighter1_1620_1936_Closed_Image.style.display='inline'; Codehighlighter1_1620_1936_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_1620_1936_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1620_1936_Closed_Text.style.display='none'; Codehighlighter1_1620_1936_Open_Image.style.display='inline'; Codehighlighter1_1620_1936_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1620_1936_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 alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_1620_1936_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br /></span><span style="color: #008080">30</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wxAppConsole::CheckBuildOptions(WX_BUILD_OPTIONS_SIGNATURE,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br /></span><span style="color: #008080">31</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">your&nbsp;program</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br /></span><span style="color: #008080">32</span><span style="color: #000000"><img alt="" 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: #0000ff">new</span><span style="color: #000000">&nbsp;appname;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br /></span><span style="color: #008080">33</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br /></span><span style="color: #008080">34</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;wxAppInitializer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br /></span><span style="color: #008080">35</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wxTheAppInitializer((wxAppInitializerFunction)&nbsp;wxCreateApp);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br /></span><span style="color: #008080">36</span><span style="color: #000000"><img id="Codehighlighter1_2193_2248_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2193_2248_Open_Text.style.display='none'; Codehighlighter1_2193_2248_Closed_Image.style.display='inline'; Codehighlighter1_2193_2248_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_2193_2248_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2193_2248_Closed_Text.style.display='none'; Codehighlighter1_2193_2248_Open_Image.style.display='inline'; Codehighlighter1_2193_2248_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;appname</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;wxGetApp()&nbsp;</span><span id="Codehighlighter1_2193_2248_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 alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_2193_2248_Open_Text"><span style="color: #000000">{&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">static_cast</span><span style="color: #000000">&lt;</span><span style="color: #000000">appname</span><span style="color: #000000">*&gt;</span><span style="color: #000000">(wxApp::GetInstance());&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;\<br /></span><span style="color: #008080">37</span><span style="color: #000000"><img alt="" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;wxDECLARE_APP(appname)</span></div><br />生成图：（比较丑）<br /><br /><br /><img style="width: 645px; height: 513px" height="513" alt="" src="http://www.cppblog.com/images/cppblog_com/lll109383670/未命名1.jpg" width="645" border="0" /><br />不要忘记wx也是有操作系统底层函数的哦，基本上不用用到win32的API，一个wx就可以解决所有问题了。最重要的，他是跨平台的！所以尽量不要用win API.<br /><img src ="http://www.cppblog.com/lll109383670/aggbug/166370.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lll109383670/" target="_blank">帅哥帅</a> 2012-02-24 00:53 <a href="http://www.cppblog.com/lll109383670/archive/2012/02/24/166370.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>静态成员（转）</title><link>http://www.cppblog.com/lll109383670/archive/2012/02/20/166084.html</link><dc:creator>帅哥帅</dc:creator><author>帅哥帅</author><pubDate>Mon, 20 Feb 2012 11:15:00 GMT</pubDate><guid>http://www.cppblog.com/lll109383670/archive/2012/02/20/166084.html</guid><description><![CDATA[<p>//&lt;&nbsp; 处理静态成员函数要引用普通类成员的办法，可以获取该类的实例，再引用类的普通成员，因为静态成员函数没有传入this指针<br /><br />文章来源:<a href="http://tech.e800.com.cn/articles/2009/1231/1262237064944_1.html">http://tech.e800.com.cn/articles/2009/1231/1262237064944_1.html</a><br /><br />类体中的数据成员的声明前加上static关键字，该数据成员就成为了该类的静态数据成员。和其他数据成员一样，静态数据成员也遵守public/protected/private访问规则。同时，静态数据成员还具有以下特点：</p>
<p>&nbsp;<br />1.静态数据成员的定义</p>
<p>静态数据成员实际上是类域中的全局变量。所以，静态数据成员的定义(初始化)不应该被放在头文件中。</p>
<p>其定义方式与全局变量相同。举例如下：</p>
<p>&nbsp;</p>
<p>xxx.h文件</p>
<p>class base{</p>
<p>private:</p>
<p>static const int _i;//声明，标准c++支持有序类型在类体中初始化,但vc6不支持。</p>
<p>};</p>
<p>&nbsp;</p>
<p>xxx.cpp文件</p>
<p>const int base::_i=10;//定义(初始化)时不受private和protected访问限制.</p>
<p>&nbsp;</p>
<p>注：不要试图在头文件中定义(初始化)静态数据成员。在大多数的情况下，这样做会引起重复定义这样的错误。即使加上#ifndef #define #endif或者#pragma once也不行。</p>
<p>&nbsp;<br />2.静态数据成员被 类 的所有对象所共享（包括该类派生类的对象）</p>
<p>即派生类对象与基类对象共享基类的静态数据成员。举例如下：</p>
<p>class base{</p>
<p>public :</p>
<p>static int _num;//声明</p>
<p>};</p>
<p>int base::_num=0;//静态数据成员的真正定义</p>
<p>&nbsp;</p>
<p>class derived:public base{</p>
<p>};</p>
<p>&nbsp;</p>
<p>main()</p>
<p>{</p>
<p>base a;</p>
<p>derived b;</p>
<p>a._num++;</p>
<p>cout&lt;&lt;"base class static data number _num is"&lt;&lt;a._num&lt;&lt;endl;</p>
<p>b._num++;</p>
<p>cout&lt;&lt;"derived class static data number _num is"&lt;&lt;b._num&lt;&lt;endl;</p>
<p>}</p>
<p>// 结果为1,2;可见派生类与基类共用一个静态数据成员。</p>
<p>&nbsp;<br />3.静态数据成员可以成为成员函数的可选参数（普通数据成员则不可以）</p>
<p>举例如下：</p>
<p>class base{</p>
<p>public :</p>
<p>static int _staticVar;</p>
<p>int _var;</p>
<p>void foo1(int i=_staticVar);//正确,_staticVar为静态数据成员</p>
<p>void foo2(int i=_var);//错误,_var为普通数据成员</p>
<p>};</p>
<p>&nbsp;<br />4.&#9733;静态数据成员的类型可以是所属类的类型（普通数据成员则不可以）</p>
<p>普通数据成员的只能声明为 所属类类型的指针或引用。举例如下：</p>
<p>&nbsp;</p>
<p>class base{</p>
<p>public :</p>
<p>static base _object1;//正确，静态数据成员</p>
<p>base _object2;//错误</p>
<p>base *pObject;//正确，指针</p>
<p>base &amp;mObject;//正确，引用</p>
<p>};</p>
<p>&nbsp;<br />5.&#9733; 静态数据成员的值在const成员函数中可以被合法的改变</p>
<p>举例如下：</p>
<p>&nbsp;</p>
<p>这个特性，我不知道是属于标准c++中的特性，还是vc6自己的特性。</p>
<p>class base{</p>
<p>public:</p>
<p>base(){_i=0;_val=0;}</p>
<p>&nbsp;</p>
<p>mutable int _i;</p>
<p>static int _staticVal;</p>
<p>int _val;</p>
<p>void test() const{//const 成员函数</p>
<p>&nbsp;</p>
<p>_i++;//正确，mutable数据成员</p>
<p>_staticVal++;//正确，static数据成员</p>
<p>_val++;//错误</p>
<p>&nbsp;</p>
<p>}</p>
<p>};</p>
<p>int base::_staticVal=0;</p>
<p>&nbsp;<br />二 静态成员函数</p>
<p>静态成员函数没有什么太多好讲的。</p>
<p>&nbsp;<br />1.静态成员函数的地址可用普通函数指针储存（普通成员函数地址需要用 类成员函数指针来储存）</p>
<p>举例如下：</p>
<p>class base{</p>
<p>static int func1();</p>
<p>int func2();</p>
<p>};</p>
<p>&nbsp;</p>
<p>int (*pf1)()=&amp;base::func1;//普通的函数指针</p>
<p>int (base::*pf2)()=&amp;base::func2;//成员函数指针</p>
<p>&nbsp;</p>
<p>&nbsp;<br />2.静态成员函数不可以调用类的非静态成员</p>
<p>因为静态成员函数不含this指针。</p>
<p>&nbsp;<br />3.静态成员函数不可以同时声明为 virtual、const、volatile函数</p>
<p>举例如下：</p>
<p>class base{</p>
<p>virtual static void func1();//错误</p>
<p>static void func2() const;//错误</p>
<p>static void func3() volatile;//错误</p>
<p>};</p>
<p>&nbsp;</p><img src ="http://www.cppblog.com/lll109383670/aggbug/166084.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lll109383670/" target="_blank">帅哥帅</a> 2012-02-20 19:15 <a href="http://www.cppblog.com/lll109383670/archive/2012/02/20/166084.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>UNICODE 处理（转）</title><link>http://www.cppblog.com/lll109383670/archive/2012/02/20/166078.html</link><dc:creator>帅哥帅</dc:creator><author>帅哥帅</author><pubDate>Mon, 20 Feb 2012 09:52:00 GMT</pubDate><guid>http://www.cppblog.com/lll109383670/archive/2012/02/20/166078.html</guid><description><![CDATA[<br />原文：<a href="http://www.vckbase.com/bbs/prime/viewprime.asp?id=125">http://www.vckbase.com/bbs/prime/viewprime.asp?id=125</a><br />这是一个许多人（包括我自己）曾经或至今仍疑惑的问题（这里我们只讨论UTF-16，即双字节版本）。<br /><br />1.关于UNICODE<br />首先，UNICODE主要使用的字符类型是WCHAR，定义是unsigned short。从定义我们可以看出这是一个双字节的类型，就是每一个字符占2个字节。这样的话，可以表示的字符类型就可以多达6万多。所有之前的ASCII码分布在0x0000-0x00ff之间，而汉字（包括big5）分布在0x4e00到0x9fff之间。整个unicode包含了几乎世界上所有的文字。关于UNICODE的细节，可以参看以下网页<br />http://www.unicode.org/unicode/standard/translations/s-chinese.html<br /><br />2.为什么要使用UNICODE<br />1）COM：在COM规范中，明确指定了必须使用UNICODE类型，这正是微软充分考虑了跨平台的结果。这也是为什么经常在COM中可以看到BSTR（WCHAR*）类型<br />2）WIN2000和WINNT：在这两个平台中，默认的字符处理方式是UNICODE。即使你写了一个非UNICODE（multibyte)的程序，系统在执行的时候仍然会对你的字符进行一次转换，这样无疑浪费了CPU时间，使用UNICODE可以有效的提高程序的运行效率（仅使用于这两个平台）。当然将来的XP也会如此。<br />3）通用性：使用UNICODE可以使我们不在为汉字和英文字符的判断而烦恼（都是2个字节）。<br /><br />3.如何使用UNICODE <br />1）首先推荐的类型是TCHAR（通用字符类型）。当你定义了_UNICODE宏的时候，TCHAR就是WCHAR，当你没有定义这个宏的时候，TCHAR就是char，很不可思议吧，我们可以来看一下TCHAR的定义：<br /><br />#ifdef&nbsp;&nbsp;UNICODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // r_winnt<br />typedef WCHAR TCHAR, *PTCHAR;<br />#else&nbsp;&nbsp; /* UNICODE */&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // r_winnt<br />typedef char TCHAR, *PTCHAR;<br />#endif /* !_TCHAR_DEFINED */<br /><br />上面的代码来自WINNT.H我剔除了一些无关的部分。现在一切都显而易见了。<br />通过TCHAR，我们只需要这样一段代码：<br />TCHAR tStr[] = _T("t code");<br />MessageBox(tStr);<br />就可以支持UNICODE和MULTIBYTE两种版本。_T宏的作用就是转换成TCHAR。<br /><br />2）关于其他的处理<br />首先是常用的CString,它本身就支持UNICODE。下面的例子说明了用法：<br /><br />CString *pFileName = new CString("c:\\tmpfile.txt");<br /><br />#ifdef _UNICODE<br /><br />&nbsp;&nbsp; m_hFile = CreateFile(pFileName-&gt;AllocSysString(), <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GENERIC_READ | GENERIC_WRITE, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FILE_SHARE_READ,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OPEN_EXISTING,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FILE_ATTRIBUTE_NORMAL, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL);<br />#else<br />&nbsp;&nbsp; m_hFile = CreateFile(pFileName-&gt;GetBuffer(pFileName-&gt;GetLength()), <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GENERIC_READ | GENERIC_WRITE, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FILE_SHARE_READ,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OPEN_EXISTING,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FILE_ATTRIBUTE_NORMAL, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL);<br />#endif<br /><br />另外，VC还提供了一些函数如WideCharToMultiByte和MultiByteToWideChar还有另外的一些宏来支持转换。大家可以看MSDN。 <br /><br /><img src ="http://www.cppblog.com/lll109383670/aggbug/166078.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lll109383670/" target="_blank">帅哥帅</a> 2012-02-20 17:52 <a href="http://www.cppblog.com/lll109383670/archive/2012/02/20/166078.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>