列表框中的添加字符串 (MFC)

AddString in List Box (MFC)

本文关键字:MFC 字符串 添加 列表      更新时间:2023-10-16

我是编写MFC代码的新手,在向列表框中添加字符串时遇到问题。当我直接调用 AddString 对象时,显示的代码工作正常,但当我将其添加到我自己的 Test 对象时,则不行,如图所示。我必须做什么才能使 AddString 仍然在另一个对象内部工作?也许是某种继承问题?

感谢您对这个新手问题的耐心等待!邓肯

void CFileProcessorDlg::Test()
{
    m_strFullName1.Format(_T("Starting to process files"));
    m_Message1.AddString(m_strFullName1); // Add string to list box
}
void CFileProcessorDlg::OnClickedButtonStart()
{
    //Duncan's Stuff
    // TODO: Add your control notification handler code here
    CFileProcessorDlg dlg;
    UpdateData(); // Transfer data from controls to variables
    //dlg.ProcessFiles(m_InputFile, m_OutputFile); // Actually process the files here
    // Problem 5/22/2017 - this works here, but not if I move it into the Test object.
    //m_strFullName1.Format(_T("Starting to process files"));
    //m_Message1.AddString(m_strFullName1); // Add string to list box
    dlg.Test();
}

术语第一:你称之为"我自己的测试对象"的实体实际上是一个方法

这样一来,您正在从CFileProcessorDlg::OnCickedButtonStart()方法中实例化一个(其他(CFileProcessorDlg对象(名为 dlg (。

创建dlg对象,调用其Test()方法,然后对象在CFileProcessorDlg::OnCickedButtonStart()结束时超出范围,因此它不会对调用对象的对象(this(产生任何有用的影响。

我想你想做这样的事情:

void CFileProcessorDlg::OnClickedButtonStart()
{
    //Duncan's Stuff
    // TODO: Add your control notification handler code here
    UpdateData(); // Transfer data from controls to variables
    //dlg.ProcessFiles(m_InputFile, m_OutputFile); // Actually process the files here
    // Problem 5/22/2017 - this works here, but not if I move it into the Test object.
    //m_strFullName1.Format(_T("Starting to process files"));
    //m_Message1.AddString(m_strFullName1); // Add string to list box
    Test(); // more explicitly: this->Test()
}

我将您的评论留给了上下文,但净更改是不实例化新的CFileProcessorDlg对象。