在运行时更改对话框中的静态文本而不调用 UPDATEDATA

问题描述 投票:0回答:1

我看了这个问题和答案:在运行时更改对话框中的静态文本它看起来像我需要的,除了我不希望我的所有其他变量都更新到主对话框。我正在尝试使用此文本框向用户显示程序正在做什么(使用我自己的文本,有点像跟踪,但没有单独的弹出窗口)。有没有办法做到这一点?我已经让它与更新数据一起工作了。

mfc controls runtime
1个回答
0
投票

你应该避免调用 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();

© www.soinside.com 2019 - 2024. All rights reserved.