在Windows应用程序中添加ListControl控件的几种方法

在Windows应用程序中添加ListControl控件的几种方法
在Windows应用程序中添加ListControl控件的几种方法

一、在Windows应用程序中添加ListControl控件的几种方法

1、在对话框中添加控件:

创建对话框应用程序,在资源视图中添加对话框。如下图所示,在控件工具条中选择ListControl控件添加到对话框中,并调整控件尺寸。在ListControl控件的属性页中设置控件样式(Styles)和扩展样式等。为了显示详细数据信息,可以设置控件的显示风格为报表视图(Report)。

为了在对话框中使用控件,需要在ClassWizard中为对话框类添加控件成员变量,如下图所示:

执行以上操作后,系统自动添加了一个ClistControl对象,并与ListControl控件资源关联,相关代码如下:

// ListDialogDlg.h : header file

......

public:

CListCtrl m_cListCtrl;

......

// ListDialogDlg.cpp : implementation file

......

void CListDialogDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CListDialogDlg)

DDX_Control(pDX, IDC_LIST_CTRL, m_cListCtrl);

//}}AFX_DATA_MAP

}

......

因为本例只为演示在对话框中添加ListControl控件,所以只在对话框初始化消息函数中添加了以下显示控件的示例代码(代码含义请参照MSDN文献):

BOOL CListDialogDlg::OnInitDialog()

{

CDialog::OnInitDialog();

......

// TODO: Add extra initialization here

DWORD exstyle = m_cListCtrl.GetExtendedStyle();

m_cListCtrl.SetExtendedStyle(exstyle | LVS_EX_FULLROWSELECT |

LVS_EX_GRIDLINES |

LVS_EX_CHECKBOXES | WS_EX_STATICEDGE );

CRect rect;

m_cListCtrl.GetClientRect(&rect);

int nColInterval = rect.Width()/5;

m_cListCtrl.InsertColumn(0, _T("Item Name"), LVCFMT_LEFT, nColInterval*3);

m_cListCtrl.InsertColumn(1, _T("Value"), LVCFMT_LEFT, nColInterval);

m_cListCtrl.InsertColumn(2, _T("Time"), LVCFMT_LEFT, rect.Width()-

4*nColInterval);

m_cListCtrl.InsertItem(0,"name");

m_cListCtrl.SetItemText(0,1,"value");

m_cListCtrl.SetItemText(0,2,"time");

......

return TRUE; // return TRUE unless you set the focus to a control

}

2、在单文档视图中自行添加ListControl控件:

创建单文档应用程序,如下图所示为视图类添加CListCtrl对象成员变量:

如下图所示,在资源视图中打开String Table资源,在右键菜单中选择new string,为将要创建的ListControl控件添加资源编号:

为创建和显示控件,在视图的初始化消息函数中添加如下代码:

void CAddListView::OnInitialUpdate()

{

CView::OnInitialUpdate();

// TODO: Add your specialized code here and/or call the base class

m_cListCtrl.Create( LVS_REPORT,CRect(0,0,800,600),this,IDC_LISTCTRL);

m_cListCtrl.ModifyStyle(0,LVS_REPORT|LVS_SHOWSELALWAYS|LVS_SORTAS CENDING);

//m_cListCtrl.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE,0,

LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_CHECKBOXES); m_cListCtrl.ShowWindow(SW_SHOW);

CRect rect;

m_cListCtrl.GetClientRect(&rect);

int nColInterval = rect.Width()/5;

m_cListCtrl.InsertColumn(0, _T("Item Name"), LVCFMT_LEFT, nColInterval*3);

m_cListCtrl.InsertColumn(1, _T("Value"), LVCFMT_LEFT, nColInterval);

m_cListCtrl.InsertColumn(2, _T("Time"), LVCFMT_LEFT, rect.Width()-

4*nColInterval);

m_cListCtrl.InsertItem(0,"name");

m_cListCtrl.SetItemText(0,1,"value");

m_cListCtrl.SetItemText(0,2,"time");

}

3、在ListView视图中显示ListControl控件:

创建单文档应用程序,如下图所示,在选择窗口视图类型时,选择CListView视图:

在视图类的初始化消息函数中添加如下显示控件的代码:

void CTestlistView::OnInitialUpdate()

{

CListView::OnInitialUpdate();

CDC* dc = GetDC();

TEXTMETRIC tm;

dc->GetTextMetrics(&tm);

GetListCtrl().ModifyStyle(0,LVS_REPORT|LVS_SHOWSELALWAYS|LVS_SORTAS CENDING);

GetListCtrl().SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE,0,

LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_CHECKBOXES|L VS_EX_TRACKSELECT);

GetListCtrl().InsertColumn(0,"Name",LVCFMT_LEFT,30*tm.tmAveCharWidth,0);

GetListCtrl().InsertColumn(1,"Comment",LVCFMT_LEFT,70*tm.tmAveCharWidth,1);

// TODO: You may populate your ListView with items by directly accessing

// its list control through a call to GetListCtrl().

}

二、为ListControl控件添加消息处理函数

1、关于ListControl控件消息

在ListControl控件中有以下消息(通知)可以发送:NM_CLICK、NM_DBLCLK、

NM_RCLICK、LVN_COLUMNCLICK、HDN_ITEMCLICK等。

其中HDN_ITEMCLICK是List Control的子控件ListCtrl发给它的Parent(CListCtrl)的;LVN_COLUMNCLICK是HeaderCtrl发给它的Parent的。所以在Dialog里面,试图通过ClassWizard产生的ON_NOTIFY宏:ON_NOTIFY(HDN_ITEMCLICK,

IDC_LIST_CTRL,OnItemClick),来接收HDN_ITEMCLICK消息是无法成功的。要解决这个问题,可以从CListCtrl派生一个新的类,并在CListCtrl派生类中处理

HDN_ITEMCLICK消息。注意消息映射的时候,Header的控件ID是0,类似如下消息映射宏代码:

ON_NOTIFY(HDN_ITEMCLICK, 0, OnItemClick)

另外,可以使用NM_CLICK、NM_RCLICK等消息,以NM打头的消息是可以在Dialog 里处理的。

2、关于ListControl控件的行选择:

要在控件中选择行,需要设置控件的扩展属性LVS_EX_FULLROWSELECT。右键或左键都可以选择行,而且,List Control控件默认可以一次选择(使用Ctrl键)多行,被选择的行默认以蓝色背景显示。

3、为ListControl控件添加NM_CLICK消息:

以前面创建的对话框应用程序为例,在ClassWizard中选择List Control控件,在对话框类中添加NM_CLICK消息处理函数。如下图所示:

系统自动添加的消息映射与消息处理函数代码如下:

// ListDialogDlg.h : header file

protected:

......

afx_msg void OnClickListCtrl(NMHDR* pNMHDR, LRESULT* pResult);

......

// ListDialogDlg.cpp : implementation file

BEGIN_MESSAGE_MAP(CListDialogDlg, CDialog)

//{{AFX_MSG_MAP(CListDialogDlg)

......

ON_NOTIFY(NM_CLICK, IDC_LIST_CTRL, OnClickListCtrl)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

void CListDialogDlg::OnClickListCtrl(NMHDR* pNMHDR, LRESULT* pResult) {

// TODO: Add your control notification handler code here

NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;

CString str;

str.Format(_T("Item index: %d,SubItem:%d"), pNMListView->iItem,

pNMListView->iSubItem);

MessageBox(str);

*pResult = 0;

}

其中黑体部分代码为自行添加的测试代码,主要为了获取选择的行编号与列编号,有了行编号和就可以使用m_cListCtrl.GetItemText(选择的行编号,某一列的列编号)获取某行某字段的值(如数据库表表示字段的值),可以定义一个对话框类成员变量存储该值,用于菜单或按钮命令,如修改记录、显示备注型(或图片型)字段内容、删除记录等。

4、添加NM_RCLICK消息和右键菜单:

与NM_CLICK类似,添加NM_RCLICK消息处理函数。如下图所示创建菜单资源:

在NM_RCLICK消息处理函数中添加如下显示右键菜单的代码:

void CListDialogDlg::OnRclickListCtrl(NMHDR* pNMHDR, LRESULT* pResult)

{

// TODO: Add your control notification handler code here

//CPoint point;

//::GetCursorPos(&point);//::可以提示全局函数和当前类成员函数

DWORD dwPos = GetMessagePos();

CPoint point( LOWORD(dwPos), HIWORD(dwPos) );

CMenu menu;

VERIFY( menu.LoadMenu( IDR_MENU1 ) ); //IDR_MENU1是新建菜单ID

CMenu* popup = menu.GetSubMenu(0);

//ASSERT( popup != NULL );

popup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,

this );//TPM_RIGHTBUTTON使右键点击菜单也起作用

*pResult = 0;

}

在ClassWizard中为菜单项ID_DELETE添加删除命令消息处理函数。以下是测试代码:

void CListDialogDlg::OnDelete()

{

// TODO: Add your command handler code here

int iItemSel = m_cListCtrl.GetNextItem(-1, LVIS_SELECTED);

CString str="";

while(iItemSel != -1)

{

//m_cListCtrl.DeleteItem(iItemSel);//delete selected item in the list control

str=str+m_cListCtrl.GetItemText(iItemSel,0);//利用该方法可以获取数据记录编号列 iItemSel = m_cListCtrl.GetNextItem(iItemSel, LVIS_SELECTED);

}

MessageBox(str);

}

代码中的循环是为了处理同时选择了多行的情况。可以在代码中添加根据选择的行编号iItemSel获得数据记录编号的代码,在控件中删除行的同时,删除数据库表中的相应记录。

VB常用控件习题与解答

常用控件习题与解答 一、填空题 1.在图片框上放置的控件称为图片框的(子)对象,而窗体是图片框的(父)对象。 2.窗体的“名称”(Name)属性只能在(属性窗口中)设置。 3.在程序中设置窗体Form1的Caption属性为"主窗体",使用的赋值语句是(Form1.Caption="主窗体")。 4.当窗体的Enabled属性为(True)时,指定窗体响应事件。 5.窗体的Unload事件是在QueryUnload事件发生之(后)发生。 6.程序中,把当前窗体移动到屏幕左上角使用的方法为(Move0,0)。 7.在窗体Form1中坐标为(1600,800)的位置上输出字符串“Visual Basic 6.0”使用的语句为(Form1.Currrentx=1600)、(Form1.Currenty=800)、和(Form1.Print "VisualBasic6.0")。 8.若使文本框有边框,需设置BorderStyle属性的值为(1)。 9.在程序运行期间,用户可以用文本框显示信息。文本框接收输入的内容的属性是 (Text)。 10.若使文本框内能够接受多行文本,则要设置Multiline属性的值为(True)。 11.要把图形文件“C:\sample\diannt.jpg”装载到图片框Picture1上,使用的语句为(Picturel.Picture=LoadPicture("C:\sample\diannt.jpg"))。 12.若使图片框自动调整大小以适应装入的图形,则要设置Autosize属性的值为(True)。 13.除了在程序使用LoadPicture函数装载图形外,还可以在设计阶段通过修改(Picture)属性装载图形。 14.若程序中要把一些文本内容输出到图片框PictureBox,应使用(Print)方法。 15.当单选按钮OpdonButton的Value属性为(False)时,表示该单选按钮处于未选中状态。 16.若使命令按钮Command1重新生效,则使用的赋值语句为(Command1.Enabled=True)。 17.若使命令按钮不能接收和响应任何事件,可以设置Visible属性的值为(False)。 18.只有控件对象的Enabled和Visible属性值都为(True)时,该控件对象才能接受焦点。 19.Tab顺序是由建立控件时的(先后顺序)确定的。 20.设置框架Frame上的文本内容需要使用(Caption)属性。 21.在框架上可以设置一组相关控件,这些控件作为框架的(子)控件,它们具有总体的激活/屏蔽特性。 22.若屏蔽框架上的控件对象,则需设置(Enabled)属性的值为False。 23.列表框ListBox中项目的序号从(0)开始,到(Listcount-1)结束。 24.要显示列表框List1中序号为3项目内容,语句为(PrintList1.List(3))。

窗体中的常用控件 单选3分

窗体中的常用控件单选3分 1.在计算机控件中,每个表达式前都要加上("=") 2.用于显示更新数据库中的字段的控件类型是(绑定型) 3.关于控件的叙述,(选项组不能设置为表达式)的说法正确 4.(表)不是窗体控件 5.纵栏式窗体同一时刻能显示(一条记录) 6.无论是自动创建窗体还是报表,都必须选定要创建该窗体或报表基于的(报表) 7.没有数据来源的控件类型是(非绑定型) 8.关于控件的叙述,(在窗体设计视图窗口中的工具箱中只能看到部分控件)说法错误 9.能够接受数字型数据输入的窗体控件是(文本框) 10.在教师信息输入窗口中,为职称字段提供"教授""副教授""讲师"等选项供用户直接选择,应使用控件是(组合框) 11.要用文本框来显示当前日期,应设置文本框的控件来源属性是(=Data()) 12.窗口事件是指操作窗口时所引发的事件,(取消)不属于窗口事件 13.如果想再加入控件时,控件自动与网格对其,则应在加入控件前,执行"格式(对其网格)"命令 14.当窗体的内容比较多无法在一页中全部显示时,可以使用(选项卡)进行分页,若要进行页面切换,用户只需单击选项卡上的标签即可 15.(选项组)是用来显示一组有限选项集合的控件 16.在学生表中使用"照片"字段存放相片,当使用向导为该表创建窗体时,照片字段使用的默认控件是(绑定对象框) 17.为窗体上的控件设置Tab键的顺序,应选择属性对话框中的(数据选项卡) 18.使用窗体设计视图,不能创建(报表) 19.如果在窗体上输入的数据总是取自某一个表或查询中记录的数据,或者取自某固定内容的数据,可以使用(组合框或列表框)控件 20.(只要单击选项组中所需的值,就可以为字段选定数据值)的说法正确 21.(命令按钮)代表一个或一组操作 22.(可以向组合框中输入新值,而列表框不行) 23.创建窗体的数据源不能是(报表) 24.若要求在文本框中输入文本时达到密码"*"号的显示效果,则应设置的属性是("输入掩码"属性) 25.(窗体设计器)不是窗体的组成部分 26.关于控件的叙述,(在选项组中每次只能选择一个选项)的说法是正确的 27.

Windows应用程序设计大纲

Windows应用程序设计 学时:总学时54;理论36;实验18 学分:3 适用对象:信息管理与信息系统、计算机科学与技术、软件工程专业 先修课程:《C++程序设计》 考核方式:本课程采用期末考核与平时成绩相结合的方式进行成绩评定,平时成绩占40%,期末考核成绩占60%。平时成绩包括作业、实验报告与上课表现,期末考核为闭卷笔试方式。 一、课程的性质与任务 《Windows应用程序设计》是为计算机科学与信息工程系各专业开设的一门专业基础课。该课程以面向对象程序开发理论为基础,具有较强的理论性、实践性和实用性。该课程的主要任务是讲授利用MFC进行Windows应用程序设计的基本原理和方法,并向学生灌输框架编程的核心思想,从而为今后开发实用性较强的软件系统打下坚实基础。 二、教学目的与基本要求 本课程的目的是使学生深刻理解框架编程的思想,学会MFC的常用类的用法,并能够开发出一般功能的Windows应用程序,进一步提高学生实际编程和用程序解决问题的能力。 教学中要求学生掌握Windows应用程序的基础概念、术语;理解Windows应用程序框架的封装原理;深刻理解VC提供的“文档/视图”结构框架;掌握MFC类库提供的常用类在窗口中绘制图形;熟练掌握鼠标、键盘消息处理的方法;熟练掌握资源的使用方法;掌握MFC的文件处理机制;熟练掌握对话框及控件的编程方法;了解应用程序中进程与线程的管理方法;学会用MFC设计数据库应用程序。 理论教学部分 理论课学时:36 使用教材及主要参考书: 1、使用教材: 任哲等编著,《MFC Windows应用程序设计》,清华大学出版社,2004年 2、主要参考书: 候俊杰,《深入浅出MFC》第二版,华中科技大学出版社,2001年 陈志泊等编著,《Visual C++ 6.0程序设计》,中国铁道出版社,2005年 一、学时分配 章节课程内容学时 1 Windows应用程序基础知识 2 2 Windows应用程序的类封装 2 3 MFC应用程序框架 2

Windows程序设计题

《Windows程序设计》模拟题 一.单项选择题 1. 在VC++中,项目文件的扩展名是(B)。 A)exe B)dsp C)dsw D)cpp 2. 在MFC中,利用ClassWizard不能(D)。 A)建立新类B)进行消息映射 C)增加类的成员变量D)插入资源 3. 当滑块滑动时,滑块条控件将发送滚动消息来通知父窗口,垂直滑动条发送(C)消息。 A)WM_CHAR B)WM_HSCROLL C)WM_VSCROLL D)WM_CHANGE 4. 更新菜单状态的消息是( C )。 A)WM_COMMAND B)UPDATE C)UPDATE_COMMAND_UI D)INVALIDATE 5. 对于消息队列描述正确的是( D ) A)在Windows中只有一个消息系统,即系统消息队列。消息队列是一个系统定义的数据结构,用于临时存储消息。 B)系统可从消息队列将信息直接发给窗口。另外,每个正在Windows下运行的应用程序都有自己的消息队列。 C)系统消息队列中的每个消息最终都要被USER模块传送到应用程序的消息队列中去。 应用程序的消息对列中存储了程序的所有窗口的全部消息。 D)以上都正确 6. 在MFC中,所有的控件都是(B)类的派生类,都可以作为一个特殊的窗口来处理。 A)CView B)CWnd C)CWindow D)CDialog 7. 使用GetDC()获取的设备上下文在退出时,必须调用(A)释放设备上下文。 A)ReleaseDC() B)delete() C)DeleteDC() D)Detach() 8. 希望菜单无效,应该用CCmdUI类的(A)成员函数。 A)Enable B)SetRadio C)SetCheck D)SetText 9. 希望菜单前出现一个“√”,应该用CCmdUI类的(C)成员函数。 A)Enable B)SetRadio C)SetCheck D)SetText 10. 下面(A)不是MFC设备环境类CDC类的派生类。 A)GDI B)CPaintDC C)CClientDC D)CWindowDC 11. 在MFC中,所有的文档类都派生于(C),所有的视图类都派生于(A)。 A)CView B)CWindow C)CDocument D)CFormView 12. 采用C++进行绘图时,(B)用于指定图形的填充样式,(A)用于指定图形的边框样式。

MFC Windows应用程序设计复习题2

第9章MFC的文件处理机制 1) 文档负责将数据存储到磁盘中,存取过程称为(D) 。 A. 文件访问 B. 格式化 C. 文件读写 D. 串行化 2) 一个CArchive 类对象必须与一个( C ) 对象相关联。 A. CObject B. CFileDialog C. CFile类 D. CDocument 3) 不能将Newfile 文件的文件指针定位在文件头的方法是( B ) 。 A. Newfile.Open("MyFile.txt", CFile::modeCreate) B. NewFile::Seek( 0L, CFile::end) C. Newfile.SeekT oBegin() D. Newfile.Seek(0L, CFile::begin) 4)( A )函数用于获取指定文件的文件名。 A. GetFileName() B. GetStatus() C. GetFilePath() D. GetFileTitle() 5) 当应用程序读取或写入文件时,文档对象的( )函数被调用,并将( )对象作为参数传递。 6) ( CArchive )类是一个对象数组类,它可以存放任何从CObject 派生出的对象,还可以根据元素的数量动态地调整自己的大小。 7) 在Visual C++中,数据文件的操作通常按照( 打开) 、( 操作) 、( 关闭) 的步骤进行。 8) 写出以读写方式打开文件student.txt 的语句序列( File.Open(“student.txt”,CFile:modeReadWrite); ) 。 10)什么是序列化? 答:序列化是面向对象程序设计中应对象这种数据的存储和恢复的要求而产生的一种文件读写机制。 第11章对话框 1. 在对话框的编辑器中,最左边的按键的作用是(B )。 A. 激活对话框编辑功能 B. 测试对话框 C. 控件左对齐 D. 控件垂直居中

实验二 常用控件的使用

实验二常用控件的使用 一、实验目的 (1)掌握常用控件的属性和事件,掌握常用控件的使用,掌握常用控件编程; (2)熟悉并创建Windows窗体应用程序的过程; (3)掌握基于常用控件:MenuStrip、ToolStrip、StatusStrip、Panel、TreeView及 Splitter等构建类似资源管理器的主界面; (4)掌握Timer、ListView、ComboBox、DatePicker等常用控件的属性及应用。 (5)掌握动态构建TreeView节点的方法。 二、实验环境 ?PC机,Windows XP(2000)操作系统及以上; ?Visual Studio 2010(或2008)。 三、实验要求 (1)要求创建类似登录界面,并将登录时输入的信息:用户名传递给主窗体; (2)要求主窗体设置为多文档窗体; (3)要求实现动态创建TreeView控件; (4)实现TreeView节点、MenuStrip、ToolStrip单击事件; (5)实现在StatusStrip上显示登录的用户名、系统当前的日期、实时的时间。 四、实验内容 1、创建基于Windows窗体的应用程序项目; 2、创建登录窗体: (1)用户名和密码输入信息; (2)登录、退出等按钮; (3)实现按钮的单击事件; 3、主窗体的创建 (1)主窗体中要求实现:菜单、工具栏、功能树、状态栏; (2)功能树的创建要求动态创建,建议采用递归算法方式实现,建议树节点 参考信息如下:

(3)主窗体布局参考资源管理的方式实现,具体的布局方式参考下图。 4、数据的模拟 (1)功能树部分的数据可采用二维数组方式; (2)菜单至少建立2个以上菜单项; (3)工具栏至少建立两个以上工具栏项目; 5、部分参考代码: (1) 将字符串类型的窗体名称转换成Form类型 (2) 在主界面显示单文档窗体的参考代码 其中:this代表MDI窗体; GetForm为在(1)中定义的函数。

vb常用控件习题(含问题详解)

1.下列控件中没有Caption属性的是________。 A)框架B)列表框C)复选框D)单选按钮 2.复选框的Value 属性为1 时,表示________。 A)复选框未被选中B)复选框被选中 C)复选框有灰色的勾D)复选框操作有误 3.用来设置斜体字的属性是________。 A)FontItalic B)FontBold C)FontName D)FontSize 4.将数据项“China”添加到列表框List1中成为第二项应使用________语句。 A)List1.AddItem “China”,1 B)List1.AddItem “China ”, 2 C)List1.AddItem 1,“China”D)List1.AddItem 2,“China ” 5.引用列表框List1最后一个数据项,应使用________语句。 A)List1.List(List1.ListCount)B)List1.List(ListCount) C)List1.List(List1.ListCount-1)D)List1.List(ListCount-1) 6.假如列表框List1有四个数据项,那么把数据项“China”添加到列表框的最后,应使用________语句。 A)List1.AddItem 3,“China ” B)List1.AddItem “China ”, List1.ListCount-1 C)List1.AddItem “China ”, 3 D)List1.AddItem “China”,List1.ListCount 7.执行了下面的程序后,列表框中的数据项有________。 Private Sub Form_Click() For i = 1 to 6 List1.AddItem i Next i For i = 1 to 3 List1.RemoveItem i Next i End Sub A)1,5,6 B)2,4,6 C )4,5,6 D)1,3,5 8.如果列表框List1中没有选定的项目,则执行 List1.RemoveItem List1.ListIndex 语句的结果是________。 A)移去第一项B)移去最后一项 C)移去最后加入列表中的一项D)以上都不对 9.如果列表框List1中只有一个项目被用户选定,则执行 Debug.Print List1.Selected(List1.ListIndex)语句的结果是________。 A)在Debug窗口输出被选定的项目的索引值 B)在Debug窗口输出True C)在窗体上输出被选定的项目的索引值 D)在窗体上输出True 10.在窗体上画一个名称为List1的列表框,一个名称为Label1的标签,列表框中显示若干城市的名称。但单击列表框中的某个城市名时,该城市名从列表框中消失,并在标签中显示出来。下列能正确实现上述操作的程序是______。 A)Private Sub List1_Click()

vb中常用控件及其功能

4.1 标签 标签是VB中最简单的控件,用于显示字符串,通常显示的是文字说明信息。但不能编辑标签控件。 使用标签的情况很多,通常用标签来标注本身不具有Caption属性的控件。例如,可用标签为文本框、列表框、组合框等控件来添加描述性的标签。还可编写代码改变标签控件的显示文本以响应运行时的事件。例如,若应用程序需要用几分钟处理某个操作,则可用标签显示处理情况的信息。 4.1.1 常用属性 标签的属性很多,下面介绍几个常用的属性。 (1)Alignment属性 设置标签中文本的对齐方式。其使用语法如下: Object.Alignment[=值] 其中的“值”可以为0,1或2。0(默认值)表示左对齐;1表示右对齐;2表示居中。 (2)AutoSize属性 设置控件是否能够自动调整大小以显示所有的内容。其使用语法如下: Object.AutoSize[=True或False] (3)BackStyle属性 设置标签的背景样式。其使用语法如下: Object.BackStyle[=值] 其中的“值”可以为0或1。1(默认值)表示是不透明的;0表示是透明的。 (4)BorderStyle属性 设置标签的边框样式。其使用语法如下: Object.BorderStyle[=值] 其中的“值”可以为0或1。0(默认值)表示无边框;1表示单线边框。 (5)Caption属性 设置标签的文本内容。其使用语法如下: Object.Caption[=字符串] (6)WordWrap属性 设置标签的文本在显示时是否自动折行功能。其使用语法如下: Object.WordWrap[=True或False] 其中True表示具有自动折行功能;False(默认值)表示没有自动折行功能。 4.1.2 常用事件和方法 一般很少使用标签事件,标签的方法中常用的只有Move,其基本语法如下: Move left,top,width,height 其中left,top,width,height分别表示移动目的位置的坐标和大小。left为必要参数,其他

Windows常用控件的使用

Windows编程基础 东软人才实训中心 Copyright 2010 By Neusoft Group. All rights reserved 1

2本课程旨在向学员介绍: 1)掌握编辑框和普通按钮的使 用 2)掌握单选按钮和复选框的使 用 3)掌握列表框和组合框等控件 的使用时间:学时9教学方法:讲授+课上练习+课下作业 第五章Windows 常用控件的使用

?关于控件: –对话框和控件是密不可分的。 –控件类从CWnd类派生过来的,所以他们实际上也是窗口,所以我们可以动态的创建他们,应该说掌握了这些控件, 就可以解决大部分界面设计的要求了 –控件担负着与用户交互的责任,比如按下按钮,显示图片等,按键的外观是由其属性决定的,在编辑对话框时,我 们可以对某一个控件属性进行修改。 3

控件类控件类 静态文本CStatic单选按钮CButton 图片控件CStatic组框CButton 编辑框CEdit组合框CComboBox 命令按钮CButton列表框CListBox 复选框CButton滚动条CScrollBar 4

5 控件的创建 ?控件的创建分为静态创建和动态创建两种方式 –静态创建-在对话框模板中创建控件 –动态创建-程序的运行中定义一个控件类对象,再通过Create 函数进行创建

6 控件的访问 ?访问控件一般有3种方法: –利用对话框的数据交换功能访问控件 ?适用于静态创建的控件,通过调用UpdateData()函数,实现对话框和控件的数据交换。 –通过控件对象来访问控件 –利用CWnd 类的成员函数来访问控件

滑动控件是Windows中最常用的控件之一一般而言它是由一.

滑动控件是Windows中最常用的控件之一。一般而言它是由一个滑动条,一个滑块和可选的刻度组成,用户可以通过移动滑块在相应的控件中显示对应的值。通常,在滑动控件附近一定有标签控件或编辑框控件,用于显示相应的值。滑动控件在应用程序中用途级为广泛,如在桌面的属性中就可以看到。为此,让我们一起来看一下它的实现方法。 (1)在VC++ 6.0中新建一个对话框文档的工程。 (2)打开资源管理器,在对话框中放置一个EDIT控件,然后在它旁边放上一个Slider控件。基本的框架已经完成了。 (3)对Slider控件右击,选择“建立类向导”,对刚才的Slider控件定义一个变量m_Slider,类型为CSliderCtrl。 (4)在对话框初始化的代码BOOL CMy601Dlg::OnInitDialog(),后添加相应的属性。以下是常用的属性设置函数: * GetRange,SetRange函数 用于查询和设置滑动条的取值范围,默认为0~100。函数定义形式如下: void GetRange(int &nMin,int &nMax) const; void SetRange(int nMin,int nMax,BOOL bRedrGETaw=FALSE); * GetPos,SetPos函数 用于查询和设置滑动条的当前值。函数定义形式如下: int GetPos() const; int SetPos(int nPos); * GetLineSize,SetLineSize函数 用于查询和设置在按一下右或左箭头时滑块的移动量,默认为1个单位。函数定义形式如下: int GetLineSize() const; int SetLineSize(int nSize); * GetPageSize,SetPageSize函数 用于查询和设置函滑块和块移动量,块移动量是指当按下PgUp或PgDown时滑块的移动量。函数定义形式如下: int GetPageSize() const; int SetPageSize(int nSize); * SetTicFreq函数 用于设置滑动条刻度的频度。默认为一个单位一个函数。函数定义形式如下: void SetTicFreq(int nFreq); * SetTic函数 用于在指定的位置设置刻度。Windows默认的刻度是均匀的。函数定义形式如下: BOOL SetTic(int nTic); * ClearTics函数 用于清除所有的刻度。函数定义形式如下: void ClearTics(BOOL bRedraw=FALSE); 我们在初始化时写入以下语句: m_Slider.SetRange(-100,100); m_Slider.SetTicFreq(10); 即:设置范围为-100到100,刻度为每10个单位一个。 (5)现在我们加入事件过程代码。 选择Slider的“事件”然后选择第一个过程(NM_CUSTOMDRAW)随后加入以下代码:

WINDOWS XPE核心组件和常用组件

WINDOWS XPE核心组件和常用组件 Design Templates→Windows-based Terminal Professional xpe的宏组件,有几种,这个是基于基本的windows创建系统时用,其它几种通常是针对特定用途设定的宏组件,包含了一个最小化XPE所必需的基本组件。 Software→System→Storage&File System→Infrastructure→File System→NTFS,所支持的文件系统,也可以选择FAT等,依据目标系统分区。 Software→System→Storage&File System→Applications→NTFS Format,格式化NTFS文件系统的GUI工具,如果文件系统选择的是FAT,这里相应要选上FAT Format。 Software→System→System Services→Base→NT Loader,提供NTLDR。 Software→System→International→Infrastructure→Chinese - Simplified Language Support,提供中文支持; Softwar e→System→International→Infrastructure→Microsoft Simplified Chinese IME Core,中文输入法组件; Software→System→Storage&File System→Infrastructure→File System→CDFS,读取光驱设备; Software→System→Security→Infrastructure→Automatic logon支持自动登陆; Software→System→User Interface→Infrastructure→Shell Application Compatibility 宏组件,如果不是每个都需要,最好按照上面的那样逐个添加。 Software→System→User Interface→Shells→Explorer shell,支持桌面。 Software→System→User Interface→Shells→user interface core,鼠标右键支持,比如组件编辑器的右侧中选中“user interface core”,然后在属性中勾选show context menu on Task bar和show context menu on shell folders,就能支持鼠标右键了。 ★有选择性安装的项目 Software→System→User Interface→Shells→Windows Shell→Task Manager,任务管理器。 在这个子项中你还可以有选择地添加下列组件: Add Hardware Control Panel,添加新硬件;

常用控件习题

简单应用 说明:符号" "代表空格。 一、选择题: 2. 要向图片框Picture1中加载“d:\hainan\zhiwu.bmp”图像文件,应使用语句( d ) A.P1.Picture=LoadPicture(d:\hainan\zhiw u.bmp) B.P1.Picture=LoadPicture("d:\hainan\zhi wu.bmp ") C.Picture1.Picture=" d:\hainan\zhiwu.bmp " D.Picture1.Picture=LoadPicture("d:\hain an\zhiwu.bmp ") 3. 当一个复选框被选中时,它的value属性的值是( c ) A.3 B.2 C.1 D.0 4.在窗体上画一个名称为Listl 的列表框,一个名称为Labell 的标签,列表框中显示若干城市的名称。当单击列表框中的某个城市名时,该城市名从列表框中消失,并在标签中显示出来。下列能正确实现上述操作的

程序是(c) A.Privale Sub Listl_Click() B. Private Sub Listl_Click() Labell. Caption=Listl. ListIndex https://www.360docs.net/doc/461007142.html,=Listl. ListIndex Listl. Removeltem Listl.Text Listl.RemoveItem Listl.Text End Sub End Sub C.Private Sub Listl_Click() D.Private Sub Listl_Click() Labell. Caption=Listl.Text Labell. Name=Listl. Text Listl. RemovItem Listl. ListIndex Listl. RemoveItem Listl. ListIndex End Sub End Sub 5.能自动按图形大小而改变的控件是( a ) A.图像框B.图片框 C.文本框 D.框架 6. 将菜单弹出的方法有() A.MenuPopup B.MenuPop C.PopupMenu D.PopMenu 7.设在窗体上已经添加了通用对话框CommonDialog 控件并设置好了属性,其名称是CommonDialog1, 在程序中要显示“打开”对话框,使用的语句是() A.CommonDialog1.Action=1 B.CommonDialog1.Action=2 C.CommonDialog1.Action=3

MFC Windows应用程序设计复习题

MFC Windows应用程序设计 【复习】 第1章Windows应用程序基础知识 1. Windows 程序设计是一种( C ) 的程序设计模式。 A:结构化B:面向对象C:事件驱动方式D:XP 2. 用户从所有可能的操作中任意选择,被选择的操作会产生某些特定的( ) ,这些事件发生后的结果是向程序中的某些对象发出( ),然后这些对象调用相应的( C )来完成特定的操作。 A:消息,事件,程序B:消息,命令,消息处理函数 C:事件,消息,消息处理函数D:事件,消息,程序 3. 消息的组成(C) A:消息名称(UINT) B:消息名称(UINT)和参数(PARAM) C:消息名称(UINT)和两个参数(WPARAM,LPARAM) D:消息名称(UINT)和两个参数(HPARAM,LPARAM) 4. 程序在( B) 对消息进行分析 A:入口函数(WINMAIN)中 B:在窗口过程函数(WNDPROC)中 C:收到消息时 D:消息发生时 5. 一个消息( B ) A:可以不被窗口接受 B:必须由一个窗口接收 C:可以由一个或多个窗口接收 D:必须由多个窗口接收 6. 当没有为某消息编写消息处理时( C ) A:不进行处理 B:程序出错 C:默认的窗口过程进行处理 D:无法发出此消息 7. 应用程序接收到( A )消息时停止接收其他消息

A:WM_QUIT B:WM_DESTORY C:WM_PAINT D:WM_COMMAND 8. 下列Windows数据格式中,代表设备句柄的是(B)。 A. HWND B. HDC C. HINSTANCE D. HFONT 9. 典型的Windows窗口程序的流程为:(A) A. 注册窗口类->创建窗口->显示窗口->更新窗口->消息循环 B. 创建窗口->注册窗口类->显示窗口->更新窗口->消息循环 C. 创建窗口->注册窗口类->显示窗口->更新窗口->消息循环 D. 注册窗口类->创建窗口->更新窗口->显示窗口->消息循环 10. 在WinMain函数的原型中HINSTANCE hInstance 定义的是(A)HINSTANCE hPrevInstance定义的是(B)LPSTR lpCmdLine定义的是(C)int nCmdshow)定义的是(D) A:当前实例句柄B:先前实例句柄 C:指向命令行参数的指针D:窗口的显示状态 11. 以下哪个不是WinMain函数中完成的操作(D) A:注册窗口类B:创建应用程序主窗口 C:进入应用程序消息循环D:调用窗口过程函数 12. 下面说法错误的是(D) A:一个Windows程序可以包含多个窗口过程 B:一个窗口过程总是与调用RegisterClass注册的特定窗口类相关联 C:CreateWindow函数根据特定窗口类创建一个窗口,但基于一个窗口类,可以创建多个窗口 D:窗口过程必须由程序调用,而不是由Windows本身直接调用 13. Windows应用程序中使用了各种Windows API函数声明,宏定义,数据类型定义,(D)是主要的包含文件。 A STDIO.H B WINDEF.H C WINUSER.H D WINDOWS.H 14. 注册窗口类型时,窗口风格各个选项可以用(B)运算符联合表示。 A AND(&) B OR(|) C 逻辑与(&&) D 逻辑或(||) 15. 在函数CreateWindow()调用返回之后,Window内部(B) A:已经创建了这个窗口,但还未分配内存 B:已经创建并分配了内存 C:还未真正创建窗口,等待分配内存 D:还未真正创建窗口,但已经分配内存

实验五Windows应用程序设计

大理学院课程教案 (实验教学) 课程名称: C#面向对象程序设计 课程类型:( 1 )1、必修;2、选修;3、其它 授课对象:计算机科学与技术专业(本、专科) 2013 级1、2班 授课时间: 2014 至 2015 学年第 3 学期 计划学时: 36 学时(其中:理论 36 ,实验: 36 ) 任课教师:杜英国 所属学院:数学与计算机学院 课程管理部门(教研室):软件教研室 大理学院教务处制

课程名称:C#面向对象程序设计 教材:C#程序设计实用教程黄兴荣李昌领李继良编著清华大学出版社 授课人1:杜英国专业技术职务:讲师 学历:研究生学位:硕士 授课人2:专业技术职务: 学历:学位: 实验题目:Windows应用程序设计计划学时:3 实验类型:(4 )1、演示性2、验证性3、综合性4、设计性每组实验的学生人数:1 人 教学目的和要求: 熟悉C#集成开发环境;了解各功能的菜单命令;显示所有的可见窗口和所有工具栏(箱),随后再将上述的窗口和工具栏(箱)进行隐藏;了解工具栏(箱)中有哪些主要控件;了解控件的属性及事件;掌握控制台应用程序的输入输出方法的使用。 实验方法(包括实验中需要注意的问题等): 1.在VS下,创建一个窗体应用程序。 2.在解决方案资源管理其中创建子窗体。 3.在窗体上搭建相关控件。 4.编写代码。 5.注意个窗体之间的数据回传。 实验重点(主要解决的问题和达到的目的):

1.窗体、控件的使用。 2.理解窗体间数据回传。 3.掌握分级信息的处理。 实验难点(预计实验过程中会遇到的问题和解决方案): 1.窗体间数据回传。 2.分级信息的处理。 教学方法(实验前的教学和实验过程中的指导方法): 实验前教师先讲解完9章内容,学生认真复习9章内容;在实验过程中结合实验环境教师可先提示性讲解实验内容,再由学生自己完成实验。如果实验完成情况较差,教师统一辅导。 实验仪器和材料: 计算机,Windows XP, VS2008 实验报告要求和思考题: 教师现场检查评价本次实验。 参考资料: 《C#程序设计项目教程—实验指导与课程设计》黄兴荣编著清华大学出版社

第8章 常用控件答案

一、判断题 1.用来显示文本框内容的属性是Caption属性。 2.滚动条的Scroll事件在滑块位置改变时即被触发。 3.滚动条控件可作为用户输入数据的一种方法。 4.若在列表框中第三项之后插入一项目“ABC”,则所用语句为List1.AddItem"ABC",3。5.一个窗体中只能含一组单选按钮。 6.用Cls方法可以清除组合框中的所有表项。 7.列表框控件,只能设置为单选。 8.对象的属性都可以在属性窗口中设置。 9.命令按钮不但能响应单击事件,而且还能响应双击事件。 10.单选框控件和复选框控件都具有Value属性,它们的作用完全一样。 11.移动框架时,框架内的控件也跟着移动,并且框架内的各控件的Top和Left属性值也将分别随之改变。 12.当文本框的Multiline属性为True时,ScrollBars属性才有效。 13.与控件有关的赋值语句一定要放在该控件的事件中。 14.由于定时器控件在运行时是看不见的,因此在设置时可任意地将其放在任何位置。15.当列表框中表项太多,超出了设计时的长度时,VB会自动给列表框加上垂直滚动条。 16.若文本框的MaxLength属性值为0,则该文本框内不可输入任何字符。 17.若复选框控件的Value属性值为True,则框内显示“√”,若Value属性值为False,则显示空白。 18.当触发滚动条的Scroll事件后,一定会同时触发滚动条的Change事件。 19.如果命令按钮的Defalut属性为True,那么任何时候按Enter键都相当于单击该命令按钮。 20.所有控件都有Name和Caption属性。 二、选择题 1.文本框中选定的内容,由下列属性来反映。 A.SelText B.SelLength C.Text D.SelStart 2.执行后会删除文本框Text1中文本的语句为____。 A.Text1.Caption=””B.Text1.Text=”” C.Text1.Clear D.Text1.Cls 3.将数据“宋体”添加到列表框List1中,并使其成为第一项,使用____语句。 A.List1.AddItem "宋体",0 B.List1.AddItem "宋体" C.List1.AddItem 0,"宋体" D.List1.AddItem "宋体",1 4.复选框对象是否被选中,是由其____属性决定的。 A.Checked B.Enabled C.Value D.Selected

实验一 Windows应用程序设计(实验讲义)

实验一Windows简单程序设计 1、[实验目的] 了解在VC中Windows SDK应用程序的开发,熟悉Win32 Application和Win32 Console Application的程序结构 2、[实验内容] ①编写程序,要求程序能实现对字符串的处理; ②编写一个Win32 Application类型的Windows窗口程序。 3、[实验仪器设备] 操作系统:Windows2000/XP 编程软件:VC++ 4、实验步骤 (1)Win32 Console程序开发 ①运行Microsoft Visual C++ ②创建工程: 选择菜单“File”->“New”,在打开的对话框中,切换到“Projects”标签下,并选择“Win32 Console Application”作为工程类型,分别在Project name和Location文本框中输入工程的名字和位置(可自行定义),单击“OK”完成工程的创建。 ③编写代码实现:输入一串,比较字符串是否为“exit”,是则退出程序,否则输出串长度。循环输入第二个串,重复上述处理。(请给出程序代码) ④形成目标程序 单击菜单栏的“组建(B)”菜单下的“编译”命令,进行编译。在“输出”窗口的“组建”标签页下查看是否存在编译错误,若有,则进行调试。 ⑤运行程序 单击菜单栏的“组建(B)”菜单下的“执行”命令,生成.exe文件。必要时,可在过程中设置断点,以便核查相应指令的运行结果。 (2)Win32 Application窗口应用程序开发 ①程序结构: ●注册窗口类 ●创建窗口 ●显示和更新窗口

●创建消息循环 ●处理消息 ②创建工程: 同上,注意这里要选择“Win32 Application”作为工程类型 ③编写源程序: 程序可参考书上P9~P11,书上源程序存在部分错误,修正如下: ●添加两个头文件: #include #include ●在WinMain函数的实现程序前添加一段代码用于声明过程函数: long FAR PASCAL MainWndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam); ● ●在WinMain函数的实现程序中的变量定义部分增加一个变量申明: HWND ghWndMain; ● ●书上第14行wc.hbrBackground=GetStockObject(WHITE_BRUSH)修改为 wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH) ●在注释“显示窗口”下面增加一行,添加一句更新窗口的代码: UpdateWindow(ghWndMain); ●在MainWndProc函数的实现程序中将窗口显示消息处理部分的代码(这 部分有3行代码)修改如下: case WM_PAINT: //窗口显示消息处理 HDC hDC; PAINTSTRUCT ps; hDC=BeginPaint(hWnd,&ps); TextOut(hDC,0,0,"这是我的第一个windows程序",strlen("这是我的第一个windows程序")); EndPaint(hWnd,&ps); break; ④形成目标程序

Windows控件

Windows控件 ●Windows操作系统内置一些界面元素.象Button,List,ComboBox,Edit,Label,Menu等. ●这一些界面元素在MFC的类库里都用对应类来描述,程序通过这一些类来操作界面. ●从类库结构来看,这一些类都从CWnd类继承下来.这个类也是CDialog的基类. ●因此这一些控件除了自已独特界面类型以外,都一些共性. ●在Windows上,一个控件要用数字来表示,通过对这个数字就可以操作控件.在M FC里这个数字一般是在资源编辑器里定义成宏,这样在程序里更加容易阅读和理解 ●所有资源编号定义在res\resource.h ●在.rc里使用是宏定义如,如IDC_BUTTON1 ●在一个CDialog里可以调用GetDlgItem来找出控件的指针,这样用于操作 ●CWnd* GetDlgItem( int nID ) ●最常见的操作就是读取控件的上文本的值 CWnd::GetWindowText(),CWnd::SetWindowText(); ●不同控件读取文本有不同含意,如Label的读文本相当于读标签文本,Edit读文本 相当于编辑框里的值.ComboBox,ListBox相当于读取用户当前选中的文本. ●例,改变一个标签的提示 ●this->GetDlgItem(IDC_LABLE1)->SetWindowText(_T(“hello”)); ●读取一个编辑框的文本值 ●CString tmp = GetDlgItem(IDC_EDIT1)->GetWindowText(); ●这种方法实例上是Windows的方法,而不是C++面向对象的方法 控件对象的创建 ●在MFC中,控件对象的创建方法有两种 ●静态创建,对话框模板上把控件画好.这样当CDialog创建对话框时,自动把控件 创建好. ●这里一种比较简单和常用的创建方法 ●动态创建,即在运行时动态创建.这样可以更加灵活的设计界面,但是代码相对复杂 ●调用BOOL CWnd::Create()或者是派生类同名方法. ●注意把Create和类构造函数区别开来,类构造只是创建对象本身,通知W indows把控件画出来是Create执行的 ●无论动态,静态对控件影响最大的参数是DWORD dwStyle ,用于描述界面风格. ●模板中在属性窗里直接增写 ●Create时作为参数传入

相关文档
最新文档