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使用的更多相关文章

  1. [VC]listctrl的基本用法

    1   添加listctrl的头 m_list.setextendedstyle(LVS_EX_FULLROWSELECT||LVS_EX_GRIdLINES); m_list.insertcolum ...

  2. 第八篇:SOUI中控件事件的响应

    SOUI中提供了大部分常用的win32标准控件的实现,如pushbutton, checkbox, radiobox, edit, richedit, listbox, combobox, treec ...

  3. VC/MFC ListCtrl 控件功能使用汇总(转)

    以下未经说明,listctrl默认view 风格为report 相关类及处理函数 MFC:CListCtrl类 SDK:以 “ListView_”开头的一些宏.如 ListView_InsertCol ...

  4. VC++ 中ListCtrl经验总结

    先注明一下,这里,我们用m_listctrl来表示一个CListCtrl的类对象,然后这里我们的ListCtrl都是report形式,至于其他的如什么大图标,小图标的暂时不讲,毕竟report是大众话 ...

  5. vc mfc listctrl使用虚拟列表 虚拟列表用法

    note 虚拟列表可有效加载大量数据 需要处理listctrl的 LVN_GETDISPINFO 消息 使用虚拟列表 不能 使用 insert的方法插入数据,而是告诉listctrl 当前要显示多少行 ...

  6. Vc++ 控件用法总结之List Control

    1.新建对话框MFC,在对话框上放一个ListCtrl ID:IDC_PATH View:Report 2.为ListCtrl添加变量 右击->添加变量m_wndPath 3.找到OnInitD ...

  7. VC/MFC 编程技巧大总结

    1 toolbar默认位图左上角那个点的颜色是透明色,不喜欢的话可以自己改. 2 VC++中 WM_QUERYENDSESSION WM_ENDSESSION 为系统关机消息. 3 Java学习书推荐 ...

  8. VC的CListCtrl控件

    1. CListCtrl 样式及设置 2. 扩展样式设置 3. 数据插入 4. 一直选中Item 5. 选中和取消选中Item 6. 得到CListCtrl中所有行的checkbox的状态 7. 得到 ...

  9. (转)使用Custom Draw实现ListCtrl的重绘

    使用Custom Draw实现ListCtrl的重绘   common control 4.7版本介绍了一个新的特性叫做Custom Draw,这个名字显得模糊不清,让人有点摸不着头脑,而且MSDN里 ...

随机推荐

  1. knockoutjs -- applyBinding & Observables

    applyBindings ko.applyBindings(myViewModel); // Knockout调用applyBindings激活myViewModel(即把myViewModel和V ...

  2. Java中被你忽视的四种引用(转)

    转载自:http://blog.csdn.net/u010425776/article/details/50760053 Java的数据类型分为两类:基本数据类型.引用数据类型. 基本数据类型的值存储 ...

  3. 利用端口映射解决:拥有公网IP有限,内网需要访问因特网

    动态端口映射:   内网中的一台电脑要访问新浪网,会向NAT网关发送数据包,包头中包括对方(就是新浪网)IP.端口和本机IP.端口,NAT网关会把本机IP.端口替换成自己的公网IP.一个未使用的端口, ...

  4. powershell执行脚本

    powershell执行脚本   执行powershell脚本有两种方式: 1.通过命令行参数启动脚本 C:\Windows\System32\WindowsPowerShell\v1.0\power ...

  5. 【APP接口开发】chrome浏览器DHC工具安装使用(亲测有效)

    1.DHC文件获取地址:http://chromecj.com/web-development/2015-08/549/download.html 2.chrome安装DHC插件教程和步骤:http: ...

  6. window.open()的所有参数列表

    http://www.cnblogs.com/meil/archive/2006/07/28/462459.html[1.最基本的弹出窗口代码] 其实代码非常简单: <SCRIPT LANGUA ...

  7. c# 操作Word总结

    在医疗管理系统中为保存患者的体检和治疗记录,方便以后的医生或其他人查看.当把数据保存到数据库中,需要新建很多的字段,而且操作很繁琐,于是想到网页的信息创建到一个word文本中,在显示的时,可以在线打开 ...

  8. Redis全方位讲解--哨兵模式(Sentinel模式)(转载)

    前言 当按照上一篇<redis主从复制>部署好之后,我们会想,一旦redis的master出现了宕机,并且我们并没有及时发现,这时候就可能会出现数据丢失或程序无法运行.此时,redis的哨 ...

  9. ajax处理select下拉表单

    $('#gameid').change(function() { var gameid = $(this).val(); if (this.value != '') { $.ajax({ url: ' ...

  10. JMeter学习笔记(三)

    D. User Defined Variables:用户自定义的变量,在此我们可以定义后面原件需要引用的变量并对其进行赋值.jsessionid一般是服务器返回的,每个用户返回的都不一样,所以在此不应 ...