说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

我使用CListCtrl的REPORT风格,怎样对报表中的数据进行编辑?

编辑:说三道四文库 发布时间:2017-11-22 12:00
HTML文档下载 WORD文档下载 PDF文档下载
我使用CListCtrl的REPORT风格,但我要对数据进行编辑,如:输入数据,修改数据,
怎么做了?
给你的ListCtrl添加LVS_EDITLABELS的属性就可以了!!
给你一些代码,先看看,然后就可以按自己的意思在列表控件的指定位置中嵌入你所需的控件:

//
void CCListCtrl::OnClick(NMHDR* pNMHDR, LRESULT* pResult) 
{
// TODO: Add your control notification handler code here
*pResult = 0;
//
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
  if(pNMListView->iSubItem == -1)
return;
if( GetFocus() != this) 
  SetFocus();

ItemControl(pNMListView->iItem,pNMListView->iSubItem);
}

//
void CCListCtrl::OnEndlabeledit(NMHDR* pNMHDR, LRESULT* pResult) 
{
LV_DISPINFO *plvDispInfo = (LV_DISPINFO*)pNMHDR;
  LV_ITEM *plvItem = &plvDispInfo->item;

if( plvItem->iItem != -1 &&  // valid item
plvItem->pszText ) // valid text
{
SetItemText( plvItem->iItem, plvItem->iSubItem, plvItem->pszText);

// this will invoke an ItemChanged handler in parent
if ( plvItem->iSubItem != 0 )
{
char szText[0x10+1];
GetItemText( plvItem->iItem, 0, szText, 0x10);
SetItemText( plvItem->iItem, 0, szText);
}
}
*pResult = 0;
}


void CCListCtrl::ItemControl(int nItem, int nSubItem)
{
int nControlType = GetColumnControlType(nSubItem);
  switch(nControlType)
  {
  case LC_ECT_NONE:
  break;
  case LC_ECT_EDIT:
  EditItem (nItem, nSubItem);
  break;
  case LC_ECT_COMB:
  ComboItem(nItem, nSubItem);
  break;
  default:
break;
  }
}

CEdit * CCListCtrl::EditItem(int nItem, int nSubItem)
{
CRect rect;
int offset = 0;
if(!EnsureVisible(nItem, TRUE))

return NULL;
}

GetSubItemRect(nItem, nSubItem, LVIR_BOUNDS, rect);
// Now scroll if we need to expose the column
CRect rcClient;
GetClientRect(rcClient);
if( offset + rect.left < 0 || offset + rect.left > rcClient.right )
{
CSize size(offset + rect.left,0);
Scroll(size);
rect.left -= size.cx;
}
rect.left += offset;
rect.right = rect.left + GetColumnWidth(nSubItem);
if(rect.right > rcClient.right) 
   rect.right = rcClient.right;

// Get Column alignment
LV_COLUMN lvcol;
lvcol.mask = LVCF_FMT;
GetColumn(nSubItem, &lvcol);

DWORD dwStyle;
if((lvcol.fmt & LVCFMT_JUSTIFYMASK) == LVCFMT_LEFT)
dwStyle = ES_LEFT;
else if((lvcol.fmt & LVCFMT_JUSTIFYMASK) == LVCFMT_RIGHT)
dwStyle = ES_RIGHT;
else 
dwStyle = ES_CENTER;


dwStyle |=WS_BORDER|WS_CHILD | WS_VISIBLE | ES_AUTOHSCROLL;
m_pEdit = new CEditItem(nItem, nSubItem, GetItemText(nItem, nSubItem));

#define IDC_EDITCTRL 0x1234
m_pEdit->Create(dwStyle, rect, this, IDC_EDITCTRL);
// pEdit->ModifyStyleEx(0,WS_EX_CLIENTEDGE);
//funny thing happend here, uncomment this, 
//and then edit an item, 
//enter a long text so that the ES_AUTOHSCROLL comes to rescue
//yes that's look funny, ???.
return m_pEdit;
}

CComboBox * CCListCtrl::ComboItem(int nItem, int nSubItem)
{
#define IDC_COMBOBOXINLISTVIEW 0x1235

CString strFind = GetItemText(nItem, nSubItem);

//basic code start
CRect rect;
int offset = 0;
// Make sure that the item is visible
if( !EnsureVisible(nItem, TRUE)) 
return NULL;

GetSubItemRect(nItem, nSubItem, LVIR_BOUNDS, rect);
// Now scroll if we need to expose the column
CRect rcClient;
GetClientRect(rcClient);
if( offset + rect.left < 0 || offset + rect.left > rcClient.right )
{
CSize size;
size.cx = offset + rect.left;
size.cy = 0;
Scroll(size);
rect.left -= size.cx;
}

rect.left += offset;
rect.right = rect.left + GetColumnWidth(nSubItem);
if(rect.right > rcClient.right) 
   rect.right = rcClient.right;
//basic code end

rect.bottom += 10 * rect.Height();//dropdown area

DWORD dwStyle =  WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL|CBS_DROPDOWNLIST | CBS_DISABLENOSCROLL;
m_pList = new CComboItem(nItem, nSubItem, &m_strList);
m_pList->Create(dwStyle, rect, this, IDC_COMBOBOXINLISTVIEW);
m_pList->ModifyStyleEx(0,WS_EX_CLIENTEDGE);//can we tell at all

m_pList->ShowDropDown();
m_pList->SelectString(-1, strFind.GetBuffer(1));
// The returned pointer should not be saved
return m_pList;
}
谈谈Google Polymer以及Web UI框架的未来 保密入髓:前苹果员工揭示公司是如此善于保守秘密 调查显示:软件开发公司出现“人才荒” 三星拟6月20日在伦敦召开新品发布会 推手机新品Galaxy和ATIV 历届中国云计算大会PPT集萃(五):数据安全隐患解析与应对 搞趣网创始人:做不了阳春白雪 就做下里巴人 CMDN Club 28期:创业公司一定不要浪费资源 浅谈Lean UX:我们到底该怎么设计? 张艺谋今日正式加盟乐视 作品专区落户超级电视 WebKit华丽转身:欧朋浏览器8.0新鲜出炉 分析师称应出售Bing?除非微软倒闭,否则不可能卖Bing Go Mobile沙龙第二期:软硬整合与创客精神 专访西电黄宝林:《基于GPU的并行NMF网络聚类算法》获奖背后故事 友友姚宏宇:用C,C++和Java实现自主研发之后,放开心态迎“高朋” 新技术对传统学科的颠覆:系谱网使用大数据寻亲问祖 IDC:2015年全球平板电脑出货量将超PC Web开发者的福利 30段超实用CSS代码 库克出席D11科技大会:苹果公司没有陷入麻烦 千兆的带宽是不够的,最新研究将我们带入400G时代! 告诉你一个事实:移动互联网依然不大 一切才刚刚开始 戴尔的10亿美元云扩建计划到底是什么? iOS vs. Android,应用设计该如何对症下药? 扁平化设计五大原则 16种折磨开发者的方式 2013年度中国优秀开源项目征集活动正式启动 技术趋势:产品设计向“钱”看 服务器领域:旧时代已过 新时代正在降临 速度与金钱的碰撞:F1赛车将搭上大数据的东风 中国&#183;北京第一届开源大会Hadoop专场侧记:Hadoop已经成为大数据分析平台的标配 Marissa Mayer为何带雅虎重回门户时代? 开发者最爱的三款开发工具 如何才能在Edit控件中显示大量的数据?? smoke,你好,很高兴能认识你! 大虾们给点意见:这么编写W77E58的软件看门狗是否妥当? 请问怎么用MAPI控件发送HTML格式的邮件啊 小问题,好郁闷!! 父窗口弹出一个子窗口,如果在子窗口点击鼠标,消息是怎么在父子窗口之间折腾的呢? 如何在接受到两个消息后才执行一段代码呢? 怎么定义一个三维数组 那位大哥能告诉我75,000日圆值多少人民币啊???? 安装了DirectX 9b之后Media Player 9.0总是出问题。 局域网怎么装打印机? 为什么控制面板中的“添加删除程序”不能用了?在线等待,请各位帮忙。 请问高手如何设置绘图背景为黑色,并且哪种绘制模式不影响画图的画笔颜色 《程序员》的文章错字太多!!!!!!!!!!!! 关于指纹采集识别 高分求《j2EE服务器端高级编程》这本书的源码 MAKEWORD宏从哪里找到中文解释。 为何在重载CreateParams后指定Form的Height值小于某个值后就不会再小? 开发一个基于WEB的ASP仓库管理,用什么技术比较好。 怎样让弹出对话框居中显示 我用Server.Transfer来做两个页面之间传值,我怎么让页面成为新窗口打开呀,100分 高分请教XML高手 在InterDev中,我什么说我不能连接web server 请问 怎么响应一个按钮打开一个新页面,同时关闭旧页面 各位PM进来谈谈自己的经历和经验教训。 picturebox控件问题 jdbc的奇怪限制,不能reread row data UNIX支持中文否,请推荐UNIX好书 高分求助:怎样发布sapi.dll 我发现我变笨了!!或许我本来就很笨。但是问句实在的:IT会使人变笨吗? hal.dll文件丢失!winxp修复的问题!急! pb如何连接execl 用Windows2000Internet连接共享出现的问题,请各位大侠解决一下! 关于数据库字段大小问题 ★★如何给一个Dialog加背景图片?★★ MSDN Library 2003中文版3CD下载 我用access+adoquery+DBgrid,我在拖动改变dbgrid的列宽时,为何会报错? 关于软件汉化的问题。 请教:可以从硬盘上直接安装linux吗? C语言二级考什么题型 MYSQL是不是不能建视图啊?新手清多多指教 还是ASP与SQL联不上的问题,在线等待 请问:C:\Documents and Settings\user\Local Settings\Temporary Internet Files里的内容怎么删除 紧急求助!sqlserver服务启动不了 怎么知道当前这台UNIX的IP地址 getWidth怎么用呀??????????????? 我的是win2000 server ,怎么会老出现什么explorer.exe错误???? 申请免费空间 请大家谈makefile的写法 请大家帮忙 求助,Windows2003启动时提示 \windows\system32\config\system文件丢失或已损坏, 无法启动。 为什么哈尔滨和拉萨要写成Harbin和Lhasa 还说古井里面有迷,我的父亲,跟一个男的 跳到下面去了,然后我就跟一位认识的大妈说,我很担心他们会互相谋杀,我想跟着下去,井上面有个门子 他们反锁了,我进不去,后来就给吓醒了, 代表姓氏是? 古井风云这个成语的意思?一个心仪的女孩子说的. 单项,We excepted a flood of appilications for the job,but we ______ them in ones and twos.A.only receive B.will only receive C.are only receiving D.had only received 为什么选C而不是D 一道判断线性表出的计算题已知α1=(1,4,0,2)T,α2=(2,7,1,3)T,α3=(0,1,-1,a)T,β=(3,10,b,4),问(1)a,b为何值时,β不能用α1,α2,α3线性表出?(2)a,b为何值时,β可以用α1,α2,α3线性表出?写出表达式.[1 2 0 | 3][4 7 1 | 1 有一个正方形花池,周围用尺寸为25厘米的方块砖铺了一条宽1.5米的小路,共有方块砖1776块,则花池的面积是多少平方米? A地有化肥200吨,B地有化肥3000吨,现要把化肥运往CD两地,如果从A地运往CD两地,运费分别为20元/吨和25元/吨;从B地运往CD两地运费分别为15元/吨和22元/吨,已知C地需要化肥220吨,D地需要化肥280吨, that was the woods on t’other side这句话on t’other 怎么是这种写法?全句是The first thing to see,looking away over the water,was a kind of dull line -that was the woods on t'other side;on t’other 怎么是这种写法?什么情况下 大学线代,α1.α2.α3线性无关,α1.α2.α3.α4的秩为3,α1.α2.α3.α5线性无关,求证α1.α2.α3.α5-α4线性无关 深圳 哈尔滨 拉萨 乌鲁木齐 哪一个地方下雨最多了?快 克里急赴中东安抚沙特 美沙关系因叙问土耳其4名女议员戴头巾出席会议 打破梅德韦杰夫谈监听丑闻:美国不能这样厚俄“彼得大帝”号核动力巡洋舰进入地中英国检方称《世界新闻报》曾窃听哈里王泰国机长驾照过期在南京被停飞 乘客机黄坤明辞去杭州市人大常委会主任职务 浪漫升级 新加坡7大蜜月旅行地39岁杨采妮今新加坡出嫁 明星闺蜜到朴槿惠首谈“网军干涉选举”梅德韦杰夫:美国窃听外国领导人的行为我省将实施“1112”工程促进地力提房屋成交价低于市场价,参照市场价核定健全特困人员救助供养制度建瓯多点发力帮扶农村计生家庭分类广告打造边防执法新样板研究部署全省安全生产工作图片新闻为“长汀模式”点赞平和蜜柚,如何卖个好价钱?我省2015年新增5家国家认定企业技
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘