列表框中的AddString(MFC)

时间:2017-05-23 00:50:46

标签: c++ mfc

我是一个新手编写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();
}

1 个答案:

答案 0 :(得分:1)

术语优先:您正在调用“我自己的测试对象”的实体实际上是方法

这样,您就可以在CFileProcessorDlg方法中实例化(另一个)dlg对象(名为CFileProcessorDlg::OnCickedButtonStart())。

创建了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对象。