怎么来理解API函数和MFC类的成员函数,它们之前有什么区别和联系,是不是能直接在任何函数中调用的就是API函数,而需要用类的特定对象来调用的就是这个类的成员函数???
请高手指点,谢谢!!!!!
我的MSN:[email protected]

解决方案 »

  1.   

    API可以随便使用。
    在MFC中一般要加::
      

  2.   

    MFC类的成员函数和WinApi函数同名,那该函数就应该是对该API的封装(不知道有没有例外的)或者用其他方法实现相同的功能,并且根据对象的不同也会不同,或者还会加入一些特性。
    1、一般API函数和MFC类的成员函数,参数上会不同,比如,一般MFC类的成员函数会比API少些参数,如,需要窗口句柄的API函数其对应的窗口类成员函数,一般不需要制定该参数,因为通过对象指针已经隐含传入了该参数。
    2、MFC类成员函数可能还会重载之一二,或者制定些参数默认值,提供了灵活性。比如WinAPI的ScreenToClient,只能转换POINT结构,而CWnd的成员函数ScreenToClient,有两个一个参数为CPoint*,一个为CRect*,这就提供了方便,比如我们要转换一个RECT结构,用WinAPI的话需要连续调用两次,ScreenToClient(hwnd,(LPPOINT)&rect);ScreenToClient(hwnd,(LPPOINT)&rect+1);
    3、上面的例子也体现了一点,当WinAPI使用一个结构(或结构指针)为参数时,而与其对应的成员函数可能会使用与该结构对应的对象。如LPRECT 对应CRect*
    4、一般成员函数只是简单的调用对应的API时,会把其声明为inline类型