免注册COM组件的制作

昨天写的博文说了关于自制COM组件的。一个COM类需要能够被调用,要在注册表的HKEY_CLASS_ROOT里面改啊改。改注册表这事情很烦躁,而且如果要发布什么小工具,“小”工具而已,要在注册表里面改啊改,是非常令人不快的事情。无意间在网上找到说从Windows XP开始,利用SideBySide技术可以让一个COM组件类不需要在注册表里面注册也能够被使用。看着让人十分兴奋,因为这下就可以不需要在注册表里面搞七搞八也可以使用COM组件了。

文章在 http://msdn.microsoft.com/en-us/library/ms973913.aspx#rfacomwalk_topic6 找到的。不过里面没有说到关于progid的设置。progid的设置可以在 http://www.mazecomputer.com/sxs/help/inside2.htm 参考,最后结合起来,成功让一个没有在注册表里面注册的COM类实例化了。

继续阅读免注册COM组件的制作

VC自制COM组件

Com组件这东西实在是麻烦,以前也一直没有碰过。

过程是这样子的,一天在百度知道上看到有人求助一段C++代码转成VB。我又不熟悉VB,于是就顺手给封装成DLL给了他。

然后提问者回复说,能不能给搞成能用CreateObject方式创建对象的那种方式来调用。这一看,应该要com吧?但是我不会写com。想着稍微掌握一点以后可能也能用到,就去找教学啥的稍微尝试一下。

主要参考的文章是 http://icodeguru.com/VC%26MFC/InsideAtl/ch02c.htmhttp://www.codeguru.com/cpp/com-tech/activex/tutorials/article.php/c5567/Step-by-Step-COM-Tutorial.htm 这两篇。一开始是看后者,后面也看了前者,结合起来,大概理清一点思路了。

继续阅读VC自制COM组件

【坑】GDI+中的MeasureString

一整个字符拿去measure确实是不怎么容易遇上问题。但是你要一个一个来的话,就会有问题。原因是msdn里有这么一句话:

The MeasureString method is designed for use with individual strings and includes a small amount of extra space before and after the string to allow for overhanging glyphs.

INCLUDES A SMALL AMOUNT OF EXTRA SPACE BEFORE AND AFTER THE STRING

所以获取到的会偏大。

方法它也说得挺清楚

To obtain metrics suitable for adjacent strings in layout (for example, when implementing formatted text), use the MeasureCharacterRanges method or one of the MeasureString methods that takes a StringFormat, and pass GenericTypographic. Also, ensure the TextRenderingHint for the Graphics is AntiAlias.

没注意的话很容易掉坑

后续补充:MeasureString的时候要加StringFormat.GenericTypographic,那么在DrawString的时候也要一起加这个参数。不然它计算的时候和绘制的时候宽度又不一样了

上淘宝搞了一片51单片机来玩

淘宝上山东芯腾电子的店买了一块55元(运费不含)的学习板来玩。因为本科的时候没报这个方向,但是想试试看搞板子是什么一种感觉,于是自己花钱去弄了来。外加从图书馆搞了两本书对着学。

电路是现成的,主要是怕自己焊又没人指导搞不起来,花太多时间。 继续阅读上淘宝搞了一片51单片机来玩

VC里Tab控件页面的子窗体确定尺寸

果然问题就是在英语不好。msdn虽然有说但是看得实在是……

.net倒是很方便,直接控件拖拖拖,这个都给你实现了的。

但是sdk或者mfc里就比较麻烦。Tab控件上面的页面如果切换了,不是里面的内容要跟着变吗?但是tab控件不管里面的内容变,它只管发一个通知给你。怎么变你自己实现。于是最方便的方法就是弄很多子窗口,在切换的时候更换子窗口。

其实就是你先GetClientRect一下拿到它整个的矩形区域,然后TabCtrl_AdjustRect把这“整个”转换成“里面”。之后你去创建子窗口就可以了。

那个TabCtrl_AdjustRect说真的确实是早就看到了,但是它的说明看得半懂不懂。

VC编写的本地代码程序使用XP Style

只是避免在鱼龙混杂的网络上找到莫名其妙不可靠资料的担忧

msdn上有,不过临时去翻msdn挺麻烦的,因为没记住在哪个分类里面的话(汗

分类在Windows Desktop App Development——Windows Application UI Development——Windows Controls——Visual Styles——Enabling Visual Styles

然后若遇上网络很慢,要人命

继续阅读VC编写的本地代码程序使用XP Style