知了博客

集天地之精华,吸日月之灵气

« c++操作符重载__declspec关键字详细用法 »

CWND *this

CWND
用*this可以获得HWND,经调试得知,运行到的是操作符()函数.等价于:
CWND wnd;
HWND hWnd = (wnd);


AFXWIN_INLINE CWnd::operator HWND() const
  { return this == NULL ? NULL : m_hWnd; }
_AFXWIN_INLINE BOOL CWnd::operator==(const CWnd& wnd) const
  { return ((HWND) wnd) == m_hWnd; }
_AFXWIN_INLINE BOOL CWnd::operator!=(const CWnd& wnd) const
  { return ((HWND) wnd) != m_hWnd; }
_AFXWIN_INLINE HWND CWnd::GetSafeHwnd() const
  { return this == NULL ? NULL : m_hWnd; }

获得CWnd,HWND
1.CWnd

对于基于CWnd的类,如对话框
比如CXXXDialog

在对话框内部那就是
(CWnd*)this ;

如果定义的
CXXXDialog dlg ;
就是 (CWnd*)&dlg ;

如果是对话框的控件如IDC_EDIT1
CWnd *pEdit = GetDlgItem( IDC_EDIT1 ) ;

2.HWND

例如:
在CFormView或者CDialog内部:
HWND hWnd = GetSafeHwnd();

否则:
CFormView *pView = ......;
HWND hWndFormView = pView->GetSafeHwnd();

CDialog *pDlg = ......
HWND hWndDlg = pDlg->GetSafeHwnd();

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Arwen Build 90619 Code detection by Codefense  theme by BokeZhuti

Copyright know blog. Some Rights Reserved.站长(msn):webmaster#webgou.info(#换成@) 粤ICP备09183716号