我有基于MFC对话框的应用程序。
void CThr_MfcDlg::OnBnClickedButton1()
{
this->SetWindowTextW(L"bla");
(CThr_MfcDlg*)GetDlgItem(IDD_THR_MFC_DIALOG)->SetWindowText(L"hello") ;
}
行this->SetWindowTextW(L"bla");
将标题更改为bla
我希望第(CThr_MfcDlg*)GetDlgItem(IDD_THR_MFC_DIALOG)->SetWindowText(L"hello") ;
行应该将标题更改为hello
,但编译错误:
Error 1 error C2440: 'type cast' : cannot convert from 'void' to 'CThr_MfcDlg *'
答案 0 :(得分:1)
阅读this。因为 - >运算符的优先级(2)高于强制转换运算符(3),您的代码将以这种方式解析:
(CThr_MfcDlg*) (GetDlgItem(IDD_THR_MFC_DIALOG)->SetWindowText(L"hello")) ;
为避免这种情况,您应该使用带括号的括号。
// this will be correct.
((CThr_MfcDlg*)GetDlgItem(IDD_THR_MFC_DIALOG))->SetWindowText(L"hello");