CDialog дочерние окна
Я просто хотел использовать insde старого доброго приложения на основе MFC Dialog для более подвижных диалогов в качестве дочерних. После мастера решения я создал ресурс Dialog по умолчанию (дочерний стиль) и создал 2 диалога в OnInitDialog основного диалога:
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(), но эти события вообще не вызываются.
Итак, что будет правильным способом сделать подвижный дочерний диалог, который будет приятно обновлять клиентскую область, когда вы ее перетаскиваете, находясь на переднем плане после выбора?
Большое спасибо за помощь
Стефан