MFC_2.10选项卡控件的封装
选项卡控件的封装
1.新建默认MFC项目
2.添加资源Dialog,属性style改child,边框改none,添加类取名CMyDialog1;
同理,CMyDialog2;
3.类向导,添加MFC类-CTabCtrl类,取名CMyTabCtrl。
4.CMyTabCtrl类添加自定义封装函数
VOID CMyTabCtrl::InesrtTabColumn(int count, ...)
{
va_list valist;
va_start(valist, count);
for (int i = 0; i < count; ++i)
{
// 获取字符串类型的值
LPCWSTR Text = va_arg(valist, LPCWSTR);
// 添加到选项卡
InsertItem(i, Text);
}
va_end(valist);
}
// 创建窗口必须要[对象][id]
VOID CMyTabCtrl::InsertTabDialog(int count, ...)
{
va_list valist;
va_start(valist, count);
// 计算出需要移动的位置
CRect Rect;
GetClientRect(&Rect);
Rect.DeflateRect(17, 44, -9, -12);
for (int i = 0; i < count; ++i)
{
// 获取对话框
CDialog* Dlg = va_arg(valist, CDialog*);
// 获取资源的 id
UINT DlgId = va_arg(valist, UINT);
Dlg->Create(DlgId);
// 移动窗口
Dlg->MoveWindow(&Rect);
// 将对话框添加到容器中
DialogVec.push_back(Dlg);
}
ShowTabDialog(0);
va_end(valist);
}
VOID CMyTabCtrl::ShowTabDialog(int index)
{
for (int i = 0; i < DialogVec.size(); ++i)
{
if (i == index)
DialogVec[i]->ShowWindow(SW_NORMAL);
else
DialogVec[i]->ShowWindow(SW_HIDE);
}
}
5.CMyTabCtrl类添加选项卡响应消息-消息-选择=TCN_SELCHANGE
添加。编辑程序
BEGIN_MESSAGE_MAP(CMyTabCtrl, CTabCtrl)
ON_NOTIFY_REFLECT(TCN_SELCHANGE, &CMyTabCtrl::OnTcnSelchange)
END_MESSAGE_MAP()
// CMyTabCtrl 消息处理程序
void CMyTabCtrl::OnTcnSelchange(NMHDR* pNMHDR, LRESULT* pResult)
{ // 获取点击了第几个
int index = GetCurSel();
// 显示指定的
ShowTabDialog(index);
*pResult = 0;
}
6.CMyTabCtrl头文件写
#include <vector> using namespace std;
vector<CDialog*> DialogVec;
7.系统默认Dialog添加绑定变量,取名m_TabCtrl,类型为CMyTabCtrl。
头文件添加CMyTabCtrl.h
8.系统默认Dialog相关cpp初始化
#include "CMyDialog1.h"
#include "CMyDialog2.h"
// 添加选项卡和名字
m_TabCtrl.InesrtTabColumn(2, L"第一个", L"第二个");
// 添加具体的对话框和id
m_TabCtrl.InsertTabDialog(2,
new CMyDialog1, IDD_DIALOG1,
new CMyDialog2, IDD_DIALOG2);
MFC_2.10选项卡控件的封装的更多相关文章
- MFC_2.5 选项卡控件的使用
选项卡控件的使用 1.新建默认MFC文件. 2.资源-添加Dialog-添加类.(假设生成3个,Dialog1Dialog2Dialog3) 3.类向导,添加类,点小三角形,添加MFC类.添加CTab ...
- 9.2.1 .net framework下的MVC 控件的封装(上)
在写.net core下mvc控件的编写之前,我先说一下.net framework下我们MVC控件的做法. MVC下控件的写法,主要有如下三种,最后一种是泛型的写法,mvc提供的控件都是基本控件. ...
- cocos2dx Tab选项卡控件的实现
选项卡控件在游戏和应用中很是常见,但是cocostudio里并没有实现好的选项卡控件,于是自己封装了 一个,效果如下: 代码: TabUiControl.h #pragma once //std #i ...
- 背水一战 Windows 10 (44) - 控件(日期类): CalendarView, DatePicker, TimePicker
[源码下载] 背水一战 Windows 10 (44) - 控件(日期类): CalendarView, DatePicker, TimePicker 作者:webabcd 介绍背水一战 Window ...
- KRBTabControl(中文)Windows选项卡控件
本文阐述了如何在C#使自定义Windows选项卡控件. Download demo project - 82.4 KB Download source - 252 KB 介绍 本文讨论如何使用.NET ...
- 9.2.2 .net framework下的MVC 控件的封装(下)
控件封装的部分说明 可能有人觉得应该前后端分离,我也承认这是应该的方向,我们也在考虑使用ng2等简化前端.但是,我们封装控件还是因为如下原因综合考虑的: 我们这是个框架,上面支撑了许多个应用,包含几百 ...
- 背水一战 Windows 10 (37) - 控件(弹出类): MessageDialog, ContentDialog
[源码下载] 背水一战 Windows 10 (37) - 控件(弹出类): MessageDialog, ContentDialog 作者:webabcd 介绍背水一战 Windows 10 之 控 ...
- 背水一战 Windows 10 (36) - 控件(弹出类): ToolTip, Popup, PopupMenu
[源码下载] 背水一战 Windows 10 (36) - 控件(弹出类): ToolTip, Popup, PopupMenu 作者:webabcd 介绍背水一战 Windows 10 之 控件(弹 ...
- 背水一战 Windows 10 (35) - 控件(弹出类): FlyoutBase, Flyout, MenuFlyout
[源码下载] 背水一战 Windows 10 (35) - 控件(弹出类): FlyoutBase, Flyout, MenuFlyout 作者:webabcd 介绍背水一战 Windows 10 之 ...
随机推荐
- linux下alias命令具体解释
linux下alias命令具体解释 用途说明 设置命令的别名.在linux系统中假设命令太长又不符合用户的习惯,那么我们能够为它指定一个别名. 尽管能够为命令建立"链接" 解决长文 ...
- 前端开发本地环境配置(Apache+Dreamweaver)
一.安装apache服务器 1.下载apache软件: 2.安装,直接下一步就好: 3.安装好后找到安装文件夹下的conf文件中的httpd.conf: 4.打开httpd.conf文件,做以下修改: ...
- NSArray和NSMutableArray的常用方法 (转)
NSArray和NSMutableArray的常用方法 (转) (2013-09-06 15:13:46) 标签: it 分类: ios编程 初始化方法: 1.init返回一个空数组 2.i ...
- [办公应用]word 2007:全屏快捷键,让复制图片保持原样大小(office 全屏快捷键)
最近同事咨询这两个问题: 1.word 2007内是否有全屏显示的快捷键,这样投影时,就可以快速切换到全屏. 2.从ppt或者excel复制一张较大的图片,word 2007 会默认让复制的图片缩小, ...
- [计算机故障]华为手机无法连接XP系统(inf中找不到所需的段落)
同事新买的华为手机麦芒C199,拍了些照片.结果连接电脑,没有反应. 后经打电话到华为,可以到华为官网下驱动. 地址如下: http://consumer.huawei.com/cn/support/ ...
- centos7 安装8188eu驱动小记
最小化安装把lsusb和lspci装上 使用lsusb 和lspci的命令, centos上的安装命令: yum -y install usbutils yum -y install pciutils ...
- 【BZOJ 4353】 Play with tree
[题目链接] 点击打开链接 [算法] 树链剖分 对于线段树的每个节点,记录这段区间的最小值,最小值的个数,值为0的个数,此外,还要维护两个懒惰标记 [代码] 本题细节很多,写程序时要认真严谨! #in ...
- bzoj1776
点分治/贪心 对于点分治的理解不够深刻...点分治能统计树上每个点对的信息,那么这里就是统计同种颜色点对之间的最大距离,自然可以用点分 然后点分,每次统计最大距离,但是略微卡常... 还有一种贪心的方 ...
- 昆石VOS3000_2.1.2.4完整安装包及安装脚本
安装包下载地址:http://www.51voip.org/post/56.html 安装教程: 上传安装包 ·给整个目录授权 chmod 777 /root/vosintsall `核实 关闭sel ...
- git回到没push的commit
创建: 2017/10/28 merge master以后数据库出了问题,改好以后发现view有点问题,commit以后没提交就reset了.过后才想起来怎么回去???吓成狗,索性找到了下面这个. ...