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 之 ...
随机推荐
- 基于cocos2d-x的跑酷游戏,不同高度地面的碰撞检測demo,有兴趣能够看一看
1. demo大致分为4个模块: 地图,角色,障碍 逻辑检測认为和不同高度地面的碰撞.1次跳和2连跳的实现. 代码链接:http://download.csdn.net/detail/zangleng ...
- TCP/IP常见问题总结(二)
上一篇的传送门:TCP/IP常见问题总结(一) 6. TCP滑动窗体与回退N帧协议 TCP作为一个提供可靠服务的传输层协议,对于数据的发送必须拥有一套良好的反馈机制.让发送方得知接收方接收到了数据.而 ...
- javascript下将字符类型转换成布尔值
办不到!孙子,我告诉你,这办不到! 比如说, var sb = "false"; alert(!!sb);//结果显示true! 事前是想得很美的: sb == "fal ...
- GuiLite 1.2 发布(希望通过这100+行代码来揭示:GuiLite的初始化,界面元素Layout,及消息映射的过程)
经过开发群的长期验证,我们发现:即使代码只有5千多行,也不意味着能够轻松弄懂代码意图.痛定思痛,我们发现:虽然每个函数都很简单(平均长度约为30行),可以逐个击破:但各个函数之间如何协作,却很难说明清 ...
- 洛谷P2827 蚯蚓——思路题
题目:https://www.luogu.org/problemnew/show/P2827 思路... 用优先队列模拟做的话,时间主要消耗在每次的排序上: 能不能不要每次排序呢? 关注先后被砍的两条 ...
- JeePlus:代码生成器
ylbtech-JeePlus:代码生成器 1.返回顶部 1. 代码生成器Jeeplus代码生成器可以快速提高你的开发效率代码生成器可以0编码快速开发,通过配置生成数据库,mapper,service ...
- 用C#读取txt文件的方法(转)
.使用FileStream读写文件 文件头: using System; using System.Collections.Generic; using System.Text; using Syst ...
- GCD中各种队列和任务执行方式的组合
一.概念回顾 1.GCD全称 Grand Central Dispatch ,是纯C语言,提供了非常多强大的函数,来进行系统线程的管理. 2.优势:GCD是苹果公司为多核的并行运算提出的解决方案.GC ...
- 洛谷 P1414 又是毕业季II(未完成)
题目背景 “叮铃铃铃”,随着高考最后一科结考铃声的敲响,三年青春时光顿时凝固于此刻.毕业的欣喜怎敌那离别的不舍,憧憬着未来仍毋忘逝去的歌.1000多个日夜的欢笑和泪水,全凝聚在毕业晚会上,相信,这一定 ...
- [转]C语言/C++中如何产生随机数
C语言/C++怎样产生随机数:这里要用到的是rand()函数, srand()函数,和time()函数. 需要说明的是,iostream头文件中就有srand函数的定义,不需要再额外引入stdlib. ...