【问题标题】:How to change text in a button without affecting a button name?如何在不影响按钮名称的情况下更改按钮中的文本?
【发布时间】:2010-11-04 12:29:09
【问题描述】:

希望我有一个琐碎的问题。我使用 CreateWindowEx 创建了一个按钮,并在其中指定了一个按钮名称。稍后在应用程序中,我需要更改按钮标题,因此我使用 WM_SETTEXT 消息:

SendMessage(hStartBtn, WM_SETTEXT, 0, (LPARAM) _T("NewText"));

这很好用,它将按钮标题更改为“NewText”。然而,它也有一个缺点——它会更改在 CreateWindowEx 调用期间指定的按钮名称。这在我的应用程序中造成了一些麻烦,因为我使用 FindWindowEx 来查找此按钮的句柄(我试图避免使用全局变量,因此我不存储 CreateWindowEx 返回的句柄)。

这真的是按钮的工作方式,还是我错过了一些改变标题但不影响控件名称的其他消息/功能?

谢谢,

克拉

【问题讨论】:

    标签: c winapi


    【解决方案1】:

    按钮不由“名称”标识。传递给按钮控件的字符串是它显示的文本。

    Windows 使用控件 ID 来标识控件。 GetDlgItem 用于检索窗口句柄,给定其父窗口。只需要使用正确的控件 ID(通过 CreateWindow 的 HMENU 参数传入)创建窗口,并且父窗口不必是对话框。

    【讨论】:

      【解决方案2】:

      这个MSDN article on WM_SETTEXT 建议“对于按钮,文本就是按钮名称”。

      【讨论】:

      • 是的,这也是我发现的,但它并没有真正告诉我如何在不更改按钮名称的情况下更改按钮文本。
      • 如果文本 is 是名称,那么我不希望能够在不更改名称的情况下更改文本。 MSDN 声明表明它们是一回事。
      猜你喜欢
      • 2021-10-24
      • 1970-01-01
      • 1970-01-01
      • 2013-01-07
      • 2018-01-17
      • 1970-01-01
      • 2011-02-24
      • 1970-01-01
      • 2019-07-10
      相关资源
      最近更新 更多