VC++ CTabCtrl控件自定义宏使用例子

来源:互联网 发布:影子网络怎么进入 编辑:程序博客网 时间:2024/04/30 15:31

为了更方便地使用VC++中的CTabCtrl控件,特在YTabCtrl.h文件中定义了几个宏,具体包括:

  • YTABCTRL_DECLEAR:成员声明,该宏在包含CTabCtrl控件的对话框的类定义中使用。需传入一个数字,表示TAB控件最大能容纳的页面数
  • YTABCTRL_INIT:CTabCtrl关联初始化,首先应调用该函数实现自己的CTabCtrl控件与本代码的关联。需传入CTabc控件的ID
  • YTABCTRL_INIT_FROM_VAR:和YTABCTRL_INIT的功能一样,只是传入的是CTabCtrl控件的变量指针
  • YTABCTRL_ADD_PAGE:项TAB控件中添加页面。传入的参数包括页面在TAB控件中的顺序号,页面的类名,页面在TAB控件中显示的标题文字。在某些VS版本中如果没有定义AFX_DESIGN_TIME宏,则还需要传入一个参数,即页面对话框的ID
  • YTABCTRL_FINISH:完成页面与TAB控件之间的功能
  • YTABCTRL_UPDATE:单击CTabCtrl时更新页面。该宏需在CTabCtrl的单击事件中调用,单击消息响应由自己添加
  • YTABCTRL_IS_PAGE:运行时类型识别。判断当前页面是否是给定的对话框类的实例,需传入要判断的类名
  • YTABCTRL_CURRENT_PAGE:获取当前页面的对话框指针,返回对象为页面对话框的基类CDialog指针,可以转换为页面对话框类对象

一个简单的例子如下:
CTabCtrl控件例子

使用步骤如下,简称CTabCtrl所在对话框类为父类(具体请下载例子查看):
1.父类的定义中调用:

YTABCTRL_DECLEAR(10);

2.在父类的OnInitDialog函数中调用:

YTABCTRL_INIT(IDC_TAB1);YTABCTRL_ADD_PAGE(1, CPageOneDlg, IDD_DLG_PAGE_ONE, _T("页面1"));YTABCTRL_ADD_PAGE(8, CPageTwoDlg, IDD_DLG_PAGE_TWO, _T("页面2"));YTABCTRL_ADD_PAGE(3, CPageThreeDlg, IDD_DLG_PAGE_THREE, _T("页面3"));YTABCTRL_ADD_PAGE(4, CPageFourDlg, IDD_DLG_PAGE_FOUR, _T("页面4"));YTABCTRL_FINISH();

3.在CTabCtrl控件的单击事件TCN_SELCHANGE中调用:

YTABCTRL_UPDATE();

4.如果有需要,可在父类中判当前页面是哪个页面,然后调用页面类的函数:

if( YTABCTRL_IS_PAGE(CPageTwoDlg) ) {    CPageTwoDlg *pDlg = (CPageTwoDlg*)YTABCTRL_CURRENT_PAGE();    AfxMessageBox(pDlg->Test());}

在使用YTABCTRL_ADD_PAGE时,对于传入的页面顺序号,决定了页面在TAB控件中排列的顺序,具体是按照传入序号从小到大进行排列的。序号从1开始,不得超过YTABCTRL_DECLEAR中传入的数字大小。序号之间中间允许留空,宏定义中会自动排序无效的页面。

例子下载链接:http://download.csdn.net/detail/yaoyuanyylyy/9805176

0 0
原创粉丝点击