ListBox

1. Listbox messages  
 LB_ADDSTRING  
 LB_INSERTSTRING  
 LB_DELETESTRING  
 LB_SELITEMRANGEEX  
 LB_RESETCONTENT  
 LB_SETSEL  
 LB_SETCURSEL  
 LB_GETSEL  
 LB_GETCURSEL  
 LB_GETTEXT  
 LB_GETTEXTLEN  
 LB_GETCOUNT  
 LB_SELECTSTRING  
 LB_DIR  
 LB_GETTOPINDEX  
 LB_FINDSTRING  
 LB_GETSELCOUNT  
 LB_GETSELITEMS  
 LB_SETTABSTOPS  
 LB_GETHORIZONTALEXTENT  
 LB_SETHORIZONTALEXTENT  
 LB_SETCOLUMNWIDTH  
 LB_ADDFILE  
 LB_SETTOPINDEX  
 LB_GETITEMRECT  
 LB_GETITEMDATA  
 LB_SETITEMDATA  
 LB_SELITEMRANGE  
 LB_SETANCHORINDEX  
 LB_GETANCHORINDEX  
 LB_SETCARETINDEX  
 LB_GETCARETINDEX  
 LB_SETITEMHEIGHT  
 LB_GETITEMHEIGHT  
 LB_FINDSTRINGEXACT  
 LB_SETLOCALE  
 LB_GETLOCALE  
 LB_SETCOUNT  
 LB_INITSTORAGE  
 LB_ITEMFROMPOINT  
 LB_MSGMAX  
 LB_MSGMAX 


2. Listbox Notification Codes  
 LBN_ERRSPACE       // 列表框存储溢出
 LBN_SELCHANGE      // 改变选择
 LBN_DBLCLK       // 双击条目
 LBN_SELCANCEL      // 取消选择
 LBN_SETFOCUS       // 列表框接收到输入焦点
 LBN_KILLFOCUS     // 列表框接失去输入焦点


 父窗口通过WM_COMMAND消息接收:

 wNotifyCode = HIWORD(wParam); // notification code
 wID = LOWORD(wParam);         // item, control, or accelerator identifier
 hwndCtl = (HWND) lParam;      // handle of control


3. 列表框风格    
 LBS_STANDARD    创建一个具有边界和垂直滚动条、当选择发生变化或条目被双击时能够通知父窗口的标准列表框。所有条目按字母排序。
 LBS_SORT    按字母排序。
 LBS_NOSEL    条目可视但不可选。
 LBS_NOTIFY    当用户选择或双击一个串时,发出消息通知父窗口。
 LBS_DISABLENOSCROLL   在条目不多时依然显示并不起作用的滚动条。
 LBS_MULTIPLESEL   允许条目多选。
 LBS_EXTENDEDSEL   可用SHIFT和鼠标或指定键组合来选择多个条目。
 LBS_MULTICOLUMN   允许多列显示。
 LBS_OWNERDRAWVARIABLE   创建一个拥有者画列表框,条目高度可以不同。
 LBS_OWNERDRAWFIXED   创建一个具有相同条目高度的拥有者画列表框。
 LBS_USETABSTOPS   允许使用TAB制表符。
 LBS_NOREDRAW    当条目被增删后不自动更新列表显示。
 LBS_HASSTRINGS    记忆了添加到列表中的字串。
 LBS_WANTKEYBOARDINPUT   当有键按下时向父窗口发送WM_VKEYTOITEM或WM_CHARTOITEM消息。
 LBS_NOINTEGRALHEIGHT   按程序设定尺寸创建列表框。


 在MFC应用程序中,列表框的通知消息通过ON_LBN消息映射宏而映射到类成员函数。
下表给出了列表框的几个通知消息以及相应的ON_LBN宏。其中,LBN_DBLCLK,LBN_SELCHANGE
和LBN_SELCANCEL通知消息只有在列表框使用了LBS_NOTIFY或LBS_STANDARD风格时才会被发出,
其他通知消息则无此限制。

 


4. 重绘

 缺省的,列表框在每添加或删除一个条目后都会自动重绘,如果在列表框中已经有了几百条甚至上千条条目,
将会因为重绘而引起比较严重的闪烁。可以通过使用LBS_NOREDRAW风格来禁止列表框的自动重绘。在需要更新显示时
强制重绘列表框窗口即可。如果在创建时未使用LBS_NOREDRAW风格,可以在增删条目前向列表框发送WM_SETREDRAW消息,
指定其不重绘,增添完毕后再次发送WM_SETREDRAW消息重新启用自动重绘风格。


 示例过程如下: CListBox m_ctrListBox;
 m_ctrListBox.SendMessage(WM_SETREDRAW, FALSE, 0); // 禁止自动重绘
 // 进行条目增删操作……
 m_ctrListBox.SendMessage(WM_SETREDRAW, TRUE, 0); // 允许自动重绘

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值