有点乱,呵呵
关于CListCtrl用法的总结:
1、重新设置显示风格:
LONG lStyle;

lStyle=GetWindowLong(m_ListCtrl.m_hWnd,GWL_STYLE);//获取当前窗口类型

lStyle&=~LVS_TYPEMASK; //清除显示方式位

lStyle|=LVS_REPORT; //设置显示方式

SetWindowLong(m_ListCtrl.m_hWnd,GWL_STYLE,lStyle);//设置窗口类型
2、
BOOL TsLsDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//设置显示风格,报表、总是显示被选中的、显示焦点行
DWORD dwStyle;
dwStyle = m_ListCtrl.GetExtendedStyle();//GetStyle();
//dwStyle |= LVS_EX_GRIDLINES |LVS_SINGLESEL |LVS_EX_FULLROWSELECT|LVS_SHOWSELALWAYS  ;
dwStyle |=LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES|LVS_SHOWSELALWAYS  ;
m_ListCtrl.SetExtendedStyle(dwStyle);
m_ListCtrl.SetBkColor(RGB(0,0,0));
m_ListCtrl.SetTextColor(RGB(250,250,255));
m_ListCtrl.SetTextBkColor(RGB(0,0,0));
插入列:
3、
    m_ListCtrl.InsertColumn(0,_T("编号"),LVCFMT_CENTER,50);
m_ListCtrl.InsertColumn(1,_T("名称"),LVCFMT_CENTER,150);
m_ListCtrl.InsertColumn(2,_T("总额"),LVCFMT_CENTER,100);

// m_ListCtrl.InsertColumn(5,"Col 2",LVCFMT_LEFT,300,1); 最后一个是列索引号
}
4、
//获得鼠标坐标、并转换成客户区坐标
    CPoint posMouse;
    GetCursorPos(&posMouse);
    ScreenToClient(&posMouse);
5、//计算整个ClistCtrl矩形
CRect rect,rectRectangle;
int nItemNum = m_ListCtrl.GetItemCount();    //获得行数
int nHeight;int nWidth;
if(nItemNum >0){
m_ListCtrl.GetItemRect(0,&rect,LVIR_BOUNDS);  //获得单行矩形 nHeight=rect.Height()*nItemNum;//整个ClistCtrl矩形的高度
nWidth=rect.Width();//整个ClistCtrl矩形的宽度,以0,0为顶点
6、
 //获得行,列的个数
CHeaderCtrl* pHeader = m_ListCtrl.GetHeaderCtrl();
   int nColCount = pHeader->GetItemCount();//获得列的个数
7、
得到鼠标单击时CListCtrl控件中被选中的表项的列序号 
     ::GetCursorPos(&mpt);
       int a1,a2;a1=mpt.x;a2=mpt.y;
     //转换到客户区坐标
     //CPoint cpt=mpt;
     int intx;int nwth=0;  m_ListCtrl.ScreenToClient(&mpt); //屏幕坐标转换成客户区坐标
  要先判断该点是否在列之内
  nWidth=rect.Width();//整个ClistCtrl矩形的宽度,以0,0为顶点
  if(nWidth<mpt.x)
  {
  for(intx=0;intx<nColCount;intx++)   //我的测试中的列是nColCount列
  {
  nwth=m_ListCtrl.GetColumnWidth(intx)+nwth;  //累加列各的宽度,和客户区x坐标比较
  if(nwth>mpt.x)break;
  }
  }
//结果是-----在intx列
稍后会有添加。还要多谢各位CSDN高手们的指点!

解决方案 »

  1.   

    晕死,要faq啊,support,还有checkbox相关的东西有空了也整一下,写书用~-~
      

  2.   

    请问大虾怎样将listctrl里的数据提交到数据库中?
      

  3.   

    大家可以写一些辅助的函数啊
    我有一个函数可以对CListCtrl任何一列排序,可以按照字符串或者数值排序
    基本方法是先增加一个列把itemdata保存进去,然后把itemindex设置到itemdata,然后调用sort函数(sort会使用一个比较函数,比较函数的参数是itemdata),最后把保存的itemdata恢复,并删除临时增加的那一个列
    这个方法假定sort期间itemindex是不变的
      

  4.   

    checkbox相关,哪位请添加一下,谢谢拉