深入浅出mfc的问题 第三章讲declare_dyncreate中有这样的表达式:static Cobject* PASCAL CreateObject();//如何理解?有这样的函数吗?请高手指点,谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CRuntimeClass* pRuntimeClass = RUNTIME_CLASS( CMyClass );CObject* pObject = pRuntimeClass->CreateObject();ASSERT( pObject->IsKindOf( RUNTIME_CLASS( CMyClass ) ) ); 这可不是什么平常的函数哦看来楼主是对COM没有接触哦 我也在看深入浅出mfc,很多地方看不懂,呵呵和楼主共勉! dzqsuper(数风流人物-还看csdn(丁轲 ))能解释一下吗? 就是创建一个COM对象的实例,例如一个ActiveX控件的实例 我晕,什么COM结构啊,明明是MFC的内部实现动态构建对象嘛。这个函数是用来创建当前类的对象的,那本书在这个方面讲解得比较详细,你多看看应该能理解。看看MFC的原代码当然更好,呵呵,就是东西太多了...================================================百尺竿头,卧薪尝胆 AlvaChin(百尺竿头,卧薪尝胆)请你解释一下. PASCAL 是调用堆栈的顺序,和汇编有关 这个跟COM是没有关系的,CreateObject就是一个普通的静态函数。 它表达的是一个静态的函数,返回类型为一个指向CObject类型的指针,PASCAL是一种函数调用习惯(指明由调用方清除堆栈),只不过通常我们都不写出来。 这个和com没关系很普通的一个函数,就是PASCAL看着怪一些吧,是调用方式 在win32上,PASCAL == __stdcall static Cobject* PASCAL CreateObject();//如何理解?有这样的函数吗?这是一个很普通的静态函数,static 表示静态CObject* 代表返回值PASCAL 是调用方式 相当于__stdcallCreateObject就是函数名了参数为空深入浅出MFC跟COM没有一点关系的,本来它自己就说得很清楚了。 为什么结贴了PASCAL 是调用堆栈的顺序,和汇编有关使用C和C++时,当代码从函数FirstFunction()调用函数SecondFunction(x,y),由编译器产生的代码完成的动作就是命令计算机首先将变量y的值压入栈顶,然后是变量x的值,最后压入的是FirstFunction()中要执行的下一条语句的地址,由于C和C++可以调用不同语言写的例程,在其他的语言里面入栈的顺序可能不是上面提到的那样,比如PASCAL里面就不同,PASCAL中就是先x然后y,所以函被声明为PASCAL或者C,以通知编译器提供不同的压栈方法. 关于图片的显示 CAxWindow 显示 nowrap 有问题。 ListCtrl控件刷新问题 关于WINDBG的问题 怎么可以改变group box的背景色呢? 如何创建lib导出函数? 在VC中怎么使用DataGrid控件(Acitvex 控件)(在线等待,怎么没人会用吗???) 高分求解关于mschart控件的使用! 如何让对话框在父窗口外打开 在mfc编程中,怎么样获得应用程序的主窗口句柄? 我有一个EDIT(单行)我想在当用户输入完按回车时调用我的函数要怎样? 一个很菜的问题,望各位指点。
CObject* pObject = pRuntimeClass->CreateObject();
ASSERT( pObject->IsKindOf( RUNTIME_CLASS( CMyClass ) ) );
看来楼主是对COM没有接触哦
和楼主共勉!
能解释一下吗?
这个函数是用来创建当前类的对象的,那本书在这个方面讲解得比较详细,你多看看应该能理解。看看MFC的原代码当然更好,呵呵,就是东西太多了...
================================================
百尺竿头,卧薪尝胆
这个跟COM是没有关系的,CreateObject就是一个普通的静态函数。
很普通的一个函数,就是PASCAL看着怪一些吧,是调用方式
这是一个很普通的静态函数,static 表示静态
CObject* 代表返回值
PASCAL 是调用方式 相当于__stdcall
CreateObject就是函数名了
参数为空深入浅出MFC跟COM没有一点关系的,本来它自己就说得很清楚了。
PASCAL 是调用堆栈的顺序,和汇编有关
使用C和C++时,当代码从函数FirstFunction()调用函数SecondFunction(x,y),由编译器产生的代码完成的动作就是命令计算机首先将变量y的值压入栈顶,然后是变量x的值,最后压入的是FirstFunction()中要执行的下一条语句的地址,由于C和C++可以调用不同语言写的例程,在其他的语言里面入栈的顺序可能不是上面提到的那样,比如PASCAL里面就不同,PASCAL中就是先x然后y,所以函被声明为PASCAL或者C,以通知编译器提供不同的压栈方法.