0

我想根据用户输入在执行时间更改标签的标题(文本)。如果用户按下按钮,我的程序将执行一些东西并将输出写入标签。但我有一个问题。

首先,我的环境中没有标签。至少在工具箱中。我知道,从工具箱中添加并不是唯一的方法,但我有点害怕触摸旧的源代码并将事情搞砸。

我找到了一个静态文本元素,但我猜由于它是一个“静态”元素,我在 resource.h 中看不到它。所以,如果我使用类似的函数GetDlgItem(IDC_STATIC);,它就不起作用。因为IDC_STATIC我的resource.h中没有。

这是第二个。

而且,我也用过SetDlgItemText(IDC_STATIC, "text");。但是,由于我的 resource.h 不知道是什么IDC_STATIC,我得到了错误。

是否有不在工具箱中的标签类/元素?我猜 myIDC_STATIC不在我的 resource.h 中,因为它的静态行为。或者,有没有其他方法来更新标签/静态文本的文本?

谢谢你的帮助。

4

2 回答 2

3

您想使用静态控件,但给它一些标识符而不是 IDC_STATIC。然后,您将能够使用该标识符使用GetDlgItemText,SetDlgItemText等。或者,您可以/可以使用设置为只读的 EDIT 控件,这几乎等同于静态控件1


1甚至比许多人意识到的要多——例如,要更改普通编辑控件的背景颜色,您需要响应WM_CTLCOLOREDIT. 要更改静态控件只读编辑控件的背景颜色,您可以响应WM_CTLCOLORSTATIC.

于 2012-08-08T07:07:58.127 回答
1

将静态文本的 ID 更改为 以外的内容IDC_STATIC,然后更改这些代码以更新它。我希望我在 5 分钟前尝试过。

更改它的 ID 会更新您的 resource.h 并在其中添加您的静态文本。

我猜这可能会帮助我之后的人进行调试:

TCHAR   *pszBuffer = new TCHAR[255];
pszBuffer = TEXT("dkjhasja");
CWindow wndSys;
wndSys.Attach(GetDlgItem(IDC_BLABLABLA));
wndSys.SetWindowText(pszBuffer);
wndSys.Detach();
于 2012-08-08T07:06:49.323 回答