Как изменить текст в кнопке, не затрагивая имя кнопки? - PullRequest
1 голос
/ 04 ноября 2010

Надеюсь, у меня тривиальный вопрос.Я создаю кнопку с CreateWindowEx, где я указываю имя кнопки.Позже в приложении мне нужно изменить заголовок кнопки, поэтому я использую сообщение WM_SETTEXT:

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

Это прекрасно работает, оно меняет заголовок кнопки на «NewText».Однако он также имеет один недостаток - он изменяет имя кнопки, указанное во время вызова CreateWindowEx.Это немного мешает в моем приложении, так как я использую FindWindowEx, чтобы найти дескриптор этой кнопки (я пытаюсь избежать использования глобальных переменных, поэтому я не сохраняю дескриптор, возвращенный CreateWindowEx).

Действительно ли так работают кнопкиили я пропускаю какое-то другое сообщение / функцию, которая изменяет заголовок, но не влияет на имя элемента управления?

Спасибо,

Kra

Ответы [ 2 ]

0 голосов
/ 05 ноября 2010

Кнопки не обозначены «именем». Строка, передаваемая элементу управления кнопкой, представляет собой текст, который она отображает.

Windows использует идентификаторы элементов управления для идентификации элементов управления. GetDlgItem используется для получения дескриптора окна, учитывая его родительское окно. Все, что требуется, - это чтобы окна создавались с правильным идентификатором элемента управления (передаваемого через параметр HMENU в CreateWindow), и родительское окно не обязательно должно быть диалоговым окном.

0 голосов
/ 04 ноября 2010

В этой статье MSDN на WM_SETTEXT предлагается, что "Для кнопки текст является названием кнопки".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...