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

标签 c++ mfc cedit

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

在 header 中它只是声明,没有定义。

另外,我希望 SetWindowTextW 接受一个 wstring::c_str() 参数,而不是 string::c_str() .

关于c++ - 如何在 C++ 中将 std::string 显示到 CEdit 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34871268/

相关文章:

c++ - 在Python(或C++)中将一个实体减去另一个实体

c++ - 头文件中的结构无法识别

mfc - CEdit控件最大长度? (以可以显示的字符为单位)

c++ - 没有按钮图像的 CMFCEditBrowseCtrl

c++ - 如何处理 CEdit 控件中的 Return 键?

mfc - 设置CEdit控件文本值并自动换行

c++ - 使用 Boost::Asio 停止线程服务器循环

c++ - 移动MFC项目对话框的方法

c++ - MFC CEdit Ctrl问题

继承模板类中的 C++ 编译器错误