MFC——仿TabCtrl实现多页显示
2013-10-13 10:38
337 查看
在MFC中有自带的TabCtrl可以实现多页,但是那个标签放在上面,不太美观,并且字体格式也比较固定,当然这个标签头是可以重绘的。
首先,为什么要有多页显示的需求?就是在切换不同功能按钮的时候,能相应的显示出来。这样,就比较清晰。有人说,那也可以把所有的内容都放在一个界面上,在功能切换的时候,显示要显示的,隐藏不要显示的。没错,这样是可以实现,不过这样一个是界面布局很乱,另外就是,增加需要额外的界面控制逻辑,也很乱,在就是在业务处理上,也会出现一个按钮可能属于这个功能界面上,也有可能属于哪个功能界面上,这样也挺乱的。所以,需要不用的功能页用不用的界面。这也就是TabCtrl存在的意义。只是这个,并不想android里的TabHost那样好用,或者说,android里提供的方法,做界面要容易很多,不过也有可能是本人对MFC不够熟悉。言归正传,说TabCtrl。它虽然可以实现这种功能,但是表头太丑陋了。现在很多应用都在其上封装了自己的用的东西,像listCtrl、TabCtrl这样的。听说QQ的界面库做了2,3年。技术是在不断更新的,所以产品和项目里的技术也要用相对新的技术来实现。
这里想说一种简单的方法,当然不是最好的。
首先创建2个测试用的对话框,DlgTest1、DlgTest2,界面上放不同的按钮就好。
然后在主界面上放2个button,button1和button2,点button1显示DlgTest1,点button2显示DlgTest2。
在主界面的OnInitDialog()里添加:
这里的m_Rect是显示Dlg的区域。
在OnPaint()里添加:
然后在button1的按钮事件里添加:
在button2的按钮事件里添加:
这样就可以了,这也就是仿TabCtrl实现多页的效果。这个比重绘表头要简单些,当然也可以重绘表头这种,不过需要一点时间来研究和积累的。接下来有时间我会尝试的去做的,有一起的吗?
转载请注明原创链接:http://blog.csdn.net/wujunokay/article/details/12676243
首先,为什么要有多页显示的需求?就是在切换不同功能按钮的时候,能相应的显示出来。这样,就比较清晰。有人说,那也可以把所有的内容都放在一个界面上,在功能切换的时候,显示要显示的,隐藏不要显示的。没错,这样是可以实现,不过这样一个是界面布局很乱,另外就是,增加需要额外的界面控制逻辑,也很乱,在就是在业务处理上,也会出现一个按钮可能属于这个功能界面上,也有可能属于哪个功能界面上,这样也挺乱的。所以,需要不用的功能页用不用的界面。这也就是TabCtrl存在的意义。只是这个,并不想android里的TabHost那样好用,或者说,android里提供的方法,做界面要容易很多,不过也有可能是本人对MFC不够熟悉。言归正传,说TabCtrl。它虽然可以实现这种功能,但是表头太丑陋了。现在很多应用都在其上封装了自己的用的东西,像listCtrl、TabCtrl这样的。听说QQ的界面库做了2,3年。技术是在不断更新的,所以产品和项目里的技术也要用相对新的技术来实现。
这里想说一种简单的方法,当然不是最好的。
首先创建2个测试用的对话框,DlgTest1、DlgTest2,界面上放不同的按钮就好。
然后在主界面上放2个button,button1和button2,点button1显示DlgTest1,点button2显示DlgTest2。
在主界面的OnInitDialog()里添加:
m_test1.Create(IDD_DLG_TEST1, this); m_test2.Create(IDD_DLG_TEST2, this); CRect rect; GetClientRect(&rect); m_Rect.bottom = rect.bottom-20; m_Rect.top = rect.top + 20; m_Rect.left = rect.left + 120; m_Rect.right = rect.right-20; //默认显示test1 m_test1.MoveWindow(m_Rect); m_test1.ShowWindow(SW_SHOW);
这里的m_Rect是显示Dlg的区域。
在OnPaint()里添加:
dc.Rectangle(&m_Rect);
然后在button1的按钮事件里添加:
m_test2.ShowWindow(SW_HIDE); m_test1.MoveWindow(m_Rect); m_test1.ShowWindow(SW_SHOW);
在button2的按钮事件里添加:
m_test1.ShowWindow(SW_HIDE); m_test2.MoveWindow(m_Rect); m_test2.ShowWindow(SW_SHOW);
这样就可以了,这也就是仿TabCtrl实现多页的效果。这个比重绘表头要简单些,当然也可以重绘表头这种,不过需要一点时间来研究和积累的。接下来有时间我会尝试的去做的,有一起的吗?
转载请注明原创链接:http://blog.csdn.net/wujunokay/article/details/12676243
相关文章推荐
- 通过MFC实现数码管显示功能
- MFC实现类似qq的在屏幕右下角动画显示消息窗口
- mfc的项目里,想要实现点击tabcontrol的每个tab,切换到不同窗口显示不同摄像头的实时画
- 【MFC】实现 List Control 分页显示数据
- MFC中实现一个控件的隐藏和显示
- 用mfc实现组合框控件下拉列表显示
- MFC实现TabCtrl
- MFC中实现位图的透明显示
- MFC 中实现窗口淡入淡出、逐步放大显示效果
- TabActivity实现多页显示效果
- 远程控制编写之屏幕传输 MFC实现 屏幕截图 发送bmp数据 显示bmp图像
- MFC框架程序中全屏显示特性的实现
- MFC实现静态和动态显示bmp图片
- MFC 中实现窗口淡入淡出、逐步放大显示效果
- 实现MFC显示CV::Mat的函数
- MFC状态栏的实现举例:坐标显示
- MFC框架程序中全屏显示特性的实现
- MFC中主窗口显示前启动窗口的实现
- MFC调用HALCON实现相机采图和图像显示
- MFC文档应用程序实现文件拖拽到应用程序中显示