c win32 создать кнопку только для текста

#c #winapi #button

#c #winapi #кнопка

Вопрос:

Я хотел бы добавить простую текстовую кнопку в мое приложение c win32. Я создаю кнопку с помощью функции CreateWindowEx, но не могу определить правильный стиль для этого. Я хотел бы отобразить кнопку только для текста и иметь возможность получать сообщения, когда пользователь нажимает на нее. Стиль, который я хотел бы получить, идентичен текстовой кнопке в системном регуляторе громкости Windows 7 (где написано «Микшер»).). Если возможно, я хотел бы также отобразить всплывающую подсказку.

введите описание изображения здесь

Ответ №1:

Этот элемент управления микшером больше похож на элемент управления гиперссылкой, чем на кнопку. Я бы выбрал элемент SysLink управления, если это то, что вам нужно.

Ответ №2:

Вы могли бы создать окно класса «Кнопка» в стиле BS_OWNERDRAW и обрабатывать сообщения WM_DRAWITEM. В вашем обработчике сообщений WM_DRAWITEM вы можете просто отобразить текст.

Комментарии:

1. Вам нужно будет заставить его реагировать только на щелчки по тексту и выполнять обработку горячих ссылок.

Ответ №3:

На самом деле эта кнопка является кнопкой рисования владельца — она прослушивает сообщения о перемещении мыши, и когда вы наводите на нее курсор, она подчеркивает текст (элемент управления syslink не имеет такого поведения). В противном случае это стандартная кнопка.

Комментарии:

1. Почему вы выбрали кнопку рисования владельца, а не SysLink? Предположительно, вы могли бы убедить команду SysLink добавить поддержку горячего отслеживания? Или есть какое-то преимущество кнопки рисования владельца? Возможно, доступность.

2. Одним из преимуществ является то, что это позволяет вам решить вашу проблему прямо сейчас , вместо того, чтобы отправлять запрос функции команде SysLink, а затем наблюдать, как они откладывают решение на месяцы, пока они, наконец, не поймут, что у них нет времени на это, в конце концов, и ответить на запрос «Извините, у нас закончилсявремя» и теперь вы создали полностью предотвратимую аварийную ситуацию с вашей стороны: теперь вам нужно исправить ошибку в последнюю минуту.

3. Спасибо Raymond, это именно тот ответ, который я бы дал. Рассматриваемая кнопка содержит около 150-200 строк кода, подавляющее большинство из которых тратится на обработку случая, когда тематизация отключена.