| 
| 
 | Вопрос # 1 594/ вопрос открыт / | 
 |  Здравствуйте, уважаемые эксперты!В прогрмме я создаю WinApi окно и рисую на нём. Как заставить окно всегда перерисовываться, а не только тогда когда пользователь поводил мышкой по окну или нажал клавишу?
 Приложение:Переключить в обычный режим   function WindowProc(wnd: hwnd; msg: integer; wparam: wparam; lparam: lparam):lresult; stdcall;begin  if Assigned(dsOnMessage) then dsOnMessage(wnd, msg, wparam, lparam);  case msg of  WM_DESTROY:    begin      postquitmessage(0);      result := 0;      exit;    end;  WM_SYSCOMMAND:    begin      dsRestoreDevice;    end;  end;  result := defwindowproc(wnd,msg,wparam,lparam);end;
|  |   Вопрос задал: Виталий (статус: 2-ой класс)Вопрос отправлен: 18 мая 2008, 14:39
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Вадим К Здравствуйте, Виталий!Всё банально просто - послать самому себе сообщение "Обновись". В коде это выглядит так:
 
 SendMessage(wnd, WM_PAINT, 0, 0);где wnd - хендл окна, которое надо перерисовать. Сообщение будет поставлено в очередь сообщений и выполненно при первой возможности. Но если вы будете слать таких сообщений слишком много и в очереди необработаных сообщений будет несколько сообщений WM_PAINT, то они будут игнорироваться. если хочеться сделать свою прорисовку окна (ну там какие нибуть специфические кнопки к примеру) то в цикл обработки сообщений добавте WM_PAINT и там всё рисуйте.
 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 18 мая 2008, 16:56
 Оценка за ответ: 4
 Комментарий к оценке: Спасибо, нашёл решение. |  
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |