|
Вопрос # 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
Комментарий к оценке: Спасибо, нашёл решение.
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|