编写一个类,继承CTabCtrl类,
1、定义成员变量,包括对话框对象,当前项,总的项,对话框标题,ID等。
2、定义方法,参考书籍205页,实现分页,学习代码
CTabCtrl 用法:
(一)标签控制的主要功能
标签控制(Tab Control)是用来在一个窗口如对话框等中的同一用户区域控制多组显示信息或控制信息,
由顶部的一组标签来控制不同的信息提示,标签即可以是文本说明也可以是一个代表文本含义的图标,
或是两者的组合。针对不同的选择标签,都会有一组提示信息或控制信息与之相对应,供用户进行交互操作,
这在WINDOWS98的属性表中最常见。另外还存在一种特殊风格的标签,即TBS_BUTTONS风格的标签,
这种标签外观类似按钮,通过鼠标点击改变状态,一般用来执行一些功能而不是用来显示或控制信息。
提到标签,最快想到的应该是属性表对话(Property Sheet),这两者的配合应用更是随处可见。
属性表对话框有时也称为多页对话框(Multiple-Page Dialog)或是标签对话框(Table Dialog)
,最多可设置24个属性页(Property Page),通过顶部的标签来选择不同的属性页。
另外还有一种特殊的属性表对话框,就象VC++5.0中的类向导AppWizard一样,
其不存在供用户选择的标签,而是按照顺序依次控制属性页的显示,
并且还有一般属性页中不存在的“确认”、“上一步”、“下一步”、“完成”和“帮助”等按钮。
标签控制在MFC中只存在一种封装形式,即控制类CtabCtrl。在使用标签时即可以在对话框中直接添加,
也可以在窗口中作为子窗口来使用,只不过这样应用时需要选创建标签。
(二)标签控制的对象结构
1、标签控制的建立方法
CTabCtrl&tabCtrl 建立标签控制对象结构
Create 建立标签控制并绑定对象
标签控制CTabCtrl::Create的调用格式如下:
BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );
其中参数dwStyle用来确定标签控制的风格;rect用来控制标签的大小和位置;
pParentWnd用来确定标签控制的父窗口句柄;nID用来确定标签控制的标识符。
标签控制的风格可以是如下值的组合:
TCS_BUTTONS 表示将标签外观定义成类似按钮
TCS_FIXEDWIDTH 使所有标签具有相同的宽度
TCS_FOCUSNEVER 使特定标签永远不接收输入焦点
TCS_FOCUSONBUTTONDOWN 当标签被鼠标点击时接收输入焦点,其仅与TCS_BUTTONS合用
TCS_FORCEICONLEFT 强制图标在左面,剩余部分使标签居中
TCS_FORCELABELLEFT 使图标和标签均左对齐
TCS_MULTILINE 允许标签控制显示多行标签
TCS_OWNERDRAWFIXED 允许父窗口自绘标签
TCS_RIGHTJUSTIFY 使标签右对齐
TCS_SHAREIMAGELISTS 当控制被撤消时标签控制的图像不被撤消
TCS_TOOLTIPS 允许标签控制存在工具提示控制
TCS_TABS 标签正常显示,为默认状态
TCS_SINGLELINE 将标签只显示在一行上,默认状态
TCS_RAGGEDRIGHT 不使标签自动填满控制区域,默认状态
同样,标签控制还可以使用窗口的一些控制风格:
WS_CHILD 为标签控制创建子窗口,只能与WS_POPUP风格一起使用
WS_VISIBLE 建立一个初始可视的标签控制
WS_DISABLED 建立一个初始不可视的标签控制
WS_GROUP 建立标签控制群组的第一个控制
WS_TABSTOP 建立可用TAB键移动的标签控制
2、标签控制的属性类
标签控制的属性类包括取得与标签控制相关联的图像列表GetImageList、
设置标签控制的图像列表SetImageList、取得标签控制中标签的总数GetItemCount、
取得标签控制中特定标答的相关信息GetItem、设置标签的部分或全部属性SetItem、
检测当前被选中的标签GetCurSel、将一个标签设置为选中状态SetCurSel和取得具有当前输入焦点的标签SetCurSel等。
3、标签控制的操作方法
标签控制的操作方法包括在标签控制中插入一个标签InsertItem、删除一个标签 DeleteItem、
从标签控制中删除所有项目DeleteAllItems、从标签控制中删除一个图像列表RemoveImage和绘制标签控制中的特定一项DrawItem等。
(三)标签控制的数据结构
在使用标签控制时,必须使用的函数就是在标签控制中插入标签。函数InsertItem的原形如下:
BOOL InsertItem(int nItem,TC_ITEM * pTabCtrlItem);
该函数中的TC_ITEM为添加标签时所使用信息的数据结构,其数据成员的定义方法及含义如下:
typedef struct _TC_ITEM {
UINT mask; // 确定结构成员的屏蔽或设置位
UINT lpReserved1; // 保留未用
UINT lpReserved2; // 保留未用
LPSTR pszText; // 标签名称字符串
int cchTextMax; // 标签名称字符串缓冲区大小
int iImage; // 标签控制的图像索引号
LPARAM lParam; // 应用程序定义的相关32位数据
} TC_ITEM;
当鼠标点击标签控制中的标签时,标签控制就会向其父窗口发送相关的通知消息,通过处理这些通知消息,程序可以实现各种功能