7.0 + XP 平台:CWindow Class  是一个ATL Library  中的类,不属于MFC, 好像在 6.0 是MFC 的
在一个对话框程序里的OnInitDialog(,,,)里 为什么能直接用它的成员函数如:
SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,\
GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
大家能否解释一下,ATL 和 MFC 的关系和以前6.0 下的CWindow 好象没有了。
多谢!

解决方案 »

  1.   

    因为MFC里的CWnd类里有GetSafeHwnd这个成员函数,而CWindow里没有。直接用m_hWnd得了。ATL和MFC没什么关系。
      

  2.   

    问题是:CWindow::SetWindowLong   这个函数属于CWindow 呀,
    我想知道的是为什么能在OnInitDialog 中直接调用它,
    而CWindow 是一个ATL Library  中的类或类模板,
    再加上一句:我现在是 7.0 好像 6.0 中 CWindow 是MFC 的,应该是吧?
      

  3.   

    SetWindowLong也属于CWnd啊它是一个api.
    CWindow是属于atl.不是mfc.而CWnd是mfc.
      

  4.   

    在7.0 中它是这样的:
    ATL Library Reference   CWindow::SetWindowLong我们就抛开这个函数,说一下CWindow 的函数为什么能在 CWnd 的派生类的
    成员函数中直接用,即:
    ATL和MFC没什么关系 和 ATL 的使用问题! 感谢了!!!
      

  5.   

    ATL 与MFC应该是有关系的吧,他们有一个单亲应该是Windows SDK;就象SetWindowlong不就是一个Win32 api吗;只不过在ATL与MFC里被封装了
    而也,偶想ATL是一个更好的Win32 API与COM的C++封装库,MFC技术里没用到模板,偶感觉是一大不足