MFC——table控件的使用

table控件的使用
创建自定义table类,继承自CTabCtrl
类向导,添加MFC类

创建CMyTab类

给tab控件添加变量,变量类型为刚才创建的自定义类

给tab控件添加标签

void CMyTab::PreSubclassWindow()
{
// TODO: 在此添加专用代码和/或调用基类
InsertItem(0, L"A");
InsertItem(1, L"B");
InsertItem(2, L"C");
CTabCtrl::PreSubclassWindow();
}
准备3个子窗口资源

设置窗口属性为子窗口口,无边框

添加类

重复以上操作3次
把以上子窗口作为tab控件的子窗口->定义成员变量,并初始化
void CMyTab::PreSubclassWindow()
{
// TODO: 在此添加专用代码和/或调用基类
InsertItem(0, L"A");
InsertItem(1, L"B");
InsertItem(2, L"C");
m_child[0] = new CMyDlgA;
m_child[0]->Create(IDD_DIALOG1,this);
m_child[1] = new CMyDlgB;
m_child[1]->Create(IDD_DIALOG2,this);
m_child[2] = new CMyDlgC;
m_child[2]->Create(IDD_DIALOG3,this);
// 把子窗口移动到和客户区一样大
CRect rt = {};
GetClientRect(&rt);
rt.DeflateRect(0, 25, 0, 0);
m_child[0]->MoveWindow(&rt);
m_child[0]->ShowWindow(SW_SHOW);
CTabCtrl::PreSubclassWindow();
}
添加按钮切换消息

void CMyTab::OnTcnSelchange(NMHDR pNMHDR, LRESULT pResult)
{
// TODO: 在此添加控件通知处理程序代码
pResult = 0;
int nSel = GetCurSel();
// 隐藏之前的窗口,只显示现在点击的这个标签所在的窗口
for (int i=0;i<3;i++)
{
m_child[i]->ShowWindow(SW_HIDE);
}
// 把子窗口移动到和客户区一样大
CRect rt = {};
GetClientRect(&rt);
rt.DeflateRect(0, 25, 0, 0);
m_child[nSel]->MoveWindow(&rt);
m_child[nSel]->ShowWindow(SW_SHOW);
}
变参函数
void Fun(int nCount, ...) {
va_list va;
va_start(va, nCount);
// 循环读取变参参数
for (int i=0;i<nCount;i++)
{
// 取int数
int n = va_arg(va, int);
char
p = va_arg(va, char);
printf("%d%s\n", n, p);
}
va_end(va);
}
int main()
{
Fun(3, 12, "12", 34, "34", 56, "12345");
Fun(2, 88,"34", 56, "12345");
return 0;
}
TABLE控件的封装
前面几步:添加table控件,自定义table类,绑定table变量,准备子窗口,和前面的table控件使用一样
提供一个变参接口给使用该table控件的人用
// 标题 对话框 对话框ID
void CMyTab01::MyInsertItem(DWORD dwCount, ...)
{
va_list va;
va_start(va, dwCount);
m_dwCount = dwCount;
for (DWORD i = 0 ; i< dwCount;i++)
{
TCHAR
pHeader = va_arg(va, TCHAR);
CDialogEx
pWnd = va_arg(va, CDialogEx*);
UINT uID = va_arg(va, UINT);
InsertItem(i, pHeader);
pWnd->Create(uID, this);
m_child[i] = pWnd;
}
va_end(va);
// 把子窗口移动到和客户区一样大
CRect rt = {};
GetClientRect(&rt);
rt.DeflateRect(0, 25, 0, 0);
m_child[0]->MoveWindow(&rt);
m_child[0]->ShowWindow(SW_SHOW);
}
对话框调用该接口,实现table控件的子窗口个数动态增加
m_tab.MyInsertItem(3,
L"我是1号", new CMyDlgA01, IDD_DIALOG1,
L"我是2号", new CMyDlgB01, IDD_DIALOG2,
L"我是3号", new CMyDlgC01, IDD_DIALOG3);

原文地址:http://blog.51cto.com/13652962/2087874

时间: 2024-08-02 13:28:01

MFC——table控件的使用的相关文章

开发ActiveX控件调用另一个ActiveX系列1——开发一个MFC ActiveX控件

ActiveX开发的教程有很多,我也从中受益匪浅,例如以下这几篇: 基本教程:http://www.cnblogs.com/guenli/articles/1629915.html 注意事项:http://jon-lt.iteye.com/blog/1676272 属性.方法开发:http://blog.csdn.net/waxgourd0/article/details/7652478 但是由于我的目的是开发一个身份证识别仪的ActiveX控件,因此我就要先仿照识别仪ActiveX开发一个Ac

MFC各种控件的常见操作(逐步添加中......)

由于经常切换系统或界面框架进行编程,难免有时会忘记之前的编程函数等等.所有在此自己做一个备份,以防止重新充电带来的痛苦! 1.CButton 1.1 在VC中编程实现按钮的启用(enable)和禁用(disable) 1.1.1 方式1:在对控件添加变量以后 m_btnQuit.EnableWindow(FALSE); //禁用按钮 m_btnQuit.EnableWindow(TRUE); //启用按钮 m_btnQuit.EnableWindow(FALSE); //禁用按钮 m_btnQu

MFC树控件的使用

HICON hIcon[4];      // 图标句柄数组 // 加载三个图标,并将它们的句柄保存到数组 hIcon[0] = theApp.LoadIcon(IDI_ICON_TREE_CLOSE); hIcon[1] = theApp.LoadIcon(IDI_ICON_TREE_EXPEND); hIcon[2] = theApp.LoadIcon(IDI_ICON_VIDEO_USER_OFFLINE); hIcon[3]=theApp.LoadIcon(IDI_ICON_VIDEO_

MFC TreeCtrl 控件(一):简单使用

本文描述了 MFC 中的树形控件 TreeCtrl 的简单使用,内容包括数据项的添加.图标设置.提示信息设置等. 新建基于对话框的应用程序,添加一个 TreeCtrl ,为其定义一个控件变量 m_userTreeCtrl,并将其属性:Has Buttons.Has Lines.Lines At Root和 Info Tip 都设为True.插入3个Icon资源,分别作为 管理员.部门.用户的图标.定义类变量 CImageList m_imageList 保存图标列表,定义类变量 CString

mfc中 控件 对话框 添加颜色 背景图片

1 设置对话框透明 在设置控件颜色中要使用 nCtlColor Contains one of the following values, specifying the type of control: CTLCOLOR_BTN   Button control CTLCOLOR_DLG   Dialog box CTLCOLOR_EDIT   Edit control CTLCOLOR_LISTBOX   List-box control CTLCOLOR_MSGBOX   Message b

VC/MFC ListCtrl 控件功能使用汇总(转)

以下未经说明,listctrl默认view 风格为report 相关类及处理函数 MFC:CListCtrl类 SDK:以 "ListView_"开头的一些宏.如 ListView_InsertColumn -------------------------------------------------------------------------------- 1. CListCtrl 风格      LVS_ICON: 为每个item显示大图标      LVS_SMALLIC

Unity编辑器开发:官方风格的Table控件

Unity编辑器开发:官方风格的Table控件 Table控件能够非常直观地展现批量的数据.在Unity中,Light Explorer就是一个典型的具有Table控件的窗口. 如上图所示,窗口上方是4个TabButton.下面就是一个Table.这个Table功能非常强大,有列表,排序,筛选,实时同步数据更新,实时同步选择等功能. 在Unity项目开发中,也常常需要做这种Table数据的展示或者类似的功能,比如简单的一个需求,找出当前场景中所有的Camra,并显示它的某些属性.用Table控件

如何将 MFC ActiveX 控件标记为安全,脚本和初始化

MSDN原文.ActiveX控件标记安全(可以不仅仅是MFC ActiveX) 概要 默认情况下,MFC ActiveX 控件未标记为对脚本编写是安全的和对初始化是安全的.控制运行在 Internet Explorer 中使用的安全级别设置为中或高时,这一点很明显.在上述这些模式中,控件的数据是不安全或不可能安全脚本中使用该控件,可能会显示警告. 有两个控件可用于消除这些错误的方法.第一个涉及实现 IObjectSafety 接口的控件,并对于想要更改其行为变得"安全"的互联网浏览器的

OpenCV在MFC图像控件内显示图像

1.依照文章<OpenCV+MFC显示图像>,完毕配置. 2.创建对应的图像控件,button控件. 3.进行类型转换. 在当前OpenCV2版本号内,图像格式为cv::Mat ,而该格式无法直接在MFC内显示.因此,须要将其转换为能够在MFC内显示的CvvImage类格式,该类内有函数 DrawToHDC()支持MFC.试了一下无法直接实现,须要曲线救国.首先,将 格式cv::Mat变换为格式IplImage,再转换格式为 CvvImage. 还有问题,眼下openCV2版本号不再支持Cvv