当前位置:文档之家› MFC中使用Tab Control从CTabCtrl控件类继承自己

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

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

方法来真正生成标签和子对话框。

void CTabSheet::Show()

{

//利用CDialog::Create来创建子对话框,并且使用CTabCtrl::InsertItem来加上相应的标签

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();

}

3.生成好标签和子对话框后,调用CTabSheet::SetRect来计算并调整

属性页的大小。

void CTabSheet::SetRect()

{

CRect tabRect, itemRect;

int nX, nY, nXc, nYc;

//得到Tab Control的大小

GetClientRect(&tabRect);

GetItemRect(0, &itemRect);

//计算出各子对话框的相对于Tab Control的位置和大小

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);

}

在单击标签栏后,应该是相应的子对话框显示,正在显示的子对话框应该隐藏。因此利用ClassWizard来处理WM_LBUTTONDOWN消息。

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);

}

}

这样利用CTabSheet这个类就可以轻松地在对话框上放置自己的属性页了,并且控件都分散在各子对话框类中,符合对象封装的思想。而且用这个方法来制作属性页就可以利用ClassWizard来轻松地生成消息映

射处理Tab Control的消息了。例如:可以处理TCN_SELCHANGE消息来对切换了标签时进行一些动作。

经验内容仅供参考,如果您需要解决具体问题(尤其在法律、医学等领域),建议您接下来详细咨询相关领域专业人士。

MFC编程Tab控件的使用

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;

各种控件的详细使用介绍

各种控件的详细使用介绍:常用属性,常用事件,常用的方法 控件的分类(控件根据所属的基类,进行划分) 根据是否能容纳其他控件,可以分为: 容器类控件(包括:表单集,表单,表格,表格列,页框,页面,命令按钮组,选项按钮组,工具栏,容器控件) 非容器类控件(包括:标签,文本框,编辑框,命令按钮,复选框,列表框,组合框,微调框,形状,计时器,线条,图像) 另外一种划分方法,是根据控件和数据环境中数据源的关系进行划分,控件分为:绑定型控件是指内容可以和与数据环境后端的表、视图或查询中的字段和内存变量相关联的控件。在该控件中输入、修改或选择的值将保存在数据源中,而数据源中值的改变,也将改变控件的值。(复选框,文本框,编辑框,列表框,组合框,表格,选项按钮组,微调框,activex控件) 非绑定型控件是指其内容不与后端的表、视图和查询中的字段或内容相关联的控件。(命令按钮,命令按钮组,线条,标签,计时器,形状,图像) 一、标签控件(Label)——非容器类控件,非数据绑定控件 用以显示文本,显示提示信息。标签上的显示文本由caption属性指定。 其中的文本在表单运行时不能被用户直接修改。 常用属性: 常用事件:mousemove 鼠标移动事件mousedown 鼠标按下左键事件 Click 单击事件mouseup 释放鼠标左键事件

【范例】参考实验作业HomeWork7-1-1.scx。 二、文本框与编辑框——非容器类控件,数据绑定控件 文本框——用以显示或编辑表中的非备注型字段的数据。 编辑框——用途与文本框相似,用以显示或编辑长字段或备注型字段的数据。 两者均为数据绑定控件,非容器类控件 文本框的常用属性: ?ControlSource 指定与文本框绑定的数据源 ?Value 指定文本框的当前选定的值 例如:value=0 表示文本框中的数据设置为数值型,不能输入字母或汉字?PasswordChar 用设定的字符来显示用户输入的值,而实际输入保存在value属性中。 例如:PasswordChar=*或者其他的符号。文本框中显示为*或其他符号

(完整版)MSFlexGrid控件属性及使用方法整理

MSFlexGrid控件属性及使用方法整理 ================================================= MSFlexGrid总行数和总列数的定义: MSFlexGrid1.Rows = 5 '规定表格的总行数为5行 MSFlexGrid1.Cols = 2 '规定表格的总列数为2行 MSFlexGrid某一单元格的文本内容 MSFlexGrid1.TextMatrix(3, 0) ="网站地址" '定义第3行的左边表头文本内容为:“网站地址”MSFlexGrid1.TextMatrix(3, 2) ="https://www.doczj.com/doc/aa13112356.html, " 定义第3行第2列的文本内容为:“https://www.doczj.com/doc/aa13112356.html,” 右键选中MSFlexGrid的 Private Sub MSFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) If Button = vbRightButton Then MSFlexGrid1.Row = y / MSFlexGrid1.RowHeight(0) - 0.5 MSFlexGrid1.RowSel = MSFlexGrid1.Row '右键选种当前行---备用u3u3: 'MSFlexGrid1.Col = 0 'MSFlexGrid1.ColSel = MSFlexGrid1.Cols - 1 '右键选种当前单元格---备用u3u3: 'MSFlexGrid1.Col = x / MSFlexGrid1.ColWidth(0) - 0.5 'MSFlexGrid1.Col = MSFlexGrid1.Col 'Text1.Text = MSFlexGrid1.Text End If End Sub

实验名称MFC基本控件的使用

1、实验名称:MFC基本控件的使用 2、实验目的:掌握编辑框类及其方法,熟练掌握利用编辑框类开发基于MFC的应用 程序的方法。 3、实验内容:使用MFC AppWizard创建如图一所示的基于对话窗的应用程序,实现算 术加、减、乘和除运算。 图一 4、程序实现方法: (1)使用AppWizard建立应用程序框架 ①在进入Visual C++ 6.0的第一个界面下,选择MFC AppWizard(exe),在Project name 文本输入框中输入新建的项目名称“计数器”,并设置其所在位置,单击OK按钮,如图二所示。 图二Visual C++ 6.0的第一个界面 ②在MFC AppWizard的第一步中选择基本对话,如图三所示,其余的都采用默认选项。

图三MFC AppWizard的第一步界面 这样就建立了一个基于对话框的程序,如图四所示。 图四基于对话框的界面 (2)利用资源编辑器建立对话框 在图四的Resource View选项卡中打开Dialog资源组,本程序的工程文件名为计数器,因此,系统自动产生一个名为IDD_MY_DIALOG的资源文件,双击IDD_ MY_DIALOG,在右边的窗口中显示出待编辑的对话框。根据如图一所示的样式,利用Visual C++ 6.0的控键(Controls)建立对话框。 下面以“数据1”编辑框和“+”按钮为例介绍控件的创建过程,其他编辑框和按钮的创建可参照此操作: ①在图四中Controls的“编辑框”按钮上单击鼠标左键、在如图一所示的对话框编辑窗口上的“数据1”编辑框的位置上,按下鼠标左键,并拖动鼠标画出一个大小合适的编辑框。在编辑框上单击鼠标右键,在弹出的快捷莱单中选择Properties选项,此时弹出Edit Properties 属性设置对话框,如图五所示,在该对话框中输入ID属性。

单文档-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");

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 中的当前选项卡发生更改时,将按以下顺序发生下列事件。 Deselecting Deselected Selecting Selected

控件使用

、控件mscomm32.ocx 的几个重要属性 CommPort:设置并返回通讯端口号。 Settings:以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位PortOpen:设置并返回通讯端口的状态。也可以打开和关闭端口。 Input:从接收缓冲区返回和删除字符。 Output:向传输缓冲区写一个字符串。 InBufferCount:返回接收缓冲区中等待的字符数,该属性在设计时无效,可以把InBufferCount 属性设置为0 来清除接收缓冲区。 InBufferSize:设置并返回接收缓冲区的字节数,接收缓冲区的大小。Rthreshold:产生OnComm 事件之前要接收的字符数。设置Rthreshold 为1,接收缓冲区收到每一个字符都会使MSComm 控件产生OnComm 事件。设置为0(缺省值)则不产生OnComm 事件。 CommEvent:返回最近的通讯事件或错误。该属性在设计时无效,在运行时为只读。只要有通讯错误或事件发生时都会产生OnComm 事件,CommEvent 属性存有该错误或事件的数值代码。CommEvent 属性返回2 表示收到Rthreshold 个字符。该事件将持续产生直到用Input 属性从接收缓冲区中删除数据。 2、实例: 该事例演示如何控制COM口发送命令及如何接收数据。本事例采用轮讯方式。适用于通讯数据 不是很巨大的和要求不是很高速的情况下。 (1)在VFP中,建立一个新的表单 (2)插入文本(命名为TEXT1,用来显示读取的数据) (3)建立Microsoft Communication Control1 控件在工具栏中点插入ole容器控件,选择Microsoft Communication Control 控件(NAMe为mscomm1) (4)建立一个按纽命名为command1 (5)在CHICK属性里下如下代码: **存储变量名字 buffer="" ** 使用COM1。 https://www.doczj.com/doc/aa13112356.html,mPort = 1 **9600 波特,无奇偶校验,8 位数据,一个停止位。 thisform.MSComm1.Settings = "9600,N,8,1" * 告诉控件读入整个缓冲区。 thisform.MSComm1.InputLen = 0 * 打开端口。 thisform.MSComm1.PortOpen = True **将attention 命令送到调制解调器。这是MODEM的状态读取命令 thisform.MSComm1.Output = "ATV1Q0" & Chr$(13) ** CHR(13)是回车符号,用来表示命令结束 **等待数据返回到串行端口。 vv=1 do while .t. Buffer = thisform.MSComm1.Input *从串行端口读"OK" 响应。

VB6.0基本控件的属性

VB基本控件的属性,方法经及事件 VB基本控件的属性,方法经及事件 VB基本控件的属性,方法经及事件 所有控件都具有的属性: 1、Name: 表示在代码中用来标识一个控件的名字。 2、Enabled: 表示一个控件是否可以响应一个事件,即该控件可不可用。 值为true: 可以响应;值为false: 不可以看见。 3、Visible: 表示一个控件是否可见。值为true:可以看见;值为false: 不可以看见。所有控件都有具有的事件: 1、KeyDown : 当用户按下键盘上一个键时发生的。 2、KeyUp : 在用户松开键盘上按下的键时发生的。 3、KeyPress : 在Key Down和Key Up事件之间发生。 4、MouseDown : 在鼠标被按下时触发的。 5、MouseUp :在用户松开鼠标键时发生的。 6、Click :在用户单击鼠标左键时发生的。 7、DblClick :在用户双击鼠标时发生的。 一、窗体(Form) 属性: 1、Caption: 表示窗体标题栏的文字。 2、BorderStyle: 一般情况下为默认值,若更改为下列值: 1)值为0:没有窗体标题栏 2)值为1:窗体运行之后不能改变大小 3、WindowState: 设置窗体的大小。 3)值为0:窗体正常大小 4)值为1:窗体最小化 值为2:窗体最大化 4、BackColor: 表示窗体的背景颜色 事件: 1、Initialize(初始化事件): 在窗体加载和显示之前触发,这个事件只触一次。 2、Load(加载事件): 用来完成窗体显示之前需要完成的动作。 3、Activate/Deactivate (激活/非激活事件):是用户在同一个应用程序的两个或多个窗体之间移动时触发的。 4、QueryUnload(条件卸载事件): 决定窗体是如何关闭的。 触发QueryUnload事件时Unload 的参数和因素有: 1)VbFormControlMenu值为0 :选中窗体控件菜单中的Close命令。 2)VbFormCode值为1 :从代码中调用Unload 语句。 3)VbAppWindows值为2 :终止当前的Windows操作系统。 4)VbFormMDIForm值为4 :因为终止MDI父窗体而导致MDI子窗体的终止。 5、Terminate(终止事件):在窗体的所有实例从内存中清除时发生,只触发一次。方法: 1、Load:加载窗体,但不在屏幕上显示 2、Unload:卸载窗体,既从屏幕上也从内存中清除窗体。 3、Show:加载窗体并在屏幕上显示窗体。Show分为:

_003_TabControl控件的使用教程

本文档为MFC项目中Tab Control控件的图文详解教程,以下是详细步骤: 第一步:打开Microsoft Visual Studio软件(教程使用的版本为Microsoft Visual Studio Professional 2015),如下图,点击“新建项目” 第二步:选择“已安装--> 模板--> Visual C++ --> MFC --> MFC应用程序”,在名称栏输入项目名称(本教程使用默认名称),点击“确定” 第三步:选择“基于对话框”,点击“完成”

第四步:将默认对话框中的标签删除,在右边的“工具箱”中找到“Tab Control”并鼠标左键选中控件拖到左边的对话框中,并手动调整好大小 第五步:选中刚才添加好的Tab Control控件,右击选中“添加变量”或“类向导”为该控

件设置变量名(为了操作步骤简单起见,这一步选择“添加变量”,读者也可以尝试选择“类向导”来进行设置) 第六步:进入到添加成员变量向导,控件ID默认就可以(也可以选择该控件,在该控件的属性当中进行设置),在“变量名”栏中输入该控件的变量名,点击“完成”

第七步:选择“xxxDlg.cpp”包含“resource.h”头文件(也可包含在”xxxDlg.h”中) 第八步:在“xxxDlg.cpp”文件的OnInitDialog函数中添加设置Tab Control的Item代码,Tab Control的Item的下标从0开始,从左至右依次递增。(本教程共设置了4个Item,从左至右依次为“PPPOE拨号”、“在线客服”、“上网导航”、“网络测速”)编译代码并运行,结果如图所示 第九步:添加Tab Control控件对应Item的对话框。选中“资源视图--> Dialog”,右击选择“添加资源”

KVDBGrid控件使用方法

KVDBGrid控件使用方法 KVDBGrid控件是一个组态王提供的用于通过ODBC接口访问数据库的Active X控件。通过该控件,用户可以方便的访问到数据库,进行数据查询,还可将查询结果打印出来。 一、控件功能: 1.显示数据库一个表中的数据,可进行显示字段选择,查询条件限制(目前暂不支持多个表数据的查询)。 2.开发状态可设置显示表头。 3.运行状态可编辑表格中数据。但不更新数据库。 4.运行状态可动态设置过滤条件,刷新显示。 5.可打印表格中显示的数据,可进行横向和纵向分页。 二、使用说明: 1.在画面中插入控件:组态王画面菜单中编辑\插入通用控件,或在工具箱中单击“插入通用控件”按钮,在弹出的对话框中选择KVDBGrid Class,单击确定。 2.按下鼠标左键,并拖动,在画面上绘制出表格区域。 3.设置动画连接:双击控件或选择右键菜单中动画连接,在弹出的属性页中设置控件名称等信息(控件动画连接属性的具体设置请参见《组态王6.0使用手册》中控件一章)。 4.设置控件属性:选择控件右键菜单中“控件属性”。弹出控件固有属性页,可分别设置如下属性:(1)、数据源: 单击“浏览”按钮可选择或新建ODBC数据源。 选择数据源后“表名称”组合框中就自动填充了可选的表名称,可弹出下拉列表选择要显示的数据所在的表名称。 选择表名称后,“有效字段”中自动填充表中的所有字段,可通过“添加”、“删除”,“上

移”,“下移”按钮来选择要显示的字段和显示顺序。 单击显示的字段,可在右侧设置字段显示的标题、格式、对齐等属性。 最后在“查询条件”中设置限制条件(ODBC SQL语法)。如查询“日期”2001年9月1日的“原料罐液位”大于10的所有数据,则在该文本框中输入: 原料罐液位>10 and 日期=’2001/9/1’ (2)、表格属性: 可设置表格的一般属性。 说明:如固定行数大于1,则第一行显示选择字段的标题,其它固定行不自动填充,要由 使用者在设计状态编辑其显示内容。 (3)、颜色: 可设置表格颜色,背景颜色,文本颜色等信息。 (4)、字体:

Tab键的使用方法

Tab键的使用方法(计算机) Tab键——跳格键,大家都比较熟悉了吧,但是到底它有什么特殊的使用功能,却未必是大家都知道的哦。今天我将Tab键的几种使用功能进行了整理,大家可以参考学习学习。 跳格----当我们在网页输入表单的时候,在一个输入控件完成内容输入后,如果要转移到下一个控件进行输入时,可以选择使用鼠标进行光标的移动选择和点击,使得光标停在我们输入框中,以便进行内容的输入。如果不使用鼠标的话,可以点击使用Tab键,来实现光标在页面上所有可输入控件间的依次跳转,对于喜欢使用快捷键来加快操作的电脑使用者而言,挺方便的。 重命名---当我们需要将一个文件夹下的多个文件进行重命名操作的时候,我们可以先在完成第一个需要重命名的文件改名之后,改下Tab键,即可依次跳转到下一个文件的重命名状态。也是一种很方便的快捷操作方式 切换窗口---使用Alt+Tab组合快捷键,能够实现当前多个窗口的依次切换。按住Alt键,依次点击Tab键,即可实现依次切换功能。如果要反向顺序选择的话,可以使用Alt+Shift+Tab的组合键,按住A lt+Shift,然后再依次点击Tab键。切换窗口---使用Alt+Tab组合快捷键,能够实现当前多个窗口的依次切换。按住Alt键,依次点击

Tab键,即可实现依次切换功能。如果要反向顺序选择的话,可以使用Alt+Shift+Tab的组合键,按住Alt+Shift,然后再依次点击Tab 键。 快速查看文件---在cmd命令窗口,当进入一个磁盘路径后,可以输入“dir ”,然后点击Tab键,那么就依次显示出在该磁盘路径下的各种类型的所有文件或者文件夹内容。此种功能,还可以配合通配符的使用,大家可以查阅相关资料参考学习。

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标准控件。所涉及的内容包括各个控件的使用及相应的技巧。 第一节使用对话框编辑器和ClassWizard 对于大多数Windows标准控件,我们一般都使用对话框编辑器来将它们添加到对话框中。 图6. 1 在ResourceView中选择对话框 IDD_DIALOGDEMO_DIALOG

坐席控件开发接口使用说明最新

呼叫中心坐席端控件(EasyAgc.ocx)使用说 明 为什么需要坐席端控件 在一个完整的呼叫中心系统中,坐席端软件是一个重要的组成部分。坐席人员通过坐席端软件与呼叫中心服务器(CCS)进行交互,完成对通讯设备的控制和相关信息的交换,如坐席的登录、注销、离席、复席、应答、呼出、转移等等动作,都是通过坐席端软件与CCS的通信完成的。一般来说,坐席端软件与CCS之间的通信是建立在TCP/IP的基础上的。具体的通信包格式可以自行定义。为了降低坐席端软件的开发难度和加快坐席端软件的开发速度,通行的做法是把坐席端软件分成通信模块与业务模块两部分。其中业务模块会随客户的需求变化而变化,一般都需要进行定制开发;而通信部分则相对变化较少,不论什么行业的呼叫中心,其坐席端软件一般都需要包括坐席的登录,注销,呼出,应答,挂断,转移等基本通信功能。因此有必要把坐席软件的通信模块进行封装,以OCX控件的方式提供给最终用户,最终用户不需要了解坐席端与CCS之间的通信包格式,也不必学习Socket通信的开发技术,只需访问OCX控件公布的方法和属性,对OCX控件公布的事件进行响应,就可以完成坐席端软件通信模块的开发。 坐席端控件支持的开发语言 北京同力信通软件公司坐席端控件符合Windows控件标准,理论上支持所有可以支持控件的开发语言,成功通过北京同力信通软件公司公司测试的语言包括: Delphi 7.0 Visula Basic 6.0 Visual C++ 6.0 IE6.0-VBScript/Jscript 坐席端控件的接口 方法 tlaOpen tlaClose tlaLogin tlaLogoff tlaACW tlaWCA

常用基本控件测试用例

目录 树控件的测试错误!未指定书签。 下拉框(列表框)测试用例设计错误!未指定书签。 文本框为字符型错误!未指定书签。 日期控件文本框的测试错误!未指定书签。 命令按钮控件的测试错误!未指定书签。 单选按钮控件的测试错误!未指定书签。 翻页控件的测试错误!未指定书签。 上传控件的测试错误!未指定书签。 up-down控件文本框的测试错误!未指定书签。 复选框的测试错误!未指定书签。 滚动条控件的测试错误!未指定书签。 各种控件在窗体中混和使用时的测试错误!未指定书签。 查找替换操作错误!未指定书签。 插入操作错误!未指定书签。 编辑操作错误!未指定书签。 界面测试用例的设计方法错误!未指定书签。 菜单错误!未指定书签。 特殊属性错误!未指定书签。 其他错误!未指定书签。 树控件的测试外观操作返回目录 1)项目中的所有树是否风格一致 2)树结构的默认状态是怎样的。比如默认树是否是展开,是展开几级?是否有默认的焦点?默认值是什么?展开的节点图标和颜色? 3)验证点开节点时页面上树结构的连线是否显示正确。 4)如果显示节点超过页面边界是否有规定。 5)节点和叶子显示的文字规定多长要折行。 6)节点和叶子显示的文字不能有乱码。(输入中文,特殊字符) 2、执行操作 1)点某个节点时,是否只展开下一级的节点和显示该级的叶子还是显示下一级全部的。 2)点页面刷新时,树结构是否按照要求变化,树结构是否保存现状还是程默认状态。 3、数据操作 1)树结构上数据是否正确。 2)树结构上的节点和叶子是否排序正确。(升序还是降序)。 3)树结构排序是按照数据库中得记录顺序排序还是按照程序数组得顺序。 4)执行了某一操作或数据有变化后,树结构是否回到默认状态,还是按现任状态保持展开。5)执行了某一操作或数据有变化后,修改后得数据是不是在正确得位置上,状态是否正确,排序是否正确。

VC Table控件的用法

VC之TAB控件 VC中使用TAB Control控件 假如我现在有个SDI程序,View是Form View,想在上面放个Tab Control,包含两个Page。现在让我们来看看应该怎样处理。 首先当然要增加一个Tab Control资源,然后利用Class Wizard,在View中增加一个Control变量。 接着建立两个对话框资源,别忘了把Style改为Child,Border改为None。然后就可以在上面加其他控件了。 接着利用Class Wizard,分别为这两个对话框建立两个类,比如CPage1和CPage2。 然后在View类头文件中,加入这两个对话框对象。同时增加一个变量int m_CurSelTab,用了表明是哪个Page即将被切换。 为了避免用户在切换Tab时,程序对Tab Index的枚举,可以利用数组来做这个事情。 在View的初始化函数中需要把CPage1、CPage2和Tab Control关联起来,并保存页面地址,设置初始页面,等等。 void CTab_testView::OnInitialUpdate() { CFormView::OnInitialUpdate(); GetParent()->RecalcLayout(); ResizeParentToFit(); //为Tab Control增加两个页面 m_tab.InsertItem(0, _T("First")); m_tab.InsertItem(1, _T("Second")); //创建两个对话框 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 -= 8; rc.left += 8; rc.right -= 8;

组态王视频控件使用方法

组态王视频控件使用方法 第一步建立一个组态王工程; 第二步建立一个新画面; 第三步添加视频控件’具体步骤如下: 1插入通用控件video control 图1 Ifi人控件 图2 2、单击确定后鼠标变成“ +”状,按住鼠标左键,拉出一个矩形框,松开即可;

图3第三步添加按钮; 图4 第四步设置视频控件动画连接属性,完成后点击“确定”按钮,然后在开发系统界面的文件下拉菜单下选择全部存;

图5 第五步编辑按钮动画连接属性; 1、双击“打开视频”按钮,弹出下图对话框,单击“按下时”; 图6

弹出图XXX对话框选择“控件属性和方法”按钮,弹出(图8)对话框; 图7

选择“ Open Video ”单击确定弹出(图10)对话框了; 授伸名珊 |确定 両毎习 ZJ 取消 查若类型 1揑件方法 2d 屈性戒方进 Kb outB ox CapVll^ToAVI ^LoselTideo G E tl'evKum Zip enAVI 图8 KeadFort

图10 “LONG nReslnde”代表设备号,右键“我的电脑—管理—设备管理器一图像处理设备”双击你安装的视频设备就可以查看你的视频设备号。 关闭视频:视频练习.CIoseVideo(); 拍照:视频练习.SaveVideoFrame(LPCTSTR IpszPicName)" LPCTSTR IpszPicNam” 照片的保存地址和名称; 回放:视频练习.OpenAVI(LPCTSTR lpszFileName) “LPCTSTR lpszFileNam e要回 放的视频保存位置及名称; 摄像:视频练习.CapVideoToAVI(LPCTSTR IpszAVIName)'LPCTSTR lpszAVINam”表示录制的视频将保存的位置及视频文件名称; 抓拍:视频练习.SaveVideoFrameToRect(LPCTSTRlpszPicName) ;“ LPCTSTR IpszPicName”表示抓拍的图片即将保存的BMP文件的位置和名称; 设置视频源:视频练习.VideoSource();设置视频的来源,即选择视频设备; 停止摄像:视频练习.StopCapVideo();

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

VS2010MFC编程入门之三十三(常用控件:标签控件Tab Control 下) 标签控件知识的上半部分,这里开始下半部分。 标签控件的创建 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; 获取标签控件中标签的数量。 intSetCurSel(intnItem); 在标签控件中选择某标签。参数nItem为要选择的标签的索引。如果成功则返回之前 选择标签的索引,否则返回-1。 BOOL SetItem(intnItem,TCITEM* pTabCtrlItem);

KVHTrend控件使用方法

KVHTrend控件使用方法 KVHTrend曲线控件是组态王以Active X控件形式提供的绘制历史曲线和ODBC数据库曲线的功能性工具。通过该控件,不但可以实现历史曲线的绘制,还可以实现ODBC数据库中数据记录的曲线绘制,而且在运行状态下,可以实现在线动态增加/删除曲线、曲线图表的无级缩放、曲线的动态比较、.曲线的打印等。该曲线控件最多可以绘制16条曲线。 1、创建历史曲线控件: 在组态王开发系统中新建画面,在工具箱中单击“插入通用控件”或选择菜单“编辑” 下的“插入通用控件”命令,弹出“插入控件”对话框,在列表中选择“历史趋势曲线”,单击“确定”按钮,对话框自动消失,鼠标箭头变为小“十”字型,在画面上选择控件的左上角,按下鼠标左键并拖动,画面上显示出一个虚线的矩形框,该矩形框为创建后的曲线的外框。当达到所需大小时,松开鼠标左键,则历史曲线控件创建成功,画面上显示出该曲线,如图1所示。 图1 历史曲线控件 2、设置控件固有属性: 控件创建完成后,在控件上单击右键,在弹出的快捷菜单中选择“控件属性”命令,弹出历史曲线控件的固有属性对话框,如图2所示。

控件固有属性含有两个属性页:曲线、坐标系。下面详细介绍每个属性页中的含义。 2、1 曲线属性页 如图2所示,曲线属性页中下半部分为定义在绘制曲线时,历史数据的来源,可以选择组态王的历史数据库或其它数据库为数据源。 曲线属性页中上半部分“曲线”是定义曲线图表初始状态的曲线变量、绘制曲线的方式、是否进行曲线比较等: ?列表框:显示已经添加的变量的名称及绘制方式定义等。 ?“增加”按钮:增加变量到曲线图表,并定义曲线绘制方式。 单击该按钮,弹出如图3所示的对话框。 图2 历史曲线控件固有属性

OA常用控件的用法

OA工作流的表单设计器中最常用控件的用法 如果想要设计制作精确、合理的OA工作流程,最基本的条件是设计出最合适的工作表单,而表单的制作最关键的是熟练掌握各个控件的使用方法。 下面就以最常用的几个控件跟大家分享一下它们在工作表单的制作过程中的用法。

控件类型及其用 第一,单行输入框。 单行输入框是最简单的空间,就是为表单添加一个可以输入内容的空,一般是用来填写比较简短的内容,比如:名字、手机号等。 ?如上图所示设置了单行输入框的属性后,就会在表单中出现下图所示的样式。 ?第二,多行输入框。 性质跟单行输入框类似,这个控件的内容也是完全由填写表单的用户手填。但多行输入框一般是用在输入内容较长的地方,比如一个较长的地址。

?如下图所示就是一个设置好的多行输入框在表单中显示的样式。 ?第三,下拉菜单。 这个很好理解,下拉菜单包含所有可能的选项。然后填写表单的用户可以通过下拉菜单选择需要的选项。

?第四,单选框。 单选框的含义我们都知道,就是设置多于一个的选项,而用户填写表单的时候只能从中选择一个选项。 ?比如下图所示的一个同意或不同意,只能选择其中一个选项。

?第五,多选框。 多选框的功能其实是只在表单中画一个可以打勾的小框,多选框有多少选项,就设置多少个多选框,然后在每个多选框后面自定义选项内容。 ?如下图所示就是一个多选框的样式,其中,火车、汽车、飞机和轮船这四个选项是在表单中定义的。 ?第六,列表控件。 这个列表控件其实是不经常用到的。起作用是相同格式记录的动态输入,可以根据实际需要灵活新增行数录入相应数据。 使用这个控件,是可以设置好列表头。列表控件支持多种输入类型,包括单行输入框、多行输入框、下来菜单、单选框、复选框和日期,满足多方面的需求; 而且支持自动计算和合计,使用通用运算符+、-、*、/、%等,可以实现列表项目的自动计算输入。其中列表计算项目是不可人工输入的。 如果用户在设计表单的时候确实用到了这个控件,可以设置上一两行试一下,看完表单效果后就知道该如何设置。

TabControl用法图解(VS2010)

1.首先创建一个MFC对话框框架,在对话框资源上从工具箱中添加上一个TabControl控件 2根据需要修改一下属性,然后右击控件,为这个控件添加一个变量,将此控件跟一个CTabCtrl类变量绑定在一起,这里设为m_tabctrl 3.插入两个新的对话框其属性作如下修改: Border:none //边界为空,这样它就没了标题栏 Style :Child // 这样这个模板就可以当作另一个窗口的子窗口了。 Title Bar:False 在上面加一些控件什么的,具体操作跟普通对话框没有区别。

完成后从这两个对话框模板生成新的对话框类CDlg1,CDlg2。 3、在主对话框头文件CMydlg.h中为新添加进来的2个类增加2个变量:如:CDlg1 page1; 4、在主对话框的OnInitDialog()函数中添加如下类似的代码: TCITEM item; item.mask = TCIF_TEXT; item.pszText =_T( "第一页"); m_tabctrl.InsertItem (0,&item); item.pszText =_T("第二页");

m_tabctrl.InsertItem (1,&item); page1.Create (IDD_DIALOG1,&m_tabctrl); page2.Create (IDD_DIALOG2,&m_tabctrl); CRect rect; m_tabctrl.GetClientRect(&rect); rect.top+=20; rect.bottom-=4; rect.left+=4; rect.right-=4; page1.MoveWindow(&rect); page2.MoveWindow(&rect); page1.ShowWindow(TRUE); m_tabctrl.SetCurSel(0);

新控件XtraReport使用

软件工程研究所 新控件报表使用方法版本号:13.2.6 制作人:艾传波 2014/11/23

目录 一、提前准备 (2) 二、连接数据库 (3) 三、拖入数据集 (5) 四、报表控件使用 (6) 4.1设置属性实现报表 (6) 4.2通过动态编码实现报表 (17)

一、提前准备 以学生管理系统为例,数据库脚本如下: create table S ( SNO VARCHAR2(3), SNAME VARCHAR2(10), SEX VARCHAR2(10), ADDRESS VARCHAR2(50), MAJOR VARCHAR2(50) ); insert into S (SNO, SNAME,SEX,ADDRESS,MAJOR) values ('1', '赵一','男','湖北大学三期公寓3037','计算机科学与技术'); insert into S (SNO, SNAME,SEX,ADDRESS,MAJOR) values ('2', '钱二','男','湖北大学三期公寓1000','计算机科学与技术'); insert into S (SNO, SNAME,SEX,ADDRESS,MAJOR) values ('3', '孙三','男','湖北大学三期公寓6890','计算机科学与技术'); insert into S (SNO, SNAME,SEX,ADDRESS,MAJOR) values ('4', '李四','女','湖北大学三期公寓1234','软件工程'); insert into S (SNO, SNAME,SEX,ADDRESS,MAJOR) values ('5', '王五','女','湖北大学三期公寓357','软件工程'); insert into S (SNO, SNAME,SEX,ADDRESS,MAJOR) values ('6', '张六','女','湖北大学三期公寓7688','软件工程'); create table C ( CNO VARCHAR2(3), CNAME VARCHAR2(30), CTEACHER VARCHAR2(10) ); insert into C (CNO, CNAME, CTEACHER) values ('1', '语文', '语文老师'); insert into C (CNO, CNAME, CTEACHER) values ('2', '数学', '数学老师'); insert into C (CNO, CNAME, CTEACHER) values ('3', '英语', '英语老师'); insert into C (CNO, CNAME, CTEACHER) values ('4', '历史', '历史老师'); insert into C (CNO, CNAME, CTEACHER) values ('5', '地理', '地理老师'); insert into C (CNO, CNAME, CTEACHER) values ('6', '生物', '生物老师'); create table SC ( SNO VARCHAR2(3),

相关主题
文本预览
相关文档 最新文档