我看了这个问题和答案:在运行时更改对话框中的静态文本它看起来像我需要的,除了我不希望我的所有其他变量都更新到主对话框。我正在尝试使用此文本框向用户显示程序正在做什么(使用我自己的文本,有点像跟踪,但没有单独的弹出窗口)。有没有办法做到这一点?我已经让它与更新数据一起工作了。
你应该避免调用 UpdateData。这是由
CDialog::OnInitDialog
和 CDialog::OnOK
中的基础设施完成的。你要做的是直接创建一个控件成员和 SetWindowText。
在资源编辑器中单击您的静态控件。请注意,
ID
是 IDC_STATIC
。您必须将其更改为其他内容,例如IDC_MY_STATIC
,否则其余部分将不起作用。现在右键单击静态控件和 Add Variable
我输入的唯一内容是控件的名称,cMyStatic
.
然后确定对话框。
现在在对话框的 C++ 标头中,您将获得一个成员:
CStatic cMyStatic;
在您的代码中,您可以随时随地:
cMyStatic.SetWindowText(L"My Notification")
任何时候你想访问一个控件,创建一个变量。你发现使用
GetDlgItem
的例子是错误的。您唯一可能使用GetDlgItem
的地方是在自定义DXX_Special
全局中。
我想补充一点,这适用于很多东西。例如,您想在运行时更改按钮上的标签。或者说您不想在另一个事件之前启用按钮。
cMyButton.EnableWindow(FALSE);
在你的
OnInitDialog
。然后当你准备好按钮工作时。
cMyButton.EnableWindow();