У меня есть следующий код, который работает в главном диалоге, но не может работать во втором (или третьем) диалоге. Дело в том, что я хочу, чтобы на каждой странице вкладки отображался встроенный диалог, он похож на страницу свойств.
Сначала я создаю два диалога, IDD_DIALOG1
а также IDD_DIALOG2
Затем я меняю их стиль на child
и граничит с None
, После этого я добавляю CDialog
класс для каждого из них.
В моем MainDialog.h
У меня есть следующий код:
#include "Dialog1.h"#include "Dialog2.h"...
public:
CDialog1 m_para1;
CDialog2 m_para2;
CTabCtrl m_TabCtrl;
В моем MainDialog.cpp
Я использую следующий код для встраивания диало в OnInitDialog
:
m_TabCtrl.InsertItem(0, _T("TAB1"));
m_TabCtrl.InsertItem(1, _T("TAB2"));
m_para1.Create(IDD_DIALOG1,GetDlgItem(IDD_MAINDIALOG));
m_para2.Create(IDD_DIALOG2,GetDlgItem(IDD_MAINDIALOG));
CRect rs;
m_TabCtrl.GetClientRect(&rs);
rs.top+=37;
rs.bottom+=8;
rs.left+=13;
rs.right+=7;
m_para1.MoveWindow(&rs);
m_para2.MoveWindow(&rs);
m_para1.ShowWindow(TRUE);
m_para2.ShowWindow(FALSE);m_TabCtrl.SetCurSel(1);
Используя этот способ, он может работать в этом случае. Но если я хочу использовать этот метод в моем SecondDialog
, не главный диалог, он не может работать. Кто-нибудь может мне помочь? Заранее спасибо.
Когда вы создаете немодальное диалоговое окно, попробуйте это:
m_para1.Create(IDD_DIALOG1,&m_TabCtrl);
m_para2.Create(IDD_DIALOG2,&m_TabCtrl);
Второй параметр Create
Функция является точкой для родительского объекта окна (типа CWnd
) к которому принадлежит объект диалога. Тип возвращаемого значения GetDlgItem
функция HWND
,
Смотрите следующее:
http://msdn.microsoft.com/en-us/library/tc46f3be.aspx
http://msdn.microsoft.com/en-us/library/kc6x1ya0.aspx
Других решений пока нет …