iampradeepsharma Ответов: 3

Как обновить диалоговое окно в MFC


У меня есть диалог, который является производным от CDialog (модальный ) .Теперь, когда я нажимаю window+D, чтобы свернуть все окна, и снова, когда я восстанавливаю диалог, то весь контроль над ним становится disapper, который появляется только тогда, когда я перемещаю диалоговое окно.
Почему так происходит и как это исправить .

Что я уже пробовал:

Я верю, что RedrawWindow window сделает свое дело, но не знаю, где это реализовать. Какое событие будет поражено при восстановлении окна через window+D click.

Mohibur Rashid

Это помогает?
https://msdn.microsoft.com/en-us/library/ms821579.aspx

iampradeepsharma

нет, этот api не присутствует в диалоговом окне MFC.

Richard MacCutchan

Диалог, как и любое окно, должен перекрасить себя, когда он будет восстановлен. Вам нужно заглянуть в свой код, чтобы попытаться увидеть, что может отсутствовать.

3 Ответов

Рейтинг:
2

Michael Haephrati

Вызов

Invalidate(TRUE);
UpdateWindow();


Это единственный метод, который сработал для меня, когда я искал решение.


Рейтинг:
11

iampradeepsharma

Перехватывая WM_NCPAINT и вызывая RedrawWindow() вместе с обработчиком базового класса, я мог бы обновить диалоговое окно .
Спасибо всем .


Рейтинг:
1

User 7429338

При восстановлении после минимизации, OnSize[^] называется с nType установите значение SIZE_RESTORED.

Однако обычно окно перерисовывается автоматически. Если вы уже используете OnSize, убедитесь, что вызываете функцию базового класса.


iampradeepsharma

Онсайз даже не называется . Я только что сказал, что это происходит при нажатии клавиши window+D в качестве клавиши для минимизации всего, а затем восстановления его с помощью той же комбинации клавиш.

[no name]

Выполняет ли ваше приложение обработку в основном потоке?

iampradeepsharma

что это за событие, которое вызывается, когда вы восстанавливаете свое окно, но не обязательно активируете его ?