Вопрос № 77598: Я делаю вывод текста методом виртуального окна, нужно в зависимости от значения переменной рисовать соответствующую строку текста в одной и той же области окна.
Значение переменной определяется выбором соответствующего пункта меню.
Нужно сраз...
Вопрос № 77.598
Я делаю вывод текста методом виртуального окна, нужно в зависимости от значения переменной рисовать соответствующую строку текста в одной и той же области окна.
Значение переменной определяется выбором соответствующего пункта меню.
Нужно сразу же после выбора пункта меню произвести отрисовку текста, т.е. обрабатывая сообщение WM_COMMAND,
необходимо поставить в очередь сообщение WM_PAINT, чтобы по завершению обработки WM_COMMAND цикл сообщений извлек этот WM_PAINT и произошла отрисовка текста.
Я пробовал использовать PostMessageA, но при выборе нужного пункта меню отрисовка текста не происходит, а происходит только при изменении размеров окна мышью или если свернуть и развернуть окно.
Приложение:
Отправлен: 09.03.2007, 06:35
Вопрос задал: Alexei_FAQ (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Tek
Здравствуйте, Alexei_FAQ!
Согласно MSDN функция UpdateWindow(HWND) - посылает сообщение WM_PAINT непосредственно окну, минуя очереди сообщений процесса и окна. Для вас ее использование насколько я понимаю будет наиболее эффективным - вызываете ее после обработки в WM_COMMAND.
Функция RedrawWindow(HWND, CONST RECT *, HRGN, UINT) предоставляет возможность задания более сложных критериев перерисовки окна, чем простая отрисовка клиентской области. За подробностями в MSDN.
--------- WinApi - жутко неудобные костыли, MFC и VCL - немногим полезнее, но ничего лучше еще не создано (C)Почти Уинстон Черчилль :)
Ответ отправил: Tek (статус: Студент)
Ответ отправлен: 09.03.2007, 11:14