我试图将一些文本放在静态文本小部件中,如下所示:
m_StartupTime.SetWindowText(someStringVariable);
并收到错误:
'CWnd :: SetWindowTextA':无法将参数1从'std :: string'转换为'LPCTSTR'
我尝试使用c.str()
方法,但是当我这样做时,程序编译得很好,但在运行时崩溃,抛出错误:
所以我正在弄清楚问题是否与转换有关,还是除此之外的任何其他内容?
使用CString无法解决问题,我尝试从Unicode字符集切换到Multi-Byte,但没有成功。哦,我在MFC开发。
编辑:找到解决方案!我使用了CString类。string a = "smth";
CString str(a.c_str());
答案 0 :(得分:5)
Assert对话框显示断言发生的位置:file winocc.cpp,第246行。
查看代码,这是该文件中的行:
ENSURE(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));
看来你的断言与字符串无关,但控件不存在(还有?),即控制窗口无效或不存在。
答案 1 :(得分:1)
CA2T str( someStringVariable.c_str() ); m_StartupTime.SetWindowText(str);
假设someStringVariable具有std :: string类型。包括AtlBase.h来编译它。