第五章Windows标准控件_第1页
第五章Windows标准控件_第2页
第五章Windows标准控件_第3页
第五章Windows标准控件_第4页
第五章Windows标准控件_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第五章 Windows标准控件51 概述511 分类Windows系统提供了六种可作为控件的预定义窗口类。预定义窗口类说明BUTTON按钮控件COMBOBOX组合框控件EDIT文本框控件LISTBOX列表框控件SCROLLBAR滚动条控件STATIC静态控件512 创建控件在应用程序中以独立子窗口和对话框控件两种形式存在,因此控件的创建形式也分为以下两种:1调用CreateWindows函数创建独立控件子窗口CreateWindow(lpszClassName,Title,Style,X,Y,nWidth,nHeight,hwndParent,(HMENUID,hInstance,NULL2.

2、 在对话框定义中创建控件Control-Type Title, ID,X,Y,nWidth,nHeight ,Style其中:Control-type为控件类型,常用对话框控件类型及其说明:控件说明CHECKBOX复选框控件COMBOBOX组合框控件CTEXT文本居中的静态控件DEFPUSHBUTTON缺省按钮控件EDITTEXT文本框控件LISTBOX列表框控件LTEXT文本左对齐的静态控件PUSHBUTTON按钮控件RADIOBUTTON圆按钮控件RTEXT文本右对齐的静态控件SCROLLBAR滚动条控件注:创建控件的重点是选择控件风格。不同风格不但关系到控件的外型,而且决定控件所能实现的

3、功能。513 控件与应用程序的消息传递1控件向应用程序发送消息用户与子窗口控件交互时,控件向其父窗口发送WM_COMMAND消息。该消息的wParam 参数的低字节中包含子窗口控件的标识值(ID),高字节中包含子窗口向父窗口发出的通知代码,lParam参数中包含控件子窗口句柄。例如:用户单击按钮控件,该按钮子窗口随即向父窗口发送一条WM_COMMAND消息。该消息的wParam 参数的低字节中包含子窗口控件的标识值(ID),高字节中包含名称为BN_CLICKED(单击)的通知码,表明该消息由用户单击按钮产生。2应用程序向控件发送消息应用程序窗口收到子窗消息后,可调用函数SendMessage向

4、特定的子窗口发送消息,以指示其动作。例如:用户单击圆按钮时,应用程序窗口可调用函数SendMessage向圆按钮发送BM_SETCHECK消息,为该按钮设置选中符号。SendMessage(hwndRadioButton,BM_SETCHECK,1,0);使用对话框控件时,应用程序可调用函数SendDlgItemMessage向特定的对话框控件发送消息。SendDlgItemMessage(hdlg,ID,message,wParam,lParam);514 常用窗口操作函数1EnableWindow函数激活或禁止窗口。BOOL EnableWindow(HWND hwnd,BOOL bEna

5、ble;2MoveWindow函数移动窗口或改变窗口大小。BOOL MoveWindow(HWND hwnd,int x,int y,int nWidth,int nHeight,BOOL bReprint;bReprint表明窗口移动后是否重画。3. SendWindowText函数设置窗口的标题或文本。BOOL SendWindowText(HWND hwnd,LPCTSTR lpszString;4GetWindowText函数获取窗口的标题或文本。int GetdWindowText(HWND hwnd,LPCTSTR lpszString,int nMax;函数返回从指定窗口获取的文

6、本字符数。对于对话框按钮控件,应用程序可调用SetDlgItemText和GetDlgItemText完成相同的操作。BOOL SetDlgItemText(HWND hdlg,int ID,LPSTR lpszString;int GetDlgItemText(HWND hdlg,int ID,LPSTR lpszString,int nMax;5. DestroyWindow函数关闭窗口。BOOL DestroyWindow(HWND hwnd;52 按钮控件521 创建按钮控件1创建按钮子窗口控件应用程序调用函数CreateWindow创建该类按钮控件。CreateWindow(“BUT

7、TON”, /预定义窗口类名Title, /按钮标题WS_CHILD|WS_VISIBLE|,/风格X,Y, /按钮控件的起始点坐标nWidth,nHeight,/ 按钮控件的宽度与高度hwndParent, / 拥有该按钮控件的窗口句柄ID, /按钮控件标识hInstance, / 应用程序当前实例句柄NULL /无附加信息2创建对话框中按钮控件该类型按钮的创建在应用程序的对话框中的定义完成。Button-type Title ID,X,Y,nWidth,nHeight,Style3. 按钮控件与应用程序的消息传递应用程序创建按钮控件后,可通过按收控件发出的消息得知用户的请求,并可向指定按钮

8、发送消息对其进行操作。(1) 接收按钮控件消息用户与 控件交互时,控件向其父窗口发送WM_COMMAND消息。该消息的wParam 参数的低字节中包含控件的标识值(ID),高字节中包含子窗口控件向父窗口发出的通知代码,lParam参数中包含控件子窗口句柄。按钮消息中常用的通知码及说明如下:通知码说明BN_CLICKED单击用户按钮BN_DBLCLK双击用户按钮BN_SETFOCUS按钮获得输入焦点BN_KILLFOCUS按钮失去输入焦点(2) 向按钮控件发送消息应用程序可调用函数SendMessage向按钮控件发出消息。SendMessage(hwnd,message,wParam,lPara

9、m);SendMessage函数使用字参数确定同种消息中的不同动作。例如:设置复选框和圆按钮的标志时字参数应取1,其形式为:SendMessage(hwnd,BM_SETCHECK,1,0);取消选择标志时字参数应取0,其形式为:SendMessage(hwnd,BM_SETCHECK,0,0);对于对话框按钮,应用程序可调用函数SendDlgItemMessag完成相同的操作。522 按钮控件示例53 滚动条按钮531 功能与分类滚动条可分为垂直滚动条和水平滚动条,分别实现窗口内容纵向和横向的滚动。在形式上又可分为窗口滚动条和子窗口滚动条控件两种。532 创建滚动条1创建窗口滚动条应用程序在

10、主窗口的创建过程通过设置窗口类的风格为WS_VSCROLL 和WS_HSCROLL中实现窗口滚动条的创建,其形式为:hwnd = CreateWindow(lpszClassName,lpszTitle,/在窗口的创建风格中加入滚动条风格WS_OVERLAPPEDWINDOW|ws_VSCROLL|WS_HSCROLL,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL;2. 创建滚动条子窗口控件子窗口滚动条控件的创建与其它控件相似,由应用程序调用函数CreateWindow实现。Cr

11、eateWindow(“SCROLLBAR”, /预定义窗口类名lpszScrollTitle, /滚动条标题,常为NULLWS_CHILD|WS_VISIBLE|SBS_VERT,/ 滚动条风格X,Y, /滚动条的起始点坐标nWidth,nHeight,/ 滚动条的宽度与高度hwndParent, / 拥有该滚动条的窗口句柄ID, /滚动条标识hInstance, / 应用程序当前实例句柄NULL /无附加信息3. 创建对话框中的滚动条控件对话框中使用的滚动条在对话框的定义中完成创建操作。SCROLLBAR ID,X,Y,nWidthyle,nHeight,style5.3.3 发送滚动条消

12、息当用户操作窗口滚动条时,滚动条向应用程序发出WM_VSCROLL或WM_HSCROLL消息。其中字参数(wParam)包含滚动条动作的标识。子窗口控件的滚动条并不发出WM_COMMAND消息,而是发送WM_VSCROLL或WM_HSCROLL消息。两者区别在于消息长参数(lParam)所包含的内容不同。滚动条控件消息长参数的高字节包含控件句柄,而窗口滚动条消息的高字节则为0。534 常用滚动条操作函数1SetScrollRange函数设置滚动条的滚动范围int SetScrollPos(HWND hwnd,int nBar,int nMaxPos,int nMinPos,BOOL bRedr

13、awnBar为滚动条标识,常用标及说明如下:通知码说明SB_CTL表示该滚动条为控件滚动条SB_HORZ表示该滚动条为窗口水平滚动条SB_VERT表示该滚动条为窗口垂直滚动条说明:滚动条的滚动位置为一组离散值,例如设置滚动条的范围为099,则该滚动条共有100个可能位置。2SetScrollPos函数设置滚动条的位置。int SetScrollPos(HWND hwnd,int nBar,int nPos,BOOL bRedraw3. GetSystemMetrics函数(1)获取系统水平滚动条高度nScrollHeight=GetsystemMetrics(SM_CYHSCROLL;(2)获

14、取系统垂直滚动条宽度nHcrollHeight=GetsystemMetrics(SM_CXVSCROLL;4GetScrollPos函数获取滚动条的位置。Int GetScrollPos(HWND hwnd,int nBar;5. GetScrollRange函数获取滚动条的滚动范围。BOLL GetScrollRange(HWND hwnd,int nBar,LPINT lpMinPos,LPINT lpMaxPos;535 滚动条编程示例53 静态控件533 特点一般情况下静态控件既不按收用户输入出不发出消息。应用程序可通过设置其风格使其可以响应用户输入,向应用程序发送消息。这时的静态文

15、本在功能上相当于超文本。534 创建1创建静态控件子窗口应用程序调用函数CreateWindow创建该类型的静态控件。CreateWindow(“STATIC”, /预定义窗口类名lpszStaticTitle, /静态控件标题(文本或位图WS_CHILD|WS_VISIBLE|WS_BORDER|,/风格X,Y, /静态控件起始点坐标nWidth,nHeight,/ 静态控件的宽度与高度hwndParent, / 拥有该静态控件的窗口句柄ID, /静态控件标识hInstance, / 应用程序当前实例句柄NULL /无附加信息静态控件的风格及说明风格说明SS_LEFT左对齐文本SS_RIGH

16、T右对齐文本SS_CENTER文本居中SS_ICON包含图标SS_BITMAP包含位图SS_CENTERIMAGE位图居中SS_NOTIFY当用户在静态控件中单击时,强制发出消息SS_USERITEM用户定义2作为对话框控件静态控件作为对话框控件时,其创建过程在对话框的定义中完成。Static-Type Title ID,X,Y,nWidth,nHeight,style5.4.3 发送静态控件强制消息SS_NOTIFY风格允许静态控件向其父窗口发送WM_COMMAND消息,该消息的wParam 参数的低字节中包含静态控件的标识值(ID),高字节中包含通知码,lParam参数中包含静态控件的句柄

17、。静态控件使用的通知码及说明通知码说明STN_CLICKED单击静态控件STN_DBLCLK双击静态控件STN_ENABLE激活静态控件STN_DISABLE禁止静态控件5.4.4 示例5.5 列表框5.5.1 功能与特点1 与按钮控件相比列表框可容纳更多的选项(使用滚动条)2 单击其中的某一项时,该 项的颜色变化;再次单击后恢复为非选择状态。此外,列表框可设置为单选与多选,使用范围广泛。552 创建1创建列表框子窗口控件应用程序调用函数CreateWindow创建该类型的列表框。CreateWindow(“LISTBOX”, /预定义窗口类名NULL, /列表框一般无标题WS_CHILD|W

18、S_VISIBLE|,/风格X,Y, /列表框的起始点坐标nWidth,nHeight,/ 列表框的宽度与高度hwndParent, / 拥有该列表框的窗口句柄ID, /列表框标识hInstance, / 应用程序当前实例句柄NULL /无附加信息列表框的风格及说明风格说明LBS_NOTIFY可向父窗口发送消息LBS_SORT按字母顺序排列列表项LBS_MULTIPLESEL多选列表框LBS_EXTENDEDSEL扩展多选列表框LBS_NOREDRAW列表框改变时不重画LBS_STANDARD标准风格其中LBS_STANDARD代表列表框最常用的风格组合:WS_BORDER|WS_VSCROL

19、L|LBS_SORT|LBS_NOTIFY2创建作为对话框控件的列表框该类型列表框的创建在应用程序中对话框的定义中完成。LISTBOX ID,X,Y,nWidth,nHeight,style553 列表框和应用程序间传递消息应用程序创建列表框控件后,可通过接收控件发出的消息得知用户请求,并通过向列表框发送消息对其进行操作。1列表框向应用程序发送消息当用户与列表框交互时,列表框向其父窗口发送WM_COMMAND消息,该消息的wParam 参数的高字节标识列表框动作的消息通知码(如LBN_DBLCLK标识用户双击);低字节为窗口句柄。2应用程序向列表框发送消息应用程序通过调用SendMessage

20、或SendDlgItemMessage发送消息操作列表框。应用程序向列表框发送消息时应注意:(1)使用索引号应用程序通过列表框中项的索引值操作指定项,其中第一项的缺省索引号为0,最后一项的索引号为-1。例如:在列表框的第三个位置插入项的语句为:SendMessage(hwndlist,LB_INSERTSTRING,2,(LPARAM)szNewItem);应用程序还可通过向列表框发送LB_GETCURSEL消息获取当前选中项的索引号。NIndex=SendMessage(hwndlist,LB_GETCURSEL,0,0;(2)使用多选列表框当应用设置多选列表框的风格为LBS_EXTENDE

21、DSEL和LBS_MULTIPLSEL时,用户可在该列表框中选择多个项。当用户选择列表框中的多个项时,应用程序可通过向列表框发送LB_GETSELCOUNT消息获取选中的项数。其形式为:nCount=SendMessage(hwndlist, LB_GETSELCOUN,0,0;此外,应用程序还可向列表框发送LB_GETSEL消息获取指定项的选中状态。其形式为:nSelect=SendSessage(hwndlist,LB_GETSEL,nIndex,0;(3)发送LB_DIR消息列表框最常见的用法是显示一列文件名、目录或驱动器,这一功能由应用程序向列表框发出LB_DIR消息实现。该消息的字参

22、数(wParam)表示文件属性值,长参数(lParam)表示所列文件的特征。常用的形式为:nFileNum=SendMessage(hwndlist,LB_DIR,FILE_LIST,(LPARAM”*.exe”;常用文件的属性值及说明:数值(16进制)说明4000列出驱动器名0000列出普通文件名0001列出只读文件名0002列出隐含文件名0004列出系统文件名0010列出上述文件及子目录例如:“0x 4010”表示列出驱动器名及当前目录的子目录名和所有文件名。554 示例56 文本框5.6.1 功能与特点1. 自动转换用户输入,如大小写转换等。2. 使某个字符代替显示用户的输入。3. 支持

23、多行编辑等。5.6.2 创建1创建文本框子窗口控件应用程序调用函数CreateWindow创建该类型的文本框。CreateWindow(“EDIT”, /预定义窗口类名NULL, /文本框一般无标题WS_CHILD|WS_VISIBLE|,/风格X,Y, /文本框的起始点坐标nWidth,nHeight,/ 文本框的宽度与高度hwndParent, / 拥有该文本框的窗口句柄ID, /文本框标识hInstance, / 应用程序当前实例句柄NULL /无附加信息文本框的风格及说明风格说明ES_AUTOHSCROLL输入超出窗口时,窗口水平滚动,该风格只能与ES_MULTILINE一起使用ES_

24、AUTOVSCROLL输入超出窗口时,窗口垂直滚动ES_CENTER文本居中ES_LEFT文本居中左ES_RIGHT文本居中右ES_READONLY只读文本ES_UPPERCASE大写显示输入ES_LOWERCASE小写显示输入ES_PASSWORD以*显示输入ES_MULTILINE多行文本2创建对话框中的文本框控件该类型文本框的创建在应用程序中对话框的定义中完成。EDITTEXT ID,X,Y,nWidth,nHeight,style5.6.3 文本框和应用程序间传递消息应用程序创建文本框控件后,可通过接收控件发出的消息得知用户请求,并通过向文本框发送消息对其进行操作。1文本框向应用程序发送消息当用户与文本框交互时,文本框向其父窗口发送WM_COMMAND消息,该消息的wParam 参数的低字节为控件标识,高字节标识文本框动作的消息通知码。2应用程序向文本框发送消息应用程序通过调用SendMessage或SendDlgItemMessage发送消息操作文本框。564 示例57 组合框5.7.1 功能与特点在Windows编程中,使用一些控件往往不能完全满足与用户交互的需要,如果使用对话框包含多个控件,则各控件之间的联系又松散,编程较为繁锁。组合框可很好地解决这个问题。5.7.2 创建1创建独立子窗口组合框应用程序调用函数CreateWi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论