(轉)CWnd與HWND的區別與轉換

Dsp Tian發表於2017-08-27

一、區別
HWND是控制程式碼,CWnd是MFC窗體類,CWnd中包含HWND控制程式碼成員物件是m_hWnd.
HWND是Windows系統中對所有視窗的一種標識,即視窗控制程式碼。這是一個SDK概念。   
CWnd是MFC類庫中所有視窗類的基類。微軟在MFC中將所有視窗的通用操作都封裝到了這個類中,如:ShowWindow等等,同時它也封裝了視窗控制程式碼即m_hWnd成員。
二、如何得到視窗物件指標CWnd * pCWnd
1,在窗體裡,直接用 this->,//this就是本窗體的視窗物件指標
2,主窗體的類物件指標:AfxGetApp()->m_pMainWnd->,  //AfxGetApp()->m_pMainWnd就是主窗體的視窗物件指標
3,pCWnd=GetDlgItem(ID_EDIT_NAME);//GetDlgItem 函式可以得到某個控制元件的視窗物件指標

三、如何得到視窗控制程式碼 HWND Handle
1,Handle=this->m_hWnd
2,GetDlgItem(ID_EDIT_NAME);
3,Handle=::GetDlgItem(this,IDC_STATIC_MODE); //得到本窗體內某個控制元件的控制程式碼

四、轉換
CWnd * pCWnd;
HWND Handle;
pCWnd=FromHandle(Handle);
Handle=GetSafeHwnd(pCWnd);

相關文章