win32直接操作的是控制代碼handle,每個控制代碼就對應windows視窗,而vc對handle進行類封裝,間接操作的都是handle,現在控制代碼只是類的乙個成員變數。
從控制代碼到指標
cwnd* pwnd=cwnd::fromhandle(hwnd); //a temporary cwnd object is created //and attached.
pwnd->attach(hwnd); //attaches a windows window to a cwnd object
從指標到控制代碼
hwnd hwnd=pwnd->getsafehandle();
hwnd=pwnd->m_hwnd;
附註:獲得視窗控制代碼三種方法
1.hwnd findwindow(lpctstr lpclassname, lpctstr lpwindowname)
hwnd findwindowex(hwnd hwndparent, hwnd hwndchildafter,lpctstr lpclassname, lpctstr lpwindowname)
2.hwnd windowfrompoint(point& point)//獲得當前滑鼠游標位置的視窗hwnd
vc++中有關控制代碼和指標及其轉換
1.mfc視窗的控制代碼和指標的轉換
(1) 一般視窗物件都會有乙個其對應的控制代碼變數,所以我們可以取此物件的m_hwnd屬性來得到控制代碼。
(2)使用getsafehwnd函式取得程式所在視窗類的控制代碼
(3)使用fromhandle函式來通過控制代碼得到其想要的指標
其他的一些方法:
getactivewindow 取當前活動視窗控制代碼
afxgetmainwnd 取主視窗控制代碼
getforegroundwindow 取前台視窗控制代碼
findwindow尋找引數指定的視窗
enumwindow列舉視窗
2. 上下文無關裝置的控制代碼和指標的轉換
(1)this->m_hdc
(2)cdc::getsafehdc
(3)可以使用fromhandle函式來通過控制代碼得到其想要的指標
3.gdi物件的控制代碼和指標的轉換
(1)this->m_hobject
(2)cgdiobject::getsafehandle
(3)可以使用fromhandle函式來通過控制代碼得到其想要的指標
4.視窗、控制項的指標和控制代碼的相互轉化
(1)指標轉化為控制代碼
在mfc應用程式中首先要獲得視窗的指標,然後將其轉化為控制代碼
cwnd* pwnd;
handle hwnd = pwnd->getsafehwnd();
(2)控制代碼轉化為指標
在mfc應用程式中首先獲得對話方塊控制項的控制代碼,然後獲得其指標
handle hwnd;
getdlgitem(idc_***,&hwnd);
cwnd * pwnd = fromhandle(hwnd);
獲得程式視窗指標的辦法
(1)獲得主框架視窗指標(任何時候都可以用,只要是mfc程式中)
cwnd* pwnd = afxgetmainwnd();
(2)獲得對話方塊中控制項指標
cwnd* pwnd = getdlgitem(idc_***);
(3)獲得對話方塊中某控制項的控制代碼
handle getdlgitem(m_hdlg,m_nid_dlgitem);
(4)獲得gdi物件的控制代碼
handle m_hgdiobj = m_pgdiobj->getsafehanle();
MFC中,控制代碼和指標的關係
1.引出控制代碼 cdc問題 1.cdc dc dc.lineto point 無法執行 2.cdc dc getdc dc lineto point 就可以執行了 mfc中有大量的控制代碼包裝類。顧名思義,所謂控制代碼包裝類,指的是這些類是封裝了系統物件的控制代碼 hwnd,hdc,hbitmap...
VC中控制代碼 指標 ID之間的轉換
控制代碼到指標 cwnd pwnd cwnd fromhandle hwnd a temporary cwnd object is created and attached.pwnd attach hwnd attaches a windows window to a cwnd object 從指標...
MFC 視窗指標 視窗控制代碼和視窗ID的相互轉換
接觸mfc一段時間了,發現在進行視窗操作時,最頻繁使用的就是指標 控制代碼和id的相互轉換了,總結了一套方法如下 假設對於同乙個視窗而言,其指標是pwnd,控制代碼是hwnd,id是nid,那麼三者相互轉換了方法如下 指標 控制代碼 hwnd pwnd getsafehwnd id 控制代碼 hwn...