在MFC的编程过程中什么时候用的是win32 API函数,什么时候不用引用?怎么可以知道自己用的是全局的函数呢

解决方案 »

  1.   

    全局函数一般以Afx开头吧
    API前面有::
      

  2.   

    显示的用API而不用MFC提供的同名函数SetWindowText
    你需要再前面加 :: 否则用的就是MFC提供的类的同名成员函数.
    如果MFC提供的类没有这个同名函数,那么 直接调用的就是API.可以不加::这种关系如同全局变量和局部变量.
    在局部变量的生命周期内,局部变量的优先权更高.同理 API和同名类成员函数,成员函数的优先级更高,要想调用API就必须显示加入::
      

  3.   

    如同以下
    int i = 1;
    int _tmain(int argc, _TCHAR* argv[])
    {
    int i = 0;
    int a = i;
    a = ::i;//a = 1
    return 0;
    }
      

  4.   

    又如:
    void CView::OnDraw()
    {
       SetWindowText(...) //调用的是同名成员函数
        ::SetWindowText(...) // 调用的是API
    }
      

  5.   

    在MFC中::为API和afx为全局 
      

  6.   

    MFC是把win32 api封装到类里面了,所以如果是用对象来引用的方法,一般就是mfc的函数,比如dlg.Create(...);如果直接将::放在函数前面的,就是引用win32 api了。
      

  7.   

    本帖最后由 xianglitian 于 2010-04-07 14:06:05 编辑