创建TabControl控件主要步骤如下:
1 将TabControl控件拖入主对话框Assistants中,并且创建一个控件变量m_mainTab。
2 创建四个子对话框。
3 把四个子对话框的属性Style改为Child,Border改为None。
4 为四个子对话框分别建立四个类。
5 将四个子对话框的类头文件都加入主对话框头文件中。
6 在主对话框头文件中,创建四个子对话框类的对象。
如下图:
7 然后在OnInitDialog()中添加如下代码:
//向标签控件中添加选项卡
m_mainTab.InsertItem(0, "RecordsNotes", 0);
m_mainTab.InsertItem(1, "TextBox", 1);
m_mainTab.InsertItem(2, "Details", 2);
m_mainTab.InsertItem(3, "NoteDB", 3);
//创建子窗口
m_Records.Create(IDD_Records, &m_mainTab);
m_Tex(IDD_TextBox, &m_mainTab);
m_De(IDD_Details, &m_mainTab);
m_No(IDD_NoteDB, &m_mainTab);
CRect clientRC;
m_mainTab.GetClientRect(clientRC); //获取标签客户区域
clien(0, 25, 0, 0); //减少客户区域大小,左,上,右
m_Records.MoveWindow(clientRC); //移动子窗口
m_Tex(clientRC);
m_De(clientRC);
m_No(clientRC);
m_Records.ShowWindow(SW_SHOW); //显示子窗口
m_mainTab.SetCurSel(0); //设置默认选中的标签页
m_Records.GetDlgItem(IDC_EDIT1)->SetFocus();
//需要将对话框中的OnInitDialog的最后那句return设置为"FALSE"。
8 选项卡切换函数
双击TabControl控件,会自动添加函数OnSelchangeTab()框架,在其中添加如下代码:
void CAssistantsDlg::OnSelchangeTab(NMHDR* pNMHDR, LRESULT* pResult) { int nCurSel = m_mainTab.GetCurSel(); if (nCurSel == 0) { m_Records.ShowWindow(SW_SHOW); m_Tex(SW_HIDE); m_De(SW_HIDE); m_No(SW_HIDE); m_Records.GetDlgItem(IDC_EDIT1)->SetFocus(); } else if (nCurSel == 1) { m_Tex(SW_SHOW); m_Records.ShowWindow(SW_HIDE); m_De(SW_HIDE); m_No(SW_HIDE); m_Tex(IDC_textbox)->SetFocus(); } else if (nCurSel == 2) { m_Tex(SW_HIDE); m_Records.ShowWindow(SW_HIDE); m_De(SW_SHOW); m_No(SW_HIDE); m_De(IDC_Details)->SetFocus(); } else if (nCurSel == 3) { m_Tex(SW_HIDE); m_Records.ShowWindow(SW_HIDE); m_De(SW_HIDE); m_No(SW_SHOW); m_No(IDC_RICHEDIT1)->SetFocus(); } *pResult = 0; }如上代码,如果是对话框自身的控件设置焦点,直接使用GetDlgItem(IDC_RICHEDIT1)->SetFocus();就行了,如果是在主对话框(主窗口)中设置子对话框(子窗口)中控件的焦点,则必须在前面冠以子窗口对象,如m_NoteDB来进行引用。
如果在主窗口中设置子窗口中的文本也是如此:
m_Tex(str); //m_TextBox是子窗口对象,m_textblock是子窗口中的控件关联的变量9 程序运行效果:
-End-