GetSafeHwnd

GetSafeHwnd

GetSafeHwnd,當我們想得到一個視窗對象(CWnd的派生對象)指針的句柄(HWND)時,最安全的方法是使用GetSafeHwnd()函式。

基本內容

當我們想得到一個視窗對象(CWnd的派生對象)指針的句柄(HWND)時,最安全的方法是使用GetSafeHwnd()函式,通過下面的例子來看其理由:

CWnd *pwnd = findwindow(“ExploreWClass”,NULL); //

GetSafeHwndGetSafeHwnd
希望找到資源管理器

HWND hwnd = pwnd->m_hwnd; //得到它的HWND

這樣的代碼當開始得到的pwnd為空的時候就會出現一個“General protection error”,並關閉應用程式,因為一般不能對一個NULL指針訪問其成員,如果用下面的代碼:

CWnd *pwnd = FindWindow(“ExploreWClass”,NULL); //希望找到資源管理器

HWND hwnd = pwnd->GetSafeHwnd(); //得到它的HWND

就不會出現問題,因為儘管當pwnd是NULL時,GetSafeHwnd仍然可以用,只是返回NULL,通過GetSafeHwnd()的實現代碼就更清楚了:

_AFXWIN_INLINE HWND CWnd::GetSafeHwnd() const

{

return this == NULL?NULL:m_hWnd;

}

你看有很多函式的參數要求HWND,它就可以派上用場了.

HWND hwnd;

CWnd* pWnd;

pWnd=((CFrameWnd*)(AfxGetApp()->m_pMainWnd))->GetActiveView();

hwnd=pWnd->GetDlgItem(IDC_EDIT2)->GetSafeHwnd();

::SetWindowText(hwnd,m_strResult);

更多圖冊

相關詞條

相關搜尋

熱門詞條

聯絡我們