VC++ ListCtrl Report使用
1、在VC++ 6.0中新建基于对话框的MFC应用程序ListCtrl;
2、在主对话框上添加一个List Control至合适的位置及大小;
3、在对话框OnInitDialog中初始化ListCtrl,代码如下:
// 设置ListCtrl的风格及扩展风格
LONG lStyle;
lStyle = GetWindowLong(m_ctlListCtrl.m_hWnd, GWL_STYLE);
lStyle &= ~LVS_TYPEMASK;
lStyle |= LVS_REPORT;
SetWindowLong(m_ctlListCtrl.m_hWnd, GWL_STYLE, lStyle); DWORD dwStyle = m_ctlListCtrl.GetExtendedStyle();
dwStyle |= LVS_EX_FULLROWSELECT; //选中某行使整行高亮(LVS_REPORT)
dwStyle |= LVS_EX_GRIDLINES; //网格线(LVS_REPORT)
dwStyle |= LVS_EX_CHECKBOXES; //CheckBox
m_ctlListCtrl.SetExtendedStyle(dwStyle); // 向ListCtrl插入数据
m_ctlListCtrl.InsertColumn( , _T("No."), LVCFMT_LEFT, );
m_ctlListCtrl.InsertColumn( , _T("Name"), LVCFMT_LEFT, );
m_ctlListCtrl.InsertColumn( , _T("Address"), LVCFMT_LEFT, );
m_ctlListCtrl.InsertColumn( , _T("Score"), LVCFMT_LEFT, );
int nRowIndex = ;
m_ctlListCtrl.InsertItem(nRowIndex, _T(""));
m_ctlListCtrl.SetItemText(nRowIndex, , _T("Michael Jordan"));
m_ctlListCtrl.SetItemText(nRowIndex, , _T("Brooklyn,New York "));
m_ctlListCtrl.SetItemText(nRowIndex, , _T(""));
nRowIndex++;
m_ctlListCtrl.InsertItem(nRowIndex, _T(""));
m_ctlListCtrl.SetItemText(nRowIndex, , _T("Lebron James"));
m_ctlListCtrl.SetItemText(nRowIndex, , _T("Akron,Ohio"));
m_ctlListCtrl.SetItemText(nRowIndex, , _T(""));
nRowIndex++;
m_ctlListCtrl.InsertItem(nRowIndex, _T(""));
m_ctlListCtrl.SetItemText(nRowIndex, , _T("Kobe Bryant"));
m_ctlListCtrl.SetItemText(nRowIndex, , _T("Philadelphia,Pennsylvania"));
m_ctlListCtrl.SetItemText(nRowIndex, , _T(""));
nRowIndex++;
m_ctlListCtrl.InsertItem(nRowIndex, _T(""));
m_ctlListCtrl.SetItemText(nRowIndex, , _T("James Harden"));
m_ctlListCtrl.SetItemText(nRowIndex, , _T("Los Angeles,California"));
m_ctlListCtrl.SetItemText(nRowIndex, , _T(""));
nRowIndex++;
m_ctlListCtrl.InsertItem(nRowIndex, _T(""));
m_ctlListCtrl.SetItemText(nRowIndex, , _T("Russell Westbrook"));
m_ctlListCtrl.SetItemText(nRowIndex, , _T("Long Beach,CA"));
m_ctlListCtrl.SetItemText(nRowIndex, , _T(""));
4、添加消息响应
// Generated message map functions
//{{AFX_MSG(CListCtrlDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnClickListDemo(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnCustomDrawListDemo(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnItemChangedListDemo(NMHDR* pNMHDR, LRESULT* pResult);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
BEGIN_MESSAGE_MAP(CListCtrlDlg, CDialog)
//{{AFX_MSG_MAP(CListCtrlDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_NOTIFY(NM_CLICK, IDC_LIST_DEMO, OnClickListDemo)
ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST_DEMO, OnCustomDrawListDemo)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_DEMO, OnItemChangedListDemo)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CListCtrlDlg::OnClickListDemo(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
if(pNMListView->iItem != -)
{
int i = pNMListView->iItem;
int nCheckState = ;
if( m_ctlListCtrl.GetItemState(i, m_ctlListCtrl.GetCheck(i)))
{
nCheckState = ;
}
CString strtemp;
strtemp.Format(_T("Row = %d, Column = %d\nCheckState = %d"), pNMListView->iItem, pNMListView->iSubItem, nCheckState);
AfxMessageBox(strtemp);
}
*pResult = ;
} void CListCtrlDlg::OnCustomDrawListDemo( NMHDR* pNMHDR, LRESULT* pResult )
{
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR);
*pResult = ; if(CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage)
{
*pResult = CDRF_NOTIFYITEMDRAW;
}
else if(CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage)
{
//奇数行
if(pLVCD->nmcd.dwItemSpec % )
pLVCD->clrTextBk = RGB(, , );
//偶数行
else
pLVCD->clrTextBk = RGB(, , );
//继续
*pResult = CDRF_DODEFAULT;
}
} void CListCtrlDlg::OnItemChangedListDemo(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
CString sTemp; if((pNMListView->uOldState & LVIS_FOCUSED) == LVIS_FOCUSED &&
(pNMListView->uNewState & LVIS_FOCUSED) == )
{
sTemp.Format(_T("%d losted focus"), pNMListView->iItem);
}
else if((pNMListView->uOldState & LVIS_FOCUSED) == &&
(pNMListView->uNewState & LVIS_FOCUSED) == LVIS_FOCUSED)
{
sTemp.Format(_T("%d got focus"), pNMListView->iItem);
} if((pNMListView->uOldState & LVIS_SELECTED) == LVIS_SELECTED &&
(pNMListView->uNewState & LVIS_SELECTED) == )
{
sTemp.Format(_T("%d losted selected"), pNMListView->iItem);
}
else if((pNMListView->uOldState & LVIS_SELECTED) == &&
(pNMListView->uNewState & LVIS_SELECTED) == LVIS_SELECTED)
{
sTemp.Format(_T("%d got selected"), pNMListView->iItem);
}
if (!sTemp.IsEmpty())
{
AfxMessageBox(sTemp);
} *pResult = ;
}
BOOL CListCtrlDlg::PreTranslateMessage(MSG* pMsg)
{
// Ctrl + A 全选
if( (pMsg->hwnd == GetDlgItem(IDC_LIST_DEMO)->GetSafeHwnd()))
{
if(pMsg->message == WM_KEYDOWN)
{
switch (pMsg->wParam)
{
case 'A':
if (::GetKeyState(VK_CONTROL) < 0)
{
for (int i=0;i < m_ctlListCtrl.GetItemCount();i++)
{
m_ctlListCtrl.SetItemState(i, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
}
}
return TRUE;
}
}
}
return CDialog::PreTranslateMessage(pMsg);
}
5、编译运行
参考:http://www.cppblog.com/finehai/archive/2009/09/17/96574.html
VC++ ListCtrl Report使用的更多相关文章
- [VC]listctrl的基本用法
1 添加listctrl的头 m_list.setextendedstyle(LVS_EX_FULLROWSELECT||LVS_EX_GRIdLINES); m_list.insertcolum ...
- 第八篇:SOUI中控件事件的响应
SOUI中提供了大部分常用的win32标准控件的实现,如pushbutton, checkbox, radiobox, edit, richedit, listbox, combobox, treec ...
- VC/MFC ListCtrl 控件功能使用汇总(转)
以下未经说明,listctrl默认view 风格为report 相关类及处理函数 MFC:CListCtrl类 SDK:以 “ListView_”开头的一些宏.如 ListView_InsertCol ...
- VC++ 中ListCtrl经验总结
先注明一下,这里,我们用m_listctrl来表示一个CListCtrl的类对象,然后这里我们的ListCtrl都是report形式,至于其他的如什么大图标,小图标的暂时不讲,毕竟report是大众话 ...
- vc mfc listctrl使用虚拟列表 虚拟列表用法
note 虚拟列表可有效加载大量数据 需要处理listctrl的 LVN_GETDISPINFO 消息 使用虚拟列表 不能 使用 insert的方法插入数据,而是告诉listctrl 当前要显示多少行 ...
- Vc++ 控件用法总结之List Control
1.新建对话框MFC,在对话框上放一个ListCtrl ID:IDC_PATH View:Report 2.为ListCtrl添加变量 右击->添加变量m_wndPath 3.找到OnInitD ...
- VC/MFC 编程技巧大总结
1 toolbar默认位图左上角那个点的颜色是透明色,不喜欢的话可以自己改. 2 VC++中 WM_QUERYENDSESSION WM_ENDSESSION 为系统关机消息. 3 Java学习书推荐 ...
- VC的CListCtrl控件
1. CListCtrl 样式及设置 2. 扩展样式设置 3. 数据插入 4. 一直选中Item 5. 选中和取消选中Item 6. 得到CListCtrl中所有行的checkbox的状态 7. 得到 ...
- (转)使用Custom Draw实现ListCtrl的重绘
使用Custom Draw实现ListCtrl的重绘 common control 4.7版本介绍了一个新的特性叫做Custom Draw,这个名字显得模糊不清,让人有点摸不着头脑,而且MSDN里 ...
随机推荐
- 02-maven常用命令,以及使用命令创建目录
maven常用命令 mvn -v 查看maven版本 compile 编译 test 测试 package 打包 clean 删除target install 安装jar包到本地仓库中. mave ...
- 18-spring学习-AOP深入操作
范例:定义一个参数拦截 package com.Spring.aop; import org.springframework.stereotype.Component; @Component publ ...
- Appium环境的安装与配置,Python测试脚本测试
Appium自动化测试系列1 - Appium环境的安装与配置 发表于4个月前(2015-01-27 14:34) 阅读(803) | 评论(0) 0人收藏此文章, 我要收藏 赞0 寻找 会’偷懒 ...
- 【微信小程序】再次授权地理位置getLocation+openSetting使用
写在前面:在tarbar主页面,再次授权JS代码请放在onshow里面:在详情页(非一级主页面),再次授权JS代码请放在onReady里面,具体原因我前面博客讲了的. 我们知道: 1.微信的getLo ...
- easyui框架Date日期类型以json形式显示到前台datagrid时,显示为[object Object]
如下图,easyui当后台把时间数据返回转换成json然后加载在easyui的datagrid里面,显示为[object Object] 需要对时间格式添加格式的显示方法 /** * 时间格 ...
- 实战DeviceIoControl系列之四:获取硬盘的详细信息
Q 用IOCTL_DISK_GET_DRIVE_GEOMETRY IOCTL_STORAGE_GET_MEDIA_TYPES_EX只能得到很少的磁盘参数,我想获得包括硬盘序列号在内的更加详细的信息,有 ...
- tesseract中文语言文件包 下载
tesseract中文语言文件包 下载 tesseract中文语言文件包 下载 tesseract中文语言文件包 下载 下载地址是:https://github.com/tesseract-ocr/l ...
- Ubuntu下利用vim搭建python开发环境
1. 安装vim $ sudo apt-get install vim 2. 安装ctags,ctags用于支持taglist,必需! $ sudo apt-get install ctags 3. ...
- hibernate中对象集合的保存
一.在java web设计中经常使用对象进行操作,在hibernate中对象集合的保存(一对多) 1需要进行如下步骤: 1) 设计数据表关系 2)引入jar包,需要注意引入数据库connector 3 ...
- quick cocos2d-x 2.2.4 window环境调试
BabeLua简介 BabeLua是一款基于VS2012/2013(简称VS)的免费开源的Lua集成开发环境,在Lua编辑和调试方面,具有如下功能和特性: ●Lua语法高亮 ●语法检查 ●自动补全 ● ...