MFC编程Tab控件的使用

合集下载

单文档-Tab Control 控件的使用

单文档-Tab Control 控件的使用

利用Tab Control控件设计一个分页表,见下图1. 建立一个MFC类型的基于FormView的单文档工程TabTest。

2. 把一个Tab Control控件拖到主对话框中,主对话框的ID为IDD_TABTEST_FORM,Language设为:Chinese(P.R.C)。

Tab Control的ID为IDC_TAB1。

3. 通过ClassWizard的设置一个与Tab Control相关的变量m_tab,类型为CTabCtrl。

4.建立两个对话框资源,设置其Style为Child,Borden为None。

因为想要不带标题栏和工具栏的对话框,因此我选择的是Dialog 资源中的IDD_FORMVIEW型的对话框。

它们的ID分别为IDD_Page1_FORMVIEW和IDD_Page2_FORMVIEW。

5.通过ClassWizard分为别两个对话框资源建立两个类CPage1和CPage2。

并建立CPage1和CPage2对应的两个两个对象:在CTabTestView中增加两个变量m_page1和m_page2,类型分别为CPage1和CPage2型。

6.在View的初始化函数OnInitialUpdate()函数中把CPage1和CPage2与TabControl关联起来,设置初始页面,保存页面地址,代码如下:void CTab_testView::OnInitialUpdate(){CFormView::OnInitialUpdate();GetParentFrame()->RecalcLayout();ResizeParentToFit();//为TabControl增加两个页面m_tab.InsertItem(0,"标签1");m_tab.InsertItem(1,"标签2');//创建两个对话框m_page1.Create(IDD_Page1_FORMVIEW,&m_tab);m_page2.Create(IDD_Page2_FORMVIEW,&m_tab);//获得IDC_TABTEST客户区大小CRect rc;m_tab.GetClientRect(rc);//调整子对话框在父窗口中的位置rc.top += 20;rc.bottom -=60;rc.left +=1;rc.right -=2;//设置子对话框尺寸并移动到指定位置m_page1.MoveWindow(&rc);m_page2.moveWindow(&rc);//设置隐藏和显示m_page1.ShowWindow(true);m_page2.ShowWindow(false);//设置默认选项卡m_tab.setCurSel(0);}7.在CPage1对话框中添加一个static text控件和edit text控件,在CPage2对话框添加一个edit text控件。

VS2010和MFC编程入门之33(常用控件:标签控件Tab Control 下)

VS2010和MFC编程入门之33(常用控件:标签控件Tab Control 下)

VS2010MFC编程入门之三十三(常用控件:标签控件TabControl 下)标签控件知识的上半部分,这里开始下半部分。

标签控件的创建MFC为标签控件的操作提供了CTabCtrl类。

与之前的控件类似,创建标签控件可以在对话框模板中直接拖入Tab Control,也可以使用CTabCtrl类的Create成员函数创建。

Create函数的原型如下:virtual BOOL Create(DWORD dwStyle,const RECT&rect,CWnd* pParentWnd,UINT nID);参数dwStyle为标签控件的风格,rect为标签控件的位置和大小,pParentWnd为指向标签控件父窗口的指针,nID指定标签控件的ID。

这里还是要具体说下dwStyle,下面列出了几种主要的控件风格:TCS_BUTTONS:标签(控件上部用来选择标签页的位置)外观为按钮风格,且整个控件周围没有边框。

TCS_FIXEDWIDTH :所有标签具有相同的宽度。

TCS_MULTILINE:标签以多行显示,如果需要,可以显示所有标签。

TCS_SINGLELINE:只显示一行标签,用户可以滚动着看其他标签。

TCS_TABS:标签以普通标签样式显示,且整个控件周围有边框。

如果想了解标签控件的所有风格,可以查阅MSDN。

CTabCtrl类的主要成员函数intGetCurSel( ) const;获取标签控件中当前选择标签的索引。

如果成功则返回选择标签的索引,否则返回-1。

BOOL GetItem(intnItem,TCITEM* pTabCtrlItem) const;获取标签控件中某个标签的信息。

参数nItem为标签索引,pTabCtrlItem为指向TCITEM结构体的指针,用来接收标签信息。

若获取成功返回TRUE,否则返回FALSE。

intGetItemCount( ) const;获取标签控件中标签的数量。

MFC-TabControl使用方法

MFC-TabControl使用方法

MFC-TabControl使用方法1.新建一个MFC工程,取名MyTab,选择Dialogbased,然后Finish.2.删除对话框上默认添加的三个控件.添加Tab Control控件并在Property属性中设置ID为IDC_TABTEST在MoreStyles里勾上Bottom.调速尺寸使其布满整个对话框,我这边TabControl的尺寸最后为164X203.在ClassWizard为其添加变量,变量名为m_tab.类型为CTabCtrl. 3.在对话框的初始化函数OnInitDialog里面添加如下代码: m_tab.InsertItem(0,"参数一"); //添加参数一选项卡m_tab.InsertItem(1,"参数二"); //添加参数二选项卡m_tab.InsertItem(2,"结果"); //添加结果选项卡4.在对话框资源里面添加三个对话框资源,ID分别命名为IDD_PARA1,IDD_PARA2,IDD_RESULT.字体为宋体,字号为9,style为Child,Border为None,宽度调整为161.再分别为其添加对应的基于CDialog类CPara1,CPara2,CResult.5.在CMyTabDlg类中添加三个成员变量m_para1,m_para2,m_result,分别是三个子对话框的实例.代码如下:CResultm_result; CPara2m_para2; CPara1m_para1; 6.在IDD_PARA1对话框上添加静态文本控件内容为"参数一"再在后面插入一个文本框控件,用ClassWizard将其关联为一个int型变量,名为m_nPara1; 在IDD_PARA2对话框上添加静态文本控件内容为"参数二"再在后面插入一个文本框控件,用ClassWizard将其关联为一个int型变量,名为m_nPara2; 在IDD_RESULT对话框上添加静态文本控件内容为"结果"再在后面插入一个文本框控件,用ClassWizard将其关联为一个int型变量,名为m_nResult; 7.为CPara1类添加成员函数intGetParaValue()代码如下: intCPara1::GetParaValue() ...{ returnm_nPara1; } 为CPara2类添加成员函数intGetParaValue()代码如下: intCPara2::GetParaValue() ...{ returnm_nPara2; } 为CResult类添加成员函数voidSetResultValue(intnResult)代码如下: voidCResult::SetResultValue(intnResult) ...{ m_nResult= nResult; } 8.在IDD_MYTAB_DIALOG对话框的初始化函数OnInitDialog里面添加如下代码: //关联对话框,并且将IDC_TABTEST控件设为父窗口m_para1.Create(IDD_PARA1,GetDlgItem(IDC_TABTEST)); m_para2.Create(IDD_PARA2,GetDlgItem(IDC_TABTEST)); m_result.Create(IDD_RESULT,GetDlgItem(IDC_TABTEST)); //获得IDC_TABTEST客户区大小CRectrs; m_tab.GetClientRect(&rs); //调整子对话框在父窗口中的位置rs.top+=1; rs.bottom-=60; rs.left+=1; rs.right-=2; //设置子对话框尺寸并移动到指定位置m_para1.MoveWindow(&rs); m_para2.MoveWindow(&rs); m_result.MoveWindow(&rs); //分别设置隐藏和显示m_para1.ShowWindow(true); m_para2.ShowWindow(false); m_result.ShowWindow(false); //设置默认的选项卡m_tab.SetCurSel(0);9.添加Tab Control控件的TCN_SELCHANGE事件响应函数OnSelchangeTabtest(NMHDR*pNMHDR,LRESULT*pResult),函数体代码如下:intCurSel=m_tab.GetCurSel(); switch(CurSel) ...{ case0:m_para1.ShowWindow(true); m_para2.ShowWindow(false); m_result.ShowWindow(false); break; case1:m_para1.ShowWindow(false); m_para2.ShowWindow(true);m_result.ShowWindow(false); break; case2: m_para1.ShowWindow(false); m_para2.ShowWindow(false); m_result.ShowWindow(true); break; default: ; }*pResult=0;10.在IDD_MYTAB_DIALOG对话框下面添加一个按钮,标题为"计算"为其添加事件响应函数,代码如下:m_para1.UpdateData(true); m_para2.UpdateData(true); m _result.SetResultValue(m_para1.GetParaValue()+m_para2.GetParaValue()) ; m_result.UpdateData(false);11.最后演示结果如下:12.这个小程序很简单,但是他说明了Tab Control控件的基本用法.用法2VC中的CTabCtrl用法与VB、Delphi的选项卡控件有很大的不同,每个属性页是用一个“窗体”(对话框)来实现,于是要为每个属性页对话框建类,还要关联、初始化……实在麻烦得多。

使用Tab+Control控件

使用Tab+Control控件

使用Tab Control控件1. 新建一个MFC工程, 取名MyTab, 选择Dialog based, 然后Finish.2. 删除对话框上默认添加的三个控件. 添加Tab Control控件并在Property 属性中设置ID为IDC_TABTEST 在More Styles里勾上Bottom. 调速尺寸使其布满整个对话框, 我这边Tab Control的尺寸最后为164X203. 在ClassWizard为其添加变量, 变量名为m_tab. 类型为CTabCtrl.3. 在对话框的初始化函数OnInitDialog里面添加如下代码:m_tab.InsertItem(0,"参数一"); //添加参数一选项卡m_tab.InsertItem(1,"参数二"); //添加参数二选项卡m_tab.InsertItem(2,"结果"); //添加结果选项卡4.在对话框资源里面添加三个对话框资源, ID分别命名为IDD_PARA1,IDD_PARA2, IDD_RESULT. 字体为宋体, 字号为9, style为Child, Border为None, 宽度调整为161. 再分别为其添加对应的基于CDialog类CPara1, CPara2, CResult.5. 在CMyTabDlg类中添加三个成员变量m_para1, m_para2, m_result, 分别是三个子对话框的实例. 代码如下:CResult m_result;CPara2 m_para2;CPara1 m_para1;6. 在IDD_PARA1对话框上添加静态文本控件内容为"参数一" 再在后面插入一个文本框控件, 用ClassWizard将其关联为一个int型变量,名为m_nPara1; 在IDD_PARA2对话框上添加静态文本控件内容为"参数二" 再在后面插入一个文本框控件, 用ClassWizard将其关联为一个int型变量,名为m_nPara2;在IDD_RESULT对话框上添加静态文本控件内容为"结果" 再在后面插入一个文本框控件, 用ClassWizard将其关联为一个int型变量,名为m_nResult;7. 为CPara1类添加成员函数int GetParaValue() 代码如下:int CPara1::GetParaValue()...{return m_nPara1;}为CPara2类添加成员函数int GetParaValue() 代码如下:int CPara2::GetParaValue()...{return m_nPara2;}为CResult类添加成员函数void SetResultValue(int nResult) 代码如下: void CResult::SetResultValue(int nResult)...{m_nResult = nResult;}8. 在IDD_MYTAB_DIALOG对话框的初始化函数OnInitDialog里面添加如下代码://关联对话框,并且将IDC_TABTEST控件设为父窗口m_para1.Create(IDD_PARA1,GetDlgItem(IDC_TABTEST));m_para2.Create(IDD_PARA2,GetDlgItem(IDC_TABTEST));m_result.Create(IDD_RESULT,GetDlgItem(IDC_TABTEST));//获得IDC_TABTEST客户区大小CRect rs;m_tab.GetClientRect(&rs);//调整子对话框在父窗口中的位置rs.top+=1;rs.bottom-=60;rs.left+=1;rs.right-=2;//设置子对话框尺寸并移动到指定位置m_para1.MoveWindow(&rs);m_para2.MoveWindow(&rs);m_result.MoveWindow(&rs);//分别设置隐藏和显示m_para1.ShowWindow(true);m_para2.ShowWindow(false);m_result.ShowWindow(false);//设置默认的选项卡m_tab.SetCurSel(0);9. 添加Tab Control控件的TCN_SELCHANGE事件响应函数OnSelchangeTabtest(NMHDR* pNMHDR, LRESULT* pResult) ,函数体代码如下:int CurSel = m_tab.GetCurSel();switch(CurSel)...{case 0:m_para1.ShowWindow(true);m_para2.ShowWindow(false);m_result.ShowWindow(false);break;case 1:m_para1.ShowWindow(false);m_para2.ShowWindow(true);m_result.ShowWindow(false);break;case 2:m_para1.ShowWindow(false);m_para2.ShowWindow(false);m_result.ShowWindow(true);break;default:;}*pResult = 0;10. 在IDD_MYTAB_DIALOG对话框下面添加一个按钮, 标题为"计算" 为其添加事件响应函数, 代码如下:m_para1.UpdateData(true);m_para2.UpdateData(true);m_result.SetResultValue(m_para1.GetParaValue()+m_para2.GetParaValue() );m_result.UpdateData(false);11. 最后演示结果如下:MFC Tab控件使用方法2009-03-12 09:20MFC Tab控件使用方法1、首先创建一个MFC对话框框架,在对话框资源上从工具箱中添加上一个Tab Control 控件,根据需要修改一下属性,然后右击控件,为这个控件添加一个变量,将此控件跟一个CTabCtrl类变量绑定在一起,这里设为m_tabctrl2、创建两个新的对话框资源,其属性作如下修改:Border:none //边界为空,这样它就没了标题栏Style :Child // 这样这个模板就可以当作另一个窗口的子窗口了。

MFC常用控件使用

MFC常用控件使用

使用Windows标准控件我们在前面曾提到过,控件是一些行为标准化了的窗口,一般用于对话框或其它窗口中充当与用户交互的元素。

在Visual C++中,可以使用的控件分成三类:(1) Windows标准控件Windows标准控件由Windows操作系统提供,在Windows 95中还提供了一些新增的控件。

所有这些控件对象都是可编程的,我们可以使用Visual C++提供的对话框编辑器把它们添加到对话框中。

Microsoft基础类库(MFC)提供了封装这些控件的类,它们列于表6.1。

表6.1 Windows标准控件控件 MFC类 描述动画 CAnimateCtrl 显示连续的AVI视频剪辑按钮 CButton 用来产生某种行为的按钮,以及复选框、单选钮和组框组合框 CComboBox 编辑框和列表框的组合编辑框 CEdit 用于键入文本标题头 CHeaderCtrl 位于某一行文本之上的按钮,可用来控制显示文件的宽度热键 CHotKeyCtrl 用于通过按下某一组合键来很快的执行某些常用的操作图象列表 CImageList 一系列图象(典型情况下是一系列图标或位图)的集合。

图象列表本身不是一种控件,它常常是和其它控件一起工作,为其它控件提供所用的图象列表 列表 CListCtrl 显示文本及其图标列表的窗口列表框 CListBox 包括一系列字符串的列表进度 CProgressCtrl 用于在一较长操作中提示用户所完成的进度多格式文本编辑 CRichEditCtrl 提供可设置字符和段落格式的文本编辑的窗口滚动条 CScrollBar 为对话框提供控件形式的滚动条滑块 CSliderCtrl 包括一个有可选标记的滑块的窗口旋转按钮 CSpinButtonCtrl提供一对可用于增减某个值的箭头静态文本 CStatic 常用于为其它控件提供标签状态条 CStatusBarCtrl 用于显示状态信息的窗口,同MFC类CStatusBar类似续表6.1 控件 MFC类 描述选项卡 CTabCtrl 在选项卡对话框或属性页中提供具有类似笔记本中使用的分隔标签的外观的选项卡工具条 CToolBarCtrl 具有一系列命令生成按钮的窗口,同MFC类CToolBar类似工具提示 CToolTipCtrl 一个小的弹出式窗口,用于提供对工具条按钮或其它控件功能的简单描述树 CTreeCtrl 用于显示一系列的项的继承结构前面提到过,在MFC中,类CWnd是所有窗口类的基类,很自然的,它也是所有控件类的基类。

MFC编程总结各种控件使用说明

MFC编程总结各种控件使用说明

MFC各种控件的使用说明把整数显示为时间格式的方法:Int minute=5; int sec=5;CString strTime;strTime.Format("%02d:%02d",minute,sec);GetDlgItem(IDC_STAT_DIS)->SetWindowText(strTime);定时器的使用方法:在函数BOOL CDingshiqiDlg::OnInitDialog(){SetTimer(1,1000,NULL);}添加语句SetTimer(1,1000,NULL);定时器1秒钟中断一次.然后添加消息WM_TIMER对应的消息函数:void CDingshiqiDlg::OnTimer(UINT nIDEvent){}播放系统声音的方法:在头文件添加这两句#include<mmsystem.h>#pragma comment (lib,"winmm.lib")然后调用函数: PlaySound("SystemStart",NULL,SND_ALIAS|SND_ASYNC);VC++6.0控件工具箱:2 图形控件(picture):常用于显示位图(Bitmap)和图标(Icon)3 静态文本(Static Text):MFC提供了CStatic类支持静态控件。

(1)更改该控件上字体的方法是:该控件的ID为IDC_STATIC1,IDC_STATIC2.CFont * f1;f1 = new CFont;f1 -> CreateFont( 25 , // nHeight15, // nWidth0 , // nEscapement0 , // nOrientationFW_BOLD, // nWeightFALSE , // TRUEbItalicFALSE, // bUnderline0 , // cStrikeOutDEFAULT_CHARSET, //ANSI_CHARSET nCharSetOUT_DEFAULT_PRECIS, // nOutPrecisionCLIP_DEFAULT_PRECIS, // nClipPrecisionDEFAULT_QUALITY, // nQualityDEFAULT_PITCH | FF_SWISS, // nPitchAndFamily_T( " 宋体" )); // lpszFacGetDlgItem(IDC_STATIC1)-> SetFont(f1);GetDlgItem(IDC_STATIC2)-> SetFont(f1);另一种改变字体大小的方法: 在函数外定义CStatic m_static;CFont font;m_static.SubclassDlgItem(IDC_STAT_DIS,this);LOGFONT log;GetObject(::GetStockObject(DEFAULT_GUI_FONT),sizeof(log),&log);log.lfHeight=300; //改log.lfWidth=120; //改log.lfCharSet=GB2312_CHARSET;lstrcpy(log.lfFaceName, _T("宋体"));font.CreateFontIndirect(&log);m_static.SetFont(&font);(2) 把整数显示在该控件的方法:IDC_STAT_DIS为控件IDInt minute=5,sec=5;CString strTime;strTime.Format("%02d:%02d",minute,sec);GetDlgItem(IDC_STAT_DIS)->SetWindowText(strTime);另外一种显示的方法:CStatic*pst=(CStatic *)GetDlgItem(IDC_STAT_DIS);pst->SetWindowText("00:00");4 编辑框(Edit Box):MFC提供了CEdit类支持编辑框控件。

MFC应用程序——标签控件_IP...

MFC应用程序——标签控件_IP...

MFC应用程序——标签控件_IP...标签控件应用【Tab Control 标签控件】标签控件也比较常见。

它可以把多个页面集成到一个窗口中,每个页面对应一个标签,用户点击某个标签时,它对应的页面就会显示。

使用标签控件我们可以同时加载多个有关联的页面,用户只需点击标签即可实现页面切换,方便灵活的进行操作。

每个标签除了可以显示标签文本,还可以显示图标。

标签控件相当于是一个页面的容器,可以容纳多个对话框,而且一般也只容纳对话框,所以我们不能直接在标签控件上添加其他控件,必须先将其他控件放到对话框中,再将对话框添加到标签控件中。

最终我们点击标签切换页面时,切换的不是控件的组合,而是对话框。

IP控件应用【IP Address Control控件】 IP Address Control This section contains information about the programming elements used with IP address controls.参考数据:[https:///zh-cn/windows/win32/controls/ip-address- control-reference]时间控件应用【时间标准控件】 Date and Time Picker This section contains information about the API elements used with date and time picker controls.参考数据:[https:///zh-cn/windows/win32/controls/date-and-time- picker-control-reference]List Control控件列表视图控件List Control同样比较常见,它能够把任何字符串内容以列表的方式显示出来,这种显示方式的特点是整洁、直观,在实际应用中能为用户带来方便。

cmfctabctrl的create函数

cmfctabctrl的create函数

cmfctabctrl的create函数【CMFCTabCtrl的Create函数】是一个常见的MFC控件,用于创建和管理多页标签。

该函数的目的是在应用程序中创建一个新的多页标签控件,并初始化其属性和行为。

本文将逐步解释CMFCTabCtrl类的Create函数,并介绍如何正确使用它。

第一步:了解CMFCTabCtrl类在使用Create函数之前,我们需要了解CMFCTabCtrl类的基本知识。

CMFCTabCtrl是一个派生自CWnd的MFC控件类,用于在应用程序中创建和管理多页标签控件。

这个类提供了一系列的成员函数,用于操作和管理多页标签。

第二步:创建CMFCTabCtrl对象在使用Create函数之前,我们需要首先创建一个CMFCTabCtrl对象。

通常,我们可以在对话框或窗口类的成员变量中声明一个CMFCTabCtrl对象。

例如:cppCMFCTabCtrl m_tabCtrl;然后,在对话框或窗口的OnInitDialog或OnCreate等初始化函数中,调用Create函数来创建CMFCTabCtrl控件。

下面是Create函数的声明:cppBOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, DWORD dwTabbedStyle =AFX_DEFAULT_TAB_STYLE, DWORD dwControlBarStyle =AFX_DEFAULT_DOCKING_PANE_STYLE, DWORD dwDockStyle = CBRS_ALIGN_ANY);这个函数的参数解释如下:- dwStyle:指定多页标签的样式和行为。

可以是多个标志的组合,例如WS_CHILD(子窗口)和WS_VISIBLE(可见)。

- rect:指定多页标签控件的位置和大小。

- pParentWnd:指向多页标签控件的父窗口的指针。

MFC控件使用详细教程

MFC控件使用详细教程

使用Windows标准控件我们在前面曾提到过,控件是一些行为标准化了的窗口,一般用于对话框或其它窗口中充当与用户交互的元素。

在Visual C++中,可以使用的控件分成三类:(1) Windows标准控件Windows标准控件由Windows操作系统提供,在Windows 95中还提供了一些新增的控件。

所有这些控件对象都是可编程的,我们可以使用Visual C++提供的对话框编辑器把它们添加到对话框中。

Microsoft基础类库(MFC)提供了封装这些控件的类,它们列于表6.1。

表6.1 Windows标准控件续表6.1前面提到过,在MFC中,类CWnd是所有窗口类的基类,很自然的,它也是所有控件类的基类。

Windows标准控件在以下环境下提供:•Windows 95•Windows NT 3.51及以后版本•Win32s 1.3•注意:•Visual C++ 4.2及以后版本不再支持Win32s。

(2) ActiveX控件ActiveX控件可用于对话框中,也可用于HTML文档中。

这种控件过去被称为OLE 控件。

本书将在专门的章节中来讲述关于ActiveX控件的知识。

这里仅指出ActiveX控件使用了与标准控件完全不同的接口和实现方法。

(3) 其它MFC控件类除了Windows标准控件和自己编写的或者来自于第三方软件开发商的ActiveX 控件以外,MFC还提供了另外三种控件,它们由下面的三个类进行封装:•类CBitmapButton用于创建以位图作为标签的按钮,位图按钮最多可以包括四个位图图片,分别代表按钮的四种不同状态。

•类CCheckListBox用于创建选择列表框,这种列表框中的每一项前面有一个复选框,以决定该项是否被选中。

•类CDragListBox用于创建一种特殊的列表框,这种列表框允许用户移动列表项。

在本章我们仅讲述第一类控件,即Windows标准控件。

所涉及的内容包括各个控件的使用及相应的技巧。

MFC Table Control使用

MFC Table Control使用

VS2013 MFC Table Control 使用1.新建MFC项目工程1.1 打开vs2013,点击文件->新建->项目,如图(1)所示图(1)1.2 在Visual C++ /MFC/MFC应用程序/名称输入工程名,如图(2)所示,然后点击确定,接下来是MFC创建向导,点击“下一步”,当出现应用程序类型时,选择“基于对话框”,如图(3)所示图(2)图(3)然后点击”完成”,如图(4)所示图(4)2.添加table ctronl 控件2.1在左侧“资源文件”中双击打开MFCTabl.rc,删除默认自带的文本,和两个按钮如图(5)所示图(5)2.2. 添加tab control控件,点击工具箱/Tab Control/,按住左键不松开,放到MFCTabl对话框中,然后将此控件拖至合适的窗口大小,如图(6)所示图(6)2.3. 添加tab项目,打开CMFCTablDlg .cpp文件,找到BOOL CMFCTablDlg::OnInitDialog()函数,在SetIcon(m_hIcon, FALSE); 添加如下代码m_tab.InsertItem(0, _T("系统登录"));m_tab.InsertItem(1, _T("服务器设置"));m_dialog1.Create(IDD_DIALOG1, GetDlgItem(IDC_TAB1));m_dialog2.Create(IDD_DIALOG2, GetDlgItem(IDC_TAB1));//获得IDC_tabMain客户区大小CRect rs;m_tab.GetClientRect(&rs);//调整子对话框在父窗口中的位置,可以改动数值,使子窗体的大小合适;//调整子对话框在父窗口中的位置,根据实际修改rs.top += 25;rs.bottom -= 40;rs.left += 1;rs.right -= 10;//设置子对话框尺寸并移动到指定位置m_dialog1.MoveWindow(&rs);m_dialog2.MoveWindow(&rs);//分别设置隐藏和显示m_dialog1.ShowWindow(true);m_dialog2.ShowWindow(false);//设置默认的选项卡m_tab.SetCurSel(0);打开MFCTablDlg.h,找到class CMFCTablDlg : public CDialogEx添加如下变量CDialogEx m_dialog1, m_dialog2;添加tabl control变量,在资源视图上,点击鼠标右键,选择添加变量,如图(7)所示,在弹出的对话框中,在变量名一项中,输入m_tab,如图(8)所示图(7)图(8)2.4 .添加子对话框双击左侧的MFCTabl.rc,右键点击“MFCTabl.rc”,点击“添加资源”,在弹出的对话框中,选择Dialog/新建。

MFC控件使用大全

MFC控件使用大全

MFC控件使用大全Static Text1. 透明背景、改变文本的字体颜色最好做法当然是继承CStatic然后重载OnPaint(),完全自己来画,这样能够获得最大的灵活性,但是比较麻烦。

可以使用以下方便的方法:同样创建一个CStatic的派生类,处理父窗口的反射消息WM_CTLCOLOR,即添加HBRUSH CtlColor(CDC *pDC, UINT nCtlColor)这个消息映射函数。

注意,不是HBRUSH OnCtlColor(CDC *pDC, CWnd *pWnd, UINTnCtlColor)!其实还有一个方法,就是处理父窗口的OnCtlColor(),更简单一点,但是不符合封装的原则。

HBRUSH CStatic_bg_color_sizeDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);// TODO: 在此更改 DC 的任何特性if (nCtlColor == CTLCOLOR_STATIC){pDC->SetBkMode(TRANSPARENT); // 设置透明背景pDC->SetT extColor(RGB(0, 0, 255)); // 设置文本颜色return (HBRUSH)GetStockObject(HOLLOW_BRUSH); // 返回透明画刷}return hbr;}-------------------------------------------------------------------------------------------------通过上述代码,就可以得到彩色的文本以及透明的背景,但是,还存在一个问题,当该Static控件的文本内容或者属性,在运行过程中发生变化的时候,由于背景一直没有擦除(为了实现透明),会出现重影,导致文本模糊成一团。

MFC控件使用说明

MFC控件使用说明

MFC控件使用说明MFC(Microsoft Foundation Class)是一套面向C++开发的框架,用于快速开发图形用户界面(GUI)应用程序。

MFC提供了一套丰富的控件(Controls),用于实现各种功能和交互效果。

本文将介绍一些常用的MFC控件的使用说明。

1. Button 控件:Button控件用于显示一个按钮,用户点击按钮时会触发相应的事件处理函数。

使用方式如下:-在对话框资源中添加一个按钮控件,并为其设置ID号。

- 在对话框类的变量中声明按钮控件的成员变量,使用CButton类型。

- 在OnInitDialog函数中使用GetDlgItem函数获取按钮控件的指针,并使用它调用相应的函数,如SetWindowText设置按钮的文本内容。

3. List Box 控件:List Box控件用于显示一个列表,用户可以选择其中的项。

使用方式如下:-在对话框资源中添加一个列表框控件,并为其设置ID号。

- 在对话框类的变量中声明列表框控件的成员变量,使用CListBox类型。

- 在OnInitDialog函数中使用GetDlgItem函数获取列表框控件的指针,并使用它调用相应的函数,如AddString添加项,SetCurSel设置选中项。

-在对话框资源中添加一个组合框控件,并为其设置ID号。

- 在OnInitDialog函数中使用GetDlgItem函数获取组合框控件的指针,并使用它调用相应的函数,如AddString添加项,SetCurSel设置选中项。

5. Check Box 控件:Check Box控件用于显示一个复选框,用户可以选中或取消选中。

-在对话框资源中添加一个复选框控件,并为其设置ID号。

- 在对话框类的变量中声明复选框控件的成员变量,使用CButton类型。

- 在OnInitDialog函数中使用GetDlgItem函数获取复选框控件的指针,并使用它调用相应的函数,如SetCheck设置选中状态。

MFC控件使用说明

MFC控件使用说明

MFC控件使用说明MFC(Microsoft Foundation Classes)是一套C++的类库,用于开发Windows应用程序。

MFC提供了丰富的控件(control)来实现图形界面(GUI)。

下面是MFC控件的使用说明。

1.控件概述:2.控件的创建:在MFC应用程序的对话框资源中可以选择并拖拽控件到界面上。

MFC 提供了DIALOG控件类表示对话框,并通过类向导(Class Wizard)自动生成控件的成员变量。

3.控件的属性和事件:每个控件都有一些属性,如字体、颜色、大小等,可以通过修改这些属性来改变控件的外观。

每个控件也都有一些事件,如鼠标点击、按键按下等,可以通过响应这些事件来处理用户的操作。

4.控件的操作:MFC提供了一系列的成员函数来操作控件,如设置文本、获取选择的项、显示隐藏控件等。

可以通过控件的成员变量来调用这些函数。

5.控件的布局和对齐:在对话框资源中可以使用布局与对齐工具来自动排列和对齐控件。

也可以通过代码来动态调整控件的位置和大小。

6.控件的自定义:如果MFC提供的控件不能满足需求,可以继承自原有控件类,并重写其成员函数来实现自定义的控件。

7.控件的扩展库:除了MFC提供的控件,还可以使用第三方控件库来增加更多的控件。

常见的控件库有DevExpress、Telerik等,提供了更丰富的控件和功能。

8.控件的样式和外观:9.控件的国际化和本地化:MFC提供了多语言支持,可以使用资源文件来实现对不同语言的支持。

通过在资源文件中提供不同语言的字符串,可以使控件显示适合不同语言环境的文本。

10.控件的错误处理:在使用MFC控件时,可能会出现一些错误,如控件无法创建、控件响应事件失败等。

可以通过正确处理这些错误,如捕获异常、输出错误信息等来保证程序的稳定性和可靠性。

总结:MFC控件提供了丰富的功能和灵活的扩展方式,可以满足大部分GUI应用程序的需求。

通过掌握MFC控件的使用,可以快速开发出功能强大、界面友好的Windows应用程序。

TAB控件用法总结

TAB控件用法总结

1、首先创建一个MFC对话框框架,在对话框资源上从工具箱中添加上一个Tab Control 控件,根据需要修改一下属性,然后右击控件,为这个控件添加一个变量,将此控件跟一个CTabCtrl类变量绑定在一起,这里设为m_tabctrl2、创建两个新的对话框资源,其属性作如下修改:Border:none //边界为空,这样它就没了标题栏Style :Child // 这样这个模板就可以当作另一个窗口的子窗口了。

其它如果没有必要,就不用改了。

在上面加一些控件什么的,具体操作跟普通对话框没有区别。

完成后从这两个对话框模板生成两个新的对话框类。

3、在主对话框中为新添加进来的两个类增加两个变量:如:CDialog1 m_mm1;CDialog2 m_mm2;4、在主对话框的OnInitDialog()函数中添加如下类似的代码:TCITEM item;item.mask = TCIF_TEXT;item.pszText = "第一页";m_tabctrl.InsertItem (0,&item);item.pszText ="第二页";m_tabctrl.InsertItem (1,&item);m_mm1.Create (IDD_DIALOG1,&m_tabctrl);m_mm2.Create (IDD_DIALOG2,&m_tabctrl);m_mm1.SetWindowPos (NULL,10,30,400,100,SWP_SHOWWINDOW);m_mm2.SetWindowPos (NULL,10,30,400,100,SWP_HIDEWINDOW );解释如下:两个InsertItem函数的调用是为了给标签控件增加两个标签页面,文本是标题。

SetWindowPos()函数设置这两个对话框在Z顺序中的位置,显示或隐藏状态.。

5、在主对话中为标签控件添加一个标签选择改变(TCN_SELCHANGE)的控件通知消息,以便在用户选择标签时通知主对话框。

cmfctabctrl的create函数 -回复

cmfctabctrl的create函数 -回复

cmfctabctrl的create函数-回复关于MFC的cmfctabctrl控件的创建步骤,包括使用的注意事项和示例代码。

一、cmfctabctrl控件简介cmfctabctrl是MFC框架中的一个控件,用于创建和管理多个具有标签式界面的视图或窗口。

它提供了一个标签页控件,可以根据需要动态地添加、删除和切换不同的视图或窗口。

二、cmfctabctrl的创建步骤1. 准备工作在创建cmfctabctrl之前,需要按照MFC项目的要求设置好项目环境,包括添加MFC类和资源等。

2. 创建cmfctabctrl对象可以在对话框类的成员变量中定义一个cmfctabctrl对象,或者在需要的地方使用动态内存分配方式创建一个cmfctabctrl对象。

例如,在CMyDialog类的头文件中添加如下代码:cppCMFCBaseTabCtrl m_tabCtrl;3. 创建标签页在对话框的OnInitDialog()函数中,调用cmfctabctrl的Create方法来创建标签页。

示例代码如下:cppm_tabCtrl.Create(CMFCTabCtrl::STYLE_FLAT, CRect(10, 10, 400, 300), this, 1);在这个示例中,STYLE_FLAT表示标签页的风格,CRect(10, 10, 400, 300)表示标签页的位置和大小,this表示将标签页作为对话框的子控件,1表示标签页的ID。

4. 添加视图或窗口到标签页在创建标签页后,可以使用cmfctabctrl的InsertTab方法来添加视图或窗口到标签页中。

示例代码如下:cppCMyView* pView = new CMyView;m_tabCtrl.InsertTab(pView, _T("View 1"), 0, -1, TRUE);在这个示例中,CMyView是自定义的视图类,_T("View 1")是标签页的名称,0表示将视图插入到第一个位置,-1表示将视图作为新标签页插入,TRUE表示视图可见。

MFC编程Tab控件的使用

MFC编程Tab控件的使用

MFC编程实例一MFC标签控件的使用首先添加TabSheet类,菜单Insert->New Class在弹出的对话框中类名写TabSheet,基类选择TabCtrlTabSheet.h里面CTabSheet window用如下代码替换:#define MAXPAGE 16class CTabSheet : public CTabCtrl{// Constructionpublic:CTabSheet();// Attributespublic:// Operationspublic:// Overrides// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CTabSheet)//}}AFX_VIRTUAL// Implementationpublic:int GetCurSel();int SetCurSel(int nItem);void Show();void SetRect();BOOL AddPage(LPCTSTR title, CDialog *pDialog, UINT ID);virtual ~CTabSheet();// Generated message map functionsprotected:LPCTSTR m_Title[MAXPAGE];UINT m_IDD[MAXPAGE];CDialog* m_pPages[MAXPAGE];int m_nNumOfPages;int m_nCurrentPage;//{{AFX_MSG(CTabSheet)afx_msg void OnLButtonDown(UINT nFlags, CPoint point);//}}AFX_MSGDECLARE_MESSAGE_MAP()};///////////////////////////////////////////////////////////////////// //////////{{AFX_INSERT_LOCATION}}// Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif// !defined(AFX_TABSHEET_H__42EE262D_D15F_46D5_8F26_28FD049E99F4__INC LUDED_)TabSheet.cpp里面TabSheet后面用如下代码替换:CTabSheet::CTabSheet(){m_nNumOfPages = 0;m_nCurrentPage = 0;}CTabSheet::~CTabSheet(){}BEGIN_MESSAGE_MAP(CTabSheet, CTabCtrl)//{{AFX_MSG_MAP(CTabSheet)ON_WM_LBUTTONDOWN()//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////// ////////// CTabSheet message handlersBOOL CTabSheet::AddPage(LPCTSTR title, CDialog *pDialog,UINT ID){if( MAXPAGE == m_nNumOfPages )return FALSE;m_nNumOfPages++;m_pPages[m_nNumOfPages-1] = pDialog;m_IDD[m_nNumOfPages-1] = ID;m_Title[m_nNumOfPages-1] = title;return TRUE;}void CTabSheet::SetRect(){CRect tabRect, itemRect;int nX, nY, nXc, nYc;GetClientRect(&tabRect);GetItemRect(0, &itemRect);nX=itemRect.left;nY=itemRect.bottom+1;nXc=tabRect.right-itemRect.left-2;nYc=tabRect.bottom-nY-2;m_pPages[0]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_SHOWWINDOW);for( int nCount=1; nCount < m_nNumOfPages; nCount++ )m_pPages[nCount]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_HIDEWINDOW);}void CTabSheet::Show(){for( int i=0; i < m_nNumOfPages; i++ ){m_pPages[i]->Create( m_IDD[i], this );InsertItem( i, m_Title[i] );}m_pPages[0]->ShowWindow(SW_SHOW);for( i=1; i < m_nNumOfPages; i++)m_pPages[i]->ShowWindow(SW_HIDE);SetRect();}void CTabSheet::OnLButtonDown(UINT nFlags, CPoint point){CTabCtrl::OnLButtonDown(nFlags, point);if(m_nCurrentPage != GetCurFocus()){m_pPages[m_nCurrentPage]->ShowWindow(SW_HIDE);m_nCurrentPage=GetCurFocus();m_pPages[m_nCurrentPage]->ShowWindow(SW_SHOW);// m_pPages[m_nCurrentPage]->SetFocus();}}int CTabSheet::SetCurSel(int nItem){if( nItem < 0 || nItem >= m_nNumOfPages)return -1;int ret = m_nCurrentPage;if(m_nCurrentPage != nItem ){m_pPages[m_nCurrentPage]->ShowWindow(SW_HIDE);m_nCurrentPage = nItem;m_pPages[m_nCurrentPage]->ShowWindow(SW_SHOW);// m_pPages[m_nCurrentPage]->SetFocus();CTabCtrl::SetCurSel(nItem);}return ret;}int CTabSheet::GetCurSel(){return CTabCtrl::GetCurSel();}///////////////////////////////////////////////////////////////////// ////////// CTabSheet添加Tab控件,设置变量m_tab的类型为TabSheet新建两个对话框,CStudent和CClassDlg,对话框内容根据需要自己设计。

MFC通用控件使用详解

MFC通用控件使用详解

PWIN98/95下演练VC5中的COMMON一族辽宁省铁岭市委办公室(112000)宋立波中文PWIN98/95之所以深受广大计算机用户的青睐,除其在32位多任务、多线程和系统稳固性等核心技术的重要改进之外,更主要的还是其优秀的用户交互界面。

这就给程序设计人员提出了新的课题,如何在自己开发的应用程序中充分利用WIN98/95支持的各种高级通用控制和视,这也是学习VC编程所必须掌握的基本内容,本文将通过实例来具体演练VC5中的这些控件,其中常用的COMMON一族主要成员包括:1.表头控制 Header Control2.图像列表控制 Image List3.列表控制和视 List Control&List View4.树控制和视 Tree Control&Tree View5.标签控制和视 Tab Control&Tab View6.工具条控制 Toolbar Control7.进度条控制 Progress Control8.滑动条控制 Slider Control9.旋转按钮控制 Spin Button Control10.状态条控制 Status Bar Control其中,绝大部分通用控制在MFC类库中都存在两种封装形式,即控制类和视类,控制类主要是供直接使用控制而提供的,而视类则是通过间接使用控制而提供的,视类可以更好地把控制类集成到MFC结构中,并且使用视类可以利用引用直接对嵌套在其中的控制进行各种操作。

两者在使用方法上没有太大区别,就拿列表控制类和视类来说,当创建列表视后可通过CListCtrl& ctrlList = GetListCtrl()成员函数取得视类引用ctrlList之后,就可以利用列表视的视函数对视进行各项操作(ctrlList.Add等)。

一、PWIN98/95下演练CHeadCtrl表头控制(CHeaderCtrl)通常应用在窗口中的文本或数据的列表之上。

MFC Table Control使用

MFC Table Control使用

VS2013 MFC Table Control 使用1.新建MFC项目工程1.1 打开vs2013,点击文件->新建->项目,如图(1)所示图(1)1.2 在Visual C++ /MFC/MFC应用程序/名称输入工程名,如图(2)所示,然后点击确定,接下来是MFC创建向导,点击“下一步”,当出现应用程序类型时,选择“基于对话框”,如图(3)所示图(2)图(3)然后点击”完成”,如图(4)所示图(4)2.添加table ctronl 控件2.1在左侧“资源文件”中双击打开MFCTabl.rc,删除默认自带的文本,和两个按钮如图(5)所示图(5)2.2. 添加tab control控件,点击工具箱/Tab Control/,按住左键不松开,放到MFCTabl对话框中,然后将此控件拖至合适的窗口大小,如图(6)所示图(6)2.3. 添加tab项目,打开CMFCTablDlg .cpp文件,找到BOOL CMFCTablDlg::OnInitDialog()函数,在SetIcon(m_hIcon, FALSE); 添加如下代码m_tab.InsertItem(0, _T("系统登录"));m_tab.InsertItem(1, _T("服务器设置"));m_dialog1.Create(IDD_DIALOG1, GetDlgItem(IDC_TAB1));m_dialog2.Create(IDD_DIALOG2, GetDlgItem(IDC_TAB1));//获得IDC_tabMain客户区大小CRect rs;m_tab.GetClientRect(&rs);//调整子对话框在父窗口中的位置,可以改动数值,使子窗体的大小合适;//调整子对话框在父窗口中的位置,根据实际修改rs.top += 25;rs.bottom -= 40;rs.left += 1;rs.right -= 10;//设置子对话框尺寸并移动到指定位置m_dialog1.MoveWindow(&rs);m_dialog2.MoveWindow(&rs);//分别设置隐藏和显示m_dialog1.ShowWindow(true);m_dialog2.ShowWindow(false);//设置默认的选项卡m_tab.SetCurSel(0);打开MFCTablDlg.h,找到class CMFCTablDlg : public CDialogEx添加如下变量CDialogEx m_dialog1, m_dialog2;添加tabl control变量,在资源视图上,点击鼠标右键,选择添加变量,如图(7)所示,在弹出的对话框中,在变量名一项中,输入m_tab,如图(8)所示图(7)图(8)2.4 .添加子对话框双击左侧的MFCTabl.rc,右键点击“MFCTabl.rc”,点击“添加资源”,在弹出的对话框中,选择Dialog/新建。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MFC编程实例一
MFC标签控件的使用
首先添加TabSheet类,菜单Insert->New Class
在弹出的对话框中类名写TabSheet,基类选择TabCtrl
TabSheet.h里面CTabSheet window用如下代码替换:
#define MAXPAGE 16
class CTabSheet : public CTabCtrl
{
// Construction
public:
CTabSheet();
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CTabSheet)
//}}AFX_VIRTUAL
// Implementation
public:
int GetCurSel();
int SetCurSel(int nItem);
void Show();
void SetRect();
BOOL AddPage(LPCTSTR title, CDialog *pDialog, UINT ID);
virtual ~CTabSheet();
// Generated message map functions
protected:
LPCTSTR m_Title[MAXPAGE];
UINT m_IDD[MAXPAGE];
CDialog* m_pPages[MAXPAGE];
int m_nNumOfPages;
int m_nCurrentPage;
//{{AFX_MSG(CTabSheet)
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
///////////////////////////////////////////////////////////////////// ////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif
// !defined(AFX_TABSHEET_H__42EE262D_D15F_46D5_8F26_28FD049E99F4__INC LUDED_)
TabSheet.cpp里面TabSheet后面用如下代码替换:
CTabSheet::CTabSheet()
{
m_nNumOfPages = 0;
m_nCurrentPage = 0;
}
CTabSheet::~CTabSheet()
{
}
BEGIN_MESSAGE_MAP(CTabSheet, CTabCtrl)
//{{AFX_MSG_MAP(CTabSheet)
ON_WM_LBUTTONDOWN()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
///////////////////////////////////////////////////////////////////// ////////
// CTabSheet message handlers
BOOL CTabSheet::AddPage(LPCTSTR title, CDialog *pDialog,UINT ID)
{
if( MAXPAGE == m_nNumOfPages )
return FALSE;
m_nNumOfPages++;
m_pPages[m_nNumOfPages-1] = pDialog;
m_IDD[m_nNumOfPages-1] = ID;
m_Title[m_nNumOfPages-1] = title;
return TRUE;
}
void CTabSheet::SetRect()
{
CRect tabRect, itemRect;
int nX, nY, nXc, nYc;
GetClientRect(&tabRect);
GetItemRect(0, &itemRect);
nX=itemRect.left;
nY=itemRect.bottom+1;
nXc=tabRect.right-itemRect.left-2;
nYc=tabRect.bottom-nY-2;
m_pPages[0]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_SHOWWINDOW);
for( int nCount=1; nCount < m_nNumOfPages; nCount++ )
m_pPages[nCount]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_HIDEWINDOW);
}
void CTabSheet::Show()
{
for( int i=0; i < m_nNumOfPages; i++ )
{
m_pPages[i]->Create( m_IDD[i], this );
InsertItem( i, m_Title[i] );
}
m_pPages[0]->ShowWindow(SW_SHOW);
for( i=1; i < m_nNumOfPages; i++)
m_pPages[i]->ShowWindow(SW_HIDE);
SetRect();
}
void CTabSheet::OnLButtonDown(UINT nFlags, CPoint point)
{
CTabCtrl::OnLButtonDown(nFlags, point);
if(m_nCurrentPage != GetCurFocus())
{
m_pPages[m_nCurrentPage]->ShowWindow(SW_HIDE);
m_nCurrentPage=GetCurFocus();
m_pPages[m_nCurrentPage]->ShowWindow(SW_SHOW);
// m_pPages[m_nCurrentPage]->SetFocus();
}
}
int CTabSheet::SetCurSel(int nItem)
{
if( nItem < 0 || nItem >= m_nNumOfPages)
return -1;
int ret = m_nCurrentPage;
if(m_nCurrentPage != nItem )
{
m_pPages[m_nCurrentPage]->ShowWindow(SW_HIDE);
m_nCurrentPage = nItem;
m_pPages[m_nCurrentPage]->ShowWindow(SW_SHOW);
// m_pPages[m_nCurrentPage]->SetFocus();
CTabCtrl::SetCurSel(nItem);
}
return ret;
}
int CTabSheet::GetCurSel()
{
return CTabCtrl::GetCurSel();
}
///////////////////////////////////////////////////////////////////// ////////
// CTabSheet
添加Tab控件,设置变量m_tab的类型为TabSheet
新建两个对话框,CStudent和CClassDlg,对话框内容根据需要自己设计。

将这两个对话框属性设置为:styles选项卡里面style选择child,然后将title bar复选框勾选删掉
tabDlg.h文件里面添加
#include "TabSheet.h"
#include "Student.h"//标签里面要显示的对话框类
#include "ClassDlg.h"
在class tabDlg里面添加private成员并声明要显示的对话框的一个对象,即private:
CStudent dlg;
ClassDlg dlg2;
最后在tabDlg.cpp初始化函数中添加如下代码即可
m_tab.AddPage("班级成绩", &dlg, IDD_DIALOG1);
m_tab.AddPage("年级成绩", &dlg2, IDD_DIALOG2);
m_tab.Show();
运行结果:。

相关文档
最新文档