我有一个CString
变量,它链接到我的一个对话框中的静态文本框,让我们称之为controlVariable。当我单击此对话框中的“开始”按钮时,会发生一些事情。首先我更新controlVariable的内容(比如说“初始化开始”)。我做UpdateData(FALSE)
然后运行另一个类的初始化(启动一些线程)。这种初始化需要一些时间,因此这就是静态文本框的内容在运行时需要反映的原因。但是在OnBnClickedStart()
函数完成之前,这些更改不会反映出来。我无法在对话框中对此controlVariable进行更改。
我尝试了什么:
UpdateData(FALSE)
使用基本CString附加函数(例如CString A = str1 + str2;)更改controlVariable并使用.format()更改控制变量(例如controlVariable.format(_T(“some”)文字“));)
更改controlVariable内容后运行OnPaint()
我进入调试模式,程序运行到对话框类的BEGIN_MESSAGE_MAP部分,然后在那里循环,直到我退出它。在我退出BEGIN_MESSAGE_MAP之前,链接到我的controlVariable的静态文本框的内容不会更新。因此,我的静态文本框的内容甚至不会在我的OnBnClickedStart()函数结束时更新。
示例代码:
CMyClass someClass;
CString controlVariable; // linked to some static text in the SomeDlgClass
void SomeDlgClass::OnBnClickedStart()
{
controlVariable = CString("System initialized\r\n"); // Also tried
UpdateData(FALSE); // Also tried OnPaint()
someClass.initialize(); // I would like the static text box to update before I run this
}
因此,当我运行它时,我的主对话框看起来像是“冻结” - 我无法移动窗口或单击任何按钮。建议?
感谢。