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 之 ...
随机推荐
- Swift—使用try?和try!区别-仅供参考
在使用try进行错误处理的时候,经常会看到try后面跟有问号(?)或感叹号(!),他们有什么区别呢? 1.使用try? try?会将错误转换为可选值,当调用try?+函数或方法语句时候,如果函数或方 ...
- 【v2.x OGE-example 第三节 播放精灵动画】
1. 位置:Drawing_example --> SpriteAnimated 2. 类名:SpriteAnimated 3.利用AnimatedSprite动画精灵类能够实现多种多种动作. ...
- Linux系统编程_6_进程环境(C程序典型的存储空间)
1.八种结束Linux进程的方法: 五种正常终止方式: main函数返回: 调用exit: 调用_exit或_Exit 最后一个线程从其启动例程返回 最后一个线程调用pthread_exit 三种异常 ...
- iOS开发中訪问相冊摄像像头
iOS开发中訪问相冊摄像像头 源代码下载地址http://download.csdn.net/download/jingjingxujiayou/7270479 在AppDelegate.m文件里 - ...
- JspSmartUpload 实现上传
2.save 作用:将所有上传文件保存到指定文件夹下,并返回保存的文件个数. 原型:public int save(String destPathName) 和public int save(St ...
- 【WinHec启发录】透过Windows 10技术布局,谈微软王者归来
每一个时代都有王者,王者的成功,往往是由于恰逢其时地公布了一个成功的产品(具有里程碑意义,划时代的产品).Windows 95的成功标示着微软是PC时代的王者:WinXP的成功标示着微软是互联网时代的 ...
- javascript里的prototype
在javascript中,prototype是函数的一个固有属性,其他对象,比如字符串什么的,并没有这个属性. 这个属性做什么用呢? 1.用于该函数的所有实例进行共享 比如,共同的属性,共同的方法.类 ...
- ramfs、rootfs和initramfs【转】
ramfs, rootfs and initramfs October 17, 2005 Rob Landley <rob@landley.net> =================== ...
- 纯css3实现美化复选框和手风琴效果(详细)
关键技术点和原理: 原理就是把 checkbox或 radio 给隐藏掉 ,然后给选框 绑定一个label标签. 然后用label标签作为容器,在里面放一个:before或一个after 用bef ...
- Vijos 1193 扫雷 【动态规划】
扫雷 描述 相信大家都玩过扫雷的游戏.那是在一个n*n的矩阵里面有一些雷,要你根据一些信息找出雷来.万圣节到了,“余”任过流行起了一种简单的扫雷游戏,这个游戏规则和扫雷一样,如果某个格子没有雷,那么它 ...