1. 程式人生 > >[MFC] HWND(獲取控制元件或窗體控制代碼) [大三TJB_708]

[MFC] HWND(獲取控制元件或窗體控制代碼) [大三TJB_708]

1 C++窗體物件和HWND

窗體物件是一個繼承於CWnd類的C++類的 物件。咱們可以用建構函式生成一個windows窗體,此windows窗體被一個 "window handle" (HWND)唯一標識,當一個窗體被建立後,此視窗的視窗控制代碼也響應的被建立。此視窗的視窗控制代碼被儲存在窗體物件的資料成員m_hWnd中。

 

2. 獲取一個控制元件(視窗的控制代碼)

 

2.1 通過資料成員獲取控制元件控制代碼

相對在對話方塊中的控制元件來說,當直接往對話方塊拉進一個控制元件時。程式執行後這個控制元件就會生效,則響應的視窗控制代碼(控制元件也是一種視窗)就被儲存到了此控制元件物件的m_hWnd變數中了。我們要使用此控制元件的控制代碼時只需要在標頭檔案中定義一個此控制元件型別的變數(物件),然後放問資料成員m_hWnd即可。

 

2.2 通過CWnd函式獲取控制元件控制代碼

首先定義一個HWND型別的變數,然後通過函式直接獲取相應控制元件的控制代碼。

HWND hWnd;
hWnd    = GetDlgItem(IDC_STATIC_D3DWND)->GetSafeHwnd();

(1) CWnd* GetDlgItem(int nID)const;

此函式的功能是檢索一個指向 ID 為nID控制元件(視窗)的指標。對於,對話方塊上面的控制元件就很好辦了,因為每個控制元件的ID都可以被使用者所設定。

nID指控制元件的ID。設定對話方塊之上的ID:選中控制元件-->右鍵選中屬性-->更改ID

函式返回指向控制元件的指標。

 

(2) HWND GetSafeHwnd( ) const;

此函式在GetDlgItem函式返回值不為空的情形下返回控制元件的m_hWnd即物件的控制代碼,所GetDlgItem返回指標為空則此函式返回為空。

 

通過函式的方法也可以順利的得到控制元件(視窗)的控制代碼的。

 

3.在需要使用控制元件控制代碼的地方

在D3D9程式的初始化中,D3DPRESENT_PARAMETERS的hDeviceWindow成員需要指定一個視窗控制代碼,還有IDirect3D9::CreateDevice的第三個引數也需要一個視窗控制代碼。當然了 需要控制元件控制代碼的需求很多,記錄 一下我在初始化D3D9程式時獲取視窗控制代碼的一點心得。兩種方法~·~

此次筆記記錄完畢。
--------------------- 
作者:最容易害羞 
來源:CSDN 
原文:https://blog.csdn.net/misskissc/article/details/8870126 
版權宣告:本文為博主原創文章,轉載請附上博文連結!