在MFC中,对于典型的对话框窗口,当MFC调用OnOK()时,该函数调用EndDialog()函数,并且类析构函数在某个时候被调用。
假设在CDialog的类中有一个公共变量,名为"test“的字符串,并且在对话框OK按钮的onBnClick()事件中,我将这个"test”变量设置为一个值。然后声明对话框的一个实例,并从主窗口的类调用DoModal()。一旦DoModal()返回,我可以从设置的变量中读取,没有问题。
void Dialog1::OnBnClickedOk()
{
test = "The test string has been set."
所以我有一个我正在使用的MFC对话程序。对话框已经写好了,但现在我在对话框之间传递数据时遇到了困难。我在一个从CWinApp派生的类中设置了以下结构,并为指向此类型的指针创建了一个“_dlgDataHandler”语句。
//.......SRK.h文件
class CSRK_App : public CWinApp
{
public:
CFSB_App();
// added the following data structure for data passing withing the program
typedef struct _dlgData
我需要在使用一些对话框的MFC应用程序中使用创建线程,但是因为线程函数在类中,所以我必须将其设置为静态,然后我不能使用任何控件,因为它们不是静态的,即使我将它们设置为静态,我也会收到一些链接器错误。
有人能告诉我怎样才是正确的实现方式吗?我真的需要让控件保持静态吗?或者,有没有其他方法可以做到这一点?
这就是错误(无静态)
error C2228: left of '.AddString' must have class/struct/union
使用静态:
unresolved external symbol "public: static class CListBo
我是Visual Studio C++的初学者。我正在使用MFC创建一个基于对话框的应用程序。我想读取一些文件,并在对话框中显示该文件中的一些所需文本。
代码是:
CFileFind finder;
bool bFound;
CString filename = "C:\\FilesLocation\\*.txt";
bFound = finder.FindFile(filename);
if(bFound)
{
m_List.AddString(finder.GetFileName()); }
in the last li
我有一个MFC对话框,称为Dlg1。
myobject* Dlg1 = new myobject();
这个对话框有一个名为A的父对话框;我在A中有一个函数,它在关闭时被调用:
A::Destroy()
{
if(Dlg1 )
delete Dlg1; // this is triggering `DebugBreak(); here i get A.exe has triggered a breakpoint,
// the rest of the code
}
如果我关闭Dlg1对话框,手动单击关闭按钮,然后关闭主对话框A,那么一切都没问题。