我是编写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
方法中实例化(另一个)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
对象。