ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:274.17KB ,
资源ID:228263      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-228263.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(在windows应用程序中添加listcontrol控件的几种方法.docx)为本站会员(cjc2202537)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

在windows应用程序中添加listcontrol控件的几种方法.docx

1、一、在 Windows 应用程序中添加 ListControl 控件的几种方法1、在对话框中添加控件 :创建对话框应用程序,在资源视图中添加对话框。如下图所示,在控件工具条中选择ListControl 控件添加到对话框中,并调整控件尺寸。在 ListControl 控件的属性页中设置控件样式(Styles)和扩展样式等。为了显示详细数据信息,可以设置控件的显示风格为报表视图(Report)。为了在对话框中使用控件,需要在 ClassWizard 中为对话框类添加控件成员变量,如下图所示:执行以上操作后,系统自动添加了一个 ClistControl 对象,并与 ListControl 控件资源关

2、联,相关代码如下:/ ListDialogDlg.h : header file.public:CListCtrl m_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.因为本例只为演示在对话框中添加 L

3、istControl 控件,所以只在对话框初始化消息函数中添加了以下显示控件的示例代码(代码含义请参照 MSDN 文献):BOOL CListDialogDlg:OnInitDialog()CDialog:OnInitDialog();./ TODO: Add extra initialization hereDWORD exstyle = m_cListCtrl.GetExtendedStyle();m_cListCtrl.SetExtendedStyle(exstyle | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES |LVS_EX_CHECKBOXES

4、 | WS_EX_STATICEDGE );CRect rect;m_cListCtrl.GetClientRect(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()

5、-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 control2、在单文档视图中自行添加 ListControl 控件:创建单文档应用程序,如下图所示为视图类添加 CListCtrl 对象成员变量:如下图所示,在资源视图中打开 String Table 资源,在右键菜单中选择 new

6、string,为将要创建的 ListControl 控件添加资源编号:为创建和显示控件,在视图的初始化消息函数中添加如下代码:void CAddListView:OnInitialUpdate()CView:OnInitialUpdate(); / TODO: Add your specialized code here and/or call the base classm_cListCtrl.Create( LVS_REPORT,CRect(0,0,800,600),this,IDC_LISTCTRL);m_cListCtrl.ModifyStyle(0,LVS_REPORT|LVS_SH

7、OWSELALWAYS|LVS_SORTASCENDING);/m_cListCtrl.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE,0,LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_CHECKBOXES);m_cListCtrl.ShowWindow(SW_SHOW);CRect rect;m_cListCtrl.GetClientRect(int nColInterval = rect.Width()/5;m_cListCtrl.InsertColumn(0, _T(“Item Name“), LVCFMT_L

8、EFT, 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“);3、在 ListView 视图中显示 List

9、Control 控件:创建单文档应用程序,如下图所示,在选择窗口视图类型时,选择 CListView 视图:在视图类的初始化消息函数中添加如下显示控件的代码:void CTestlistView:OnInitialUpdate()CListView:OnInitialUpdate();CDC* dc = GetDC();TEXTMETRIC tm;dc-GetTextMetrics(GetListCtrl().ModifyStyle(0,LVS_REPORT|LVS_SHOWSELALWAYS|LVS_SORTASCENDING);GetListCtrl().SendMessage(LVM_S

10、ETEXTENDEDLISTVIEWSTYLE,0,LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_CHECKBOXES|LVS_EX_TRACKSELECT);GetListCtrl().InsertColumn(0,“Name“,LVCFMT_LEFT,30*tm.tmAveCharWidth,0);GetListCtrl().InsertColumn(1,“Comment“,LVCFMT_LEFT,70*tm.tmAveCharWidth,1);/ TODO: You may populate your ListView with items b

11、y directly accessing/ its list control through a call to GetListCtrl().二、为 ListControl 控件添加消息处理函数1、关于 ListControl 控件消息在 ListControl 控件中有以下消息(通知)可以发送:NM_CLICK、NM_DBLCLK、NM_RCLICK、LVN_COLUMNCLICK、HDN_ITEMCLICK等。其中 HDN_ITEMCLICK 是 List Control 的子控件 ListCtrl 发给它的 Parent(CListCtrl )的;LVN_COLUMNCLICK 是 He

12、aderCtrl 发给它的 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)另外,可

13、以使用 NM_CLICK、NM_RCLICK 等消息,以 NM 打头的消息是可以在Dialog 里处理的。2、关于 ListControl 控件的行选择:要在控件中选择行,需要设置控件的扩展属性 LVS_EX_FULLROWSELECT。右键或左键都可以选择行,而且,List Control 控件默认可以一次选择(使用 Ctrl 键)多行,被选择的行默认以蓝色背景显示。3、为 ListControl 控件添加 NM_CLICK 消息:以前面创建的对话框应用程序为例,在 ClassWizard 中选择 List Control 控件,在对话框类中添加 NM_CLICK 消息处理函数。如下图所示:

14、系统自动添加的消息映射与消息处理函数代码如下:/ ListDialogDlg.h : header fileprotected:.afx_msg void OnClickListCtrl(NMHDR* pNMHDR, LRESULT* pResult);./ ListDialogDlg.cpp : implementation fileBEGIN_MESSAGE_MAP(CListDialogDlg, CDialog)/AFX_MSG_MAP(CListDialogDlg).ON_NOTIFY(NM_CLICK, IDC_LIST_CTRL, OnClickListCtrl)/AFX_MSG_

15、MAPEND_MESSAGE_MAP()void CListDialogDlg:OnClickListCtrl(NMHDR* pNMHDR, LRESULT* pResult)/ TODO: Add your control notification handler code hereNM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;CString str;str.Format(_T(“Item index: %d,SubItem:%d“), pNMListView-iItem,pNMListView-iSubItem);MessageBox(st

16、r);*pResult = 0;其中黑体部分代码为自行添加的测试代码,主要为了获取选择的行编号与列编号,有了行编号和就可以使用 m_cListCtrl.GetItemText(选择的行编号 ,某一列的列编号) 获取某行某字段的值(如数据库表表示字段的值),可以定义一个对话框类成员变量存储该值,用于菜单或按钮命令,如修改记录、显示备注型(或图片型)字段内容、删除记录等。4、添加 NM_RCLICK 消息和右键菜单 :与 NM_CLICK 类似,添加 NM_RCLICK 消息处理函数。如下图所示创建菜单资源:在 NM_RCLICK 消息处理函数中添加如下显示右键菜单的代码:void CListDi

17、alogDlg:OnRclickListCtrl(NMHDR* pNMHDR, LRESULT* pResult)/ TODO: Add your control notification handler code here/CPoint point;/:GetCursorPos(/:可以提示全局函数和当前类成员函数DWORD dwPos = GetMessagePos();CPoint point( LOWORD(dwPos), HIWORD(dwPos) ); CMenu menu;VERIFY( menu.LoadMenu( IDR_MENU1 ) ); /IDR_MENU1 是新建菜单

18、 IDCMenu* 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

19、 hereint iItemSel = m_cListCtrl.GetNextItem(-1, LVIS_SELECTED);CString str=“;while(iItemSel != -1)/m_cListCtrl.DeleteItem(iItemSel);/delete selected item in the list controlstr=str+m_cListCtrl.GetItemText(iItemSel,0);/利用该方法可以获取数据记录编号列iItemSel = m_cListCtrl.GetNextItem(iItemSel, LVIS_SELECTED); MessageBox(str);代码中的循环是为了处理同时选择了多行的情况。可以在代码中添加根据选择的行编号iItemSel 获得数据记录编号的代码,在控件中删除行的同时,删除数据库表中的相应记录。

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报