- 博客(8)
- 收藏
- 关注
原创 COM组件和.net的互换
1、COM组件要在.net使用很简单了只要在项目中添加引用即可,RCW(Runtime Callable Wrapper)会帮你解决.net对象的封装。2、在.net组件工程的属性中设置Register for COM interop为True。这样编译后就会生成CXXX.tlb文件,并且自动将其注册。命令行命令regasm有同样的效果。
2005-08-05 12:56:00 1527
原创 vc编译器的一个bug
看下面代码:vc6和vs.net2003下编译器输出如下结果e:/我的控件/win32test/win32test/win32test.cpp(33) : error C2259: “C” : 不能实例化抽象类 由于下列成员: “void A::sub::fun(void)” : 未定义纯虚函数 e:/我的控件/win32test/win32test/wi
2005-08-05 11:08:00 1336 1
原创 #pragma 预处理指令详解(转自Roy的blog)
在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 其格式一般为: #Pragma Para 其中Para 为参数,下面来看一些常用的参数。
2005-08-04 08:53:00 993
原创 vc6使用技巧(摘抄)
1.检测程序中的括号是否匹配 把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号键入快捷键“Ctrl+]”。如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动,并且机箱喇叭还会发出一声警告声。2.查看一个宏(或变量、函数)的宏定义 把光标移动到你想知道的一个宏上,就比如说最常见的DECLARE_MAP_MESSAGE上按一下F12(或右键菜单中的Go To Defiti
2005-08-04 08:50:00 1133
原创 ATL问题集(精典整理2)
/*文是将网上的一些文章,自已遇到的问题进行整理,有些是翻译,所有只供学习讨论,如有版权还归原作者――作者:王卫星csdnid:wangweixing2000*/#41 我想在程序中连续注册好几个控件,如果用regsvr32 命令会出现多个注册成功的对话框有没有什么方法可以解决那?/u是注销。 /s是不弹出注册成功的对话框 regsvr32 ... /s代码实现如下:HMODULE
2005-08-03 16:32:00 2812
原创 ATL问题集(精典整理1)
/*此文是将网上的一些文章,自已遇到的问题进行整理,有些是翻译,所有只供学习讨论,如有版权还归原作者――作者:王卫星csdnid:wangweixing2000*/#32如何动态创建ocx?答:看下面代码#include CComModule _Module;#include #include #pragma comment(lib,"atl") CComQIPtr m_spBrowser;CA
2005-08-03 16:23:00 3048 2
原创 COM组件的智能指针(深入浅出)
作者:王卫星 csdnid:wangweixing2000 职能指针其实只是为了我们开发者方便使用的东东,但是大多数据开发者总是害怕会有泄漏,以前的字符串的泄漏问题大家都应该知道了。atl7的出现应该让我们放心使用了!职能指针只是对我们的一些类型或者接口的封装,使我不用每次考虑这引用技术的问题!我们经常用到的职能指针CComPtr,IxxxxPtr,CComBSTR,CComVariant ,
2005-08-03 12:20:00 5895 1
原创 何时用内联函数?
1、小型方法,如私有数据成员的存取2、返回对象的状态3、小函数,通常不超过三行的4、不断调用的小型函数,如在时间关键的渲染循环中宏和内联的比较:eg:#define max(a,b) ((a) > (b) ? (a) : (b))这样调用max(++x,y);如果x=5,y=3,结果不是6而是7。原因在于宏直接把表达式传递给了这行代码(++x) > (y) ? (++x) : (y);++x计算了
2005-08-01 09:48:00 1614 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人