书个看到一段代码:
CDirDialog sourceFolder;if(sourceFolder.DoBrowse(*this)==IDOK)
{
……
}
代码中DoBrowse函数里面的参数不是句柄吗?怎么用*this也可以呢?难道
句柄等于*this ?
CDirDialog sourceFolder;if(sourceFolder.DoBrowse(*this)==IDOK)
{
……
}
代码中DoBrowse函数里面的参数不是句柄吗?怎么用*this也可以呢?难道
句柄等于*this ?
原型是这个
BOOL DoBrowse(HWND hWndParent, LPCTSTR pszTitle = NULL);
“如果this是一个指向句柄的指针的话”就是不确定!
BOOL CMyApp::InitInstance()
{
CMainDialog dlg;
m_pMainWnd=&dlg;
dlg.DoModal();
return FALSE;
}
而这个*this就是dlg但这两者和句柄都扯不上关系呢!
那是不是说sourceFolder.DoBrowse(*this)==IDOK中的*this进行了隐转换呢?将*this转换成了HWND
有operator HWND() const 这东西。
这东西最好少用,参见more effective上说明,实际开发中本人也遇到过因这个而出现的bug