现在要做一个登陆系统,功能包括注册消息,修改消息,登陆等等。考虑使用tab控件来将所有功能都集中在一个对话框中实现。
step1 在主对话框中拖入一个tab控件,命名随意,在ClassWizard为控件添加变量, 变量名为m_tab. 类型为CTabCtrl。
step2 为tab控件中每一个选项卡初始化名称。例如将第一个选项卡命名为“登陆”的代码:m_taboption.InsertItem(0, "登陆")。以此类推。
step3 有几个选项卡新建几个对话框资源,并将在主对话框中实例化这几个对话框的对象,并将每个对话框都关联到tab控件上。例如我新建了一个登陆对话框类loginDlg, 并在主对话框中有一个成员是该对话框的实例化对象m_CloginDlg, 使用m_CloginDlg.Create(IDD_DIALOG_LOGIN, &m_taboption)即可。
step4 将对话框放在特定位置,我将每个功能对话框的坐标设置在tab控件内。部分代码如下:
//获得IDC_TAB大小
CRect rs;
m_tab.GetWindowRect(&rs);
//调整子对话框在父窗口中的位置
rs.top += 20;
m_CloginDlg.MoveWindow(&rs);
step5 根据点击不同的tab控件中的选项,设置为只有一个对话框显示。部分代码如下:
int tabnumber = m_taboption.GetCurSel();
switch (tabnumber)
{
case 0:
m_CloginDlg.ShowWindow(true);
m_CcontactusDlg.ShowWindow(false);
m_CmodifyDlg.ShowWindow(false);
m_CregisterDlg.ShowWindow(false);
break;
......
step 6 也许还需要设置tab控件中的选项卡尺寸
//设置tab标签大小,这里只有四个选项,想要与tab控件尺寸一致
CSize tabsize;
tabsize.cx = (rs.right - rs.left) / 4 - 1;
tabsize.cy = 20;
m_taboption.SetItemSize(tabsize);
ok,tab控件搞定,每个选项的具体实现就在每个对话框中实现啦。