我希望有一个微不足道的问题。我用CreateWindowEx创建了一个按钮,我指定了一个按钮名称。稍后在应用程序中我需要更改按钮标题,因此我使用WM_SETTEXT消息:
SendMessage(hStartBtn, WM_SETTEXT, 0, (LPARAM) _T("NewText"));
这很好用,它将按钮标题更改为“NewText”。但是它也有一个缺点 - 它会更改CreateWindowEx调用期间指定的按钮名称。由于我使用FindWindowEx来查找此按钮的句柄(我试图避免使用全局变量,因此我不存储CreateWindowEx返回的句柄),这在我的应用程序中混淆了一些东西。
这真的是按钮是如何工作的还是我错过了一些改变标题而不影响控件名称的其他消息/功能?
谢谢,
克拉
答案 0 :(得分:0)
此MSDN article on WM_SETTEXT表示“对于按钮,文本是按钮名称”。
答案 1 :(得分:0)
按钮不是由“名称”标识的。传递给按钮控件的字符串是它显示的文本。
Windows使用控件ID来标识控件。 GetDlgItem用于在给定父窗口的情况下检索窗口句柄。所需要的只是使用正确的控件ID创建窗口(通过CreateWindow的HMENU参数传入),父窗口不必是对话框。