CDialog儿童窗户

时间:2016-08-11 16:41:31

标签: mfc move onpaint cdialog

我只是想使用一个好的旧MFC Dialog应用程序的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,并且都会更新完整的Client区域,因此会发生很多闪烁。

我尝试使用ON_WM_ACTIVATE()或ON_WM_SETFOCUS()仅使Client区域无效,但根本不调用这些事件。

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

很多帮助

的Stefan

0 个答案:

没有答案