在ListControl中使用检查框
来源:互联网 发布:江湖聊天室源码下载 编辑:程序博客网 时间:2024/05/17 04:26
List Control/View给了界面设计者更多的选择,开发者可以方便的显示列表。下面我们介绍一中带有检查框的ListCtrl,其中你可以得到用户的点击情况以改变选择状态。我们将利用一个CListCtrl的派生类CCheckListBox来实现。
你可以使用OWNER_DRAW风格来自己绘制检查框(我以前翻译过一篇文章是利用改变状态来显示不同IMG,有兴趣可以查查 译者),还有一种简单的方法是利用IE3中带有的新风格。
本文介绍一些新的风格,这些可以在VC5或更高版本上使用。
首先我们需要更改CONTROL的风格。
ListView_SetExtendedListViewStyle (m_lvTestList.m_hWnd, LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT);
下面介绍一些新的风格:
LVS_EX_CHECKBOXES使用检查框LVS_EX_FULLROWSELECT选择整行LVS_EX_GRIDLINES在REPORT中画出分隔线LVS_EX_HEADERDRAGDROPLVS_REPORT时可以利用drag-and-drop重新排序LVS_EX_SUBITEMIMAGES允许在子项中显示imageLVS_EX_TRACKSELECT当鼠标指到某一项时便自动选择该项映射下面的消息:ON_NOTIFY(LVN_ITEMCHANGED, IDC_MYLIST, OnItemchangedLinksList)
得到检查状态
void DemoDlg::OnItemchangedLinksList(NMHDR* pNMHDR, LRESULT* pResult) {NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;*pResult = 0;if (pNMListView->uOldState == 0 && pNMListView->uNewState == 0)return;// No changeBOOL bPrevState = (BOOL)(((pNMListView->uOldState & LVIS_STATEIMAGEMASK)>>12)-1); // Old check box stateif (bPrevState < 0)// On startup there's no previous state bPrevState = 0; // so assign as false (unchecked)// New check box stateBOOL bChecked=(BOOL)(((pNMListView->uNewState & LVIS_STATEIMAGEMASK)>>12)-1); if (bChecked < 0) // On non-checkbox notifications assume falsebChecked = 0; if (bPrevState == bChecked) // No change in check boxreturn;// Now bChecked holds the new check box state// ....}
设置检查框状态
void SetLVCheck (WPARAM ItemIndex, BOOL bCheck){ListView_SetItemState (m_lvTestList.m_hWnd, ItemIndex, UINT((int(bCheck) + 1) << 12), LVIS_STATEIMAGEMASK);}
得到检查框状态
使用在commctl.h中定义的宏 ListView_GetCheckState(hwndLV,i);hwndLV为CONTROL的句柄,i为位置索引。
- 在ListControl中使用检查框
- MFC中ListControl的使用
- mfc在listControl 中显示图标
- mfc在listControl 中显示图标
- MFC中ListControl控件的使用
- MFC中ListControl控件的使用
- vc中如何使用listcontrol一
- vc中如何使用listcontrol 二
- MFC中ListControl控件的使用
- MFC中ListControl控件的使用
- MFC中ListControl控件的使用
- MFC中ListControl控件的使用
- MFC中ListControl控件的使用
- MFC中ListControl控件的使用 .
- MFC中ListControl控件的使用
- MFC中ListControl控件的使用
- vs2010 MFC中listcontrol控件的使用
- MFC中ListControl控件的使用
- 如何清除电脑桌面图标蓝底
- Dialog中使用Toolbar
- Flex学习总结之三——添加视频
- 快速提升MySQL可扩展性的五大绝招
- 三维视图绘制与消隐技术
- 在ListControl中使用检查框
- 最近在SDK下使用WebBrowser遇到了个问题
- 在TreeList中使用Edit功能
- 最近在SDK下使用WebBrowser遇到了个问题
- Facebook引导着企业软件未来的发展方向
- 改变Push Button背景色
- 得到IOleInPlaceActiveObject接口,IOleInPlaceActiveObject::TranslateAccelerator(&msg);
- 智能进行WIFI,CMWAP和CMNET的自动判断访问
- Java 内部类