Я создаю приложение на основе фреймов MFC для мониторинга / построения графиков / взаимодействия с несколькими дочерними окнами, размещенными в основном фрейме. Все эти дочерние окна создаются основным фреймом с использованием:
MakeCommandsWindow("Child Window",
WS_VISIBLE | WS_CHILD ,
CommandsRect, this, NULL);
, который вызывает этого строителя:
BOOL Commands::MakeCommandsWindow(LPCSTR WindowTitle, DWORD dwStyle,
RECT& rect, CWnd* pParent, UINT nID){
CString CommandsWindowClass = AfxRegisterWndClass(
CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW ,
AfxGetApp()->LoadStandardCursor(IDC_ARROW));
CWnd::Create(CommandsWindowClass, WindowTitle, dwStyle,
rect, pParent, nID);
Приложение работает хорошо, за исключением случаев обработки событий перерисовки. Когда приложение закрывается другим окном и открывается, оно не перерисовывается должным образом. Кроме того, он не максимизирует или не изменяет размер должным образом Насколько я понимаю, MFC автоматически отправляет сообщения перерисовки во время этих событий, и мне не нужно перехватывать эти сообщения. Я реализовал некоторые инструкции redraw () вручную после модальных диалогов, близких к решению некоторых из этих проблем, но я не знаю, как правильно решить эту более глубокую проблему, или какой аспект моего приложения неверен.
Спасибо, любые советы приветствуются.
Редактировать: Перерисовка () упоминается:
После закрытия диалога (охватывающего центральное окно) я говорю центральному окну перекрасить:
PlotSettings Dlg;
Dlg.DoModal ();
MonitorWindow-> RedrawWindow ();