如何根据左侧点击树节点的不同,在右侧加载不同的对话框?

fjlangzi 2009-09-21 09:02:52
前面提问了一次,各位大侠连我的问题都没看懂,就回复一通,真是无奈。再问一次。

一个对话框,左侧是一个树控件,右侧是一个CPicture控件
要根据左侧点击的不容节点,在CPicture上加载不容的对话框,就像是一个变相的CTabCtrl控件,不过选择不同的页面是通过点击树的节点来实现的。
好像跟CSAPrefsDialog这样一个类有关,我不知道这是网上一个有名的类,还是其他的,反正我有这样一套代码,就实现了这样的效果,不过看起来挺复杂,想请教高手,有没有简单的方法实现。

我知道怎么判断左侧点击的是哪个节点,重要的是该怎样在右侧加载响应的对话框,谢谢各位了!!!!
...全文
360 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fjlangzi 2009-09-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 shunruo 的回复:]
建一个CMapStringPtr, 字串和指针的映射,根据树叶子节点的Lable找出相应的窗口指针,显示它。
[/Quote]

可以说具体一些吗? 当前对话框ID是 IDD_MCU,我要在该对话框上加载另一个对话框ID是IDD_NET.
可以教我怎样利用CMapStringPtr 创建子窗口IDD_NET并显示它吗
谢谢了。
zhuweiping2003 2009-09-22
  • 打赏
  • 举报
回复
建议使用单文档方式(窗体分割)加在不同的对话框
应该可以实现。
zhuweiping2003 2009-09-22
  • 打赏
  • 举报
回复
可以给不同的树项设置不同的data
m_tree.SetItemData(handle_treeitem, yourdata);
由这个data判断加载
_your_data = m_tree.GetItemData(handle_SelectedTreeItem);

凤矶 2009-09-22
  • 打赏
  • 举报
回复
建一个CMapStringPtr, 字串和指针的映射,根据树叶子节点的Lable找出相应的窗口指针,显示它。
fjlangzi 2009-09-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 gordon3000 的回复:]
你要求实现的方案不是一个好办法。

左侧点击TREE的节点,发送用户消息给右侧。右侧窗口就是一个View就可以,按不同需要在上面绘制控件。
[/Quote]
右侧页面太多,不可能根据消息,一个一个页面的去配置。
所以要加载对话框,而且要在已经弹出的对话框中加载其他的。
因为这是从View类上弹出来的对话框,似乎不能再考虑其自身怎么设计成View类了,就是对话框。
副组长 2009-09-21
  • 打赏
  • 举报
回复
你要求实现的方案不是一个好办法。

左侧点击TREE的节点,发送用户消息给右侧。右侧窗口就是一个View就可以,按不同需要在上面绘制控件。
fjlangzi 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 oyljerry 的回复:]
CPicture加载对话框?为什么不直接显示对应的不同对话框
[/Quote]
因为对话框很多,如果一个一个的弹出来,很烦。
所以在一个对话框,根据左侧选择节点的不同,动态的加载到右边。
oyljerry 2009-09-21
  • 打赏
  • 举报
回复
CPicture加载对话框?为什么不直接显示对应的不同对话框
oyljerry 2009-09-21
  • 打赏
  • 举报
回复
响应CTreeCtrl的节点点击消息:下面的代码是如果选择了某个节点,则同时选中他的父节点
void CTestDlg::OnClickTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
CPoint pt;
GetCursorPos(&pt);
m_tree.ScreenToClient(&pt);

UINT flags;

HTREEITEM hItem = m_tree.HitTest(pt, &flags);
if(hItem != NULL && (flags & TVHT_ONITEMSTATEICON))
{
MessageBox("On State Icon!");
if(m_tree.GetCheck(hItem))
{
HTREEITEM hParent = m_tree.GetParentItem(hItem);
if(hParent != NULL)
{
m_tree.SetCheck(hParent,FALSE);//hItem即将取消选择
}
}
else
{
HTREEITEM hParent = m_tree.GetParentItem(hItem);
if(hParent != NULL)
{
m_tree.SetCheck(hParent,TRUE); //hItem即将选中
}
}
}
if(hItem != NULL && (flags & TVHT_ONITEMBUTTON ))
{
MessageBox("On Button!");
}
*pResult = 0;
}

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧