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