【发布时间】:2018-12-05 02:59:03
【问题描述】:
在 MFC 中没有定义为 CWnd::SetWindowTextA/CWnd::SetWindowTextW 的方法,但以下代码将根据 Unicode 设置正确编译和运行:
//UNICODE is defined
BOOL CMyDialog::OnInitDialog()
{
CDialogEx::OnInitDialog();
//this line won't compile as expected
//SetWindowTextA(L"ANSI");
//this line compiles, but CWnd::SetWindowTextW doesn't exits
//SetWindowTextW ends up calling CWnd::SetWindowText
SetWindowTextW(L"Unicode");
return TRUE;
}
//UNICODE is not defined
BOOL CMyDialog::OnInitDialog()
{
CDialogEx::OnInitDialog();
//this line compiles, but CWnd::SetWindowTextA doesn't exits!
//SetWindowTextA ends up calling CWnd::SetWindowText
SetWindowTextA("ANSI");
//this line won't compile as expected
//SetWindowTextW(L"Unicode");
return TRUE;
}
根据宏,SetWindowText 映射到 SetWindowTextA/SetWindowTextW 是有意义的。但我不明白 wnd->SetWindowTextA/wnd->SetWindowTextW 是如何映射回 CWnd::SetWindowText 的。
【问题讨论】:
标签: c++ visual-studio mfc