BN_PUSHED vs. BN_UNPUSHED
От: adrenalin  
Дата: 16.09.04 19:13
Оценка:
Такая проблемка: создается кнопка
hBtn=CreateWindow("BUTTON","1",
WS_VISIBLE | WS_CHILD | BS_OWNERDRAW,
100,100,50,20,
hWnd,HMENU(IDB_OWNERDRAW),hInst,NULL);
Так как кнопа имеет BS_OWNERDRAW стиль, то сами ее рисуем.
case WM_DRAWITEM:
BeginPaint(hWnd,PS);

res=SendMessage(hWnd,BM_GETSTATE,0,0);
rc=&PS->rcPaint;

FrameRect(PS->hdc,rc,CreateSolidBrush(RGB(255,0,0)));

if (res && BST_FOCUS)
DrawFocusRect(PS->hdc,rc);

if (res && BST_PUSHED)
FrameRect(PS->hdc,rc,CreateSolidBrush(RGB(255,0,0)));

EndPaint(hWnd,PS);
return 1;
Она может иметь фокус(BST_FOCUS), быть нажатой (BST_PUSHED) итд.
При нажатии винда меняет состояние кнопки: т.е. (res && BST_PUSHED)=TRUE
и отсылает главному окну WM_DRAWITEM для перерисовки кнопы.
А теперь вопрос:
Почему при отпускании кнопы винда не отсылает такое же сообщение
на перерисовку.И как поймать это событие?(WM_COMMAND с NotifyCode BN_UNPUSHED,
который указывается в HIWORD(wParam) почему-то не работает.Кстати кто знает почему?)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.