如何在 C++ 中将 std::string 显示到 CEdit 中
How to display std::string into CEdit in C++
我有一个用 C++ 编写的 MFC 项目,我想在 CEdit 控件中显示一些文本。
到目前为止,我试过这个:
MFCApplication1Dlg.h
...
private:
static CEdit m_progress;
public:
static void setProgress(std::string message);
...
MFCApplication1Dlg.cpp
...
void CMFCApplication1Dlg::setProgress(std::string message)
{
m_progress.SetWindowTextW((LPCTSTR)message.c_str());
}
void logMessage(std::string message)
{
if(logFile.is_open())
{
logFile << message;
logFile.flush();
CMFCApplication1Dlg::setProgress(message);
}
}
...
当我编译时出现这个错误:
error LNK2001: unresolved external symbol "private: static class CEdit CMFCApplication1Dlg::m_progress" (?m_progress@CMFCApplication1Dlg@@0VCEdit@@A)
谁能告诉我这个错误是怎么回事,我该如何在 CEdit 中显示消息?
您必须在您的 cpp 文件中定义静态成员:
CEdit CMFCApplication1Dlg::m_progress;
在头文件中只是声明,没有定义。
此外,我希望 SetWindowTextW
接受 wstring::c_str()
参数,而不是 string::c_str()
。
我有一个用 C++ 编写的 MFC 项目,我想在 CEdit 控件中显示一些文本。 到目前为止,我试过这个:
MFCApplication1Dlg.h
...
private:
static CEdit m_progress;
public:
static void setProgress(std::string message);
...
MFCApplication1Dlg.cpp
...
void CMFCApplication1Dlg::setProgress(std::string message)
{
m_progress.SetWindowTextW((LPCTSTR)message.c_str());
}
void logMessage(std::string message)
{
if(logFile.is_open())
{
logFile << message;
logFile.flush();
CMFCApplication1Dlg::setProgress(message);
}
}
...
当我编译时出现这个错误:
error LNK2001: unresolved external symbol "private: static class CEdit CMFCApplication1Dlg::m_progress" (?m_progress@CMFCApplication1Dlg@@0VCEdit@@A)
谁能告诉我这个错误是怎么回事,我该如何在 CEdit 中显示消息?
您必须在您的 cpp 文件中定义静态成员:
CEdit CMFCApplication1Dlg::m_progress;
在头文件中只是声明,没有定义。
此外,我希望 SetWindowTextW
接受 wstring::c_str()
参数,而不是 string::c_str()
。