请教高手,急,关于propertysheet的问题,在第一个propertypage中有一个CTreeCtrl,当选中CTreeCtrl中某一个根节点......详细提问内容,请进

userbean 2008-07-08 11:40:13
关于propertysheet的问题,在第一个propertypage中有一个CTreeCtrl,当选中CTreeCtrl中某一个根节点,并单击第一个propertypage中的"确定"按钮时,动态生成第二个propertypage;如此所做,当再次选中CTreeCtrl中某一个根节点,并单击第一个propertypage中的"确定"按钮时,动态生成第三个propertypage;
以此类推可以动态生成n个propertypage.并且从第二个以后的propertypage(包括第二个)都是同一个样式的对话框.
我要实现以上的动态添加propertypage的功能,我该怎么做啊?请jiangsheng专家给予我帮助,也请懂的朋友帮帮我,不胜感激~~~
...全文
186 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
userbean 2008-07-14
  • 打赏
  • 举报
回复
还是不行,我用了其它办法规避了这个弊端,还是要谢谢你的帮助,我现在结贴
cnzdgs 2008-07-10
  • 打赏
  • 举报
回复
没用过mobile,不过即使只有时不显示,再AddPage之后也应该显示才对。你可以试试刷新一下控件。
userbean 2008-07-10
  • 打赏
  • 举报
回复
其实我是用vs2005做的mobile模拟器上的MFC界面,我也试验过了,在mobile上只有一个属性页时,的确是不显示标签的;
单纯的MFC就可以显示.
cnzdgs 2008-07-10
  • 打赏
  • 举报
回复
如果GetPageCount返回结果是对的,可以再试试用SetActivePage自己设置活动页。
cnzdgs 2008-07-10
  • 打赏
  • 举报
回复
就是调用Invalidate函数。你可以先试试把窗口用其它窗口遮挡一下,再移开,看看会不会出来。
另外,在AddPage之后GetPageCount看看返回结果对不对。
userbean 2008-07-10
  • 打赏
  • 举报
回复
如何刷新控件?
userbean 2008-07-09
  • 打赏
  • 举报
回复
哦,先谢了,我怎么没想到用GetParent()呢,我明天去单位试试
cnzdgs 2008-07-09
  • 打赏
  • 举报
回复
从CPropertyPage派生两个类,一个作为第1页,另一个用作其它页,假设名称为CPageA、CPageB。在CPageA中响应TreeCtrl的点击通知并判断需要添加页时:
CPropertySheet* sheet = GetParent();
CPageB* page = new CPageB;
sheet->AddPage(page);

删除页时用CPropertySheet类的GetPage、RemovePage、delete指针。
userbean 2008-07-09
  • 打赏
  • 举报
回复
代码我跟过了,全部都可以执行到,但就是不显示;
在我这里,只有一个属性页时,属性页标签是不显示的;只有两个或者两个以上属性页时,属性页标签才会显示出来;
是不是想办法让只有一个属性页时,也显示属性页标签,就应该可以了?
cnzdgs 2008-07-09
  • 打赏
  • 举报
回复
怎么会有这种情况?你在AddPage处设置个断点,看看是不是没执行到。
userbean 2008-07-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cnzdgs 的回复:]
从CPropertyPage派生两个类,一个作为第1页,另一个用作其它页,假设名称为CPageA、CPageB。在CPageA中响应TreeCtrl的点击通知并判断需要添加页时:
CPropertySheet* sheet = GetParent();
CPageB* page = new CPageB;
sheet->AddPage(page);

删除页时用CPropertySheet类的GetPage、RemovePage、delete指针。
[/Quote]

cnzdgs 我用你的这种方法试了一下, 当在CPageA中响应TreeCtrl的点击通知并判断需要添加页时,并没有出现新的属性页;
而当我同时添加两个CPageA时,再点击通知判断需要添加页时,就会出现新的属性页了,为什么会这样?
cnzdgs 2008-07-09
  • 打赏
  • 举报
回复
这样做不会有问题,你把程序发给我看一下,wasay@yeah.net。
或者你留给E-mail地址,我发程序给你。(告诉我你用的VC版本)
zhstars 2008-07-09
  • 打赏
  • 举报
回复
3楼正解!
userbean 2008-07-09
  • 打赏
  • 举报
回复
CPropertySheet是单独构造的一个类,在这个类的两个构造函数中分别加入AddPage(&PageA);
然后在主对话框的OnInitDialog()中:
CPropSheet sheet(L"IMS");
sheet.DoModal();
cnzdgs 2008-07-09
  • 打赏
  • 举报
回复
还真没见到过不显示标签的情况,默认都是有标签的,你的CPropertySheet和第1个属性页是怎么构造和设置的?
userbean 2008-07-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cnzdgs 的回复:]
动态构造propertypage并添加到propertysheet就可以了。
[/Quote]
我是新手,请一楼说详细一些,谢谢!
cnzdgs 2008-07-08
  • 打赏
  • 举报
回复
动态构造propertypage并添加到propertysheet就可以了。

15,976

社区成员

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

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