﻿<?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++博客-iwindows</title><link>http://www.cppblog.com/iwindows/</link><description /><language>zh-cn</language><lastBuildDate>Sat, 04 Apr 2026 23:41:45 GMT</lastBuildDate><pubDate>Sat, 04 Apr 2026 23:41:45 GMT</pubDate><ttl>60</ttl><item><title>一套完善的lua与c++交互框架</title><link>http://www.cppblog.com/iwindows/archive/2018/09/26/215947.html</link><dc:creator>vic.MINg</dc:creator><author>vic.MINg</author><pubDate>Wed, 26 Sep 2018 07:53:00 GMT</pubDate><guid>http://www.cppblog.com/iwindows/archive/2018/09/26/215947.html</guid><wfw:comment>http://www.cppblog.com/iwindows/comments/215947.html</wfw:comment><comments>http://www.cppblog.com/iwindows/archive/2018/09/26/215947.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/iwindows/comments/commentRss/215947.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/iwindows/services/trackbacks/215947.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这几天搞了一个套lua与C++相互调用的框架，是之前单位项目中提取出来的，比较成型，在已上线的端游中使用，使用第三方库tolua。这里使用lua 5.1.5、tolua++ 1.0.92、boost 1.68.0、zlib。开发环境：vs 2017 、lua调试插件 BabeLua。lua-5.1.5.ziptoluapp-master.zipBabeLua-For-2017-V3.2.2.0.z...&nbsp;&nbsp;<a href='http://www.cppblog.com/iwindows/archive/2018/09/26/215947.html'>阅读全文</a><img src ="http://www.cppblog.com/iwindows/aggbug/215947.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/iwindows/" target="_blank">vic.MINg</a> 2018-09-26 15:53 <a href="http://www.cppblog.com/iwindows/archive/2018/09/26/215947.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于Unity3D的 一个简单的有限无穷状态机的实现</title><link>http://www.cppblog.com/iwindows/archive/2018/09/20/215942.html</link><dc:creator>vic.MINg</dc:creator><author>vic.MINg</author><pubDate>Thu, 20 Sep 2018 06:11:00 GMT</pubDate><guid>http://www.cppblog.com/iwindows/archive/2018/09/20/215942.html</guid><wfw:comment>http://www.cppblog.com/iwindows/comments/215942.html</wfw:comment><comments>http://www.cppblog.com/iwindows/archive/2018/09/20/215942.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/iwindows/comments/commentRss/215942.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/iwindows/services/trackbacks/215942.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 需求：鱼儿鱼儿水中游鱼儿在海底世界嬉戏1、触摸鱼儿时候，鱼儿受到惊吓，随机快速移动。2、触摸空白区域，在触摸点添加鱼食，当鱼食在鱼儿可视范围内，鱼儿快速移动，追赶鱼食，把它吃掉。3、海底下方，随机产生气泡，气泡向上飘浮，当到达生存时间或者被触摸后，鱼儿若在气泡爆炸范围，鱼儿受到惊吓，随机快速移动。4、后续添加一个鱼儿进场过程。这里鱼儿动画比较简单，只有一份 idle 动作即可，鱼儿受惊快速移动，可...&nbsp;&nbsp;<a href='http://www.cppblog.com/iwindows/archive/2018/09/20/215942.html'>阅读全文</a><img src ="http://www.cppblog.com/iwindows/aggbug/215942.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/iwindows/" target="_blank">vic.MINg</a> 2018-09-20 14:11 <a href="http://www.cppblog.com/iwindows/archive/2018/09/20/215942.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ubuntu 编译 CEF</title><link>http://www.cppblog.com/iwindows/archive/2018/09/12/215919.html</link><dc:creator>vic.MINg</dc:creator><author>vic.MINg</author><pubDate>Wed, 12 Sep 2018 03:57:00 GMT</pubDate><guid>http://www.cppblog.com/iwindows/archive/2018/09/12/215919.html</guid><wfw:comment>http://www.cppblog.com/iwindows/comments/215919.html</wfw:comment><comments>http://www.cppblog.com/iwindows/archive/2018/09/12/215919.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/iwindows/comments/commentRss/215919.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/iwindows/services/trackbacks/215919.html</trackback:ping><description><![CDATA[<div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;">系统 必须  Ubuntu 16 64位的。</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;">1、Ubuntu 使用 shadowsocks  Flip the wall</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;">&nbsp;&nbsp;&nbsp;安装：</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;">在终端下执行命令安装：</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->apt-<span style="color: #0000FF; ">get</span>&nbsp;install&nbsp;python-pip<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pip&nbsp;install&nbsp;shadowsocks</div></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;">&nbsp;&nbsp;&nbsp;配置：</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;">创建 /etc/shadowsocks.json 文件， 内容如下</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"server":&nbsp;"XXX.XXX.XXX.XXX",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"server_port":&nbsp;XXXX,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"local_address":"127.0.0.1",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"local_port":1080,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"password":&nbsp;"XXXXXX",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"method":&nbsp;"rc4-md5",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"timeout":300,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"fast_open":<span style="color: #0000FF; ">false</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</div></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;">&nbsp;&nbsp;&nbsp;启动ss客户端：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sslocal&nbsp;-c&nbsp;/etc/shadowsocks.json</div></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;">&nbsp;&nbsp;&nbsp;http代理：</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;">终端安装Polipo</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp;&nbsp;&nbsp;sudo&nbsp;apt-<span style="color: #0000FF; ">get</span>&nbsp;install&nbsp;polipo</div></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;">修改配置文件/etc/polipo/config，内容如下</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->#&nbsp;This&nbsp;file&nbsp;only&nbsp;needs&nbsp;to&nbsp;list&nbsp;configuration&nbsp;variables&nbsp;that&nbsp;deviate<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;from&nbsp;the&nbsp;<span style="color: #0000FF; ">default</span>&nbsp;values.&nbsp;&nbsp;See&nbsp;/usr/share/doc/polipo/examples/config.sample<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;and&nbsp;"polipo&nbsp;-v"&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;variables&nbsp;you&nbsp;can&nbsp;tweak&nbsp;and&nbsp;further&nbsp;information.<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logSyslog&nbsp;=&nbsp;<span style="color: #0000FF; ">true</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logFile&nbsp;=&nbsp;/var/log/polipo/polipo.log<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;socksParentProxy&nbsp;=&nbsp;"127.0.0.1:1080"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;socksProxyType&nbsp;=&nbsp;socks5<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chunkHighMark&nbsp;=&nbsp;50331648<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objectHighMark&nbsp;=&nbsp;16384<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serverMaxSlots&nbsp;=&nbsp;64<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serverSlots&nbsp;=&nbsp;16<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serverSlots1&nbsp;=&nbsp;32<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxyAddress&nbsp;=&nbsp;"0.0.0.0"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxyPort&nbsp;=&nbsp;8123</div></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;">开启新终端，重启Polipo</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp;&nbsp;&nbsp;/etc/init.d/polipo&nbsp;restart</div></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;">&nbsp;&nbsp;&nbsp;浏览器设置（可选）：</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;">Firefox中，首选项&#8212;常规&#8212;网络代理 中设置：</div><div yne-bulb-block="image" style="float: none;"><img alt="" data-media-type="image" src="C:/Users/Administrator/AppData/Local/YNote/data/cool.worm@163.com/120e9323cd35489a8161f038c05f59ad/clipboard.png" style="width: 485px;" data-attr-org-src-id="D27ED4EDD89F471DB3417533ACA03257" /></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"><img src="http://www.cppblog.com/images/cppblog_com/iwindows/clipboard1.png" width="838" height="632" alt="" /></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;">&nbsp;&nbsp;&nbsp;创建脚步：</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;">方便使用，创建 shadow.sh 脚步</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp;&nbsp;&nbsp;#！/bin/bash<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#shadow.sh<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sslocal&nbsp;-c&nbsp;/etc/shadowsocks.json</div></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;">每次 Flip the wall 时候，在新终端中启动，shadow.sh 即可。</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;">2、编译 CEF</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;">&nbsp;&nbsp;&nbsp;设置终端 Flip the wall：</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;">这里 打开一个终端 实行 shadow.sh</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;">打开另一个终端（以后操作都在该终端完成），实行：</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp;&nbsp;&nbsp;export&nbsp;http_proxy=http:<span style="color: #008000; ">//</span><span style="color: #008000; ">127.0.0.1:8123</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;export&nbsp;https_proxy=http:<span style="color: #008000; ">//</span><span style="color: #008000; ">127.0.0.1:8123</span></div></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;">&nbsp;&nbsp;&nbsp;创建目录：</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;">这里cef代码目录 为 /home/system/cef 中</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;">在cef目录中创建文件夹：</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp;&nbsp;&nbsp;mkdir&nbsp;~/cef/automate<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mkdir&nbsp;~/cef/chromium_git</div></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;">&nbsp;&nbsp;&nbsp;下载运行脚步：install-build-deps.sh </div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp;&nbsp;&nbsp;cd&nbsp;~/cef<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sudo&nbsp;apt-<span style="color: #0000FF; ">get</span>&nbsp;install&nbsp;curl<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl&nbsp;'https://chromium.googlesource.com/chromium/src/+/master/build/install-build-deps.sh?format=TEXT'&nbsp;|&nbsp;base64&nbsp;-d&nbsp;&gt;&nbsp;install-build-deps.sh<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chmod&nbsp;755&nbsp;install-build-deps.sh<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sudo&nbsp;./install-build-deps.sh</div></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;">&nbsp;&nbsp;&nbsp;安装 libgtkglext1-dev：</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp;&nbsp;&nbsp;sudo&nbsp;apt-<span style="color: #0000FF; ">get</span>&nbsp;install&nbsp;libgtkglext1-dev</div></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;"> &nbsp;&nbsp;&nbsp;下载安装 depot_tools：</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;">使用git 下载 depot_tools</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp;&nbsp;&nbsp;cd&nbsp;~/cef<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;git&nbsp;clone&nbsp;https:<span style="color: #008000; ">//</span><span style="color: #008000; ">chromium.googlesource.com/chromium/tools/depot_tools.git</span></div></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;">设置 depot_tools 环境变量：</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp;&nbsp;&nbsp;export&nbsp;PATH=/home/system/cef/depot_tools:$PATH</div></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;">&nbsp;&nbsp;&nbsp;下载cef代码：</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;">下载 automate-git.py ，使用 automate-git.py 来中git中下载的cef</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp;&nbsp;&nbsp;cd&nbsp;~/cef/automate<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wget&nbsp;https:<span style="color: #008000; ">//</span><span style="color: #008000; ">bitbucket.org/chromiumembedded/cef/raw/master/tools/automate/automate-git.py</span></div></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;">创建 ~/cef/chromium_git/update.sh</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp;&nbsp;&nbsp;#!/bin/bash<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;python&nbsp;../automate/automate-git.py&nbsp;--download-dir=/home/system/cef/chromium_git&nbsp;--depot-tools-dir=/home/system/cef/depot_tools&nbsp;--no-distrib&nbsp;--no-build</div></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;">终端执行刚刚创建的update.sh，下载cef代码</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp;&nbsp;&nbsp;cd&nbsp;~/cef/chromium_git<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chmod&nbsp;755&nbsp;update.sh<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;./update.sh</div></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;">下载漫长... 这里有从git上下载的 depot_tools工具 和 cef 代码 。可以直接拷贝过来就用，不过别忘了设置depot_tools的环境变量。 </div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;">&nbsp;&nbsp;&nbsp;获取第三方库代码：</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp;&nbsp;&nbsp;cd&nbsp;~/cef/chromium_git/chromium/src<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gclient&nbsp;sync</div></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;">&nbsp;&nbsp;&nbsp;创建 Ninja 工程文件</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;">创建 ~/cef/chromium_git/chromium/src/cef/create.sh 文件，文件内容</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp;&nbsp;&nbsp;#!/bin/bash<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;./cef_create_projects.sh</div></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;执行该脚步</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp;&nbsp;&nbsp;cd&nbsp;~/cef/chromium_git/chromium/src/cef<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chmod&nbsp;755&nbsp;create.sh<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;./create.sh</div></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;">&nbsp;&nbsp;&nbsp;创建沙箱：</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp;&nbsp;&nbsp;cd&nbsp;~/cef/chromium_git/chromium/src<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;export&nbsp;CHROME_DEVEL_SANDBOX=/usr/local/sbin/chrome-devel-sandbox<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sudo&nbsp;BUILDTYPE=Debug_GN_x64&nbsp;./build/update-linux-sandbox.sh</div></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; line-height: 1.75;">&nbsp;&nbsp;&nbsp;Ninja 编译 cef/chromium</div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->cd&nbsp;~/cef/chromium_git/chromium/src<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ninja&nbsp;-C&nbsp;<span style="color: #0000FF; ">out</span>/Debug_GN_x64&nbsp;cef&nbsp;chrome_sandbox</div></div><div yne-bulb-block="image" style="float: none;"><img alt="" data-media-type="image" src="C:/Users/Administrator/AppData/Local/YNote/data/cool.worm@163.com/21113cdcba5d4bc5a27cf0cc90b5f003/clipboard.png" style="width: 620px;" data-attr-org-src-id="68E1EA5C154E441AB4B6125E9C042977" /></div><div yne-bulb-block="paragraph" style="white-space: pre-wrap; text-indent: 28px; line-height: 1.75;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.cppblog.com/images/cppblog_com/iwindows/clipboard2.png" width="736" height="434" alt="" /></div><img src ="http://www.cppblog.com/iwindows/aggbug/215919.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/iwindows/" target="_blank">vic.MINg</a> 2018-09-12 11:57 <a href="http://www.cppblog.com/iwindows/archive/2018/09/12/215919.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VS2005 编译 金山卫士</title><link>http://www.cppblog.com/iwindows/archive/2013/01/08/196922.html</link><dc:creator>vic.MINg</dc:creator><author>vic.MINg</author><pubDate>Tue, 08 Jan 2013 07:08:00 GMT</pubDate><guid>http://www.cppblog.com/iwindows/archive/2013/01/08/196922.html</guid><wfw:comment>http://www.cppblog.com/iwindows/comments/196922.html</wfw:comment><comments>http://www.cppblog.com/iwindows/archive/2013/01/08/196922.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/iwindows/comments/commentRss/196922.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/iwindows/services/trackbacks/196922.html</trackback:ping><description><![CDATA[<strong style="color: #000080; font-family: 宋体; font-size: 13px; line-height: 19px; background-color: #ffffff; "><br />
一 编译工具及环境<br /></strong><p><strong style="color: #000080; font-family: Arial; font-size: 13px; line-height: 19px; background-color: #ffffff; "><br /></strong></p><p><span style="font-family: Arial; ">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><span style="font-family: Arial; ">操作系统：Windows 7 Ultimate</span><br /></p><p>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: Arial; ">开发环境：Visual Studio 2005 Professional</span><br /></p><p>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: Arial; ">源码下载：</span><a href="http://code.ijinshan.com/" style="font-family: 'Comic Sans MS'; font-size: 10pt; "><span style="font-family: Arial; ">http://code.ijinshan.com</span><span style="font-family: Arial; font-size: 10pt; "></span></a></p><p><br /></p><p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: Arial; font-size: 10pt; ">SDK：<br /></span><br /><span style="font-family: Arial; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Microsoft Windows SDK v6.0A<br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.cppblog.com/images/cppblog_com/iwindows/jinshan001.jpg" border="0" alt="" width="231" height="129" /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: Arial; font-size: 10pt; ">电脑里装了Windows 7的平台SDK但使用有些问题，编辑的时候在讲解。</span><span style="font-family: Arial; font-size: 10pt; "><br /><br /></span></p><span style="font-family: Arial; font-size: 10pt; "><br /></span></p><p>&nbsp;</p><p>
<strong style="font-family: 宋体; font-size: 13px; line-height: 19px; background-color: #ffffff; color: #000080; ">二 开发环境搭建<br /></strong><br />
</p>
<p><span style="font-family: Arial; font-size: 10pt; ">&nbsp; &nbsp;</span><span style="font-family: Arial; font-size: 10pt; ">其实这步可以略过&#8230;&#8230;因为我装了Winodws 7 Platform SDK 配置了一下环境而已。如果要配置v6.0A的话编译时候可以解决不少问题哦~</span><span style="font-family: Arial; font-size: 10pt; "><br />
</span></p>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.cppblog.com/images/cppblog_com/iwindows/jinshan002.jpg" border="0" alt="" width="524" height="442" /><br />
&nbsp; &nbsp;<br />
<strong style="color: #000080; font-family: 宋体; font-size: 13px; line-height: 19px; background-color: #ffffff; "><br />
</strong>&nbsp;<br />
<span style="background-color: #ffffff; "><font color="#000080" face="宋体" size="2" style="font-weight: bold; "><span style="line-height: 19px;">三 编译金山卫士</span></font><br />
<ol>
     <li><span style="font-family: Arial; ">浏览一下相关的Readme.txt&nbsp;<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;=&nbsp;开源作品根索引&nbsp;=<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;http:<span style="color: #008000; ">//</span><span style="color: #008000; ">code.ijinshan.com/hg/</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #008000; "></span>+--&nbsp;pcmamager&nbsp;&nbsp;&nbsp;110317&nbsp;release:开源卫士整体&nbsp;可编译学习版本!<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;110311&nbsp;release:开源卫士整体<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;+--&nbsp;kclear&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;110113&nbsp;release:卫士垃圾清理<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;+--&nbsp;ksm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;101226&nbsp;release:卫士主界面<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;+--&nbsp;karpfw&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;101218&nbsp;release:卫士ARP防火墙<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;+--&nbsp;sysopt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;101209&nbsp;&nbsp;release:系统优化&nbsp;之&nbsp;开机加速器<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;+--&nbsp;bksafevul&nbsp;&nbsp;&nbsp;101201&nbsp;&nbsp;release:漏洞扫描器<br /><span style="color: #008080; ">10</span>&nbsp;+--&nbsp;ppro&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;101201&nbsp;&nbsp;release:隐私保护器</div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span>&nbsp;外部库包:<br /><span style="color: #008080; ">2</span>&nbsp;http:<span style="color: #008000; ">//</span><span style="color: #008000; ">code.ijinshan.com/download/LIB4pcmanager.tbz</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">3</span>&nbsp;<span style="color: #008000; "></span>下载后,将其中子目录覆盖&nbsp;pcmanager&nbsp;目录;<br /><span style="color: #008080; ">4</span>&nbsp;即:LIB4pcmanager<br /><span style="color: #008080; ">5</span>&nbsp;&#9500;&#9472;&#9472;&nbsp;lib<br /><span style="color: #008080; ">6</span>&nbsp;&#9492;&#9472;&#9472;&nbsp;src<br /><span style="color: #008080; ">7</span>&nbsp;将&nbsp;lib&nbsp;和&nbsp;src&nbsp;目录,覆盖&nbsp;pcmanager&nbsp;目录中的对应同名目录</div><br />了解一下，按照Readme照着做就OK了~！<br /><br /></span></li><li><span style="font-family: Arial; ">工程编译 <span style="font-size: 12.727272033691406px; ">pcmanager 内工程</span><br /><br />最先需要编译的工程&nbsp;</span><span style="font-family: Arial; color: red; ">commonlib.sln<br /></span><span style="font-family: Arial; ">需要<span style="color: #333333; font-size: 14px; line-height: 26px; ">把工程中，C++的包含文件的E:\winsdk\v6.0\Include 改为 C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include &nbsp;、<span style="font-size: 14px; ">&nbsp;Lib的包含路径改为 C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib</span><br /></span>编译工程，结果出现：<br />&nbsp; &nbsp;&nbsp; &nbsp;<img src="http://www.cppblog.com/images/cppblog_com/iwindows/jinshan003.JPG" border="0" alt="" width="672" height="103" /><br />原因是因为uuid.lib的版本跟VS 2005的版本不匹配，使用的uuid.lib比较新&#8230;&#8230;<br />将你使用的Microsoft SDKs放在最后就行了，重新编译通过。<br />&nbsp; &nbsp;&nbsp; &nbsp;<img src="http://www.cppblog.com/images/cppblog_com/iwindows/jinshan004.JPG" border="0" alt="" width="760" height="495" /><br /><br />编译主工程&nbsp;</span><span style="font-family: Arial; color: red; ">ksafe.sln</span><span style="font-family: Arial; "><br />注意修改Microsoft Windows SDK v6.0A相关的include、lib位置，以后工程都需要修改，这里不在强调了。<br />这个工程应该没有打问题，可以直接编译过去的。<br /><br />编译垃圾清理&nbsp;</span><span style="font-family: Arial; color: red; ">kclear.sln</span><span style="font-family: Arial; "><br />编译工程，错误提示：<br />&nbsp; &nbsp;&nbsp; &nbsp;<img src="http://www.cppblog.com/images/cppblog_com/iwindows/jinshan005.JPG" border="0" alt="" width="685" height="81" /><br />查看工程设置，因为依赖于</span>kuipack.exe。<br />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.cppblog.com/images/cppblog_com/iwindows/jinshan006.JPG" border="0" alt="" width="596" height="242" /><br />所有需要把 \<span style="color: #333333; font-family: Arial; font-size: 14px; line-height: 26px; ">oss</span>\kclear\tools\kuipack.exe 复制到 \oss\pcmanager\tools\kuipack.exe 中，即可编译通过。<br /><br />编译其他工程：<span style="color: red; ">avcenter.sln、</span><span style="color: red; ">bkver.sln、</span><span style="color: red; ">kmsspeed.sln、</span><span style="color: red; ">kprocesslib.sln、</span><span style="color: red; ">ksafeperfopt.sln、</span><span style="color: red; ">ksafesvc.sln、</span><span style="color: red; ">softmgr.sln、</span><span style="color: red; ">sysopt.sln、</span><span style="color: red; ">vulfix.sln&nbsp;<span style="color: #000000; ">顺利通过。</span></span><br />空工程或问题工程：<span style="color: #0000ff; ">lang.sln、PluginEngine.sln、safemon.sln、ksafeinstaller.sln、onekeyinstall.sln、ksafe.sdk\ksafe.sdk.sln、</span><span style="color: #0000ff; ">ksafe.zhangrui\ksafe.zhangrui.sln</span> 空工程。<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;KSafeMain.sln（这个工程缺少子工程，但觉得无伤大雅，个人未编译。）<br /><br /><br /></li><li><font face="Arial">工程编译 <span style="font-size: 12.727272033691406px;">oss 中</span>&nbsp;pcmanager 以外工程<br /><br />当然先把几个工程配置一下<span style="color: #333333; line-height: 26px; ">C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include &nbsp;和</span><span style="color: #333333; font-size: 14px; line-height: 26px; ">&nbsp;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib。</span><br />然后编译&nbsp;bksafevul、karpfw、kclear、ksm、sysopt 中的工程文件。其中&nbsp;ppro 没找到相关工程文件，不过有.vcproj文件（有些懒，这工程就放弃了~~~，感兴趣的可以工程打开编译一下。）<br />这几个编译几乎没有什么大问题。有的都是磕磕绊绊的小毛病，细心改一下就OK了。<br /><br />karpfw工程 ：自己设置一下依赖路径。..\..\import\kxe_improve_lib\win32\base_lib<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<img src="http://www.cppblog.com/images/cppblog_com/iwindows/jinshan007.JPG" border="0" alt="" width="653" height="53" /><br /><br /><div>ksm工程：md5.c 设置一下不依赖头文件编译。</div>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<img src="http://www.cppblog.com/images/cppblog_com/iwindows/jinshan008.JPG" border="0" alt="" width="797" height="101" /><br /><br /><br /><br /><br />最后看一下成果，收工：<img src="http://www.cppblog.com/images/cppblog_com/iwindows/jinshan009.JPG" border="0" alt="" width="803" height="572" /></font></li></ol></span><span style="background-color: #ffffff; "><ol>
</ol>
</span><img src ="http://www.cppblog.com/iwindows/aggbug/196922.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/iwindows/" target="_blank">vic.MINg</a> 2013-01-08 15:08 <a href="http://www.cppblog.com/iwindows/archive/2013/01/08/196922.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个宏命令，就可以程序崩溃时生成dump文件</title><link>http://www.cppblog.com/iwindows/archive/2012/10/30/194065.html</link><dc:creator>vic.MINg</dc:creator><author>vic.MINg</author><pubDate>Tue, 30 Oct 2012 02:10:00 GMT</pubDate><guid>http://www.cppblog.com/iwindows/archive/2012/10/30/194065.html</guid><wfw:comment>http://www.cppblog.com/iwindows/comments/194065.html</wfw:comment><comments>http://www.cppblog.com/iwindows/archive/2012/10/30/194065.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/iwindows/comments/commentRss/194065.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/iwindows/services/trackbacks/194065.html</trackback:ping><description><![CDATA[<p>在主程序初始化时加入</p>
<p>DeclareDumpFile();<br /><br /><span style="color: rgb(0,0,0)">创建头文件DumpFile.h, 将下列代码放进文件中<br /></span><br /></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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">#pragma&nbsp;once<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">windows.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">Dbghelp.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">iostream</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">vector</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">namespace</span><span style="color: #000000">&nbsp;std;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#pragma&nbsp;comment(lib,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Dbghelp.lib</span><span style="color: #000000">"</span><span style="color: #000000">)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">namespace</span><span style="color: #000000">&nbsp;NSDumpFile<br /><img id="Codehighlighter1_180_2355_Open_Image" onclick="this.style.display='none'; Codehighlighter1_180_2355_Open_Text.style.display='none'; Codehighlighter1_180_2355_Closed_Image.style.display='inline'; Codehighlighter1_180_2355_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_180_2355_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_180_2355_Closed_Text.style.display='none'; Codehighlighter1_180_2355_Open_Image.style.display='inline'; Codehighlighter1_180_2355_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_180_2355_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_180_2355_Open_Text"><span style="color: #000000">{&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;CreateDumpFile(LPCSTR&nbsp;lpstrDumpFilePathName,&nbsp;EXCEPTION_POINTERS&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">pException)&nbsp;&nbsp;<br /><img id="Codehighlighter1_269_792_Open_Image" onclick="this.style.display='none'; Codehighlighter1_269_792_Open_Text.style.display='none'; Codehighlighter1_269_792_Closed_Image.style.display='inline'; Codehighlighter1_269_792_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_269_792_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_269_792_Closed_Text.style.display='none'; Codehighlighter1_269_792_Open_Image.style.display='inline'; Codehighlighter1_269_792_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</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_269_792_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_269_792_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;创建Dump文件&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HANDLE&nbsp;hDumpFile&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;CreateFile(lpstrDumpFilePathName,&nbsp;GENERIC_WRITE,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;NULL,&nbsp;CREATE_ALWAYS,&nbsp;FILE_ATTRIBUTE_NORMAL,&nbsp;NULL);&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Dump信息&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MINIDUMP_EXCEPTION_INFORMATION&nbsp;dumpInfo;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dumpInfo.ExceptionPointers&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;pException;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dumpInfo.ThreadId&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;GetCurrentThreadId();&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dumpInfo.ClientPointers&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;TRUE;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;写入Dump文件内容&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MiniDumpWriteDump(GetCurrentProcess(),&nbsp;GetCurrentProcessId(),&nbsp;hDumpFile,&nbsp;MiniDumpNormal,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">dumpInfo,&nbsp;NULL,&nbsp;NULL);&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CloseHandle(hDumpFile);&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;LPTOP_LEVEL_EXCEPTION_FILTER&nbsp;WINAPI&nbsp;MyDummySetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER&nbsp;lpTopLevelExceptionFilter)<br /><img id="Codehighlighter1_927_945_Open_Image" onclick="this.style.display='none'; Codehighlighter1_927_945_Open_Text.style.display='none'; Codehighlighter1_927_945_Closed_Image.style.display='inline'; Codehighlighter1_927_945_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_927_945_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_927_945_Closed_Text.style.display='none'; Codehighlighter1_927_945_Open_Image.style.display='inline'; Codehighlighter1_927_945_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</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_927_945_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_927_945_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;NULL;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;BOOL&nbsp;PreventSetUnhandledExceptionFilter()<br /><img id="Codehighlighter1_993_1765_Open_Image" onclick="this.style.display='none'; Codehighlighter1_993_1765_Open_Text.style.display='none'; Codehighlighter1_993_1765_Closed_Image.style.display='inline'; Codehighlighter1_993_1765_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_993_1765_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_993_1765_Closed_Text.style.display='none'; Codehighlighter1_993_1765_Open_Image.style.display='inline'; Codehighlighter1_993_1765_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</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_993_1765_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_993_1765_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HMODULE&nbsp;hKernel32&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;LoadLibrary(_T(</span><span style="color: #000000">"</span><span style="color: #000000">kernel32.dll</span><span style="color: #000000">"</span><span style="color: #000000">));<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(hKernel32&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;NULL)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;FALSE;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">pOrgEntry&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;GetProcAddress(hKernel32,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">SetUnhandledExceptionFilter</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(pOrgEntry&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;NULL)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;FALSE;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;newJump[&nbsp;</span><span style="color: #000000">100</span><span style="color: #000000">&nbsp;];<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;dwOrgEntryAddr&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(DWORD)&nbsp;pOrgEntry;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwOrgEntryAddr&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">5</span><span style="color: #000000">;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;add&nbsp;5&nbsp;for&nbsp;5&nbsp;op-codes&nbsp;for&nbsp;jmp&nbsp;far</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">pNewFunc&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">MyDummySetUnhandledExceptionFilter;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;dwNewEntryAddr&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(DWORD)&nbsp;pNewFunc;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;dwRelativeAddr&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;dwNewEntryAddr&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;&nbsp;dwOrgEntryAddr;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newJump[&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">&nbsp;]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0xE9</span><span style="color: #000000">;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;JMP&nbsp;absolute</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memcpy(</span><span style="color: #000000">&amp;</span><span style="color: #000000">newJump[&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;],&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">dwRelativeAddr,&nbsp;</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(pNewFunc));<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SIZE_T&nbsp;bytesWritten;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BOOL&nbsp;bRet&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;WriteProcessMemory(GetCurrentProcess(),&nbsp;&nbsp;&nbsp;&nbsp;pOrgEntry,&nbsp;newJump,&nbsp;</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(pNewFunc)&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">bytesWritten);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;bRet;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;LONG&nbsp;WINAPI&nbsp;UnhandledExceptionFilterEx(</span><span style="color: #0000ff">struct</span><span style="color: #000000">&nbsp;_EXCEPTION_POINTERS&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">pException)<br /><img id="Codehighlighter1_1850_2222_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1850_2222_Open_Text.style.display='none'; Codehighlighter1_1850_2222_Closed_Image.style.display='inline'; Codehighlighter1_1850_2222_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_1850_2222_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1850_2222_Closed_Text.style.display='none'; Codehighlighter1_1850_2222_Open_Image.style.display='inline'; Codehighlighter1_1850_2222_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</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_1850_2222_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1850_2222_Open_Text"><span style="color: #000000">{<br /><img id="Codehighlighter1_1882_1886_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1882_1886_Open_Text.style.display='none'; Codehighlighter1_1882_1886_Closed_Image.style.display='inline'; Codehighlighter1_1882_1886_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_1882_1886_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1882_1886_Closed_Text.style.display='none'; Codehighlighter1_1882_1886_Open_Image.style.display='inline'; Codehighlighter1_1882_1886_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TCHAR&nbsp;szMbsFile[MAX_PATH]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</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_1882_1886_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1882_1886_Open_Text"><span style="color: #000000">{&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">&nbsp;}</span></span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::GetModuleFileName(NULL,&nbsp;szMbsFile,&nbsp;MAX_PATH);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TCHAR</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pFind&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;_tcsrchr(szMbsFile,&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">\\</span><span style="color: #000000">'</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(pFind)<br /><img id="Codehighlighter1_1999_2112_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1999_2112_Open_Text.style.display='none'; Codehighlighter1_1999_2112_Closed_Image.style.display='inline'; Codehighlighter1_1999_2112_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_1999_2112_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1999_2112_Closed_Text.style.display='none'; Codehighlighter1_1999_2112_Open_Image.style.display='inline'; Codehighlighter1_1999_2112_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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_1999_2112_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1999_2112_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">(pFind</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_tcscat(szMbsFile,&nbsp;_T(</span><span style="color: #000000">"</span><span style="color: #000000">CrashDumpFile.dmp</span><span style="color: #000000">"</span><span style="color: #000000">));<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CreateDumpFile(szMbsFile,&nbsp;pException);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;TODO:&nbsp;MiniDumpWriteDump</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FatalAppExit(</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;&nbsp;_T(</span><span style="color: #000000">"</span><span style="color: #000000">Fatal&nbsp;Error</span><span style="color: #000000">"</span><span style="color: #000000">));<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;EXCEPTION_CONTINUE_SEARCH;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;RunCrashHandler()<br /><img id="Codehighlighter1_2251_2353_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2251_2353_Open_Text.style.display='none'; Codehighlighter1_2251_2353_Closed_Image.style.display='inline'; Codehighlighter1_2251_2353_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_2251_2353_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_2251_2353_Closed_Text.style.display='none'; Codehighlighter1_2251_2353_Open_Image.style.display='inline'; Codehighlighter1_2251_2353_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</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_2251_2353_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2251_2353_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetUnhandledExceptionFilter(UnhandledExceptionFilterEx);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PreventSetUnhandledExceptionFilter();<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;DeclareDumpFile()&nbsp;NSDumpFile::RunCrashHandler();</span></div>
<p>&nbsp;</p><br /><img src ="http://www.cppblog.com/iwindows/aggbug/194065.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/iwindows/" target="_blank">vic.MINg</a> 2012-10-30 10:10 <a href="http://www.cppblog.com/iwindows/archive/2012/10/30/194065.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Visual C++里Win7、Win8 触摸书写板的调用</title><link>http://www.cppblog.com/iwindows/archive/2012/10/10/193114.html</link><dc:creator>vic.MINg</dc:creator><author>vic.MINg</author><pubDate>Wed, 10 Oct 2012 07:03:00 GMT</pubDate><guid>http://www.cppblog.com/iwindows/archive/2012/10/10/193114.html</guid><wfw:comment>http://www.cppblog.com/iwindows/comments/193114.html</wfw:comment><comments>http://www.cppblog.com/iwindows/archive/2012/10/10/193114.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/iwindows/comments/commentRss/193114.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/iwindows/services/trackbacks/193114.html</trackback:ping><description><![CDATA[<div><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /><span style="font-size: 10pt">检测是不是Win7系统
<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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;IsWindows7()<br /><img id="Codehighlighter1_18_518_Open_Image" onclick="this.style.display='none'; Codehighlighter1_18_518_Open_Text.style.display='none'; Codehighlighter1_18_518_Closed_Image.style.display='inline'; Codehighlighter1_18_518_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_18_518_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_18_518_Closed_Text.style.display='none'; Codehighlighter1_18_518_Open_Image.style.display='inline'; Codehighlighter1_18_518_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_18_518_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_18_518_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;OSVERSIONINFOEX&nbsp;osvi;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;bool&nbsp;bOsVersionInfoEx=false;</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;dwType</span><span style="color: #000000">=</span><span style="color: #000000">0UL</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;bWin7</span><span style="color: #000000">=</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;ZeroMemory(</span><span style="color: #000000">&amp;</span><span style="color: #000000">osvi,&nbsp;</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(SYSTEM_INFO));<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;ZeroMemory(</span><span style="color: #000000">&amp;</span><span style="color: #000000">osvi,&nbsp;</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(OSVERSIONINFOEX));<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;osvi.dwOSVersionInfoSize&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(OSVERSIONINFOEX);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;BOOL&nbsp;bOsVersionInfoEx&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;GetVersionEx&nbsp;((LPOSVERSIONINFOA)&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">osvi);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">(bOsVersionInfoEx)&nbsp;)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">false</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(osvi.dwMajorVersion</span><span style="color: #000000">==</span><span style="color: #000000">6</span><span style="color: #000000">)<br /><img id="Codehighlighter1_390_501_Open_Image" onclick="this.style.display='none'; Codehighlighter1_390_501_Open_Text.style.display='none'; Codehighlighter1_390_501_Closed_Image.style.display='inline'; Codehighlighter1_390_501_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_390_501_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_390_501_Closed_Text.style.display='none'; Codehighlighter1_390_501_Open_Image.style.display='inline'; Codehighlighter1_390_501_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</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_390_501_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_390_501_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(osvi.dwMinorVersion</span><span style="color: #000000">==</span><span style="color: #000000">1</span><span style="color: #000000">)<br /><img id="Codehighlighter1_423_498_Open_Image" onclick="this.style.display='none'; Codehighlighter1_423_498_Open_Text.style.display='none'; Codehighlighter1_423_498_Closed_Image.style.display='inline'; Codehighlighter1_423_498_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_423_498_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_423_498_Closed_Text.style.display='none'; Codehighlighter1_423_498_Open_Image.style.display='inline'; Codehighlighter1_423_498_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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_423_498_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_423_498_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(osvi.wProductType</span><span style="color: #000000">==</span><span style="color: #000000">VER_NT_WORKSTATION)<br /><img id="Codehighlighter1_473_494_Open_Image" onclick="this.style.display='none'; Codehighlighter1_473_494_Open_Text.style.display='none'; Codehighlighter1_473_494_Closed_Image.style.display='inline'; Codehighlighter1_473_494_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_473_494_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_473_494_Closed_Text.style.display='none'; Codehighlighter1_473_494_Open_Image.style.display='inline'; Codehighlighter1_473_494_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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_473_494_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_473_494_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bWin7</span><span style="color: #000000">=</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;bWin7;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span></div></span></span><br /><br /><span style="font-size: 10pt">Win8系统马上要上市了，开发需要</span><span style="font-size: 10pt">想实现iPad或A<font size="2"><span style="font-size: 10pt">ndroid系统里触摸书写板的动态弹出和动态消失效果。</span></font><br /></span><span style="font-size: 10pt">单位工作系统是Win7，测试平板是Win8的，</span><span style="font-size: 10pt">的在这里只做了一下Win7手写板的截图。</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/iwindows/TabTip.jpg" width="697" height="304" /><br /><br /><span style="font-size: 10pt">关于书写板的弹出：</span><br /><span style="font-size: 10pt">Win7、Win8弹出书写板并没有什么差别。都是外部调用TabTip.exe而已。</span><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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><span style="color: #0000ff; font-size: 10pt">void</span><span style="color: #000000; font-size: 10pt">&nbsp;ExecuteTabTip()<br /><img id="Codehighlighter1_21_399_Open_Image" onclick="this.style.display='none'; Codehighlighter1_21_399_Open_Text.style.display='none'; Codehighlighter1_21_399_Closed_Image.style.display='inline'; Codehighlighter1_21_399_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_21_399_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_21_399_Closed_Text.style.display='none'; Codehighlighter1_21_399_Open_Image.style.display='inline'; Codehighlighter1_21_399_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_21_399_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_21_399_Open_Text"><span style="color: #000000; font-size: 10pt">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;TCHAR&nbsp;tcProgramFile[MAX_PATH];<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;SHGetSpecialFolderPath(NULL,tcProgramFile,CSIDL_PROGRAM_FILES,</span><span style="color: #000000; font-size: 10pt">0</span><span style="color: #000000; font-size: 10pt">);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-size: 10pt">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000; font-size: 10pt">*</span><span style="color: #000000; font-size: 10pt">token;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-size: 10pt">char</span><span style="color: #000000; font-size: 10pt">&nbsp;seps[]&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-size: 10pt">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">\\</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;token&nbsp;</span><span style="color: #000000; font-size: 10pt">=</span><span style="color: #000000; font-size: 10pt">&nbsp;strtok(&nbsp;tcProgramFile,&nbsp;seps&nbsp;);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;std::</span><span style="color: #0000ff; font-size: 10pt">string</span><span style="color: #000000; font-size: 10pt">&nbsp;strPath&nbsp;</span><span style="color: #000000; font-size: 10pt">=</span><span style="color: #000000; font-size: 10pt">&nbsp;token;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;strPath&nbsp;</span><span style="color: #000000; font-size: 10pt">=</span><span style="color: #000000; font-size: 10pt">&nbsp;strPath&nbsp;</span><span style="color: #000000; font-size: 10pt">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">\\Program&nbsp;Files\\Common&nbsp;Files\\Microsoft&nbsp;Shared\\ink\\TabTip.exe</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;ShellExecute(NULL,&nbsp;</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">open</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">,&nbsp;strPath.c_str(),&nbsp;NULL,&nbsp;NULL,&nbsp;SW_SHOWNA);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" /></span><span style="color: #000000; font-size: 10pt">}</span></span></div><br /><br /><br /><span style="font-size: 10pt">关于书写板的消失：</span><br /><span style="font-size: 10pt">Win7中的方法。 </span>
<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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><span style="color: #0000ff; font-size: 10pt">void</span><span style="color: #000000; font-size: 10pt">&nbsp;TerminateTabTip4Win7()<br /><img id="Codehighlighter1_28_285_Open_Image" onclick="this.style.display='none'; Codehighlighter1_28_285_Open_Text.style.display='none'; Codehighlighter1_28_285_Closed_Image.style.display='inline'; Codehighlighter1_28_285_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_28_285_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_28_285_Closed_Text.style.display='none'; Codehighlighter1_28_285_Open_Image.style.display='inline'; Codehighlighter1_28_285_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_28_285_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_28_285_Open_Text"><span style="color: #000000; font-size: 10pt">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;WM_DESKBAND_CLICKED&nbsp;</span><span style="color: #000000; font-size: 10pt">=</span><span style="color: #000000; font-size: 10pt">&nbsp;::RegisterWindowMessage(_TEXT(</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">TabletInputPanelDeskBandClicked</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">));<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;HWND&nbsp;wKB&nbsp;</span><span style="color: #000000; font-size: 10pt">=</span><span style="color: #000000; font-size: 10pt">&nbsp;::FindWindow(_TEXT(</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">IPTip_Main_Window</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">),&nbsp;NULL);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-size: 10pt">if</span><span style="color: #000000; font-size: 10pt">(wKB&nbsp;</span><span style="color: #000000; font-size: 10pt">!=</span><span style="color: #000000; font-size: 10pt">&nbsp;NULL&nbsp;</span><span style="color: #000000; font-size: 10pt">&amp;&amp;</span><span style="color: #000000; font-size: 10pt">&nbsp;::IsWindowVisible(wKB))<br /><img id="Codehighlighter1_231_283_Open_Image" onclick="this.style.display='none'; Codehighlighter1_231_283_Open_Text.style.display='none'; Codehighlighter1_231_283_Closed_Image.style.display='inline'; Codehighlighter1_231_283_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_231_283_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_231_283_Closed_Text.style.display='none'; Codehighlighter1_231_283_Open_Image.style.display='inline'; Codehighlighter1_231_283_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</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_231_283_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_231_283_Open_Text"><span style="color: #000000; font-size: 10pt">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::PostMessage(wKB,&nbsp;WM_</span><span style="color: #000000; font-size: 10pt">DESKBAND_</span><span style="color: #000000; font-size: 10pt">CLICKED,&nbsp;</span><span style="color: #000000; font-size: 10pt">0</span><span style="color: #000000; font-size: 10pt">,&nbsp;</span><span style="color: #000000; font-size: 10pt">0</span><span style="color: #000000; font-size: 10pt">);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /></span><span style="color: #000000; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" /></span><span style="color: #000000; font-size: 10pt">}</span></span></div><br /><span style="font-size: 10pt">Win8中的方法。</span><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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" /><span style="color: #0000ff; font-size: 10pt">void</span><span style="color: #000000; font-size: 10pt"> TerminateTabTip4Win8()<br /><img id="Codehighlighter1_28_207_Open_Image" onclick="this.style.display='none'; Codehighlighter1_28_207_Open_Text.style.display='none'; Codehighlighter1_28_207_Closed_Image.style.display='inline'; Codehighlighter1_28_207_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_28_207_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_28_207_Closed_Text.style.display='none'; Codehighlighter1_28_207_Open_Image.style.display='inline'; Codehighlighter1_28_207_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_28_207_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_28_207_Open_Text"><span style="color: #000000; font-size: 10pt">{<br /><img alt="" align="top" src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000; font-size: 10pt">&nbsp;&nbsp;&nbsp;HWND wKB </span><span style="color: #000000; font-size: 10pt">=</span><span style="color: #000000; font-size: 10pt"> ::FindWindow(_TEXT(</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">IPTip_Main_Window</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">), NULL);<br /><img alt="" align="top" src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-size: 10pt">if</span><span style="color: #000000; font-size: 10pt">(wKB </span><span style="color: #000000; font-size: 10pt">!=</span><span style="color: #000000; font-size: 10pt"> NULL </span><span style="color: #000000; font-size: 10pt">&amp;&amp;</span><span style="color: #000000; font-size: 10pt"> ::IsWindowVisible(wKB))<br /><img id="Codehighlighter1_143_205_Open_Image" onclick="this.style.display='none'; Codehighlighter1_143_205_Open_Text.style.display='none'; Codehighlighter1_143_205_Closed_Image.style.display='inline'; Codehighlighter1_143_205_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_143_205_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_143_205_Closed_Text.style.display='none'; Codehighlighter1_143_205_Open_Image.style.display='inline'; Codehighlighter1_143_205_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;</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_143_205_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_143_205_Open_Text"><span style="color: #000000; font-size: 10pt">{<br /><img alt="" align="top" src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000; font-size: 10pt"><span style="color: #000000; font-size: 10pt">&nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::PostMessage(wKB, WM_SYSCOMMAND, SC_CLOSE, </span><span style="color: #000000; font-size: 10pt">0</span><span style="color: #000000; font-size: 10pt">);<br /><img alt="" align="top" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" /></span><span style="color: #000000; font-size: 10pt">&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" /></span><span style="color: #000000; font-size: 10pt">}</span></span></div><br /><span style="font-size: 10pt">Win8下书写板停靠代码 </span>
<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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font size="2">HWND wKB <span style="color: #000000; font-size: 10pt">=</span></font><span style="color: #000000; font-size: 10pt"> ::FindWindow(_TEXT(</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">IPTip_Main_Window</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">), NULL);</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #000000; font-size: 10pt">DWORD WM_DOCK_BUTTON_PRESSED </span><span style="color: #000000; font-size: 10pt">=</span><span style="color: #000000; font-size: 10pt"> ::RegisterWindowMessage(_TEXT(</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">IPTipDockButtonPressed</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">));&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-size: 10pt">PostMessage(<font size="2">wKB</font>, WM_DOCK_BUTTON_PRESSED, </span><span style="color: #000000; font-size: 10pt">0</span><span style="color: #000000; font-size: 10pt">, </span><span style="color: #000000; font-size: 10pt">0</span><span style="color: #000000; font-size: 10pt">); </span></div><br /><br /><br /></div><img src ="http://www.cppblog.com/iwindows/aggbug/193114.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/iwindows/" target="_blank">vic.MINg</a> 2012-10-10 15:03 <a href="http://www.cppblog.com/iwindows/archive/2012/10/10/193114.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>gSoap 编译环境搭建</title><link>http://www.cppblog.com/iwindows/archive/2012/10/10/193111.html</link><dc:creator>vic.MINg</dc:creator><author>vic.MINg</author><pubDate>Wed, 10 Oct 2012 06:25:00 GMT</pubDate><guid>http://www.cppblog.com/iwindows/archive/2012/10/10/193111.html</guid><wfw:comment>http://www.cppblog.com/iwindows/comments/193111.html</wfw:comment><comments>http://www.cppblog.com/iwindows/archive/2012/10/10/193111.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/iwindows/comments/commentRss/193111.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/iwindows/services/trackbacks/193111.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: http://sourceforge.net/projects/gsoap2 下载最新的gSoap&nbsp;在其目录下找到VisualStudio2005 可以直接在Windows环境下编译该文件阅读readme.txt 需要安装bison和flex 两个编译软件。分别在以下两个链接中下载。http://gnuwin32.sourceforge.net/packages/bi...&nbsp;&nbsp;<a href='http://www.cppblog.com/iwindows/archive/2012/10/10/193111.html'>阅读全文</a><img src ="http://www.cppblog.com/iwindows/aggbug/193111.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/iwindows/" target="_blank">vic.MINg</a> 2012-10-10 14:25 <a href="http://www.cppblog.com/iwindows/archive/2012/10/10/193111.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Visual C++下OpenGL开发框架与应用</title><link>http://www.cppblog.com/iwindows/archive/2010/10/20/130504.html</link><dc:creator>vic.MINg</dc:creator><author>vic.MINg</author><pubDate>Tue, 19 Oct 2010 16:24:00 GMT</pubDate><guid>http://www.cppblog.com/iwindows/archive/2010/10/20/130504.html</guid><wfw:comment>http://www.cppblog.com/iwindows/comments/130504.html</wfw:comment><comments>http://www.cppblog.com/iwindows/archive/2010/10/20/130504.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/iwindows/comments/commentRss/130504.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/iwindows/services/trackbacks/130504.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp;马马虎虎的看完了《3D数学基础：图形与游戏开发》和《OpenGL编程指南》，感觉没看明白的跟看明白的一样多...但还是算入门了吧！辞职以后，在家玩的甚欢，太过得以忘形了。这两天收敛了许多，做了一个简单的程序，这里想做一些相应的总结。&nbsp;&nbsp;&nbsp;文章根据网络上同名《Visual C++下OpenGL开发框架与应用》改写，主要是问了节省时间，...&nbsp;&nbsp;<a href='http://www.cppblog.com/iwindows/archive/2010/10/20/130504.html'>阅读全文</a><img src ="http://www.cppblog.com/iwindows/aggbug/130504.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/iwindows/" target="_blank">vic.MINg</a> 2010-10-20 00:24 <a href="http://www.cppblog.com/iwindows/archive/2010/10/20/130504.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个基于NEHE框架的MFC OpenGL向导</title><link>http://www.cppblog.com/iwindows/archive/2010/09/11/126383.html</link><dc:creator>vic.MINg</dc:creator><author>vic.MINg</author><pubDate>Sat, 11 Sep 2010 01:29:00 GMT</pubDate><guid>http://www.cppblog.com/iwindows/archive/2010/09/11/126383.html</guid><wfw:comment>http://www.cppblog.com/iwindows/comments/126383.html</wfw:comment><comments>http://www.cppblog.com/iwindows/archive/2010/09/11/126383.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/iwindows/comments/commentRss/126383.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/iwindows/services/trackbacks/126383.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt"><br>&nbsp;&nbsp;&nbsp;已经学习OpenGL一小段时间了，断断续续的。虽说没什么长进，但是感觉还是有一些入门。主要是看NEHE的教程（<a href="http://nehe.gamedev.net/">NEHE OpenGL Tutorials</a>），有些东西很有深度，感觉很遥远&#8230;&#8230;只是一个多看多学的过程，看不懂一遍，可以看第二遍、第三遍，每一遍都会有所收获的。<br><br>&nbsp;&nbsp;&nbsp;学习OpenGL的初衷是为了做游戏，所以也在研究《学OpenGL编3D游戏》的教程。关于OpenGL的东西还是做得很少，想在其基础上做一个第一人称射击游戏，但在写它之前还是想对OpenGL做一些系统学习和总结，肯定会有不小的收获的。<br><br>&nbsp;&nbsp;&nbsp;就从这里开始吧！网络为学习提供了极大的方便，有很多大牛，我会不断的把我学到的东西，整理到这个博客当中，放弃了网易，以为感觉这里更规范，是一个适合于程序员的专用博客（^o^）。<br><br><br><br>&nbsp;&nbsp;&nbsp;一个基于NEHE框架的MFC OpenGL向导，这儿是在网上发现的一个很不错的东东，十分实用。以下是说明和下载（<a href="http://www.zwqxin.com/archives/opengl/learn-opengl-first.html">参考文档</a>）：<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;下载：<a href="http://download.csdn.net/source/2686853">NEHE向导文件.rar&nbsp;</a> （NEHE框架，for VC6）<br><br><br>&nbsp;&nbsp;&nbsp;以框架为例，首先看看里面的说明<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1、拷贝awx文件到vc6安装目录下（$Install_Directory\Common\MSDev98\Bin\IDE）；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2、打开VC6，新建工程，选择MFC OpenGL AppWizard向导，输入新建工程名；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3、向导第二步，设置分辨率和屏幕深度，点示&#8220;完成&#8221;按钮；（注：最好选择1024*768，和 32bit）<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4、选择左侧ClassView（类视导航），打开新建工程的类树；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5、在类树下，打开CMainFrame类；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6、点击到CMainFrame下的成员函数RenderGLScene。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;修改glBegin(GL_QUADS)到glEnds()之间的代码。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;好了，简单手动敲入：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<table border=1 cellSpacing=0 cellPadding=3 align=center>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 10pt">
            <p style="FONT-SIZE: 10pt" dir=ltr><br>glBegin(GL_QUADS);</p>
            <p style="FONT-SIZE: 10pt" dir=ltr>&nbsp;&nbsp; &#8230;&#8230;&nbsp;&nbsp;&nbsp; </p>
            <p style="FONT-SIZE: 10pt" dir=ltr>glEnd();<br></p>
            </td>
            <td style="FONT-SIZE: 10pt">
            <p style="FONT-SIZE: 10pt" dir=ltr><br>改成&#8594;<br></p>
            </td>
            <td style="FONT-SIZE: 10pt">
            <p style="FONT-SIZE: 10pt" dir=ltr><br>glBegin(GL_TRIANGLES);</p>
            <p style="FONT-SIZE: 10pt" dir=ltr>&nbsp;&nbsp; glVertex3f(-1,0,0);</p>
            <p style="FONT-SIZE: 10pt" dir=ltr>&nbsp;&nbsp; glVertex3f(1,0,0);</p>
            <p style="FONT-SIZE: 10pt" dir=ltr>&nbsp;&nbsp; glVertex3f(0,1,0);</p>
            <p style="FONT-SIZE: 10pt" dir=ltr>glEnd();<br></p>
            </td>
        </tr>
    </tbody>
</table>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;怎么样？一个底边为2，高为1的三角形。</p>
<p style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;单位就是opengl坐标轴单位，三个顶点（x,y,z）分别在(-1,0,0)，(1,0,0)，(0,1,0);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opengl坐标轴（x-y-z右手系）：你面对屏幕，你的右边是x正轴，上面是y正轴，屏幕指向你的就是z正轴啦。</p>
<p style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（注：glTranslatef为了把图形移后点，因为屏幕平面就是x-y平面嘛，所以向z负轴移后点看得清楚；glRotatef实现了旋转，同时绕三个轴，三个*rot是速度啦。）<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;行为决定态度。</p>
<p style="FONT-SIZE: 10pt"><br>&nbsp;</p>
<img src ="http://www.cppblog.com/iwindows/aggbug/126383.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/iwindows/" target="_blank">vic.MINg</a> 2010-09-11 09:29 <a href="http://www.cppblog.com/iwindows/archive/2010/09/11/126383.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VS2005 编译 Media Player Classic</title><link>http://www.cppblog.com/iwindows/archive/2010/07/22/121062.html</link><dc:creator>vic.MINg</dc:creator><author>vic.MINg</author><pubDate>Thu, 22 Jul 2010 13:22:00 GMT</pubDate><guid>http://www.cppblog.com/iwindows/archive/2010/07/22/121062.html</guid><wfw:comment>http://www.cppblog.com/iwindows/comments/121062.html</wfw:comment><comments>http://www.cppblog.com/iwindows/archive/2010/07/22/121062.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/iwindows/comments/commentRss/121062.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/iwindows/services/trackbacks/121062.html</trackback:ping><description><![CDATA[<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt"><span style="COLOR: #000080"><strong>一 编译工具及环境<br></strong></span></p>
<blockquote style="MARGIN-RIGHT: 0px" dir=ltr>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">操作系统：Windows XP SP2、SP3</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">开发环境：Visual Studio 2005 Professional</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">版本控制工具：TortoiseSVN</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">说明：用来下载程序源代码，直接选检出，然后输入</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt"><a href="https://guliverkli.svn.sourceforge.net/svnroot/guliverkli/trunk/guliverkli/">https://guliverkli.svn.sourceforge.net/svnroot/guliverkli/trunk/guliverkli/</a></p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">这个地址（源代码地址）把代码检出到本地。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">SDK：</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">1. DirectX 9 SDK（需要DirectShow）</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">说明：DirectX SDK Summer 2004之后DirectShow不被整合到DirectX SDK中而是以Extras</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">的形式发布，它的最后一个版本为DirectX SDK Extras 2005,2 版。之后它被整合到Windows SDK中。而VS2005的WinSDK中不包含DirectShow。方便起见我下载的老版本DirectX 9.0b SDK。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">地址：<a href="http://www.directshow.cn/SDK/DX9SDK.rar">http://www.directshow.cn/SDK/DX9SDK.rar</a> </p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">2. Windows Media Format SDK 9</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">地址：<a href="http://download.microsoft.com/download/3/0/4/30451651-9e47-4313-89a3-5bb1db003c26/WMFormatSDK.exe">http://download.microsoft.com/download/3/0/4/30451651-9e47-4313-89a3-5bb1db003c26/WMFormatSDK.exe</a></p>
</blockquote>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp;</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp;</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt"><strong style="COLOR: #000080">二 开发环境搭建</strong></p>
<blockquote style="MARGIN-RIGHT: 0px" dir=ltr>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">也就是包含一下刚刚提到的SDK目录，下载安装所需SDK，由于源代码的文档中提到</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt"><span style="COLOR: #008000">&#8220;you may need to add "Debug Unicode" and "Release Unicode" configs to the project file of the directshow baseclasses&#8221;<span style="COLOR: #000000">，</span></span>所以需要先编译DirectShow中的BaseClasses程序。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">编译时需要在VS2005的包含文件里添加</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">X:\DXSDK\Include</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">X:\DXSDK\Samples\C++\DirectShow\BaseClasses</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">步骤：工具=&gt;选项=&gt;项目和解决方案=&gt;VC++目录=&gt;包含文件</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">因为BaseClasses代码中都是用&lt;&gt;包含的头，所以我把本身的路径加到了系统中。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">编译BaseClasses时大概会发生三类错误：</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">1. 提示POINTER_64未定义</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">原因：这是由于PlatformSDK和DirectXSDK中的同名头文件basetsd.h冲突造成的，PlatformSDK中的定义了POINTER_64而DirectXSDK没有定义却默认先编译，导致winnt.h中找不到POINTER_64。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">解决办法：在刚提到的包含文件中确保系统文件在上边，然后</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">右键=&gt;工程=&gt;属性=&gt;C/C++=&gt;常规中清空附加包含目录（因为会优先编译这里的路径）。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">2. 返回值默认不为int</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">原因：VS2005相对于VS2003和VC6编译相对严格，函数无返回值不能默认为<span style="COLOR: #0000ff">int</span>。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">解决方法：将提示错误的<span style="COLOR: #0000ff">operator</span>=(<span style="COLOR: #0000ff">LONG</span>);加返回值int，因为我没找到此重载的实现，返回什么无所谓了。或者右键=&gt;工程=&gt;属性=&gt;C/C++=&gt;命令行中附加选项添加/wd4430使其默认返回<span style="COLOR: #0000ff">int</span>。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">3. 未定义的局部变量</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">原因：也是由于VS2005之前版本在for中定义的变量看做是for外定义可以拿到循环以外使用，而VS2005不可以。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">解决方法：将其报错地方的定义，拿到<span style="COLOR: #0000ff">for</span>外定义。或者右键=&gt;工程=&gt;属性=&gt;C/C++=&gt;语言中的强制<span style="COLOR: #0000ff">for</span>循环范围中的一致性选否。还有一处<span style="COLOR: #0000ff">static</span>变量加上DWORD定义就可以了。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">这样基本就可以编译通过了。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">然后将Debug Unicode 和 Release Unicode目录包含到系统中。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">步骤：工具=&gt;选项=&gt;项目和解决方案=&gt;VC++目录=&gt;包含库</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">然后还需要包含几个文件和库，具体如下图</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; MARGIN-RIGHT: 0px" dir=ltr><img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/iwindows/MediaPlayerClassic01.png" width=555 height=307><br><br><img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/iwindows/MediaPlayerClassic02.png" width=555 height=306><br><br>为了以后方便DirectShow的开发我把可能用到的都加在了里边。</p>
</blockquote>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp;</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp;</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt"><strong style="COLOR: #000080">三 编译Media Player Classic</strong></p>
<blockquote style="MARGIN-RIGHT: 0px" dir=ltr>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">1. 编译顺序</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp; HowToCompile中提到要按照一定顺序编译才可以成功。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp; 而且在调试阶段我统一以Debug Unicode形式编译。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp; 顺序如下：</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp; 1. deccs</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp; 2. dsutil</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp; 3. ui (run \lib\ui.bat to merge them)</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp; 4. subpic</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp; 5. subtitles</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp; 6. filters (for mpc only build those configurations which output a lib, the rest outputs stand-&nbsp;&nbsp; alone filters)</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp; 7. apps\mplayerc</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp;</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">2. 编译时遇到的问题和解决方法</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp; 按照编译顺序一一解决</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp; ① 编译deccs通过。在lib目录里生成decssDU.lib。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp;</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp; ② 编译dsutil通过。在lib目录里生成dsutilDU.lib。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp;</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp; ③ 编译ui通过。在lib目录里声称sizecbarDU.lib、ResizableLibDU.lib、CmdUIDU.lib、&nbsp;&nbsp; TreePropSheetDU.lib。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp;</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp; ④ 编译subpic通过。在lib目录里生成subpicDU.lib。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp;</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp; ⑤ 编译 subtitles出现好多错误。查看源代码发现字符数组定义有问题，缺少 ' 。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp; 解决方法：在CCDecoder.cpp中第127行定义的<span style="COLOR: #0000ff">static</span> WCHAR charmap[0x60]把其初始化&nbsp;&nbsp; 中的?都补上右侧的 ' 。通过之后在lib目录里生成libssfDU.lib和subtitlesDU.lib。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp;</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp; ⑥ 编译filters（Debug Unicode Lib形式） 失败。好多提示无法打开文件strmbaseDU.lib。还有许多关于Ap4文件没找到的错误。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">解决方法：不知道为什么最新下载的MPC源代码会缺少以前的几个项目如图：<br><br><img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/iwindows/MediaPlayerClassic03.png" width=506 height=330><br><br><br>strmbaseDU.lib就是以前BaseClasses生成的，不过没关系这个应该和刚刚编译DirectShow中的BaseClasses是同样的，刚刚已经包含了Debug Unicode只不过那个生成文件名为strmbasd.lib，只要复制一份strmbaseDU.lib就可以了。其他版本的编译同理。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">AP4文件那个需要把</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">X:\guliverkli\src\filters\parser\mp4splitter\AP4\Update\v0.6.3\Bento4_0.6.3-001.7z解压后把</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">Source文件夹拷贝到X:\guliverkli\src\filters\parser\mp4splitter\AP4\ 目录下。再用</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">X:\guliverkli\src\filters\parser\mp4splitter\AP4\Update\v0.6.3\Source文件夹去覆盖更新一下。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">继续编译，FLVSplitter.h中出现两个错误提示找不到VP62.h和VP62.cpp。进入报错代码，注释着//comment this out if you don't have VP62.cpp/h，所以将此行注释掉就可以了，并在项目文件列表中将VP62.h和VP62.cpp从项目中移除。重新编译这个项目，通过。在lib目录中生成FLVSplitterDU.lib、TreePropSheetDU.lib、MP4SplitterDU.lib等等多个lib文件。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp;</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">&nbsp; ⑦编译mplayerc出现三个错误。一个是SubmitNotPlayFileDlg.cpp未找到，另两个是错误D3D9b_SDK_VERSION和MixerPref9_RenderTargetYUV未声明的标识符。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">解决方法：找到mpayerc项目中的SubmitNotPlayFileDlg.cpp和SubmitNotPlayFileDlg.h从该项目移除。然后到vmr9.h中找到enum __MIDL___MIDL_itf_vmr9_0012_0001这个枚举在最后添加MixerPref9_RenderTargetYUV = 0x00002000。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">最后在d3d9.h中加入#<span style="COLOR: #0000ff">define</span> D3D9b_SDK_VERSION 32&nbsp; (常量有可能不准确)。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">继续编译，提示无法打开文件RadGtSplitterDU.lib，由于这个项目已经没有了，所以去连接器中把包含去掉。步骤：右键mplayerc项目 工程=&gt;属性=&gt;连接器=&gt;输入，在附加依赖项中把RadGtSplitterDU.lib去掉。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">继续编译，成功。Mplayerc下的Debug Unicode目录会生成mplayerc.exe。</p>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt">运行，会出现以下图示，到此Media Player Classic编译成功。</p>
<blockquote style="MARGIN-RIGHT: 0px" dir=ltr>
<blockquote style="MARGIN-RIGHT: 0px" dir=ltr>
<blockquote style="MARGIN-RIGHT: 0px" dir=ltr>
<blockquote style="MARGIN-RIGHT: 0px" dir=ltr>
<p style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt"><img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/iwindows/MediaPlayerClassic04.png" width=555 height=401><a href="http://blog.csdn.net/wuxiao0313/archive/2009/11/08/4784853.aspx"></a></p>
</blockquote></blockquote></blockquote></blockquote></blockquote>
<img src ="http://www.cppblog.com/iwindows/aggbug/121062.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/iwindows/" target="_blank">vic.MINg</a> 2010-07-22 21:22 <a href="http://www.cppblog.com/iwindows/archive/2010/07/22/121062.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Win 7 中 Visual C++ 2008 的 fatal error C1853: 错误</title><link>http://www.cppblog.com/iwindows/archive/2010/01/30/106830.html</link><dc:creator>vic.MINg</dc:creator><author>vic.MINg</author><pubDate>Sat, 30 Jan 2010 08:06:00 GMT</pubDate><guid>http://www.cppblog.com/iwindows/archive/2010/01/30/106830.html</guid><wfw:comment>http://www.cppblog.com/iwindows/comments/106830.html</wfw:comment><comments>http://www.cppblog.com/iwindows/archive/2010/01/30/106830.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/iwindows/comments/commentRss/106830.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/iwindows/services/trackbacks/106830.html</trackback:ping><description><![CDATA[<br><span style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Windows 7真帅呀！不过刚按完 Visual Studio 2008 SP1和&nbsp;SQL Server 2008。就被第一个问题磕到了！<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在 Visual C++ 2008 中编译程序，出错了！编译器提示：<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fatal error C1853: &#8220;Debug\***.pch&#8221;意外的预编译的头，只需重新运行编译器可能会解决此问题。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fatal error C1853: &#8220;Debug\***.pch&#8221;预编译头文件来自编译器的早期版本，或者预编译头为 C++ 而在 C 中使用它(或相反)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;问题不大~清空项目，重新编译就OK啦！这个可难不倒我。结果重新n回也不灵&#8230;&#8230; 真迷糊呀！<br><br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最终在微软帮助中找到了答案：<a href="http://support.microsoft.com/kb/976656/zh-cn">当使用 Visual c + + 2008年编译器时出现错误消息："致命错误 C1859"</a><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #ff0000">症状<br></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;您在运行 Microsoft Visual c + + 2008年编译器来编译文件，或生成项目时您会收到以下错误消息：<br><br>
<fieldset style="WIDTH: 690px; HEIGHT: 24px" align=center>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;致命错误 C1859： <var>header file name</var> 意外的预编译的头，只需重新运行编译器可能会解决此问题。</fieldset>
<p dir=ltr>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;此外，此问题仍然出现甚至当您运行编译器再次。 当您启用 Windows 7 或 Windows Server 2008 正在运行的计算机上的 创建/使用预编译头 编译器选项时，会发生此问题。</p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #ff0000">原因<br></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当启用了 创建/使用预编译头 编译器选项时，编译器要求预编译的头文件和相对的模块不移动各编译间。但是，地址空间布局随机 （也称为 ASLR) 功能随机重新定位在进程中的模块。因此，各编译间移动的模块时，将发生该错误。<br><br><span style="COLOR: #ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;解决方案<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #000000">简单点说呀！就是安装补丁&nbsp;&nbsp;&nbsp;<a href="http://download.csdn.net/source/2034396">VS90SP1-KB976656-x86.exe</a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这里我提供了个下载地址，因为微软下载<font color=#ff0000>必须接受附带的许可条款才能使用此软件。</font></span></span></span> <br><br><br>
<img src ="http://www.cppblog.com/iwindows/aggbug/106830.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/iwindows/" target="_blank">vic.MINg</a> 2010-01-30 16:06 <a href="http://www.cppblog.com/iwindows/archive/2010/01/30/106830.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ThinkPad R400 Marker Slic2.1 （刷BIOS）</title><link>http://www.cppblog.com/iwindows/archive/2010/01/30/106829.html</link><dc:creator>vic.MINg</dc:creator><author>vic.MINg</author><pubDate>Sat, 30 Jan 2010 08:04:00 GMT</pubDate><guid>http://www.cppblog.com/iwindows/archive/2010/01/30/106829.html</guid><wfw:comment>http://www.cppblog.com/iwindows/comments/106829.html</wfw:comment><comments>http://www.cppblog.com/iwindows/archive/2010/01/30/106829.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/iwindows/comments/commentRss/106829.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/iwindows/services/trackbacks/106829.html</trackback:ping><description><![CDATA[<span style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;嘿嘿！在C++博客中的第一篇文章，居然写给了我的本本，买本也有一段时日了，这次要自己装系统，盗版的肯定不甘心！<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在淘宝上致了几张ThinkPad R400的恢复盘，Windows XP Pro SP2、Windows Vista Ultimate SP1和Windows 7 Ultimate。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最想装的非Windows 7莫属，Xp都用恶心了&#8230;&#8230;但要刷BIOS Slic2.1，才能用Think-OEM版恢复光盘安装Windows 7。这个我也是鼓足了勇气才做的一些操作！<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;下载Slic2.1、Marker及UltraISO工具：&nbsp;&nbsp;</span><a href="http://download.csdn.net/source/2034359"><span style="FONT-SIZE: 10pt">下载</span></a><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/iwindows/TPMarker.png" width=725 height=546><br><br><span style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;到&nbsp;</span><a href="http://think.lenovo.com.cn/"><span style="FONT-SIZE: 10pt">Think服务与支持</span></a><span style="FONT-SIZE: 10pt">&nbsp;/ 驱动和软件 去找对应型号的BIOS驱动R400的是：(7uuj35us即是7U开头)在&#8220;Thinkpad slic2.1 182 Bytes&#8221;文件夹中找到&#8220;TP-7U.bin&#8221;重命名为：7U.bin<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使用SLIC_Dump_ToolKit（要用管理员运行）查看自己的BIOS是否有原生的slic并选择正确的slic文件(<span style="COLOR: red">下图是已刷过的</span>）：<br><br></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/iwindows/SLICDumpToolKit.jpg" width=721 height=513>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br>&nbsp;<span style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使用UltraISO将dos.img镜像写入U盘，即制作好了启动盘。附件里有ultraiso及注册码。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;制作启动盘具体步骤：<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.启动UltraISO（<span style="COLOR: red">Vista/Win7要用管理员运行</span>），点击菜单中的&#8220;文件&#8221;-&gt;&#8220;打开&#8221;，载入&#8220;dos.img&#8221;（win98启动盘镜像加强版）。</span>&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/iwindows/UltraISO1.png" width=786 height=578><br><br><span style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.插入U盘，点击菜单中的&#8220;启动&#8221;-&#8220;写入硬盘镜像&#8230;&#8230;&#8221;。</span><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/iwindows/UltraISO2.png" width=786 height=450><br><br>&nbsp;&nbsp;&nbsp;<span style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.然后在弹出的&#8220;写入硬盘镜像&#8221;窗口中做如下设置：硬盘驱动器选择你刚刚插入的U盘，写入方式选择&#8220;USB-HDD+&#8221;。</span><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/iwindows/UltraISO3.png" width=783 height=535><br><br>&nbsp;&nbsp;&nbsp;<span style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.设置好后点击&#8220;写入&#8221;按钮。写入完成后，窗口的上半部分的&#8220;消息框&#8221;中会提示&#8220;写入成功&#8221;。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 此时U盘中有三个文件：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DRVSPACE.BIN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IO.SYS<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MSDOS.SYS<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5. 把Marker.exe和前面确认Thinkpad型号对应的slic2.1文件（本人是7U）复制到已经制作好的USB启动盘中<br></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/iwindows/UltraISO4.png" width=559 height=442><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/iwindows/UltraISO5.png" width=558 height=444><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/iwindows/UltraISO6.png" width=629 height=252>&nbsp;&nbsp;&nbsp;<br><br><span style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6.重启电脑按F12选择用U盘启动进入DOS，(有个usb选项的就是)执行如下命令：<span style="COLOR: #800080">marker.exe /w:7u.bin /z</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（ 注意空格：<span style="COLOR: red">斜杠之前各有一个空格</span>。将命令行中的文件改成和你的slic2.1文件名称一样，在这里是本人的Slic2.1文件为7u.bin ）<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;执行速度快如闪电！<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果成功则显示&#8220;Programming Done!!!！&#8221;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;**** Success: Process completed (00) ****&#8221;等信息，<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;有原生Slic2.0的用户，注意选择182 bytes的Slic2.1表（本人R400用的就是182 bytes的slic2.1表）。无Slic的用户，注意选择374 bytes的Slic2.1表。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果不确定有没有原生slic，无所谓，182 bytes的和374 bytes都试试吧，成功了的就是对的（如果选错了型号是不能marker的，没有风险）。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;重启计算机。恭喜你！<br></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/iwindows/EverestUltimate.jpg" width=792 height=649><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="FONT-SIZE: 10pt">7.用OEM版恢复光盘安装Windows 7吧！<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;文章及图片来源于中关村论坛 联想ThinkPad论坛 特此说明！<br></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<img src ="http://www.cppblog.com/iwindows/aggbug/106829.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/iwindows/" target="_blank">vic.MINg</a> 2010-01-30 16:04 <a href="http://www.cppblog.com/iwindows/archive/2010/01/30/106829.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>