1.单字节,多字节和宽字节
分享两篇文章:在regexlab博客网站上一的篇文章《字符,字节和编码》以及在微软官网上关于《单字节和多字节字符集》的一篇文章。这两篇文章很好的解释了这个主题。
对于多字节字符串和宽字节字符串分别有一套与之操作相关的API函数,这些函数可参考:《彻底理解C、C++、Win32与COM中的字符串》和《宽字符处理函数函数与普通函数对照表》
2.进程外com与进程内com的区别(主要在注册方面)
进程内com的载体是dll库,其注册方式:regsvr32.exe **.dll 反注册regsvr32.exe /u **.dll
进程外com的载体是exe,其注册方式为:**.exe /regServer 或**.exe /regServerUser
反注册**.exe /unregServer 或**.exe /unregServerUser
尤其注意/regServer和/Service的区别,前者是将**.exe注册到注册表中并未将**.exe进程启动,只有当在客户端调用CoCreateInstance后才去将该**.exe服务启动;而后者(即:/Service)的方式会将**.exe注册到系统服务中并启动该进程,可在任务管理器中查看该服务的进程。
3.com控件字符串参数传递
com组件间参数传递时,因为涉及到两个进程,其传递的地址值会不一样从而导致出问题。为了解决这个问题,com中自定义了一套参数,特别是传递字符串指针的时候,需要用com组件自定义的BSTR字符串类型。