Отличается при наведении визуального состояния для кнопок BS_OWNERDRAW - PullRequest
2 голосов
/ 08 июля 2011

У меня есть кнопка BS_OWNERDRAW, созданная с:

HWND hwndClose = CreateWindow(WC_BUTTON, _T(""),
                    BS_PUSHBUTTON | BS_OWNERDRAW | WS_CHILD | WS_VISIBLE,
                    0, 0, 16, 16, win->hwndTocBox, (HMENU)IDC_TOC_CLOSE, ghinst, NULL);

Я хочу нарисовать ее по-другому, когда курсор находится над кнопкой.Я ожидал получить сообщение WM_DRAWITEM каждый раз, когда курсор входит / покидает мою кнопку, но это не так.Я получаю его только один раз, хотя стандартные кнопки Windows явно имеют различное визуальное состояние в случае при наведении.

Можно ли легко получить окна для отправки WM_DRAWITEM при изменении состояния при наведении, не делая утомительных вещей, таких как создание подклассовкнопка окна и ручная обработка сообщений WM_MOUSEMOVE / WM_MOUSELEAVE?

1 Ответ

1 голос
/ 08 июля 2011

Это побочный эффект Ownerdraw. Визуальный эффект наведения, который вы получаете на «обычную» кнопку, фактически присутствует, только когда включен ее визуальный стиль. Однако любой элемент управления, для которого включен стиль владельца, будет , а не получать визуальный стиль. Это поведение appcompat, его нельзя отключить. Тебе придется сделать это трудным путем.

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