У меня есть код, который работает в главном диалоговом окне, но не может работать во втором (или третьем) диалоге. Дело в том, что я хочу, чтобы на каждой странице элемента управления вкладки отображался встроенный диалог, похожий на страницу свойств.
Сначала я создаю два диалога: 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