實例1.1:通過HWND獲得CWnd指針

實例1.1:通過HWND獲得CWnd指針

  
1
2
3
4
5
6
7
//獲得當前窗口的句柄
HWND hWnd = GetSafeHwnd();
//通過HWND獲得CWnd指針
CWnd *pWnd = CWnd::FromHandle(hWnd);
CString strText = _T("");
strText.Format("pWnd = 0x%X\nthis = 0x%X\n", pWnd, this);
AfxMessageBox(strText);

 

1、GetSafeHwnd方法:該函數獲得窗口對象的窗口句柄。

Returns the window handle for a window. Returns NULL if the CWnd is not attached to a window or if it is used with a NULL CWnd pointer。

這個函數用途很廣,很多函數的參數要求是HWND,這時就需要使用GetSafeHwnd函數了。如:

1
2
3
4
5
HWND hwnd;
CWnd* pWnd;
pWnd=((CFrameWnd*)(AfxGetApp()->m_pMainWnd))->GetActiveView();
hwnd=pWnd->GetDlgItem(IDC_EDIT2)->GetSafeHwnd();
::SetWindowText(hwnd,m_strResult);

  其它的一些情況:

AfxWinInit         被WinMain調用的一個函數,用做MFC GUI程序初始化的一部份

AfxBeginThread     開始一個新的執行線程

AfxEndThread       結束一箇舊的執行線程

AfxMessageBox      類似Windows API 函數MessageBox

AfxGetApp          取得application object(CWinApp衍生對象)的指針

AfxGetMainWnd      取得程序主窗口的指針

AfxGetInstance     取得程序的instance handle

AfxRegisterClass   以自定的WNDCLASS 註冊窗口類別

2、FromHandle方法:FromHandle(HANDLE h) 先查找由用戶定義的內核對象對象的封裝類, 如果找到直接返回,沒有找到構造一個臨時對象返回.

Life is like a box of chocolate, you never know what you are going to get.

http://www.cnblogs.com/mars9/archive/2012/01/20/2327941.html
發佈了40 篇原創文章 · 獲贊 11 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章