none
cwnd and hwnd RRS feed

  • 问题

  • CWnd   *pWnd;
    pWnd=FindWindow(NULL,T( "计算器 "));

    HWND hWnd = pWnd->GetSafeHwnd();

    为什么不直接写成

    HWND hWnd =FindWindow(NULL,T( "计算器 "));
    hwnd 和 CWND不知道有什么区别

    2011年10月18日 1:17

答案

  • 你好,
     
    HWND是句柄,CWnd是MFC中所有窗口类的基类,其中包含HWND句柄成员对是m_hWnd。微软将MFC中所有窗口的通用操作都封装在这个类里。
     
    在MFC中,可以通过以下途径获得窗口类自己的窗口句柄:
    1-》this->m_hWnd
    2-》GetSafeHwnd()
    3-》AfxGetMainWnd()->m_hWnd //得到本窗体内某个控件的句柄
     
    在Windows应用程序中,可以使用HWND hWnd =FindWindow(NULL,T( "计算器 ")); 。而在MFC程序中,只能使用像代码中那样使用CWnd 来获得窗口句柄。

     


    Helen Zhao[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 Honny_yeyh 2011年10月22日 0:16
    2011年10月19日 3:00

全部回复

  • CWnd是个类,封装了HWND窗口句柄相关的操作,CWnd类中有个数据成员m_hWnd保存了和窗口相关联的窗口的句柄,您需要先理解窗口类和窗口之间的区别。
    2011年10月18日 2:15
    版主
  • HWND是句柄类型

    CWND是MFC封装的一个窗口类

    • 已建议为答案 王译 2011年10月18日 5:56
    2011年10月18日 5:54
  • 你好,
     
    HWND是句柄,CWnd是MFC中所有窗口类的基类,其中包含HWND句柄成员对是m_hWnd。微软将MFC中所有窗口的通用操作都封装在这个类里。
     
    在MFC中,可以通过以下途径获得窗口类自己的窗口句柄:
    1-》this->m_hWnd
    2-》GetSafeHwnd()
    3-》AfxGetMainWnd()->m_hWnd //得到本窗体内某个控件的句柄
     
    在Windows应用程序中,可以使用HWND hWnd =FindWindow(NULL,T( "计算器 ")); 。而在MFC程序中,只能使用像代码中那样使用CWnd 来获得窗口句柄。

     


    Helen Zhao[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 Honny_yeyh 2011年10月22日 0:16
    2011年10月19日 3:00