<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>老魏的博客, Wiz, CyberArticle作者官方网站 &#187; 程序设计</title>
	<atom:link href="http://weishijun.com/p/category/programming/feed" rel="self" type="application/rss+xml" />
	<link>http://weishijun.com</link>
	<description>Wiz, CyberArticle开发手记</description>
	<lastBuildDate>Sat, 08 Jan 2011 12:16:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ToolBar的一个奇怪现象</title>
		<link>http://weishijun.com/p/249</link>
		<comments>http://weishijun.com/p/249#comments</comments>
		<pubDate>Wed, 13 May 2009 07:15:47 +0000</pubDate>
		<dc:creator>魏 拾俊</dc:creator>
				<category><![CDATA[Visual C++]]></category>
		<category><![CDATA[程序设计]]></category>

		<guid isPermaLink="false">http://weishijun.com/p/249</guid>
		<description><![CDATA[ToolBar的一个奇怪现象
将CyberArticle Express工具栏修改成标准的Windows工具栏（使用CToolBarCtrl），结果发现一个奇怪的现象：
如果工具栏按钮包含下拉按钮BTNS_DROPDOWN，而且工具栏具有TBSTYLE_EX_DRAWDDARROWS和TBSTYLE_FLAT风格，则工具栏按钮在某些情况下，会变得很大（例如更改Theme，或者某些系统下面，锁定计算机，然后再恢复）。
经过检查，原来这是COMCTL32的一个问题：在MFC的CToolBar这个类里面，修复了这个问题，但是CToolBarCtrl没有修复这个问题。
下面是bartool.cpp里面的一段说明
//&#160; In comctl32 version 6.00 when using XP Look combined with TBSTYLE_EX_DRAWDDARROWS //&#160;style minimal sizing policy was changed to be//&#160;&#160;&#160;button.height &#62;= image.height + 13//&#160;&#160;&#160;button.width &#62;= image.width + 16//&#160;this force buttons to be bigger then usual//&#160;To override this behavior we should remove TBSTYLE_EX_DRAWDDARROWS prior to sizing operations//
在CToolBarCtrl派生类里面，增加消息处理。下面的代码，是从bartool.cpp里面找到的。

ON_MESSAGE(WM_SETTINGCHANGE, OnPreserveZeroBorderHelper)
ON_MESSAGE(WM_SETFONT, OnPreserveZeroBorderHelper)
&#160;
LRESULT CWizToolBarCtrlEx::OnPreserveZeroBorderHelper(WPARAM, LPARAM)
{
&#160;&#160;&#160;&#160;int _afxComCtlVersion = _AfxGetComCtlVersion();
&#160;&#160;&#160;&#160;//
&#160;&#160;&#160;&#160;BOOL bModify [...]]]></description>
		<wfw:commentRss>http://weishijun.com/p/249/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visual Studio 2008使用体验</title>
		<link>http://weishijun.com/p/247</link>
		<comments>http://weishijun.com/p/247#comments</comments>
		<pubDate>Sat, 09 May 2009 09:56:50 +0000</pubDate>
		<dc:creator>魏 拾俊</dc:creator>
				<category><![CDATA[Visual C++]]></category>
		<category><![CDATA[程序设计]]></category>

		<guid isPermaLink="false">http://weishijun.com/p/247</guid>
		<description><![CDATA[Visual Studio 2008使用体验
为了是程序具有Vista界面，尤其是一些通用对话框，例如打开/保存文件对话框，安装Visual Stuido 2008进行升级（未安装VS2008Sp1）。
安装后，遇到以下问题
1：VS2008里面的ATL，少了一些文件，缺少的这些文件，被当成ATL Server作为开源软件发布了。下载ATL Server源代码可以解决。
2：VS2008不再使用/wp64参数，编译的时候。会出现很多警告。用VS2008打开所有的vcproj文件（作为XML文件打开），全部替换里面的Detect64BitPortabilityProblems=&#8221;true&#8221;为空，保存文件。
3：其他一些比较简单的兼容问题，例如某些类型重复定义，很容易解决。
4：编译工程的时候，出现了很多编译器错误问题。
下载
http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=11399
http://code.msdn.microsoft.com/KB946040/Release/ProjectReleases.aspx?ReleaseId=921
安装这两个补丁后，解决编译出错问题。
目前未发现其他问题。
]]></description>
		<wfw:commentRss>http://weishijun.com/p/247/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CyberArticle 导入文件例子 (C#例子)</title>
		<link>http://weishijun.com/p/210</link>
		<comments>http://weishijun.com/p/210#comments</comments>
		<pubDate>Sat, 11 Apr 2009 07:48:39 +0000</pubDate>
		<dc:creator>魏 拾俊</dc:creator>
				<category><![CDATA[CyberArticle]]></category>
		<category><![CDATA[程序设计]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://weishijun.com/p/210</guid>
		<description><![CDATA[本文介绍了如何在C#里面，使用CyberArticle提供的COM组件，来导入HTML文件（或者其他类型的文件，例如text, pdf, jpg, bmp, png等等）
1、建立一个C#的Windows应用程序工程。
2、添加COM引用
在工程节点上面，点击右键，在菜单中选择 Add Reference，然后选择COM标签页，在列表中，选择CyberArticleBook 1.0 Type Library和CyberArticleImportHTML 1.0 Type Library。如下图。

然后单击OK按钮。这样在工程的References节点下面，将会包含CyberArticleBookLib和CyberArticleImportHTMLLib。

3、设计Form1
在Form1.cs里面，增加引用：
//引入CA COM 组件using CyberArticleBookLib;using CyberArticleImportHTMLLib;
在Form1上面，添加两个按钮，分别是Batch Import和Add HTML。分别编写相应的单击事件代码。
Batch Import按钮单击事件代码：用来完成批量导入HTML文件
private void button1_Click(object sender, EventArgs e){&#160;&#160;&#160;&#160;//创建CABookCollection对象&#160;&#160;&#160;&#160;CABookCollection objBookCollection = new CABookCollection();&#160;&#160;&#160;&#160;//添加一个本地书籍文件&#160;&#160;&#160;&#160;int nBookIndex = objBookCollection.AddLocalBook(&#8220;e:test.xbook&#8221;);&#160;&#160;&#160;&#160;//获得本地书籍的BookGUID&#160;&#160;&#160;&#160;string strBookGUID = objBookCollection.get_GUID(nBookIndex);&#160;&#160;&#160;&#160;//创建书籍对象&#160;&#160;&#160;&#160;CABook objBook = new CABook();&#160;&#160;&#160;&#160;//打开本地书籍&#160;&#160;&#160;&#160;objBook.Open(strBookGUID);&#160;&#160;&#160;&#160;//创建一个导入文件Collection对象&#160;&#160;&#160;&#160;CAImportHTMLDataCollection objDataCollection = new CAImportHTMLDataCollection();&#160;&#160;&#160;&#160;//添加需要导入的文件，标题，所在书籍文件夹（相对导入目录位置），HTML文件名，也可以是text,图片,pdf,rtf,等等&#160;&#160;&#160;&#160;//CA会自动查找或者创建书籍里面的文件夹&#160;&#160;&#160;&#160;objDataCollection.Add2(&#8220;My First Html File&#8221;, &#8220;&#8221;, &#8220;e:1.htm&#8221;);&#160;&#160;&#160;&#160;objDataCollection.Add2(&#8220;My Second Html File&#8221;, &#8220;My Folder&#8221;, &#8220;e:2.htm&#8221;);&#160;&#160;&#160;&#160;//如果需要同时设定文章的URL，可以用&#160;&#160;&#160;&#160;objDataCollection.Add3(&#8220;My 3rd [...]]]></description>
		<wfw:commentRss>http://weishijun.com/p/210/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CyberArticle 使用模板导出 增强功能</title>
		<link>http://weishijun.com/p/193</link>
		<comments>http://weishijun.com/p/193#comments</comments>
		<pubDate>Tue, 31 Mar 2009 13:42:10 +0000</pubDate>
		<dc:creator>魏 拾俊</dc:creator>
				<category><![CDATA[CyberArticle]]></category>
		<category><![CDATA[程序设计]]></category>

		<guid isPermaLink="false">http://weishijun.com/p/193</guid>
		<description><![CDATA[CyberArticle 5.23开始，增加了使用模板导出功能。但是这个功能比较简单，导出的时候，只能使用一个模板。对于导出大量的文章的时候，可能需要不同的模板，例如建立一个站点的时候，不同的文章，需要不同的模板。
使用附件的ExportNodes.dll，然后注册，就可以在CyberArticle里面增加两个新的菜单：

下载附件中的ExportNodes-Debug.zip，然后解压缩到CyberArticle安装目录PluginsNormal，然后覆盖ExportNodes.dll文件。执行CyberArticle安装目录下面的regfiles.bat文件。
如果在vista下面，而且开启了UAC功能，需要用管理员身份执行regfiles.bat文件。
Set Template for Exporting（设置导出模板）

针对一个文件夹，设置一个独立的模板用来导出文章。只有针对文件夹设置了模板参数，导出的时候，才会将这个文件夹下面的文章导出（利用设定的模板）。
另外需要设置导出的文件夹。这个设置也仅仅针对当前文件夹。
Create index file for folder：是否为当前文件夹创建一个索引页面。创建的索引页面，仍然应用设置的模板。索引内容，使用&#60;ul&#62;&#60;li&#62;xxx&#60;/li&#62;&#60;li&#62;xxx&#60;/li&#62;&#60;/ul&#62;方式生成。
注意：所有的设置，将会保存到书籍中。所有的设置，仅仅针对当前文件夹，不包含子文件夹。
Export Nodes using template (Using settings in book)(使用模板导出节点：使用书籍中的设置)

这个对话框的参数，和使用模板导出文章相同。导出的时候，使用书籍中的设置。如果某一个文件夹没有进行设置，则不进行导出。
应用
利用这个功能，可以针对书籍中的文件夹，分别进行设置。然后针对整个书籍进行导出。由于设置都保存在书籍中，所以作了修改后，可以直接针对整个书籍导出，不需要频繁更改模板等参数。
http://wizbrother.com&#160;就是利用这个功能制作的。
&#160;

Attachments

ExportNodes-Debug.zip


&#160;
]]></description>
		<wfw:commentRss>http://weishijun.com/p/193/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>COM组件里面的对话框，使用Theme</title>
		<link>http://weishijun.com/p/34</link>
		<comments>http://weishijun.com/p/34#comments</comments>
		<pubDate>Sun, 22 Mar 2009 07:54:00 +0000</pubDate>
		<dc:creator>魏 拾俊</dc:creator>
				<category><![CDATA[程序设计]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[MFC]]></category>
		<category><![CDATA[Theme]]></category>
		<category><![CDATA[Visual C++]]></category>

		<guid isPermaLink="false">http://weishijun.com/p/34</guid>
		<description><![CDATA[使用VC2005开发COM组件，里面的对话框，正常情况下，可以使用Theme，但是在IE里面调用的时候，却无法正常显示Theme。
搜索了一些资料，发现理论上只要在stdafx.h里面最开始，增加下面的一行就可以了
#define    ISOLATION_AWARE_ENABLED        1
但是我测试了很多次，发现不行，最终找到原因：
VC2005的MFC DLL，已经默认生成了manifest文件，但是内容不符合要求。
&#60;?xml version=&#8217;1.0&#8242; encoding=&#8217;UTF-8&#8242; standalone=&#8217;yes&#8217;?&#62;
&#60;assembly xmlns=&#8217;urn:schemas-microsoft-com:asm.v1&#8242; manifestVersion=&#8217;1.0&#8242;&#62;
&#60;/assembly&#62;
没有指定comctrls版本。
因此，自己编写一个manifest，放在vcproject文件目录里面，内容如下：
&#60;?xml version=&#8217;1.0&#8242; encoding=&#8217;utf-8&#8242; standalone=&#8217;yes&#8217;?&#62; 
&#60;assembly xmlns=&#8217;urn:schemas-microsoft-com:asm.v1&#8242; manifestVersion=&#8217;1.0&#8242;&#62;
  &#60;dependency&#62;
    &#60;dependentAssembly&#62;
      &#60;assemblyIdentity type=&#8221;win32&#8243; name=&#8221;Microsoft.Windows.Common-Controls&#8221; version=&#8221;6.0.0.0&#8243; processorArchitecture=&#8221;X86&#8243; publicKeyToken=&#8221;6595b64144ccf1df&#8221; language=&#8221;*&#8221; /&#62;
    &#60;/dependentAssembly&#62;
  &#60;/dependency&#62;
&#60;/assembly&#62;
然后在project属性里面，找到Manifest Tool-&#62;Input and Output，修改Additional Manifest Files，写上这个文件名，例如：./CyberArticleIE.ex.manifest (Debug/Release都要更改)。
重新编译工程，就可以正常显示Theme了。
]]></description>
		<wfw:commentRss>http://weishijun.com/p/34/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

