powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Перерисовка окна при переключении на другое приложение
11 сообщений из 11, страница 1 из 1
Перерисовка окна при переключении на другое приложение
    #33097859
Pavel278
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Visual C++ 6.0
Как сделать так, чтобы при переключении с окна приложения и на возвращение к нему оно не перерисовывалось?

Пробовал через поиск по форуму найти ответ, но конкретно на этот вопрос ответа не нашёл.
...
Рейтинг: 0 / 0
Перерисовка окна при переключении на другое приложение
    #33098037
Кодер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pavel278Visual C++ 6.0
Как сделать так, чтобы при переключении с окна приложения и на возвращение к нему оно не перерисовывалось?

Пробовал через поиск по форуму найти ответ, но конкретно на этот вопрос ответа не нашёл.

Можно перехватить WM_ACTIVATE и WM_PAINT, организовав необходимую логику перерисовки, взводя и анализируя флаг.
...
Рейтинг: 0 / 0
Перерисовка окна при переключении на другое приложение
    #33098068
Pavel278
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
КодерМожно перехватить WM_ACTIVATE и WM_PAINT, организовав необходимую логику перерисовки, взводя и анализируя флаг

Простите, а какой флаг? Может, достаточно будет его установить по умолчанию?
...
Рейтинг: 0 / 0
Перерисовка окна при переключении на другое приложение
    #33098118
Кодер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pavel278 КодерМожно перехватить WM_ACTIVATE и WM_PAINT, организовав необходимую логику перерисовки, взводя и анализируя флаг

Простите, а какой флаг? Может, достаточно будет его установить по умолчанию?

Флаг - это такая переменная, в которую записывается состояние программы. К примеру, глобальная переменная a=0 изначально. После прихода WM_ACTIVATE c LOWORD(wParam) равным WA_INACTIVE, присвоить а=2. В WM_PAINT не вызывать модуль перерисовки, если a равно 2. После прихода WM_ACTIVATE c LOWORD(wParam) равным WA_ACTIVE или WA_CLICKACTIVE, присвоить a=1, а уже в следующем WM_PAINT сбросить флаг в 0, но не перерисовывать. Это первое, что приходит на ум. В любом случае нужно поэкспериментировать.
...
Рейтинг: 0 / 0
Перерисовка окна при переключении на другое приложение
    #33098306
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем бы это ? Хочешь на мониторе "черную дыру" получить вместо твоего приложения ?
Если хочешь делать оптимизацию прорисовки сложных изображений, то это делается не такими способами.
...
Рейтинг: 0 / 0
Перерисовка окна при переключении на другое приложение
    #33098308
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты всяких кодеров не слушай, если ты WM_PAINT не обработаешь, у тебя вместо окна будет дырка черная (или белая) - и все.
...
Рейтинг: 0 / 0
Перерисовка окна при переключении на другое приложение
    #33098439
Фотография Землекоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кодер Pavel278 КодерМожно перехватить WM_ACTIVATE и WM_PAINT, организовав необходимую логику перерисовки, взводя и анализируя флаг

Простите, а какой флаг? Может, достаточно будет его установить по умолчанию?

Флаг - это такая переменная, в которую записывается состояние программы. К примеру, глобальная переменная a=0 изначально. После прихода WM_ACTIVATE c LOWORD(wParam) равным WA_INACTIVE, присвоить а=2. В WM_PAINT не вызывать модуль перерисовки, если a равно 2. После прихода WM_ACTIVATE c LOWORD(wParam) равным WA_ACTIVE или WA_CLICKACTIVE, присвоить a=1, а уже в следующем WM_PAINT сбросить флаг в 0, но не перерисовывать. Это первое, что приходит на ум. В любом случае нужно поэкспериментировать.

Можно при потере активизации сбросить содержимое окна в bitmap, находящийся в памяти и выводить его при WM_PAINT. Это несколько строк кода и выполняется очень быстро. В принципе, если алгоритм отрисовки очень сложный и длинный, то лучше рисовать все в bitmap или метафайл, находящиеся в памяти, которые потом отрисовывать на экране при WM_PAINT. Тогда перерисовка не будет столь напрягать.
...
Рейтинг: 0 / 0
Перерисовка окна при переключении на другое приложение
    #33098949
Pavel278
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Землекоп
Можно при потере активизации сбросить содержимое окна в bitmap, находящийся в памяти и выводить его при WM_PAINT. Это несколько строк кода и выполняется очень быстро. В принципе, если алгоритм отрисовки очень сложный и длинный, то лучше рисовать все в bitmap или метафайл, находящиеся в памяти, которые потом отрисовывать на экране при WM_PAINT. Тогда перерисовка не будет столь напрягать.

Спасибо за идею. Попробую её реализовать.

Кодер
Флаг - это такая переменная, в которую записывается состояние программы. К примеру, глобальная переменная a=0 изначально. После прихода WM_ACTIVATE c LOWORD(wParam) равным WA_INACTIVE, присвоить а=2. В WM_PAINT не вызывать модуль перерисовки, если a равно 2. После прихода WM_ACTIVATE c LOWORD(wParam) равным WA_ACTIVE или WA_CLICKACTIVE, присвоить a=1, а уже в следующем WM_PAINT сбросить флаг в 0, но не перерисовывать. Это первое, что приходит на ум. В любом случае нужно поэкспериментировать.


Не, что такое флаг я знаю. Я просто думал, что ты имел в виду какую определённую переменную.
...
Рейтинг: 0 / 0
Перерисовка окна при переключении на другое приложение
    #33098966
Pavel278
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivЗачем бы это ? Хочешь на мониторе "черную дыру" получить вместо твоего приложения ?
Если хочешь делать оптимизацию прорисовки сложных изображений, то это делается не такими способами.

Да, я вообще именно это хотел бы сделать. Если посоветуешь что-нибудь почитать по этому поводу буду рад.
В принципе, пока этот вопрос не так остро стоит, как я понял. Но в принципе, хочется узнать, как это сделать.
...
Рейтинг: 0 / 0
Перерисовка окна при переключении на другое приложение
    #33099032
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А тебе уже сказали - рисовать в bitmap, metafile. Битмап- много памяти но быстро, если сложный алгоритм рисования (поскольку сохнаняется результат), metafile - мало памяти но долго, если сложный рисунок.
...
Рейтинг: 0 / 0
Перерисовка окна при переключении на другое приложение
    #33100042
Pavel278
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv рисовать в bitmap, metafile. Битмап- много памяти но быстро, если сложный алгоритм рисования (поскольку сохнаняется результат), metafile - мало памяти но долго, если сложный рисунок.

Грубо говоря, идея такая:
при переходе от окна приложения изображение сохраняется в mf или bmp
при возвращении оно оттуда достаётся.

Делается это просто обработкой события WM_ACTIVATE
Правильно?

Какие методы использовать для сохранения. Что мне в хелпе посмотреть, грубо говоря?

Прошу прощения за занудство
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Перерисовка окна при переключении на другое приложение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]