制作一个能摆放所有CWnd派生类的翻页控件遇到几个问题

majiaking3 2008-12-05 09:19:41
我正在制作一个能摆放所有CWnd派生类的翻页控件(例如动态生成一页按钮,然后可以上下翻页,让按钮显示数据库中的数据),现在遇到两个棘手的问题:
1. 由于不同控件的创建方法可能不同(比如控件的Style等),所以我现在把控件的创建过程交给用户自己完成,然后把创建完的控件vector传给我的翻页控件;
2. 当窗口最大化时,控件的个数应该比普通模式下的个数多,而我现在把控件的创建过程交给用户做,他们只知道普通窗口大小时需要多少控件,而最大化窗口时
控件的个数要动态计算出来,我就不知道怎么动态增加这些多出来的控件。因为不同控件的创建方法不同,我没法在我的翻页控件里知道用户是怎么创建的控件。而且
我还要考虑给该控件分配ID……

大家有没有其他主意怎么解决上述两个问题,如果你来做这个翻页控件,你觉得怎么做才能让他容纳不同种类的CWnd派生类并兼顾好上面的两个问题。
...全文
110 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
majiaking3 2008-12-10
  • 打赏
  • 举报
回复
实在没有人给出个满意的答案 只有结掉了
我最后是在OnSize的时候重新再全部按钮生成一次实现了。。。。虽然效率不行 但实在想不到什么好主意了
majiaking3 2008-12-05
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 chexlong 的回复:]
你写一个控件类,继承于CWnd,你可以定义你想做的属性和方法在里边。
然后在窗口类中,在适当的地方动态创建控件 [/Quote]
感谢你的回复!
但是你可能没考虑到我这种情况,

最大化后,需要创建多少个子控件是在我的翻页控件中计算的,比如最大化后它算出来还需要动态增加3个子控件,这时候我只知道要创建3个
CWnd派生类,但是具体如何创建我不知道。因为不能只用CWnd的Create来创建,我可能还要给每个控件设置风格,加载图片等。就算用你给的这个
“CMyControl”类,它也不知道具体是什么控件,也不知道具体如何创建啊?比如像你这样定死了是WS_CHILD |WS_VISIBLE|SS_BITMAP这种
窗口风格,但是对另外一个翻页控件的对象,它可能需要另外一种风格,它可能加载不了图片,那我不能还这么写他的创建过程啊。
玉古云投 2008-12-05
  • 打赏
  • 举报
回复
你写一个控件类,继承于CWnd,你可以定义你想做的属性和方法在里边。
然后在窗口类中,在适当的地方动态创建控件

pControl = new CMyControl;
ASSERT_VALID(pControl);
pControl->SetBitmap(IDB_BITMAP_PC);
pControl->Create(0, _T("Button PC"),WS_CHILD |WS_VISIBLE|SS_BITMAP,CRect(point.x, point.y, point.x+48 , point.y+48) , this , IDC_CTRL_PC);
majiaking3 2008-12-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chexlong 的回复:]
你的窗口没最大化之前怎么做的,之后就怎么做,不同的是上边控件的大小和位置变不变。
[/Quote]
窗口没最大化之前,页面里的控件是由用户创建的,那个时候用户是知道需要创建多少个控件并且知道每个控件是如何创建的(这个很重要,因为不同的CWnd派生类的创建方式是
不同的!比如按钮和CheckBox创建时就不一样);而窗口最大化之后,我虽然能计算出最大化之后需要多少控件并且可以计算出每个控件的位置和大小,但是如何创建他们呢?比如
最大化后,我发现页面上还能多放两个控件,但是我只知道这两个控件是CWnd的派生类,具体是什么我不知道啊,那我怎么创建他们呢?
玉古云投 2008-12-05
  • 打赏
  • 举报
回复
你的窗口没最大化之前怎么做的,之后就怎么做,不同的是上边控件的大小和位置变不变。
majiaking3 2008-12-05
  • 打赏
  • 举报
回复
谢谢楼上两位 , 但是你们好像没有说到如何解决最大化窗口时,控件数量改变的问题啊。
而且,我觉得一页一个对话框也太浪费了,每一页里摆放的控件都是相同的,不同的只是他们显示的内容而已
我只要创建一个页的控件,然后动态改变上面的文字就可以了。翻页的时候就是在给他们加载不同的文字。
现在关键问题是如何解决最大化窗口时控件数量的变化问题啊。。。。
e_sharp 2008-12-05
  • 打赏
  • 举报
回复
每一页一个对话框
cnzdgs 2008-12-05
  • 打赏
  • 举报
回复
每一页用一个子对话框,翻页就是切换对话框,用ShowWindow控制只显示其中一个,其余都隐藏。

15,980

社区成员

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

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