马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
标签页控件是什么呢?
懂了吧!如果对一个标签页控件添加变量的话,变量类型就是CTabCtrl的。
CTabCtrl有什么成员函数呢?https://msdn.microsoft.com/zh-cn/library/essk9hbw(v=vs.120).aspx
(重要提示:请大家认真看msdn文档,否则你可能会看不懂下面的例子)
另外至于可以添加什么事件处理程序,请大家试试。
实践时间!
本次例子比较复杂,UINT担心大家看不懂,就破例给大家讲解下。
1.在资源文件上选择添加->资源
2.选择Dialog,然后点击“新建(N)”
3.重复第二步,即创建2个对话框(因为一会儿有2个标签)
4.(关键一步)把2个对话框的Style属性都设置为Child,把Border设置为None。
5.给第一个对话框拖一个Static Text,把Caption属性设置为“我是标签页1”,给第二个对话框拖一个Static Text,把Caption属性设置为“我是标签页2”
6.给第一个对话框添加类,类名就是CDlg1,给第二个对话框添加类,类名就是CDlg2
7.在[你的工程名]Dlg.h里面包含Dlg1.h和Dlg2.h
8.在[你的工程名]Dlg.h里面的C[你的工程名]Dlg类添加如下内容(你可能会问要什么访问属性,随你,public 即可)CDlg1 m_Dlg1;
CDlg2 m_Dlg2;
9.在OnInitDialog中添加如下代码 CRect tabRect; // 标签控件客户区的位置和大小
m_tab.InsertItem(0, _T("标签页1")); // 插入第一个标签“标签页1”
m_tab.InsertItem(1, _T("标签页2")); // 插入第二个标签“标签页2”
m_Dlg1.Create(IDD_DIALOG1, &m_tab); // 创建第一个标签页
m_Dlg2.Create(IDD_DIALOG2, &m_tab); // 创建第二个标签页
m_tab.GetClientRect(&tabRect); // 获取标签控件客户区Rect
// 调整tabRect,使其覆盖范围适合放置标签页
tabRect.left += 1;
tabRect.right -= 1;
tabRect.top += 25;
tabRect.bottom -= 1;
// 根据调整好的tabRect放置m_jzmDlg子对话框,并设置为显示
m_Dlg1.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);//注意!这里不能用ShowWindow!!
// 根据调整好的tabRect放置m_androidDlg子对话框,并设置为隐藏
m_Dlg2.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);//注意!这里不能用ShowWindow!!
如果现在就运行,你会看到无法切换标签页。
所以我们要添加TCN_SELCHANGE(选择切换)的事件处理程序。
10.添加TCN_SELCHANGE(选择切换)的事件处理程序。
11.在TCN_SELCHANGE的事件处理程序中添加以下代码。 CRect tabRect;
m_tab.GetClientRect(&tabRect);
tabRect.left += 1;
tabRect.right -= 1;
tabRect.top += 25;
tabRect.bottom -= 1;
switch (m_tab.GetCurSel())
{
case 0:// 如果标签控件当前选择标签为“标签页1”,则显示m_Dlg1对话框,隐藏m_Dlg2对话框
m_Dlg1.ShowWindow(SW_SHOW);
m_Dlg2.ShowWindow(SW_HIDE);
break;
case 1:// 如果标签控件当前选择标签为“标签页2”,则隐藏m_Dlg1对话框,显示m_Dlg2对话框
m_Dlg1.ShowWindow(SW_HIDE);
m_Dlg2.ShowWindow(SW_SHOW);
break;
}
现在运行,就好了~
下期预告
动画控件!动画控件!动画控件!
重要的事情说三遍!!! |