mfc中id,控制代碼,指標

2021-06-22 13:59:10 字數 1790 閱讀 7622

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...