第三章讲declare_dyncreate中有这样的表达式:
static Cobject* PASCAL CreateObject();//如何理解?有这样的函数吗?
请高手指点,谢谢。

解决方案 »

  1.   

    CRuntimeClass* pRuntimeClass = RUNTIME_CLASS( CMyClass );
    CObject* pObject = pRuntimeClass->CreateObject();
    ASSERT( pObject->IsKindOf( RUNTIME_CLASS( CMyClass ) ) );
      

  2.   

    这可不是什么平常的函数哦
    看来楼主是对COM没有接触哦
      

  3.   

    我也在看深入浅出mfc,很多地方看不懂,呵呵
    和楼主共勉!
      

  4.   

    dzqsuper(数风流人物-还看csdn(丁轲 ))
    能解释一下吗?
      

  5.   

    就是创建一个COM对象的实例,例如一个ActiveX控件的实例
      

  6.   

    我晕,什么COM结构啊,明明是MFC的内部实现动态构建对象嘛。
    这个函数是用来创建当前类的对象的,那本书在这个方面讲解得比较详细,你多看看应该能理解。看看MFC的原代码当然更好,呵呵,就是东西太多了...
    ================================================
    百尺竿头,卧薪尝胆
      

  7.   

    AlvaChin(百尺竿头,卧薪尝胆)请你解释一下.
      

  8.   

    PASCAL 是调用堆栈的顺序,和汇编有关
      

  9.   


    这个跟COM是没有关系的,CreateObject就是一个普通的静态函数。
      

  10.   

    它表达的是一个静态的函数,返回类型为一个指向CObject类型的指针,PASCAL是一种函数调用习惯(指明由调用方清除堆栈),只不过通常我们都不写出来。
      

  11.   

    这个和com没关系
    很普通的一个函数,就是PASCAL看着怪一些吧,是调用方式
      

  12.   

    在win32上,PASCAL == __stdcall
      

  13.   

    static Cobject* PASCAL CreateObject();//如何理解?有这样的函数吗?
    这是一个很普通的静态函数,static 表示静态
    CObject* 代表返回值
    PASCAL 是调用方式 相当于__stdcall
    CreateObject就是函数名了
    参数为空深入浅出MFC跟COM没有一点关系的,本来它自己就说得很清楚了。
      

  14.   

    为什么结贴了
    PASCAL 是调用堆栈的顺序,和汇编有关
    使用C和C++时,当代码从函数FirstFunction()调用函数SecondFunction(x,y),由编译器产生的代码完成的动作就是命令计算机首先将变量y的值压入栈顶,然后是变量x的值,最后压入的是FirstFunction()中要执行的下一条语句的地址,由于C和C++可以调用不同语言写的例程,在其他的语言里面入栈的顺序可能不是上面提到的那样,比如PASCAL里面就不同,PASCAL中就是先x然后y,所以函被声明为PASCAL或者C,以通知编译器提供不同的压栈方法.