分类: C/C++
2009-07-10 09:24:40
列表框风格 | 说明 |
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 | 按程序设定尺寸创建列表框。 |
CListBox m_ctrListBox; // 禁止自动重绘 m_ctrListBox.SendMessage(WM_SETREDRAW, FALSE, 0); // 进行条目增删操作 …… // 允许自动重绘 m_ctrListBox.SendMessage(WM_SETREDRAW, TRUE, 0); |
通知码标识符 | 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 | 取消选择 |
// 创建并初始化列表框 // 创建列表框 m_ctrListBox.Create(WS_VISIBLE | WS_CHILD | WS_BORDER | LBS_STANDARD,CRect(270, 50, 370, 150), this, IDC_LIST1); // 添加条目 CString Item[9] = {"Item1", "Item2", "Item3", "Item4", "Item5", "Item6", "Item7", "Item8", "Item9"}; for (int i = 0; i < 9; i++) m_ctrListBox.AddString(Item[i]); // 选中第4个条目 m_ctrListBox.SetCurSel(3); …… // 父窗口对通知消息的处理函数的声明(在头文件中) //{{AFX_MSG(CSample02View) afx_msg void OnLbnDblClk(); //}}AFX_MSG DECLARE_MESSAGE_MAP() …… // 父窗口对通知消息的映射入口 (在实现文件中) BEGIN_MESSAGE_MAP(CSample02View, CView) //{{AFX_MSG_MAP(CSample02View) ON_LBN_DBLCLK(IDC_LIST1, OnLbnDblClk) //}}AFX_MSG_MAP // Standard printing commands END_MESSAGE_MAP() …… // 父窗口对LBN_DBLCLK通知消息的处理 void CSample02View::OnLbnDblClk() { // 得到当前选中条目的索引 int Index = m_ctrListBox.GetCurSel(); // 得到此条目的内容 char Text[20]; m_ctrListBox.GetText(Index, Text); // 以信息框报告得到的内容 AfxMessageBox(CString(Text)); } |