Windows API: скрыть кнопку, которая не является дочерним окном
У меня есть программа, где мне нужно отключить определенную кнопку на панели инструментов. "Сохранить" в элементе управления Adobe Reader.
Я знаю, что можно скрыть элемент управления, найдя его дескриптор окна.
Используя Spy++, я нашел нужную панель инструментов. Имеет кнопки и текстовые поля. Хотя текстовые поля являются дочерними окнами панели инструментов, кнопки вовсе не являются окнами!
Как поступить в таком случае? Есть ли способ скрыть такие кнопки? Я пытался найти их, используя относительное положение на панели инструментов и отображая что-то сверху, но его разделы могут быть перемещены вручную пользователем.
2 ответа
Предположим, что у вас есть hwindow на панели инструментов, вы можете перебрать все кнопки панели инструментов (на основе положения, используйте TB_BUTTONCOUNT для количества кнопок), использовать сообщение TB_GETBUTTON, чтобы получить текущий идентификатор команды, затем TB_GETBUTTONTEXT (с идентификатором команды), чтобы получить заголовок кнопки. Затем используйте TB_ENABLEBUTTON для кнопки с заголовком, который вы ищете.