Исправлено форматирование текста. — SchweinDeBurg
День добрый.
Господа не подскажите как реализивоать то что мне нужно.
А нужно:
Есть класс CDialogA наследник CDialog.
IDD в нем например IDD_A_DIALOG (лежит в ресурсах)
есть некотрые переменные — члены класса. DDX к ним.
и одна важная m_uiTemplate по умолчанию у становленная в ноль
в программе делаем
CDialogA dlgA;
dlgA.DoModal();
Все прекрассно, все работает.
Теперь проблемка:
Есть класс CDialogB наследник CDialogA
IDD в нем неважен.
В конструкторе с CDialogB я устанавливаю m_uiTemplate (из родительского класса CDialogA) в IDD_B_DIALOG.
IDD_B_DIALOG есть в ресурсах (стиль окна CHILD, CONTROL, CLIPSIBLINGS).
Так же в CDialogB есть свои переменные и они связанны DDXом.
Задача.
Надо вставить CDialogB в CDialogA. Допустим в центр окна (для простоты примера).
Тоесть CDialogA создается со своим шаблоном IDD_A_DIALOG, а в CDialogA::OnInitDialog() создается дочернее окно на основе m_uiTemplate (если она не ноль). В нашем случае равная IDD_B_DIALOG.
Я пытался многими способами сделать это но не вышло
Единственно что-то похожее на правду получилась при
class CDialogA::public CDialog{
....
...
CDialog m_pChildDlg;
}
CDialogA::OnInitDialog(){
CDialog::OnInitDialog()
if(uiTemplate){
m_pChildDlg.Create(uiTemplate, this);
m_pChildDlg.ShowWindow(SW_SHOW);
}
.......................
}
Но при таком способе сообщения от контролов (IDD_B_DIALOG) не доходят до DDX от CDialogB. Естественно.
Вопрос: каким же образом мне заставить сообщения обрабатываться
Мне кажется что я не знаю техники реализации таких окон. Может подскажите? Или ссылку какую кините.
Заранее спасибо.