0

我正在尝试将一些文本放在静态文本小部件中,如下所示:

m_StartupTime.SetWindowText(someStringVariable);

并得到一个错误:

'CWnd::SetWindowTextA' : 无法将参数 1 从 'std::string' 转换为 'LPCTSTR'

我尝试过使用该c.str()方法,但是当我这样做时,程序编译正常,但在运行时崩溃,抛出错误:

错误

所以我正在弄清楚问题是否与转换有关,还是与此有关?

使用 CString 并不能解决问题,我尝试从 Unicode 字符集切换到多字节,但没有成功。哦,我正在MFC中开发。

编辑:找到解决方案!我使用了 CString 类。

string a = "smth";
CString str(a.c_str());
4

2 回答 2

5

断言对话框显示断言发生的位置:文件 winocc.cpp,第 246 行。

查看代码,这是该文件中的行:

ENSURE(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));

您的断言似乎与字符串无关,但控件不存在(还没有?),即控件窗口无效或不存在。

于 2012-10-03T14:29:45.463 回答
1
CA2T str(someStringVariable.c_str());
m_StartupTime.SetWindowText(str);

假设 someStringVariable 具有 std::string 类型。包括 AtlBase.h 来编译它。

于 2012-10-03T12:40:48.723 回答