Как сделать два диалоговых окна в одно комбинированное диалоговое окно с помощью MFC?

0

В настоящее время у меня есть два шаблона диалогового окна в моих ресурсах.

Я хочу динамически добавлять содержимое на правильном шаблоне в диалоговое окно в левом шаблоне. Как мне это сделать?

Изображение 174551

Выход должен выглядеть следующим образом: Изображение 174551

Кроме того, я использую MFC c++. Я очень новичок в этом, и я был бы очень признателен за любую помощь!

Вот что я пытался сделать, но только главное диалоговое окно:

MainDialogBox *mainDlg = new MainDialogBox();
subDialogBox *subDlg = new subDialogBox(mainDlg);
  • 0
    Я знаю, что это не полезно, но нужно ли вам использовать MFC?
  • 0
    К сожалению, да, я должен ..
Теги:
mfc

1 ответ

2
Лучший ответ

Измените шаблон дочернего диалога, удалив его стили заголовка и границы. Это заставит его вписаться и выглядеть как часть родительского диалога.

Затем вы создаете дочерний диалог как немодальное диалоговое окно, родительское окно которого является родительским диалогом. (Используйте CDialog :: Create, чтобы создать немодальный диалог.) Если вы уже это делаете, а второе диалоговое окно не показывает, возможно, вы не установили стиль "Видимый".

Когда вы создаете родительский диалог, дайте ему стиль WS_EX_CONTROLPARENT. Это поможет при навигации по клавиатуре между родительским и дочерним.

Наконец, вам нужно поместить дочерний диалог, где вы хотите, в родительском диалоговом окне. Родитель может передать в x, y точку или прямоугольник в конструктор диалога. Затем ребенок (в OnInitDiialog) может позиционировать себя, вызывая SetWindowPos.

  • 0
    спасибо, брат!
  • 1
    Есть более простой способ расположить вложенный дочерний диалог. Просто создайте статическое «скрытое» текстовое поле в родительском диалоге в той позиции, в которой вы хотите, чтобы появился ребенок. Дайте ему имя ресурса, отличное от IDC_STATIC. Затем вы можете получить координаты «скрытого» статического поля и использовать его для позиционирования вашего дочернего диалога.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню