ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:25.89KB ,
资源ID:16907433      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16907433.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(VC中Windows常用控件的创建和使用文档格式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

VC中Windows常用控件的创建和使用文档格式.docx

1、BS_3STATE 三态复选按钮 以上按钮风格通常需要同窗口风格共同使用,由CreateWindow()函数或MFC的CButton类成员函数Create()完成对按钮的创 建:/ 按钮类窗口风格 DWORD STYLE9 = BS_AUTOCHECKBOX, BS_AUTORADIOBUTTON, BS_AUTO3STATE, BS_CHECKBOX, BS_DEFPUSHBUTTON, BS_GROUPBOX, BS_PUSHBUTTON, BS_RADIOBUTTON, BS_3STATE;/ 动态创建按钮 for (int i = 0; i 9; i+) m_ctrButtoni.Cr

2、eate(BUTTON, WS_VISIBLE | WS_CHILD | WS_BORDER | STYLEi, CRect(10 + 110 * i, 10, 100 + 110 * i, 40), this, IDC_BUTTON1 + i); 如果需要处理按钮发送给其父窗口的消息,可以在进行消息响应的类实现中添加一个如下形式的消息映射入口和相应的消息处理函数:ON_Notification(id, memberFxn ) 其中,id为发送通知消息的按钮ID号,memberFxn为消息处理函数。如果按钮是以new操作符的方式在堆(heap)内创建一个 CButton对象,那么就必须确保在关

3、闭窗口前能调用delete销毁该对象。如果CButton对象是在栈上创建的就不必显式销毁对象了,应用程序 在退出时会自动予以销毁。编辑类控件 以窗口类名EDIT创建的编辑类控件是一个可以用来接受用户键盘字符输入的矩形区域,可以在其内进行编辑操作。该控件是程序接受用户字符输入的 一种主要手段,输入的内容存放在其父窗口容量有限的(32KB)局部堆中。 MFC的CEdit类提供了有关编辑类控件的功能函数。编辑控件既可以在对话框模板上创建也可以通过代码来直接创建,这两种方式均要通过CEdit 的构造函数来构造一个CEdit对象。CEdit类从CWnd继承了一些重要的函数,比如可以通过使用CWnd类成员

4、函数 SetWindowText()和GetWindowText()来设定和获取一个编辑控件中的文本。同按钮类控件类似,如果要处理由编辑控件发送给其 父窗口的通知消息,需要在父窗口类中为每一个待处理消息增添消息映射入口和消息响应函数。 在调用Create()函数创建编辑控件时,Windows系统将发出WM_NCCREATE、WM_NCCALCSIZE、WM_CREATE和 WM_GETMINMAXINFO等消息给编辑控件。这些消息缺省地分别由 OnNcCreate()、OnNcCalcSize()、OnCreate()和OnGetMinMaxInfo()等CWnd类成员函数进行处理, 可以根据

5、实际需要对其进行重载使用。作为一种特殊的窗口,编辑控件除了需要指定普通窗口风格外,还可以通过选用不同的控件风格而获取相应的功能效果,可 选用的编辑风格列表如下:编辑风格 说明 ES_AUTOHSCROLL 当在行尾添加一个字符后自动向右滚动10个字符。ES_AUTOVSCROLL 当输入回车后自动上滚一行。ES_CENTER 字符居中显示。ES_LEFT 字符左对齐。ES_LOWERCASE 统一转化为小写字母。ES_MULTILINE 允许多行显示。ES_NOHIDESEL 当编辑失去焦点时隐藏对字符的选定,重新获得焦点后以反色显示选中内容。ES_OEMCONVERT 将ANSI字符转化为O

6、EM字符。ES_PASSWORD 以星号显示字符,多用于回显密码。ES_RIGHT 字符右对齐 ES_UPPERCASE 统一转化为大写字母。ES_READONLY 设置字符为只读。ES_WANTRETURN 接受回车键输入。 下面给出创建、用编辑控件的示例代码,该示例首先通过Create()函数创建一个控件对象,并通过SetWindowText()函数为其设置字 符。通过添加对控件通知消息的响应代码可以检测文本是否发生了改变。程序主要实现清单如下:/ 控件的创建部分:/ 创建编辑控件 m_ctrEdit.Create(WS_VISIBLE | WS_CHILD | WS_BORDER | E

7、S_WANTRETURN | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL, CRect(10, 50, 250, 150), this, ID_EDIT1);/ 为控件设置字符 m_ctrEdit.SetWindowText(Hello World!);. / 添件对控件通知消息的响应 /AFX_MSG(CSample02View) afx_msg void OnEnChange();/AFX_MSG DECLARE_MESSAGE_MAP() BEGIN_MESSAGE_MAP(CSample02View, CView) /AFX_MSG_M

8、AP(CSample02View) ON_EN_CHANGE(ID_EDIT1, OnEnChange) /AFX_MSG_MAP END_MESSAGE_MAP() void CSample02View:OnEnChange() / 通知消息响应代码 AfxMessageBox(内容已改变!列表框与组合框 列表框是窗口类名为ListBox的预定义子窗口,在窗口矩形内包含有一些可以滚动显示的栏状字符串列表。标准的列表框只能允许选中一个条目, 选中的条目将以系统颜色COLOR_HIGHLIGHT高亮显示。Windows还提供了多种不同风格的标准列表框,其中包括多选列表框、多列显示的列 表框和可以

9、显示图象的拥有者画(Owner-draw)列表框等。另一种与列表框相关的控件是组合框,该控件预定义类名为COMBOBOX,实际是 一个编辑控件同一个彼此相关的列表框控件的组合。用户既可以在组合框的编辑栏上直接输入、编辑文字也可以从下拉列表中显示的可能选择中进行选取。 MFC的CListBox 类封装了列表框控件,由成员函数Create()完成对列表框的创建,在创建的同时指定了控件的窗口风格。当列表框中的 条目被选中或被鼠标双击后将向父窗口发送WM_COMMAND消息。如果列表框采用了LBS_NOTIFY风格,父窗口就可以通过ON_LBN消息映射 宏直接将通知消息同消息处理函数建立起映射关系。列

10、表框提供了十余种窗口风格,现将列表框风格及说明列表如下:列表框风格 说明 LBS_STANDARD 创建一个具有边界和垂直滚动条、当选择发生变化或条目被双击时能够通知父窗口的标准列表框。所有条目按字母排序。LBS_SORT 按字母排序。LBS_NOSEL 条目可视但不可选。LBS_NOTIFY 当用户选择或双击一个串时,发出消息通知父窗口。LBS_DISABLENOSCROLL 在条目不多时依然显示并不起作用的滚动条。LBS_MULTIPLESEL 允许条目多选。LBS_EXTENDEDSEL 可用SHIFT和鼠标或指定键组合来选择多个条目。LBS_MULTICOLUMN 允许多列显示。LBS

11、_OWNERDRAWVARIABLE 创建一个拥有者画列表框,条目高度可以不同。LBS_OWNERDRAWFIXED 创建一个具有相同条目高度的拥有者画列表框。LBS_USETABSTOPS 允许使用TAB制表符。LBS_NOREDRAW 当条目被增删后不自动更新列表显示。LBS_HASSTRINGS 记忆了添加到列表中的字串。LBS_WANTKEYBOARDINPUT 当有键按下时向父窗口发送WM_VKEYTOITEM或WM_CHARTOITEM消息。LBS_NOINTEGRALHEIGHT 按程序设定尺寸创建列表框。 缺省的,列表框在每添加或删除一个条目后都会自动重绘,如果在列表框中已经有

12、了几百条甚至上千条条目,将会因为重绘而引起比较严重的闪烁。可以通过 使用LBS_NOREDRAW风格来禁止列表框的自动重绘。在需要更新显示时强制重绘列表框窗口即可。如果在创建时未使用LBS_NOREDRAW风 格,可以在增删条目前向列表框发送WM_SETREDRAW消息,指定其不重绘,增添完毕后再次发送WM_SETREDRAW消息重新启用自动重绘风 格。示例过程如下:CListBox m_ctrListBox;/ 禁止自动重绘 m_ctrListBox.SendMessage(WM_SETREDRAW, FALSE, 0);/ 进行条目增删操作 / 允许自动重绘 m_ctrListBox.Se

13、ndMessage(WM_SETREDRAW, TRUE, 0); 列表框创建之初是不含任何条目的,通过CListBox成员函数AddString()和InsertString()向列表框增添或插入条目。如 果列表框具有LBS_SORT风格,那么新添加字串的位置是不固定的,要根据字串的字母进行排序;如果不具有该风格,新字串将添加到列表框的末尾。 如果有必要,可以使用SetItemDataPtr()或SetItemData()将一个32位的指针(或一个DWORD的值)同列表框中的一个 条目联系起来,并且在设置后可以通过调用GetItemDataPtr()或GetItemData()而获取。这样做

14、的目的是可以将列表框中的条目同 外部数据建立联系。例如:可以用这种方式非常方便地将一个包含有地址、电话号码和E-mail地址等信息的数据结构同列举在列表框中的持有人建立起关 联。当从列表框中选中某个人时,可以同时得到有关该人的通讯信息。 当操作列表框时,将会通过WM_COMMAND消息发送通知给父窗口,消息参数lParam的高字节包含了通知码标识符。在MFC应用程序中,列表 框的通知消息通过ON_LBN消息映射宏而映射到类成员函数。下表给出了列表框的几个通知消息以及相应的ON_LBN宏。其 中,LBN_DBLCLK,LBN_SELCHANGE和LBN_SELCANCEL通知消息只有在列表框使用

15、了LBS_NOTIFY或 LBS_STANDARD风格时才会被发出,其他通知消息则无此限制。通知码标识符 ON_LBN宏 值 含义 LBN_SETFOCUS ON_LBN_SETFOCUS 4 列表框接收到输入焦点 LBN_KILLFOCUS ON_LBN_KILLFOCUS 5 列表框接失去输入焦点 LBN_ERRSPACE ON_LBN_ERRSPACE -2 列表框存储溢出 LBN_DBLCLK ON_LBN_DBLCLK 2 双击条目 LBN_SELCHANGE ON_LBN_SELCHANGE 1 改变选择 LBN_SELCANCEL ON_LBN_SELCANCEL 3 取消选择

16、其中,最经常使用的两个通知消息是LBN_DBLCLK和LBN_SELCHANGE。对于不可复选的列表框可以通过GetCurSel()来获取 当前双击的是列表框条目的索引值;对于允许多选的列表框则需要用GetCaretIndex()来代替GetCurSel()。下面通过一段示例代码对 列表控件的使用做一个直观的演示:/ 创建并初始化列表框 / 创建列表框 m_ctrListBox.Create(WS_VISIBLE | WS_CHILD | WS_BORDER | LBS_STANDARD,CRect(270, 50, 370, 150), this, IDC_LIST1);/ 添加条目 CSt

17、ring Item9 = Item1, Item2Item3Item4Item5, Item6Item7Item8Item9;m_ctrListBox.AddString(Itemi);/ 选中第4个条目 m_ctrListBox.SetCurSel(3);/ 父窗口对通知消息的处理函数的声明(在头文件中) afx_msg void OnLbnDblClk();/ 父窗口对通知消息的映射入口 (在实现文件中) ON_LBN_DBLCLK(IDC_LIST1, OnLbnDblClk) / Standard printing commands / 父窗口对LBN_DBLCLK通知消息的处理 On

18、LbnDblClk() / 得到当前选中条目的索引 int Index = m_ctrListBox.GetCurSel();/ 得到此条目的内容 char Text20;m_ctrListBox.GetText(Index, Text);/ 以信息框报告得到的内容 AfxMessageBox(CString(Text); 虽然组合框实际是列表框和编辑框的组合,但在使用中的表现使得组合框同其他控件一样当作一个独立的控件去使用。MFC的CComboBox类提供了 对组合框的功能支持。在使用Create()函数创建组合框时可以同时指定组合框的风格(参见下表)。窗口风格 说明 CBS_AUTOHSC

19、ROLL 当在行尾输入字符时自动将编辑框中的文字向右滚动。CBS_DROPDOWN 同CBS_SIMPLE风格类似,只是只有在用户点击下拉图标时才会显示出下拉列表。CBS_DROPDOWNLIST 同CBS_DROPDOWN类似,只是显示当前选项的编辑框为一静态框所代替。CBS_HASSTRINGS 创建一个包含了由字串组成的项目的拥有者画组合框。CBS_OEMCONVERT 将组合框中的ANSI字串转化为OEM字符。CBS_OWNERDRAWFIXED 由下拉列表框的拥有者负责对内容的绘制;列表框中各项目高度相同。CBS_OWNERDRAWVARIABLE 由下拉列表框的拥有者负责对内容的绘

20、制;列表框中各项目高度可以不同。CBS_SIMPLE 下拉列表始终显示。CBS_SORT 自动对下拉列表中的项目进行排序。CBS_DISABLENOSCROLL 当下拉列表显示内容过少时显示垂直滚动条。CBS_NOINTEGRALHEIGHT 在创建控件时以指定的大小来精确设定组合框尺寸。 对组合框进行操作也会向父窗口发送通知消息,处理过程同前面几种控件大同小异,是通过ON_CBN消息映射宏完成对通知消息的映射的。下面就给出这 些ON_CBN宏的详细说明:ON_CBN宏 对应事件 ON_CBN_CLOSEUP 关闭下拉列表。ON_CBN_DBLCLK 双击下拉列表中的项目。ON_CBN_DRO

21、PDOWN 下拉显示列表框。ON_CBN_EDITCHANGE 编辑框中文本内容被改动。ON_CBN_EDITUPDATE 编辑框内容更新显示。ON_CBN_ERRSPACE 组合框不能为某个特殊请求分配足够的内存。ON_CBN_SELENDCANCEL 用户的选择被取消。ON_CBN_SELENDOK 用户选择了一个项目并且通过回车键或按下鼠标而隐藏组合框的下拉列表。ON_CBN_KILLFOCUS 组合框失去焦点。ON_CBN_SELCHANGE 选择发生变化。ON_CBN_SETFOCUS 组合框获得输入焦点。 最后给出一段有关组合框的示例代码,从代码实现不难看出组合框控件同前面给出的列

22、表控件在编程实现上的相似性。/ 组合框的创建 / 创建列表控件 m_ctrComboBox.Create(WS_VISIBLE | WS_CHILD | WS_BORDER | CBS_DROPDOWN, CRect(400, 50, 470, 150), this, IDC_COMBOX1);m_ctrComboBox.AddString(Itemi);m_ctrComboBox.SetCurSel(3);/ 通知消息响应函数的声明(在头文件中) afx_msg void OnCbnSelChange();/ 对通知消息的响应处理(在实现文件中) ON_CBN_SELCHANGE(IDC_C

23、OMBOX1, OnCbnSelChange) OnCbnSelChange() int Index = m_ctrComboBox.GetCurSel();m_ctrComboBox.GetLBText(Index, Text);树形控件 树形控件是一种可以分级显示项目列表的窗口,其所含项目以相互关联的方式显示在控件中,通过点击位于某个层次的项目节点可以展开下一层次中从属于该 节点的所有项目。树形控件非常适合于管理那些层次较多且相互间隶属关系较为清晰的项目元素。在MFC中,由CTreeCtrl类提供了对树形控件的功能 支持。 在用Create()创建了一个树形控件后可以用SetImageLi

24、st()函数为其设置一个图象列表,这样就可以在树形控件中为各个层次的项目 设置图标。通过InsertItem()函数可以为其添加数据项,返回的HTREEITEM类型的句柄唯一标识了此添加的项目。该句柄应当妥善保管,只 有通过该句柄才能为此项目继续添加子项目。如果在创建子窗口时指定父窗口句柄为NULL,则将直接在根目录创建项目。下面这段代码将通过上述函数创建一 个树形控件并向其添加二个层次的项目:/ 创建一个树形控件 m_ctrTreeCtrl.Create(WS_VISIBLE | WS_CHILD | WS_BORDER | TVS_LINESATROOT | TVS_HASLINES |

25、TVS_HASBUTTONS | TVS_EDITLABELS, CRect(500, 50, 670, 200),this, IDC_TREE1);TV_ITEM tvItem;TV_INSERTSTRUCT tvInsert;tvItem.mask = TVIF_TEXT; / 指定pszText成员可用 tvItem.pszText = Item0; / 根项目显示的字符 tvInsert.hParent = TVI_ROOT; / 指定父句柄 tvInsert.item = tvItem; / 指定TV_ITEM结构对象 tvInsert.hInsertAfter = TVI_LAST; / 项目插入方式 / 创建根项目,当前项目句柄保存于hItem0中 HTREEITEM hItem0 = m_ctrTreeCtrl.InsertItem(&tvInsert);/ 在根项目下继续创建第二层项目 tvItem.pszTe

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1