![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
CM_MOUSEENTER и WM_PAINT
lokid7 © (2005-05-05 07:59:00)если при обработке сообщений использую эти два сообщения, то почему-то CM_MOUSEENTER перестает обрабатываться, если убираю WM_PAINT то CM_MOUSEENTER работает...
Все пишется на C++ Builder 6
void __fastcall TButtonImg::SubWindowProc(Messages::TMessage & Message)
{
switch( Message.Msg )
{
case WM_LBUTTONUP:
break;
case WM_LBUTTONDOWN:
break;
case CM_MOUSEENTER:
ButtonState = BUTTON_STATE_ONMOUSE;
Draw();
break;
case CM_MOUSELEAVE:
ButtonState = BUTTON_STATE_WOMOUSE;
Draw();
break;
case WM_MOUSEMOVE:
break;
case WM_PAINT:
break;
default:
WndProc(Message);
}
}
alpet (2005-05-05 10:48:00) [1]
case WM_PAINT:
break;
Для того чтобы система не отправляла сообщения прорисовки постоянно надо производить валидацию (уведомлять систему о прорисовке) региона который нужно прорисовать и возвращать 0 (см. справку по этому сообщению). Вызов ValidateRect ((HWND) Handle, NULL) производит валиацию всего окна с описателем Handle.