MFC-ListCtrl 可编辑重写

               

MFC下,提供了List Control控件,当选择Report模式时,可以方便的做数据报表之类的应用。类似下图:

MFC-ListCtrl 可编辑重写 - ″x.闷、 - 半边天

 

但是有个不大不小的问题是,当List Control选择可编辑模式时,只有每一行的第一列的单元格才能编辑,而且在默认情况下,当选中的时候,也只有被选中的这一行的第一个单元格才会反色显示~~这未免太BT了~

在网上找了一些相关的帖子,解决整行选中的问题可以采用为List Control控件增加LVS_EX_FULLROWSELECT样式的方法来实现:

 m_Result.SetExtendedStyle(m_Result.GetExtendedStyle() | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP | LVS_EX_TWOCLICKACTIVATE);

 

上面的代码中,LVS_EX_GRIDLINES是希望显示网格;LVS_EX_FULLROWSELECT是希望被选中时整行反色显 示;LVS_EX_HEADERDRAGDROP是让其支持点击表头排序;LVS_EX_TWOCLICKACTIVATE是希望有鼠标在未被选中的行上 移动的时候有一些效果~

 

整行选中的效果算是搞定了,接下来做任意单元格的编辑~

MFC的List Control控件本身是没有办法达到这个目的了,那怎么办呢?一个比较简单的方法是:虚拟出来一个编辑框,覆盖到被编辑的单元格上 :-)

所以,接下来的工作就是,基于CListCtrl类创建一个自己的ListCtrl类,并重载它的鼠标点击事件处理函数,以便判断用户需要修改的单元格,并动态显示或隐藏一个文本框,用来表示需要编译的单元格~

首先创建自己的类:

 

 

Code
 1 #if !defined(AFX_MYLISTCTRL_H__7FDA9396_E298_4F10_B778_EB8ADFD82F9A__INCLUDED_)
 2#define AFX_MYLISTCTRL_H__7FDA9396_E298_4F10_B778_EB8ADFD82F9A__INCLUDED_
 3
 4#if _MSC_VER > 1000
 5#pragma once
 6#endif // _MSC_VER > 1000
 7// MyListCtrl.h : header file
 8//
 9#define IDC_MY_LIST_EDITBOX 0xffff
10
11#define MLSM_ITEMCHANGED (WM_USER + 200)
12/**//////
13// CMyListCtrl window
14
15class CMyListCtrl : public CListCtrl
16{
17// Construction
18public:
19 CMyListCtrl();
20
21// Attributes
22public:
23// Operations
24public:
25
26
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值