Проблемы с перерисовкой API BUTTON в WM_DRAWITEM

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
lister
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 389
Зарегистрирован: 15.01.2005 (Сб) 7:34
Откуда: Страна оления

Проблемы с перерисовкой API BUTTON в WM_DRAWITEM

Сообщение lister » 21.02.2008 (Чт) 6:35

Всем привет!

Вот Наваял и прикрепил образец своей проблемы - посмотрите, кто может.

На форме имеются 2 кнопки. 1-я создается CreateWindowEx со стилем BS_OWNERDRAW, 2-я - VB-шная кнопка с графическим стилем. Обе перерисовываем в WM_DRAWITEM.

С апишной кнопкой следующие проблемы - если нажимать на нее быстро, то в WM_DRAWITEM как бы не обрабатываются некоторые нажатия.

С кнопкой VB все в порядке - реагирует на каждый клик.

Ну, в общем, можно запустить проект и покликать - будет более понятно...

Как можно заставить апишную кнопку реагировать на каждый клик?
Вложения
TestSuite.zip
(21.2 Кб) Скачиваний: 70

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 23.02.2008 (Сб) 22:07

Кажется, ты забываешь обрабатывать двойной щелчок мышкой по кнопке. VBшная кнопка приравнивает его к обычному щелчку (визуально) и генерит событие DblClick.
Моду создают модоки, а распространяют модозвоны.

lister
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 389
Зарегистрирован: 15.01.2005 (Сб) 7:34
Откуда: Страна оления

Сообщение lister » 26.02.2008 (Вт) 12:58

Похоже, вместе со стилем BS_OWNERDRAW автоматом добавляется BS_NOTIFY, поэтому и генерируется BN_DBLCLK, при котором перерисовка не происходит.
Пытаюсь обновить кнопку, чтобы её перерисовать при
HIWORD(wParam)=BN_DOUBLECLICKED:
InvalidateRectAsNull lParam, 0, 0
UpdateWindow lParam
но перерисовка не происходит.

Никак нельзя отключить BN_DBLCLK?


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 100

    TopList