Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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.


Наверх

Титульная страница Поиск, карта сайта Написать письмо