VC MFC缺乏竞争对手,凡是没有竞争的地方就会比较垃圾不人性化,世间所有事皆是市场,无市场无自由,期望权威领袖一统天下后安排得井井有条,小民坐享其成只是懒惰依赖思维,最终只能被MS这样的垄断者不待见。你看MFC需要手动添加细节的地方就太多了,真是麻烦,耽误时间。
一.建立项目
二.添加Tab控件、控件变量
1.添加Tab控件
添加Tab Control资源
VC会作如下修改
此时编译不会显示Tab容器
2.添加Tab控件变量
可在View视图窗口中,用Class Wizard添加一个Control变量(不必创建类,tab只是容器,对Tab页的控制代码放在主对话框即可)。
3.添加切换Tab页功能代码
在主对话框CPP文件中OnInitDialog添加即可
m_tab.InsertItem(0, _T("0"));
m_tab.InsertItem(1, _T("1"));
m_tab.InsertItem(2, _T("2"));
4.编译结果
可以切换Tab标题
三、添加Page控件、类、控件变量
1.添加Page控件
2.添加Page类
VC生成类的两个文件
3.添加Page控件变量,绑定资源进行创建实例化
//创建属性页;
m_Page0.Create(IDD_OLE_PROPPAGE_LARGE0,GetDlgItem(IDC_TAB1));
m_Page1.Create(IDD_OLE_PROPPAGE_LARGE1,GetDlgItem(IDC_TAB1));
m_Page2.Create(IDD_OLE_PROPPAGE_LARGE2,GetDlgItem(IDC_TAB1));
//获取TAB的客户端矩形框,从而设置各属性页在TAB上的物理位置
CRect rs;
m_tab.GetClientRect(&rs);
rs.top+=20;
rs.bottom-=4;
rs.left+=4;
rs.right-=4;
//设置属性页的大小和位置
m_Page0.MoveWindow(&rs);
m_Page1.MoveWindow(&rs);
m_Page2.MoveWindow(&rs);
//默认第一页显示
m_Page0.ShowWindow(TRUE);
m_tab.SetCurSel(0);
四、添加切换Tab功能:
1.添加事件处理函数
TabControl容器添加OnTcnSelchange消息事件
在该消息事件中执行各属性页的切换操作。
[1]用类向导添加
[2]或者属性中添加
2.代码
// TAB切换属性页功能
switch(m_tab.GetCurSel())
{
case 0:
m_Page0.ShowWindow(TRUE);
m_Page1.ShowWindow(FALSE);
m_Page2.ShowWindow(FALSE);
break;
case 1:
m_Page0.ShowWindow(FALSE);
m_Page1.ShowWindow(TRUE);
m_Page2.ShowWindow(FALSE);
break;
case 2:
m_Page0.ShowWindow(FALSE);
m_Page1.ShowWindow(FALSE);
m_Page2.ShowWindow(TRUE);
break;
default: ;
}
五、编译结果
在属性页上加不同控件,方便查看效果。
附:TabDlg添加OnInitDialog代码
如果添加了TabDlg类,并要放在它的OnInitDialog函数中,可手动重载才有此函数。