如何向对话框中添加属性表 我建立了一个基于对话框的工程,左边添加了一个树控件,现在我想向右边添加若干属性表对话框,当单击树控件某一项目时,弹出不同的属性表对话框。也看了很多例子,一时之间还是弄不明白,所以想请高手指导指导。为了简单起见,就以一个对话框(包含一个树控件)、一个属性表对话框(包含一个编缉框)为例,当我单击树控件某一个项目时,在对话框上弹出我想要的属性表对话框。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 假设它们的ID分别为:IDD_DIALOG 、IDD_TREE、 IDD_PROPERTY、 IDD_EDIT 用Tab控件,搜“VC向导程序” 用CpropertySheet和CpropertyPage类.自己定义一个类,派生自CpropertySheet。再在CpropertySheet的构造函数中增加属性页,然后在IDD_DIALOG 中产生属性表,最后在TREE的响应函数中使用CpropertySheet::SetACtivePage()显示某一个属性页! Tab控件就可以实现,右边添加一个窗口就在树控件中加一个结点,结点的itemdata保存窗口索引,选择不同的结点时激活对应的tab页即可 大侠,帮我看看下面的代码哪个地方错了。BOOL CCOptionsTreeDlg::OnInitDialog(){ CImageList* pInfoImages = new CImageList; pInfoImages->Create(16, 16, ILC_COLOR8 | ILC_MASK, 2, 0); pInfoImages->Add(AfxGetApp()->LoadIcon(IDI_ICON1)); pInfoImages->Add(AfxGetApp()->LoadIcon(IDI_ICON2)); m_Tree.SetImageList(pInfoImages, TVSIL_NORMAL); HTREEITEM hTreeItem1; HTREEITEM hTreeItem2; hTreeItem1 = m_Tree.InsertItem("Root Item 1", 0, 1, TVI_ROOT, TVI_LAST); hTreeItem2 = m_Tree.InsertItem("Tree Item 1", 0, 1, hTreeItem1, TVI_LAST); m_Tree.SetItemData(hTreeItem2, (DWORD)&m_OptionsTree); hTreeItem1 = m_Tree.InsertItem("Root Item 2", 0, 1, TVI_ROOT, TVI_LAST); m_dlgPropSheet.AddPage(&m_OptionsTree);}void CCOptionsTreeDlg::OnSelchangingTree(NMHDR* pNMHDR, LRESULT* pResult) { NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; // TODO: Add your control notification handler code here HTREEITEM hCurrent = m_Tree.GetSelectedItem(); if(hCurrent) ((CPropertyPage*)m_Tree.GetItemData(hCurrent))->ShowWindow(SW_SHOW); *pResult = 0;} CPage m_OptionsTree; CNewPropertySheet m_dlgPropSheet; 我为什么不开心呀!! 求CWebBrowser2手册 ISAPI过滤器 在OnSendRawData中如何进行重定向 有关GPS定位问题 工具栏的问题 求一个空间射线与三角形平面相交并判断交点是否在三角形内的算法 怎样实现在程序所在的屏幕任何地方按右边出现选择菜单 请问哪儿有GDI+的库文件与头文件下载? SOS!!!SOS!!!SOS!!!SOS!!!SOS!!!SOS!!!SOS!!!完成端口高手请帮忙--在线等待 对ip层变成编程,主要涉及那些类或者API???有分!!! OpenGL的小问题 文件导入问题
自己定义一个类,派生自CpropertySheet。再在CpropertySheet的构造函数中增加属性页,
然后在IDD_DIALOG 中产生属性表,
最后在TREE的响应函数中使用CpropertySheet::SetACtivePage()显示某一个属性页!
BOOL CCOptionsTreeDlg::OnInitDialog()
{
CImageList* pInfoImages = new CImageList;
pInfoImages->Create(16, 16, ILC_COLOR8 | ILC_MASK, 2, 0);
pInfoImages->Add(AfxGetApp()->LoadIcon(IDI_ICON1));
pInfoImages->Add(AfxGetApp()->LoadIcon(IDI_ICON2));
m_Tree.SetImageList(pInfoImages, TVSIL_NORMAL);
HTREEITEM hTreeItem1;
HTREEITEM hTreeItem2;
hTreeItem1 = m_Tree.InsertItem("Root Item 1", 0, 1, TVI_ROOT, TVI_LAST);
hTreeItem2 = m_Tree.InsertItem("Tree Item 1", 0, 1, hTreeItem1, TVI_LAST);
m_Tree.SetItemData(hTreeItem2, (DWORD)&m_OptionsTree);
hTreeItem1 = m_Tree.InsertItem("Root Item 2", 0, 1, TVI_ROOT, TVI_LAST);
m_dlgPropSheet.AddPage(&m_OptionsTree);
}
void CCOptionsTreeDlg::OnSelchangingTree(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
HTREEITEM hCurrent = m_Tree.GetSelectedItem();
if(hCurrent)
((CPropertyPage*)m_Tree.GetItemData(hCurrent))->ShowWindow(SW_SHOW);
*pResult = 0;
}
CPage m_OptionsTree;
CNewPropertySheet m_dlgPropSheet;