如何在 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()