【3D技术宅公社】XR数字艺术论坛  XR技术讨论 XR互动电影 定格动画

 找回密码
 立即注册

QQ登录

只需一步,快速开始

调查问卷
论坛即将给大家带来全新的技术服务,面向三围图形学、游戏、动画的全新服务论坛升级为UTF8版本后,中文用户名和用户密码中有中文的都无法登陆,请发邮件到324007255(at)QQ.com联系手动修改密码

3D技术论坛将以计算机图形学为核心,面向教育 推出国内的三维教育引擎该项目在持续研发当中,感谢大家的关注。

查看: 3353|回复: 0

[算法/加密解密] 【集合】组合框控件(combobox)

[复制链接]
发表于 2007-2-7 10:51:00 | 显示全部楼层 |阅读模式
组合框把一个编辑框和一个单选择列表框结合在了一起.用户既可以在编辑框中输入,也可以从列表框中选择一个列表项来完成输入。组合框分为简易式(Simple combo box)、下拉式(Drop-down combo box)和下拉列表式(Drop-down list box)三种.简易式组合框包含一个编辑框和一个总是显示的列表框。下拉式组合框同简易式组合框类似,二者的区别在于仅当单击下滚箭头后列表框才会弹出。下拉列表式组合框也有一个下拉的列表框,但它的编辑框是只读的,不能输入字符。
  应用程序用CreateWindowEx创建组合框控件时,可根据控件的用途在下表中选择部份常数来设定其风格属性(style)。
常数说明
CBS_AUTOHSCROLL允许在编辑框中输入超过控件宽度的文字。
CBS_DISABLENOSCROLL固定显示垂直滚动条。未指定本项时,当列表未超出窗口,垂直滚动条自动隐藏。
CBS_DROPDOWN指定控件为下拉式列表框,允许在编辑框中输入文字。
CBS_DROPDOWNLIST指定控件为下拉列表式,不允许在编辑框中输入文字。
CBS_HASSTRINGS指定控件为含有字符串的自绘式组合框。应用程序在自绘式组合框的列表框中进行自绘时可以用CB_GETLBTEXT消息来取得列表项的文本。
CBS_LOWERCASE使所有列表项的文本全部变成小写。
CBS_NOINTEGRALHEIGHT组合框的尺寸由应用程序而不是Windows指定.通常,由Windows指定尺寸会使列表项的某些部分隐藏起来
CBS_OEMCONVERT使编辑框组件中的正文可以在ANSI字符集和OEM字符集之间相互转换。这在编辑框中包含文件名时是很有用的。
CBS_OWNERDRAWFIXED指定自绘式组合框,即由父窗口负责绘制列表框的内容,并且列表项有相同的高度。在控件被创建时父窗口将收到WM_MEASUREITEM 消息,当需要重绘时父窗口将收到 WM_DRAWITEM 消息。
CBS_OWNERDRAWVARIABLE指定自绘式组合框,并且列表项有不同的高度。在控件被创建时父窗口将收到WM_MEASUREITEM 消息,当需要重绘时父窗口将收到 WM_DRAWITEM 消息。
CBS_SIMPLE指定控件为简易式组合框,其列表框不会自动隐藏,允许在编辑框中输入文字。
CBS_SORT使插入列表框中的项按字母升序排列。
CBS_UPPERCASE使所有列表项的文本全部变成大写。

  应用程序可以通过调用SendMessage向控件发送如下消息来设定和查询控件各种参数。
uMsgwParamlParam说明
CB_ADDSTRING0字符串地址追加一个列表项。如果指定了CBS_SORT风格,表项将被重排序,否则将被追加在列表框的最后一项。
CB_DELETESTRING索引0删除指定的列表项,
CB_DIRDDL_ARCHIVE指向通配符地址在列表框中列出文件名,必须是当前路径内,符合指定通配符,存档属性的文件名。
DDL_DIRECTORY在列表框中列出当前路径的子文件夹。子文件夹名前后将加上一对方括号"
  • "
  • DDL_DRIVES在列表框中列出本机的所有驱动器名。驱动器名前后将加上一对方括号和减号"[-*-]"
    DDL_EXCLUSIVE只列出指定属性的文件名,默认情况下是所有可读写文件都列出。如果没有指定任何文件属性,则不列出文件名。
    DDL_HIDDEN列出隐藏属性的文件名。
    DDL_READONLY列出只读属性的文件名。
    DDL_READWRITE列出读写属性的文件名。
    DDL_SYSTEM列出系统属性的文件名。
    CB_FINDSTRING起点索引字符串地址根据给定的字符串前辍查找匹配字符串,忽略大小写,从指定起点开始开始查找,当查到某表项的文本字符串的前面包括指定的字符串则结束查找,返回索引号,若找不到则转到列表框第一项继续查找,直到查完所有表项,如果wParam为-1则从列表框第一项开始查找,若还找不到则返回CB_ERR。如:表项字符串为"abc123"和指定字串"ABC"就算匹配。
    CB_FINDSTRINGEXACT开始表项序号字符串地址查找字符串,忽略大小写,与CB_FINDSTRING不同,本操作必须整个字符串相同。如果找到则返回表项序号,否则返回CB_ERR。
    CB_GETCOUNT00返回列表项的总项数,若出错则返回CB_ERR.
    CB_GETCURSEL00返回当前被选择项的索引,如果没有列表项被选择或有错误发生,则函数返回CB_ERR.
    CB_GETDROPPEDCONTROLRECT0RECT结构地址取组合框中列表框的屏幕位置。
    CB_GETDROPPEDSTATE00取组合框中列表框是否可见,返回TRUE可见,FALSE隐藏。
    CB_GETDROPPEDWIDTH00取组合框中列表框的宽度(像素点)。
    CB_GETEDITSEL起点缓冲地址
    或NULL
    终点缓冲地址
    或NULL
    取得组合框中编辑控件中选定内容的范围,返回值中低16位为起点与高16位为终点,如果wParam和lParam中指定了地址,则会在该地址填入相应值(dword)。
    CB_GETEXTENDEDUI00返回组合框是否存在扩展界面,如果存在则返回TRUE否则FALSE。扩展界面详见CB_SETEXTENDEDUI
    CB_GETHORIZONTALEXTENT00返回组合框水平滚动的总宽度(像素点)。本操作只适用于带有水平滚动风格的组合框。
    CB_GETITEMDATA索引0每个列表项都有一个32位的附加数据.本操作返回指定列表项的附加数据。若出错则返回CB_ERR.
    CB_GETITEMHEIGHT索引0返回指定列表项的高度(像素点)。
    CB_GETLBTEXT索引缓冲区用于获取指定列表项的字符串。参数lParam指向一个接收字符串的缓冲区。wParam则指定了接收字符串的列表项索引。返回获得的字符串的长度,若出错,则返回CB_ERR。
    CB_GETLBTEXTLEN索引0返回指定列表项的字符串的字节长度(未包括结尾的0)。wParam指定了列表项的索引.若出错则返回CB_ERR。
    CB_GETLOCALE00取列表项当前用于排序的语言代码,当用户使用CB_ADDSTRING向组合框中的列表框中添加记录并使用CBS_SORT风格进行重新排序时,必须使用该语言代码。返回值中高16位为国家代码。
    CB_GETTOPINDEX00取组合框中列表框中第一个可见项的索引,若出错则返回CB_ERR.
    CB_INITSTORAGE表项数内存字节数本操作只适用于Windows95版本,当你将要向列表框中加入很多表项或有很大的表项时,本操作将预先分配一块内存,以免在今后的操作中一次一次地分配内存,从而加快程序运行速度。
    CB_INSERTSTRING索引字符串地址在列表框中的指定位置插入字符串。wParam指定了列表项的索引,如果为-1,则字符串将被添加到列表的末尾。lParam指向要插入的字符串。本操作返回实际的插入位置,若发生错误,会返回LB_ERR或LB_ERRSPACE。与CB_ADDSTRING不同,本操作不会导致CBS_SORT风格的列表框重新排序。建议不要在具有CBS_SORT风格的列表框中使用本操作,以免破坏列表项的次序。
    CB_LIMITTEXT最大值0限制组合框中编辑控件文本的最大长度
    CB_RESETCONTENT00清除所有列表项。
    CB_SELECTSTRING开始表项序号字符串地址设定与指定字符串相匹配的列表项为选中项。本操作会滚动列表框以使选择项可见。参数的意义及搜索的方法与CB_FINDSTRING类似。如果找到了匹配的项,返回该项的索引,如果没有匹配的项,返回CB_ERR并且当前的选中项不被改变。
    CB_SETCURSEL索引0设置指定的列表项为当前选择项。本操作会滚动列表框以使选择项可见。参数wParam指定了列表项的索引,若为-1,将清除列表框中的选择。若出错函数返回CB_ERR。
    CB_SETDROPPEDWIDTH宽度(点)0设定组合框中的列表框的最大允许宽度。
    CB_SETEDITSEL0范围设置制组合框中编辑控件中文本选定内容范围,该范围被高亮度显示,用于为复制、替换、粘贴、剪切、删除等编辑功能指定范围。lParam的高16位为起点低16位为终点。
    CB_SETEXTENDEDUITRUE或FALSE0指定下拉式或下拉列表式组合框是使用默认界面或扩展界面。wParam为FALSE时使用默认界面:用“F4”键切换下拉列表框的打开和关闭而用向下方向键改变选择项。wParam为TRUE时使用扩展界面:禁止使用“F4”而使用向下方向键来打开下拉列表框。
    CB_SETHORIZONTALEXTENT宽度(点)0设定组合框中的列表框的宽度。
    CB_SETITEMDATA索引数据值更新组合框中列表框指定列表项的32位附加数据。
    CB_SETITEMHEIGHT索引高度(点)指定组合框中列表项显示高度,带有CBS_OWNERDRAWVARIABLE(自绘列表项)风格的控件,只设置由wParam指定项的高度,其它风格将更新所有的列表项的高度。
    CB_SETLOCALE语言代码0设置列表项当前用于排序的语言代码,当用户使用CB_ADDSTRING向组合框中的列表框中添加记录并使用CBS_SORT风格进行重新排序时,必须使用该语言代码。返回值中高16位为国家代码。
    CB_SETTOPINDEX索引0用来将指定的列表项设置为列表框的第一个可见项,该函数会将列表框滚动到合适的位置。wParam指定了列表项的索引.若操作成功,返回0值,否则返回CB_ERR。
    CB_SHOWDROPDOWNTRUE或FALSE0本操作用本显示或关闭下拉式和下拉列表式组合框的列表框,wParam为TRUE时为显示,FALSE时关闭。


    uMsgwParamlParam说明
    WM_COMPAREITEM------------
    WM_DRAWITEM------------
    WM_MEASUREITEM------------

      当用户在组合框上进行各种操作时,其父窗口将收到WM_COMMAND通知消息,同时wParam的低16位带控件的ID。lParam带控件句柄(hWnd),wParam的高16位带有如下表的消息代码。
    消息代码说明
    CBN_CLOSEUP下拉的列表框将关闭。
    CBN_DBLCLK简易式组合框的列表项被双击。
    CBN_DROPDOWN下拉的列表框将打开。
    CBN_EDITCHANGE组合框的编辑控件文本被更改。本消息是在文本被显示后发出的。
    CBN_EDITUPDATE组合框的编辑控件文本被更改。本消息是在文本被显示前发出的。
    CBN_ERRSPACE没有申请到足够内存空间。
    CBN_KILLFOCUS组合框失去键盘输入焦点。
    CBN_SELCHANGE改变当前选择项。
    CBN_SELENDCANCEL用户取消当前的选择。当用户在列表框中选择了一项,然后又在组合框控件外单击鼠标时就会导致该消息的发送。
    CBN_SELENDOK用户确认了自己所作的选择。当用户在列表框中选择了一项,然后按了回车键或单击了下滚箭头时就会发送该消息。
    CBN_SETFOCUS组合框获得了键盘输入焦点。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    手机版|小黑屋|3D数字艺术论坛 ( 沪ICP备14023054号 )

    GMT+8, 2025-2-6 06:45

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表