选项卡控件的使用

1.新建默认MFC文件。

2.资源-添加Dialog-添加类。(假设生成3个,Dialog1Dialog2Dialog3)

3.类向导,添加类,点小三角形,添加MFC类。添加CTabCtrl类

4.CTabCtrl 里面添加新的函数

// 添加选项卡的[选项名]
VOID CMyTabCtrl::InsertTabColumn()
{
InsertItem(0, L"主菜单");
InsertItem(1, L"强力杀毒");
InsertItem(2, L"文件查找");
}

// 添加对话框
VOID CMyTabCtrl::InsertTabDialog()
{
// 1. 生成对话框
DialogArr[0] = new CMyDialog1;
DialogArr[1] = new CMyDialog2;
DialogArr[2] = new CMyDialog3;

// 2. 通过 id 创建窗口
DialogArr[0]->Create(IDD_DIALOG1);
DialogArr[1]->Create(IDD_DIALOG2);
DialogArr[2]->Create(IDD_DIALOG3);

// 3. 将窗口移动到指定的位置
CRect Rect;
GetClientRect(&Rect);
Rect.DeflateRect(17, 44, -9, -12);
DialogArr[0]->MoveWindow(&Rect);
DialogArr[1]->MoveWindow(&Rect);
DialogArr[2]->MoveWindow(&Rect);

// 3. 显示窗口
ShowTabDialog(1);
}

// 显示指定的对话框
VOID CMyTabCtrl::ShowTabDialog(int index)
{
for (int i = 0; i < 3; ++i)
{
if (i == index)
DialogArr[i]->ShowWindow(SW_NORMAL);
else
DialogArr[i]->ShowWindow(SW_HIDE);
}
}


BEGIN_MESSAGE_MAP(CMyTabCtrl, CTabCtrl)
ON_NOTIFY_REFLECT(TCN_SELCHANGE, &CMyTabCtrl::OnTcnSelchange)
END_MESSAGE_MAP()



// CMyTabCtrl 消息处理程序



// 消息反射处理对话框选项卡的切换
void CMyTabCtrl::OnTcnSelchange(NMHDR* pNMHDR, LRESULT* pResult)
{
// 获取点击了第几个
int index = GetCurSel();

// 显示指定的
ShowTabDialog(index);

*pResult = 0;
}

6.默认生成的Dialog绑定变量,类型为CMyTabCtrl

7.初始化默认生成的

// 向选项卡中添加数据
m_TabCtrl.InsertTabColumn();

// 添加对话框
m_TabCtrl.InsertTabDialog();
05-20 17:30