我正在创建一个基于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()指令,以处理其中的一些问题,但是我不知道什么是处理此更深层问题的正确方法,或者我的应用程序的哪个方面不正确。 谢谢您的任何建议。
编辑:提到的Redraw(): 关闭对话框(包含中心窗口)后,我告诉中心窗口重新粉刷: PlotSettings Dlg; Dlg.DoModal(); MonitorWindow-> RedrawWindow();