﻿<?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++博客-程序世界-文章分类-SDK</title><link>http://www.cppblog.com/tszhao/category/16953.html</link><description>--专注C++
--MSN：tszhao10@hotmail.com</description><language>zh-cn</language><lastBuildDate>Fri, 24 Jun 2011 13:13:12 GMT</lastBuildDate><pubDate>Fri, 24 Jun 2011 13:13:12 GMT</pubDate><ttl>60</ttl><item><title>Windows下两种方式调用DLL </title><link>http://www.cppblog.com/tszhao/articles/149085.html</link><dc:creator>tszhao</dc:creator><author>tszhao</author><pubDate>Tue, 21 Jun 2011 02:00:00 GMT</pubDate><guid>http://www.cppblog.com/tszhao/articles/149085.html</guid><wfw:comment>http://www.cppblog.com/tszhao/comments/149085.html</wfw:comment><comments>http://www.cppblog.com/tszhao/articles/149085.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tszhao/comments/commentRss/149085.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tszhao/services/trackbacks/149085.html</trackback:ping><description><![CDATA[<span class="Apple-style-span" style="font-family: verdana, sans-serif; ">&nbsp;A.Windows下两种方式调用DLL &nbsp;&nbsp;<br />&nbsp; 1.显式调用 &nbsp;&nbsp;<br />&nbsp; 也就是你说的 &nbsp; &nbsp;&nbsp;<br />&nbsp; LoadLibrary(...) &nbsp; &nbsp;&nbsp;<br />&nbsp; GetProcAddress() &nbsp;&nbsp;<br />&nbsp; FreeLibrary(...)等等调用 &nbsp;&nbsp;<br />&nbsp; &nbsp;&nbsp;<br />&nbsp; 2.隐式调用 &nbsp;&nbsp;<br />&nbsp; 在写Dll的时候,要注意其声明形式 &nbsp;&nbsp;<br />&nbsp; 用 &nbsp; __declspec( &nbsp; dllexport &nbsp; ) &nbsp; 声明需要导出的函数或类 &nbsp;&nbsp;<br />&nbsp; 在需要调用DLL的程序里 &nbsp;&nbsp;<br />&nbsp; 用__declspec( &nbsp; dllimport &nbsp; ) &nbsp; 声明需要导入的函数或类 &nbsp;&nbsp;<br />&nbsp; 同时需要把编译该DLL时生成的.lib文件放到需要导入的工程的库路径上 &nbsp;&nbsp;<br />&nbsp; &nbsp;&nbsp;<br />&nbsp; B.COM的组建需要注册,一般的DLL不需要注册</span><img src ="http://www.cppblog.com/tszhao/aggbug/149085.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tszhao/" target="_blank">tszhao</a> 2011-06-21 10:00 <a href="http://www.cppblog.com/tszhao/articles/149085.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VC 中创建自己的段</title><link>http://www.cppblog.com/tszhao/articles/146955.html</link><dc:creator>tszhao</dc:creator><author>tszhao</author><pubDate>Mon, 23 May 2011 01:29:00 GMT</pubDate><guid>http://www.cppblog.com/tszhao/articles/146955.html</guid><wfw:comment>http://www.cppblog.com/tszhao/comments/146955.html</wfw:comment><comments>http://www.cppblog.com/tszhao/articles/146955.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tszhao/comments/commentRss/146955.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tszhao/services/trackbacks/146955.html</trackback:ping><description><![CDATA[<p>在VC中，可能需要在同一个.exe或DLL的多个实例之间共享变量，我们可以通过把需要共享的数据放到一个单独的段中即可。创建新段的方法如下：</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;data_seg(</span><span style="color: #000000">"</span><span style="color: #000000">sectionname</span><span style="color: #000000">"</span><span style="color: #000000">)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#pragma&nbsp;data_seg()</span></div>
<p>其中，sectionname为你想要创建的段名。注意，该段中只能存放已经进行了初始化的变量，对于未初始化的变量，编译器就会将该变量放到sectionname段之外，但是，allocate声明符可以允许我们将未初始化的数据放到想要的段中。代码如下：</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;data_seg(</span><span style="color: #000000">"</span><span style="color: #000000">Shared</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="" /></span><span style="color: #008000">//</span><span style="color: #008000">初始化的放在Shared段中</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;a&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/None.gif"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">未初始化的没有放在Shared段中</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;b;<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;data_seg()<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: #008000">//</span><span style="color: #008000">初始化的放在Shared段中</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">__declspec(allocate(</span><span style="color: #000000">"</span><span style="color: #000000">Shared</span><span style="color: #000000">"</span><span style="color: #000000">))&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;c</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">未初始化的也放在Shared段中</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">__declspec(allocate(</span><span style="color: #000000">"</span><span style="color: #000000">Shared</span><span style="color: #000000">"</span><span style="color: #000000">))&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;d;<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: #008000">//</span><span style="color: #008000">以下内容不放在Shared段中，放在默认的地方。</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;e&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/None.gif"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;f;</span></div>
<p>注意：在使用allocate声明符的时候，必须已经创建对应的段，如上面所示的Shared段。<br />如果要共享变量，还必须告诉链接器要共享这个段中的变量。可以通过在链接器中的命令行中使用/SECTION开关来实现：</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">/</span><span style="color: #000000">SECTION:name,attributes</span></div>
<p>比如上例所示的Shared段,应按如下所示：</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">/</span><span style="color: #000000">SECTION:Shared,RWS</span></div>
<p>其中的R表示READ,W表示WRITE,S表示SHARED,E表示EXECUTE。如果想要改变多个段的属性，必须使用多个/SECTION开关。一个开关对应一个段。<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;comment(linker,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">/SECTION:Shared,RWS</span><span style="color: #000000">"</span><span style="color: #000000">)</span></div>
<p><br /><br /><br /><br /><br />&nbsp;</p><img src ="http://www.cppblog.com/tszhao/aggbug/146955.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tszhao/" target="_blank">tszhao</a> 2011-05-23 09:29 <a href="http://www.cppblog.com/tszhao/articles/146955.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ListView 控件的使用</title><link>http://www.cppblog.com/tszhao/articles/146907.html</link><dc:creator>tszhao</dc:creator><author>tszhao</author><pubDate>Sun, 22 May 2011 03:09:00 GMT</pubDate><guid>http://www.cppblog.com/tszhao/articles/146907.html</guid><wfw:comment>http://www.cppblog.com/tszhao/comments/146907.html</wfw:comment><comments>http://www.cppblog.com/tszhao/articles/146907.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tszhao/comments/commentRss/146907.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tszhao/services/trackbacks/146907.html</trackback:ping><description><![CDATA[<div>Win SDK中使用ListView控件的注意内容：<br />1.首先要引入CommCtrl.h头文件，其对应的方法名是：ListView_*。<br />2.在修改扩展风格的时候，不能使用SetWindowLong这个函数，具体原因不大清楚。 
<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 />--><span style="color: #008080">1</span><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;dwExStyle&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;GetWindowLong(g_hList,&nbsp;GWL_EXSTYLE);<br /></span><span style="color: #008080">2</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;dwExStyle&nbsp;</span><span style="color: #000000">|=</span><span style="color: #000000">&nbsp;LVS_EX_CHECKBOXES&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&nbsp;LVS_EX_FULLROWSELECT&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&nbsp;LVS_EX_GRIDLINES;<br /></span><span style="color: #008080">3</span><span style="color: #000000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">SetWindowLong(g_hList,&nbsp;GWL_EXSTYLE,&nbsp;dwExStyle);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">使用这句不能够修改扩展风格</span><span style="color: #008000"><br /></span><span style="color: #008080">4</span><span style="color: #008000"><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;ListView_SetExtendedListViewStyle(g_hList,&nbsp;dwExStyle);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">只有这样才可以修改扩展风格</span></div>3.在得到列表框中的数据的时候，必须在LVITEM中指定要得到的数据内容以及索引，比如，要得到每一行数据的lParam值，需要按如下来写。
<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">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nCount&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ListView_GetItemCount(g_hList);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">nCount;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br /><img id="Codehighlighter1_76_287_Open_Image" onclick="this.style.display='none'; Codehighlighter1_76_287_Open_Text.style.display='none'; Codehighlighter1_76_287_Closed_Image.style.display='inline'; Codehighlighter1_76_287_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_76_287_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_76_287_Closed_Text.style.display='none'; Codehighlighter1_76_287_Open_Image.style.display='inline'; Codehighlighter1_76_287_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.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_76_287_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_76_287_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;LVITEM&nbsp;item;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item.mask&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;LVIF_PARAM;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item.iItem&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;i;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ListView_GetItem(g_hList,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">item);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IWebBrowser2&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">pBrowser&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;pBrowser&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(IWebBrowser2</span><span style="color: #000000">*</span><span style="color: #000000">)item.lParam;<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">(pBrowser)<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;pBrowser</span><span style="color: #000000">-&gt;</span><span style="color: #000000">Release();<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div><br /><br /><br /><br /></div><img src ="http://www.cppblog.com/tszhao/aggbug/146907.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tszhao/" target="_blank">tszhao</a> 2011-05-22 11:09 <a href="http://www.cppblog.com/tszhao/articles/146907.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>