ARX 创建属性表单对话框
思路:
创建若干个PropPageDialog类型对话框(一般的Digloa通过更改属性也可以变成PropPageDialog),
然后将其中一个作为主对话框,用于承载其它标签项对话框,
将主对话框创建一个类,继承于AutoCAD ARX 的Tab类CAcUiTabMainDialog, 其它的某些对话框
则继承CAcUiTabChildDialog, 用于作为选项卡.
在主对话框中添加一个Tab控件, 再将Tab控件关联至一个ARX中CAdUiTab 类型的变量,
交在此Tab中添加选项卡.
启动 VS08, 创建一个ARX 工程.(似乎是废话)
添加一个表单对话框
建议使用下面三种属性状态
使用ARX的模板,创建一个类
选择一个 CAcUiTabMainDialog , 作为表单(或标签)页的主对话框.
同样, 再添加两个对话框, 选择 CAcUiTabChildDialog, 用于加入标签页中.
在CAcUiTabMainDialog 的对话框中添加一个 Tab控件
重写 OnInitDialog
添加命令
最终效果
在添加了 CAcUiTabMainDialog 以及CAcUiTabChildDialog 的对话框后,
在 CAcUiTabChildDialog 的对话框类的头文件中加入两个标签页对话框的指针函数
以及一个CAdUiTab 控件关联变量
头文件:
CAdUiTab m_tabSheet;// TAB控件变量
CSheetOne *m_pSheetOne;// 表单1变量
CSheetTwo *m_pSheetTwo;// 表单2变量
将标签页添加至主对话框中
源文件:
将指针分配及释放内存
CMainSheet::CMainSheet (CWnd *pParent /*=NULL*/, HINSTANCE hInstance /*=NULL*/)
: CAcUiTabMainDialog (CMainSheet::IDD, pParent, hInstance)
{
// 指针分配
m_pSheetOne = new CSheetOne;
m_pSheetTwo = new CSheetTwo;
}
// 删除分配的指针空间
CMainSheet::~CMainSheet()
{
delete m_pSheetOne;
delete m_pSheetTwo;
}
// 手工处理 CAdUiTab 控件与控件变量的数据处理函数
void CMainSheet::DoDataExchange (CDataExchange *pDX)
{
CAcUiTabMainDialog::DoDataExchange (pDX) ;
// TAB 变量与控件关联
DDX_Control(pDX, IDC_TAB_SHEET, m_tabSheet);
}
BOOL CMainSheet::OnInitDialog()
{
CAcUiTabMainDialog::OnInitDialog();
// 加入表单页
m_tabSheet.AddTab(0, _T("表单名"), IDD_PROP_ONE, m_pSheetOne);
m_tabSheet.AddTab(1, _T("XX"), IDD_PROP_TWO, m_pSheetTwo);
return TRUE;
}