0

我只是想在一个很好的基于 MFC 对话框的应用程序中使用 2 个更多可移动对话框作为子项。在解决方案向导之后,我创建了一个默认对话框资源(子样式)并在主对话框的 OnInitDialog 中创建了 2 个对话框:

m_P1 = new CMyDlg();
m_P2 = new CMyDlg();

m_P1->Create(IDD_DIALOG1, this);
m_P2->Create(IDD_DIALOG1, this);

m_P1->ShowWindow(SW_SHOWNORMAL);
m_P2->ShowWindow(SW_SHOWNORMAL);

现在,它们都出现了,但是当我将它们移动到客户端区域的重绘时不会发生。如果我重叠两个 Windows,并在系统栏中选择后面的一个并开始移动它,则客户端区域仍然有未更新的区域,因此它们显示第二个重叠对话框的内容。

我试图覆盖 OnPaint 并使那里的矩形无效,但是由于两个对话框属于同一类,因此两个对话框都获取 OnPaint 并且都更新了完整的客户端区域,因此发生了很多闪烁。

我尝试使用 ON_WM_ACTIVATE() 或 ON_WM_SETFOCUS() 使客户区无效一次,但根本没有调用这些事件。

那么,制作一个可移动的子对话框的正确方法是什么,一旦你拖动它,它就会很好地更新客户区域,在选择后处于前台?

非常感谢您的帮助

斯特凡

4

0 回答 0