如何在 C++ 中将 std::string 显示到 CEdit 中

How to display std::string into CEdit in C++

本文关键字:string 显示 CEdit std C++ 中将      更新时间:2023-10-16

我有一个用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()