已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、在对话框中添加控件 list control: 创建对话框应用程序,在资源视图中添加对话框。如下图所示,在控件工具条中选择ListControl控件添加到对话框中,并调整控件尺寸。在 ListControl控件的属性页中设置控件样式(Styles)和扩展样式等。为了显示详细数据信息,可以设置控件的显示风格为报表视图(Report)。 为了在对话框中使用控件,需要在ClassWizard中为对话框类添加控件成员变量,如下图所示: 执行以上操作后,系统自动添加了一个ClistControl对象,并与ListControl控件资源关联,相关代码如下: / ListDialogDlg.h : header file . public: CListCtrlm_cListCtrl; . / ListDialogDlg.cpp : implementation file . void CListDialogDlg:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX); /AFX_DATA_MAP(CListDialogDlg) DDX_Control(pDX, IDC_LIST_CTRL, m_cListCtrl); /AFX_DATA_MAP . 因为本例只为演示在对话框中添加ListControl控件,所以只在对话框初始化消息函数中添加了以下显示控件的示例代码(代码含义请参照MSDN文献): BOOL CListDialogDlg:OnInitDialog() CDialog:OnInitDialog(); . / TODO: Add extra initialization here DWORD exstyle = m_cListCtrl.GetExtendedStyle(); m_cListCtrl.SetExtendedStyle(exstyle | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_CHECKBOXES | WS_EX_STATICEDGE ); CRect rect; m_cListCtrl.GetClientRect(&rect); int nColInterval = rect.Width()/5; m_cListCtrl.InsertColumn(0, _T(Item Name), LVCFMT_LEFT, nColInterval*3); m_cListCtrl.InsertColumn(1, _T(Value), LVCFMT_LEFT, nColInterval); m_cListCtrl.InsertColumn(2, _T(Time), LVCFMT_LEFT, rect.Width()-4*nColInterval); m_cListCtrl.InsertItem(0,name); m_cListCtrl.SetItemText(0,1,value); m_cListCtrl.SetItemText(0,2,time); . return TRUE; / return TRUE unless you set the focus to a control 二、为ListControl控件添加消息处理函数 1、关于ListControl控件消息 在ListControl控件中有以下消息(通知)可以发送:NM_CLICK、NM_DBLCLK、NM_RCLICK、LVN_COLUMNCLICK、HDN_ITEMCLICK等。 其中HDN_ITEMCLICK是List Control的子控件ListCtrl发给它的Parent(CListCtrl)的;LVN_COLUMNCLICK是HeaderCtrl发给它的 Parent的。所以在Dialog里面,试图通过ClassWizard产生的ON_NOTIFY 宏:ON_NOTIFY(HDN_ITEMCLICK, IDC_LIST_CTRL,OnItemClick),来接收HDN_ITEMCLICK消息是无法成功的。要解决这个问题,可以从CListCtrl 派生一个新的类,并在CListCtrl派生类中处理HDN_ITEMCLICK消息。注意消息映射的时候,Header的控件ID是0,类似如下消息映射宏代码: ON_NOTIFY(HDN_ITEMCLICK, 0, OnItemClick) 另外,可以使用NM_CLICK、NM_RCLICK等消息,以NM打头的消息是可以在Dialog里处理的。 2、关于ListControl控件的行选择: 要在控件中选择行,需要设置控件的扩展属性LVS_EX_FULLROWSELECT。右键或左键都可以选择行,而且,List Control控件默认可以一次选择(使用Ctrl键)多行,被选择的行默认以蓝色背景显示。 3、为ListControl控件添加NM_CLICK消息: 以前面创建的对话框应用程序为例,在ClassWizard中选择List Control控件,在对话框类中添加NM_CLICK消息处理函数。如下图所示: 系统自动添加的消息映射与消息处理函数代码如下: / ListDialogDlg.h : header file protected: . afx_msg void OnClickListCtrl(NMHDR* pNMHDR, LRESULT* pResult); . / ListDialogDlg.cpp : implementation file BEGIN_MESSAGE_MAP(CListDialogDlg, CDialog) /AFX_MSG_MAP(CListDialogDlg) . ON_NOTIFY(NM_CLICK, IDC_LIST_CTRL, OnClickListCtrl) /AFX_MSG_MAP END_MESSAGE_MAP() void CListDialogDlg:OnClickListCtrl(NMHDR* pNMHDR, LRESULT* pResult) / TODO: Add your control notification handler code here NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; CString str; str.Format(_T(Item index: %d,SubItem:%d), pNMListView-iItem, pNMListView-iSubItem); MessageBox(str); *pResult = 0; 其中黑体部分代码为自行添加的测试代码,主要为了获取选择的行编号与列编号,有了行编号和就可以使用m_cListCtrl.GetItemText(选择的行编号,某一列的列编号)获取某行某字段的值(如数据库表表示字段的值),可以定义一个对话框类成员变量存储该值,用于菜单或按钮命令,如修改记录、显示备注型(或图片型)字段内容、删除记录等。 4、添加NM_RCLICK消息和右键菜单: 与NM_CLICK类似,添加NM_RCLICK消息处理函数。如下图所示创建菜单资源: 在NM_RCLICK消息处理函数中添加如下显示右键菜单的代码: void CListDialogDlg:OnRclickListCtrl(NMHDR* pNMHDR, LRESULT* pResult) / TODO: Add your control notification handler code here /CPoint point; /:GetCursorPos(&point);/:可以提示全局函数和当前类成员函数 DWORD dwPos = GetMessagePos(); CPoint point( LOWORD(dwPos), HIWORD(dwPos) ); CMenu menu; VERIFY( menu.LoadMenu( IDR_MENU1 ) ); /IDR_MENU1是新建菜单ID CMenu* popup = menu.GetSubMenu(0); /ASSERT( popup != NULL ); popup-TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this );/TPM_RIGHTBUTTON使右键点击菜单也起作用 *pResult = 0; 在ClassWizard中为菜单项ID_DELETE添加删除命令消息处理函数。以下是测试代码: void CListDialogDlg:OnDelete() / TODO: Add your command handler code here int iItemSel = m_cListCtrl.GetNextItem(-1, LVIS_SELECTED); CString str=; while(iItemSel != -1) /m_cListCtrl.DeleteItem(iItemSel);/delete selected item in the list control str=str+m_cListCtr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 张家界市重点中学2026届高二上数学期末教学质量检测试题含解析
- 辽宁中医药大学《中国文化与遗产》2024-2025学年第一学期期末试卷
- 电子制造市场分析及行业标准研究
- 全员安全生产责任制责任书范本
- 地方院校农业硕士专业学位研究生实践能力培养体系构建思考
- 论文学生执行情况怎么写
- 解决当前妇女工作面临问题的对策及建议
- 煤炭企业施工管理现状分析论文
- 浅析污水处理厂鼓风机系统的节能技术及优化改造
- 煤炭企业成本管理探讨-图文
- 2025秋季《中国石油报》社有限公司高校毕业生招聘考试参考试题及答案解析
- 中国戏曲史复习资料(考研)教学提纲
- 压力管道基本知识课件
- 河北省中药饮片黄芪炭炮制规范
- UML实用技术介绍用例类图时序图(开发流程)课件
- 外管廊管道方案
- 合规风险管理清单
- 幼儿园事故案例分析及法律法规课件
- 变频器技术(全套课件)
- 《目标设定与达成》课件
- 基建工程质量控制标准(WHS)(第一分册:输电线路(检查表))
评论
0/150
提交评论