Встроенный диалог в Tab Control не может работать во втором диалоге, MFC

0

У меня есть код, который работает в главном диалоговом окне, но не может работать во втором (или третьем) диалоге. Дело в том, что я хочу, чтобы на каждой странице элемента управления вкладки отображался встроенный диалог, похожий на страницу свойств.

Сначала я создаю два диалога: 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, это не основное диалоговое окно, оно не сработает. Кто-нибудь может мне помочь? Заранее спасибо.

Теги:
mfc
dialog
tabcontrol

1 ответ

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

Когда вы создаете диалоговое окно без модели, попробуйте следующее:

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

  • 0
    Это работает, спасибо !!

Ещё вопросы

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