1.想想AfxGetMainWnd()的到的是什么就明白了。
2.省略了this->,其实是this->SendMessage(WM_CLOSE);
3.这个就很直接了,调用一个类的方法。

解决方案 »

  1.   

    你说的不太正确,类的成员函数总是可以调用的,就跟调用其他函数一样,只是涉及this指针的处理mycc.mm()将隐含传给函数一个this指针
    cc.mm()这样的调用通常用与static函数,因为static函数没有this指针
      

  2.   

    这三种调用貌似一样,实则有本质的区别。
     1.的调用是最普通的成员函数的调用格式。他是一个类的实例调用类的成员函数以满足一定的功能实现。
     2.的调用一般是在类的内部定义时可以见到的,这是类的其他函数调用类的成员函数。因为是在类的内部,所以成员函数和成员变量可以被自由调用,若是在类的外部就只能通过第一种方法来调用。
     3.的调用是对基类的成员函数的调用,它类似于2的调用,但是调用的不是本类的函数,而是类CMainFrame的成员函数SendMessage(当然此函数在CMainFrame类里是声明为公有的)。
       三种调用有着本质的区别,之所以会有相同的效果是一种巧合:1 、2 和 3 都恰巧是在类的内部使用;2 的成员函数SendMessage恰巧是完全继承了基类的成员函数没做任何改动;另外一个程序恰巧只有一个CMainFrame实例,所以1的调用也不会与2、3产生歧异。
      

  3.   

    三者没有本质区别,他们都是调用函数,而前面的符号只是告诉调用者到哪里去找到这个函数。只因调用者所处位置而决定了调用的不同。所以谈不到本质,因为就汇编来说,他们的本质也是相同的。
    如在本类调用本类的成员函数,调用外部的类的成员函数,调用全局函数,调用DLL里的函数……都能调用,但是前提条件是要知道这个函数在地址空间的什么地方!!!!