1.MFC窗口的句柄和指針的轉(zhuǎn)換
(1) 一般窗口對(duì)象都會(huì)有一個(gè)其對(duì)應(yīng)的句柄變量,所以我們可以取此對(duì)象的m_hWnd屬性來(lái)得到句柄。
(2)使用GetSafeHwnd函數(shù)取得程序所在窗口類(lèi)的句柄
(3)使用FromHandle函數(shù)來(lái)通過(guò)句柄得到其想要的指針
其他的一些方法:
GetActiveWindow 取當(dāng)前活動(dòng)窗口句柄
AfxGetMainWnd 取主窗口句柄
GetForegroundWindow 取前臺(tái)窗口句柄
FindWindow尋找參數(shù)指定的窗口
EnumWindow枚舉窗口
2. 上下文無(wú)關(guān)設(shè)備的句柄和指針的轉(zhuǎn)換
(1)this->m_hDC
(2)CDC::GetSafeHdc
(3)可以使用FromHandle函數(shù)來(lái)通過(guò)句柄得到其想要的指針
3.Gdi對(duì)象的句柄和指針的轉(zhuǎn)換
(1)this->m_hObject
(2)CGdiObject::GetSafeHandle
(3)可以使用FromHandle函數(shù)來(lái)通過(guò)句柄得到其想要的指針
4.窗口、控件的指針和句柄的相互轉(zhuǎn)化
(1)指針轉(zhuǎn)化為句柄
在MFC應(yīng)用程序中首先要獲得窗口的指針,然后將其轉(zhuǎn)化為句柄
CWnd* pWnd;
HANDLE hWnd = pWnd->GetSafeHwnd();
(2)句柄轉(zhuǎn)化為指針
在MFC應(yīng)用程序中首先獲得對(duì)話框控件的句柄,然后獲得其指針
HANDLE hWnd;
GetDlgItem(IDC_xxx,&hWnd);
CWnd * pWnd = FromHandle(hWnd);
獲得程序窗口指針的辦法
(1)獲得主框架窗口指針(任何時(shí)候都可以用,只要是MFC程序中)
CWnd* pWnd = AfxGetMainWnd();
(2)獲得對(duì)話框中控件指針
CWnd* pWnd = GetDlgItem(IDC_xxx);
(3)獲得對(duì)話框中某控件的句柄
HANDLE GetDlgItem(m_hDLG,m_nID_DlgItem);
(4)獲得GDI對(duì)象的句柄
HANDLE m_hGDIObj = m_pGDIObj->GetSafeHanle();
聯(lián)系客服