October 1, 2005
Про кнопки MFC WinCE
Дорогая раедакция, снова здравствуй. Стало тут мне надобно сделать кнопочек собственную отрисовку. Да только не все тут так просто. Кнопка со стилем BS_OWNERDRAW просто-напросто пропускает нажатия... Причем, без этого стиля все в принципе путем.
Так как у нас собственный CButton, то первая проблемма всем давно известна - баг с ::SHRecognizeGesture() в MFC. Тут переопределяем обработчик WM_LBUTTONDOWN на Default() и всего делов. Красные точки после этого исчезают навеки, а вот нажатия кнопка все-равно пропускает.
Оказалось, что owner-draw кнопке приходит помимо сообщения WM_LBUTTONDOWN, сообщение WM_LBUTTONDBLCLK (!!!), которого там вообще быть не должно... Ну что-ж, лечим:
LRESULT CSkinnedButton::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) { if (message == WM_LBUTTONDBLCLK) message = WM_LBUTTONDOWN; return CButton::DefWindowProc(message, wParam, lParam); }
--Доктор JohnCapfull.