MFC中TAB Control的用法总结

合集下载

单文档-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控件。

TabControl 的用法

TabControl 的用法

TabControl 收藏判断选中的选项卡(TabPage)(1)用TabControl 的SelectedTab属性if(tabControl1.SelectedTab == tabPage2)(2)用TabControl 的SelectedIndex 属性if(tabControl1.SelectedTab == 1)设置当前选项卡(TabPage)(1)用SelectTab 方法将指定的选项卡(TabPage)设置为当前的选择卡(TabPage)。

重载形式如下:TabControl.SelectTab (Int32)使具有指定索引的选项卡成为当前选项卡。

TabControl.SelectTab (String)使具有指定名称的选项卡成为当前选项卡。

TabControl.SelectTab (TabPage)使指定的TabPage 成为当前选项卡。

(2)DeselectTab 方法将指定的选项卡(TabPage)后面的选项卡成为当前选项卡(TabPage)。

重载形式如下:TabControl.DeselectTab (Int32)使具有指定索引的选项卡后面的选项卡成为当前选项卡。

TabControl.DeselectTab (String)使具有特定名称的选项卡后面的选项卡成为当前选项卡。

TabControl.DeselectTab (TabPage)使指定的TabPage 后面的选项卡成为当前选项卡。

TabControl 变更事件在TabControl 中的当前选项卡发生更改时,将按以下顺序发生下列事件。

DeselectingDeselectedSelectingSelected(1)Deselecting 事件在取消选择某个选项卡(TabPage)之前发生,使处理程序能够取消选项卡(TabPage)更改。

(2)Deselected 事件当取消选择选项卡(TabPage)时发生。

(3)Selecting 事件在取消选择某个选项卡(TabPage)之前发生,使处理程序能够取消选项卡(TabPage)更改。

cmfctabctrl的create函数 -回复

cmfctabctrl的create函数 -回复

cmfctabctrl的create函数-回复题目:CMFCTabCtrl的Create函数详解引言:CMFCTabCtrl是MFC类库中常用的标签控件,可以在一个主窗口中创建多个标签页,并在不同标签页间切换显示不同内容。

其中,Create函数是CMFCTabCtrl类中的一个重要成员函数,用于创建并初始化标签控件。

在本文中,我们将一步一步详细解析CMFCTabCtrl的Create函数的用法,使读者能更好地理解和使用该函数。

I. 功能介绍CMFCTabCtrl的Create函数用于在指定的主窗口中创建一个标签控件,并进行初始化设置。

II. 函数原型BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, DWORD dwTabCtrlStyle = CMFCTabCtrl::STYLE_3D_SCROLLED, DWORD dwStyleEx = 0);III. 函数参数解析1. dwStyle:DWORD类型参数,指定标签控件的风格,例如CMFCTabCtrl::STYLE_3D_SCROLLED表示为带有滚动条的立体风格。

2. rect:RECT类型参数,指定标签控件的位置和大小,通过传入坐标值进行设置。

3. pParentWnd:CWnd*类型参数,指定父窗口的指针,即标签控件应该创建在哪个窗口中。

4. nID:UINT类型参数,指定标签控件的标识ID,用于唯一标识一个控件,可用于其他操作。

5. dwTabCtrlStyle:DWORD类型参数,指定标签控件特定的风格,例如STYLE_3D_SCROLLED表示带有滚动条的立体风格。

6. dwStyleEx:DWORD类型参数,指定标签控件的附加风格。

IV. 函数返回值Create函数返回一个BOOL类型值,表示创建标签控件的成功与否。

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

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的选项卡控件有很大的不同,每个属性页是用一个“窗体”(对话框)来实现,于是要为每个属性页对话框建类,还要关联、初始化……实在麻烦得多。

VS下tabcontrol使用方法(非常实用)

VS下tabcontrol使用方法(非常实用)

VS下tabcontrol使用方法(非常实用)1. 在Visual Studio 2005中,新建一个项目,选择MFC应用程序, 取名MyTab, 选择Dialog based(基于对话框), 然后Finish.2. 删除对话框上默认添加的三个控件. 添加Tab Control控件,右键选择“属性”,并设置ID为IDC_TABMAIN。

调速尺寸使其布满整个对话框. 选中Tab Control控件,右键选择“添加变量”,变量名为m_tabMain. 类型为CTabCtrl.3. 在CXXXDlg类中的对话框初始化函数OnInitDialog里面添加如下代码://添加选项卡m_tabMain.InsertItem(0,_T("选项卡1"));//“选项卡1”可更改,是sheet页的名字;m_tabMain.InsertItem(1,_T("选项卡2"));m_tabMain.InsertItem(2,_T("选项卡3"));4.在资源视图里的Dialog,点击"Dialog”右键,选择"插入Dialog”,插入三个Dialog,ID分别命名为IDD_DIALOG1, IDD_DIALOG2, IDD_DIALOG3(可根据具体Dialog的用途来命名). 每个Dialog的属性中,style为Child, Border为None, 宽度调整下. 再分别为其添加对应的基于CDialog类CDialog1, CDialog2, CDialog3.5. 在类视图中,点CMyTabDlg类右键,选择添加变量,依次添加三个成员变量m_para1, m_para2, m_para3(命名也随意,最好对应着类), 分别是三个子对话框的实例. 代码如下:CDialog1 m_para1;CDialog2 m_para2;CDialog3 m_para3;6. 在IDD_MYTAB_DIALOG对话框的初始化函数OnInitDialog里面添加如下代码://关联对话框,并且将IDC_TABMAIN控件设为父窗口m_para1.Create(IDD_DIALOG1,GetDlgItem(IDC_TABMAIN));m_para2.Create(IDD_DIALOG2,GetDlgItem(IDC_TABMAIN));m_para3.Create(IDD_DIALOG3,GetDlgItem(IDC_TABMAIN));//获得IDC_tabMain客户区大小CRect rs;m_tabMain.GetClientRect(&rs);//调整子对话框在父窗口中的位置,可以改动数值,使子窗体的大小合适;rs.top+=20;rs.bottom-=3;rs.left+=2;rs.right-=2;//设置子对话框尺寸并移动到指定位置m_para1.MoveWindow(&rs);m_para2.MoveWindow(&rs);m_para3.MoveWindow(&rs);//分别设置隐藏和显示m_para1.ShowWindow(true);m_para2.ShowWindow(false);m_para3.ShowWindow(false);//设置默认的选项卡m_tabMain.SetCurSel(0);7. 在资源视图中,右键Tab Control,选择“添加事件处理程序”,选择TCN_SELCHANGE事件,事件处理程序名称“OnTcnSelchangeTabmain”,这样就有了切换sheet页的响应函数OnSelchangeTabmain(NMHDR* pNMHDR, LRESULT* pResult) ,函数体代码如下:// TODO: 在此添加控件通知处理程序代码int CurSel = m_tabMain.GetCurSel();switch(CurSel){case 0:m_para1.ShowWindow(true);m_para2.ShowWindow(false);m_para3.ShowWindow(false);break;case 1:m_para1.ShowWindow(false);m_para2.ShowWindow(true);m_para3.ShowWindow(false);break;case 2:m_para1.ShowWindow(false);m_para2.ShowWindow(false);m_para3.ShowWindow(true);break;default:;}*pResult = 0;8.现在在类视图中,点根目录mytab,右键选择“生成”,应该是一个成功的。

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通用控件使用详解

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应用程序——标签控件_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同样比较常见,它能够把任何字符串内容以列表的方式显示出来,这种显示方式的特点是整洁、直观,在实际应用中能为用户带来方便。

mfc tab control的用法

mfc tab control的用法

mfc tab control的用法MFC(Microsoft Foundation Classes)是微软提供的一套C++类库,用于开发Windows应用程序。

MFC的Tab Control是一个常用的控件,用于创建选项卡式界面,使用户能够在同一对话框或窗体内切换不同的视图或功能区。

以下是MFC Tab Control的基本用法:1. 在资源编辑器中添加Tab Control:-打开你的对话框资源,从工具箱中选择"Tab Control"控件,然后在对话框上绘制出你想要的Tab控件大小。

2. 为Tab Control添加标签页:-在属性页中,为Tab Control添加标签页。

选中Tab Control,然后在属性页中的"Styles"中添加"Tab"样式,接着在"General"选项卡中,通过"Add Variable"按钮添加与Tab Control相关联的变量。

3. 添加与每个标签页相关联的对话框或视图:-对于每个标签页,你可以在对话框资源中添加一个对应的对话框,或者在代码中创建一个新的视图类。

确保在创建这些对话框或视图类时,使用“添加类向导”选择“基类”为“CDialog”或“CFormView”。

4. 在代码中管理Tab Control:-在你的对话框或窗体的类中,你可以使用类似以下的代码在运行时管理Tab Control:```cpp// 声明Tab Control变量CTabCtrl m_tabCtrl;// 在OnInitDialog中初始化Tab Controlm_tabCtrl.SubclassDlgItem(IDC_YOUR_TAB_CONTROL_ID, this);// 添加标签页TCITEM tcItem;tcItem.mask = TCIF_TEXT;tcItem.pszText = _T("Tab 1");m_tabCtrl.InsertItem(0, &tcItem);// 添加标签页对应的对话框或视图CYourDialog1 dlg1;dlg1.Create(IDD_YOUR_DIALOG1, &m_tabCtrl);dlg1.ShowWindow(SW_HIDE);CYourDialog2 dlg2;dlg2.Create(IDD_YOUR_DIALOG2, &m_tabCtrl);dlg2.ShowWindow(SW_HIDE);// 在标签切换时显示对应的对话框或视图void OnSelChange(NMHDR* pNMHDR, LRESULT* pResult){// 获取当前选中的标签索引int nSelIndex = m_tabCtrl.GetCurSel();// 隐藏所有对话框或视图dlg1.ShowWindow(SW_HIDE);dlg2.ShowWindow(SW_HIDE);// 根据选中的标签显示对应的对话框或视图switch (nSelIndex){case 0:dlg1.ShowWindow(SW_SHOW);break;case 1:dlg2.ShowWindow(SW_SHOW);break;// Add more cases for additional tabs...}*pResult = 0;}```-确保在资源编辑器中给每个标签页关联一个ID,这样你就可以在代码中引用它们。

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表示视图可见。

Win32 Tab Control的创建与使用

Win32 Tab Control的创建与使用

Tab Control控件的使用[基于Windows API]最后效果图如下:这个只是一个简单的创建Tab控件,后面会讲解怎么创建一个空间放置在这个Tab页面上. 操作步骤如下:1.导入头文件:#include <CommCtrl.h>,2.在消息处理函数中的WM_CREATE消息中将Tab控件创建处理:在WM_CREATE消息中:使用WC_TABCONTROL 参数传入CreateWindow函数中,创建Tab控件.如下:上图中的hwndTab 是一个局部的静态变量,你也可以声明为全局变量.这里的原因这里就不详细讲解了,后续有空的时候就讲解一下.hwndTab声明如下:3.当使用CreateWindow创建后必须验证,确保创建成功.4.给Tab控件传入Tab控件页的值,这里使用的是星期1~星期7作为Tab控件的标签名:4.1.传入TabCtrl_InsertItem一个TCITEM变量来创建.4.2.给TCITEM变量赋值注意,g_achTemp 是一个TCHAR类型的数组,用来存储标签名的变量,因为标签名使用for循环写入的.全局变量g_achTemp定义如下:4.3.使用for循环写入标签名:5.使用ShowWindow函数显示Tab控件此时我们可以编译运行.结果如上图所示.由于我们没有加入消息处理,若以此时的Tab控件没有任何内容,我们会在接下来的讲解部分讲解怎么处理消息.Tab控件的WM_NOTIFY消息传递与处理Tab控件发生标签页被切换的时候发生一个WM_NOTIFY,因此我们只要处理了WM_NOTIFY 消息就可以帮我们进行Tab控件的消息处理.结果图如下:步骤如下:1.给主程序添加一个WM_NOTIFY消息处理:2.添加一个静态局部变量hwndTab, hwndTab1, hwndTab2.分别表示Tab控件与Tab控件标签页面1,2中的按钮Tab1与Tab2按钮3.使用CreateWindow函数传入一个BUTTON类名来创建两个按钮Tab1,Tab2.注意此时我们应该使用ShowWindow函数将标签1页面中的控件显示而将标签2页面中的控件隐藏.4.讲解一下WM_NOTIFY消息中的wParam与lParam参数的含义,wParam:是一个标识发送WM_NOTIFY消息的控件IDlParam: 是一个指向NMHDR结构体的指针,其中NMHDR的定义如下:因此我们可以在WM_NOTIFY消息的处理程序中通过判断NMHDR结构体中的code 的值来确定Tab控件发送的消息的通知码来判断Tab控件的确切消息,TCN_SELCHANGE是当Tab控件的标签页发生改变的时候发送的消息.。

MFC中使用Tab Control从CTabCtrl控件类继承自己

MFC中使用Tab Control从CTabCtrl控件类继承自己

使用Tab Control,并且从CTabCtrl控件类继承自己的类(CTabSheet)来处理。

首先我先介绍一下如何使用CTabSheet。

先要制作子对话框类,这次的子对话框类不要从CPropertyPage继承,而是直接从CDialog继承。

并且各个子对话框资源的属性应设置为:Style为Child,Border为None。

在主对话框资源中,加入一个Tab Control,并且适当调整位置和大小。

利用ClassWizard来为这个Tab Control创建一个CTabSheet的控件变量。

步骤/方法1.在主对话框的OnInitDialog()加入:m_sheet.AddPage("tab1", &m_page1, IDD_DIALOG1);m_sheet.AddPage("tab2", &m_page2, IDD_DIALOG2);m_sheet.Show();就这样就可以在对话框上制作出一个完美的属性页了。

效果和上图完全一样。

下面我就来讲讲CTabSheet类的细节内容。

CTabSheet是从CTabCtrl继承来的,用于Tab Control的控件类。

在类中有一个成员变量用来记录各子对话框的指针CDialog*m_pPages[MAXPAGE]; MAXPAGE是该类所能加载的标签的最大值。

类中有一个AddPage方法,用于记录子对话框的指针和所使用对话框资源的ID号。

BOOL CTabSheet::AddPage(LPCTSTR title, CDialog *pDialog,UINT ID){if( MAXPAGE == m_nNumOfPages )return FALSE;//保存目前总的子对话框数m_nNumOfPages++;//记录子对话框的指针、资源ID、要在标签上显示的文字m_pPages[m_nNumOfPages-1] = pDialog;m_IDD[m_nNumOfPages-1] = ID;m_Title[m_nNumOfPages-1] = title;return TRUE;}2.在使用AddPage加入了若干子对话框后,必须调用CTabSheet的Show方法来真正生成标签和子对话框。

MFC:Tab_Control_控件的利用

MFC:Tab_Control_控件的利用

1.先建立一个对话框MFC应用程序,然后在工具箱里面把Tab Control控件放到对话框中的合适位置上。

再在对话框类中,声明一个CTabCtrl变量:CTabCtrl m_tab;变量m_tab用来与对话框中的Tab Control控件交互,为此要在DoDataExchange 函数中加入DDX_Control语句:DDX_Control(pDX, IDC_TAB1, m_tab);IDC_TAB1是Tab Control控件的ID。

2.建立两个对话框程序,用来当做Tab Control控件的两个页。

别忘了把Style 改为Child,Border改为None。

然后就可以在上面加其他控件了。

接着分别为这两个对话框建立两个类,比如CPage1和CPage2。

然后在对话框类头文件中,加入这两个对话框对象。

同时增加一个变量intm_CurSelTab,用了表明是哪个Page即将被切换。

int m_CurSelTab;CPage1 m_page1;CPage2 m_page2;CDialog* pDialog[2];? //用来保存对话框对象指针在对话框类的初始化函数中需要把CPage1、CPage2和Tab Control关联起来,并保存页面地址,设置初始页面。

//为Tab Control增加两个页面 m_tab.InsertItem(0, _T("Farm"));m_tab.InsertItem(1, _T("Note")); ? //创建两个对话框m_page1.Create(IDD_DIALOG1, &m_tab); m_page2.Create(IDD_DIALOG2,&m_tab); //设定在Tab内显示的范围 CRect rc; m_tab.GetClientRect(rc); rc.top += 20; rc.bottom -= 0; rc.left += 0; rc.right -= 0;m_Farm.MoveWindow(&rc); m_Note.MoveWindow(&rc); ? //把对话框对象指针保存起来 pDialog[0] = &m_page1; pDialog[1] = &m_page2; //显示初始页面pDialog[0]->ShowWindow(SW_SHOW); pDialog[1]->ShowWindow(SW_HIDE); //保存当前选择 m_CurSelTab = 0;.codearea{ color:black; background-color:white; line-height:18px; border:1px solid #4f81bd; margin:0; width:auto !important; width:100%; >这里我们用了一个CDialog指针数组来进行保存Tab Control的每个页,数组的大小是Tab Control页面的个数,数组下标对应着每个页面的索引(这样方便快速存取)。

MFC中List Tab控件及List Control控件使用

MFC中List Tab控件及List Control控件使用

VC++ 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; VC如何在类中增加成员变量?我是个新手,在网上查到一个Tab Control控件的使用的例子,按照例子操作时,到第五步就看不懂了,第五步如下。

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控件的文本内容或者属性,在运行过程中发生变化的时候,由于背景一直没有擦除(为了实现透明),会出现重影,导致文本模糊成一团。

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)的控件通知消息,以便在用户选择标签时通知主对话框。

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)通常应用在窗口中的文本或数据的列表之上。

tabctrl的用法

tabctrl的用法

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

然后从这两个对话框模板生成两个新的对话框类CDialog1,CDialog2。

3、在主对话框中为新添加进来的两个类增加两个变量:CDialog1 m_mm1;CDialog2 m_mm2;添加完后,注意加上两对话框的头文件:#include "Dialog1.h",#include "Dialog2.h"4、在主对话框的OnInitDialog()函数中添加如下类似的代码:BOOL CTabCtrlDlg::OnInitDialog(){CDialog::OnInitDialog();...// TODO: Add extra initialization hereTCITEM 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); //在主对话框上创建DIALOG1m_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);return TRUE; // return TRUE unless you set the focus to a control}解释如下:InsertItem函数是为了给标签控件增加两个标签页面,文本是标题。

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