#include "StdAfx.h"
#include "ListControlOper.h"
CListControlOper::CListControlOper(void)
{
//检查有没有内存需要释放
int nSize;
if(nSize=m_ptrArray.GetSize(),nSize>0)
{
do{
delete m_ptrArray[nSize-1];
m_ptrArray.RemoveAt(nSize-1);
}while(--nSize>0);
}
}
CListControlOper::~CListControlOper(void)
{
//检查有没有内存需要释放
int nSize;
if(nSize=m_ptrArray.GetSize(),nSize>0)
{
do{
delete m_ptrArray[nSize-1];
m_ptrArray.RemoveAt(nSize-1);
}while(--nSize>0);
}
}
//set list format
int CListControlOper::Init_List(CListView* hCLV, DWORD listID, HeadName ColumnsName, bool MultiSeleced, bool RowLines)
{
try
{
ListControl* lstCtrl = GetListCtrlPointer(hCLV,listID);
DWORD dwExStyle = lstCtrl->GetExtendedStyle();
if ( RowLines ) {
dwExStyle |= LVS_EX_GRIDLINES;
}
if ( MultiSeleced ) {
dwExStyle |= LVS_EX_MULTIWORKAREAS;
}
lstCtrl->ModifyStyle(0, LVS_REPORT);
lstCtrl->SetExtendedStyle(dwExStyle|LVS_EX_FULLROWSELECT|LVS_EX_INFOTIP );
HeadName::iterator ite;
int iColumnOrder = 0;
for( ite = ColumnsName.begin(); ite != ColumnsName.end(); ite++ ) {
LVCOLUMNW columnInfo;
columnInfo.mask = LVS_REPORT|LVCF_TEXT|LVCF_WIDTH;
columnInfo.pszText = (*ite).GetBuffer();
columnInfo.fmt = LVCFMT_LEFT ;
columnInfo.cchTextMax = (*ite).GetLength();
columnInfo.cx = (*ite).GetLength() * 18;
lstCtrl->InsertColumn(iColumnOrder, &columnInfo);
iColumnOrder++;
}
} catch (...) {
return OPER_FAILED;
}
return OPER_SUCCESSED;
}
// append data
int CListControlOper::AddData(CListView* hCLV, DWORD listID, listValues Datalist)
{
int iItemsCount = 0;
int iCurItemOrder = 0;
int iCurColOrder = 0;
int iColumnCount = 0;
int iStartOrder = 0;
ListControl* lstCtrl = GetListCtrlPointer(hCLV,listID);
iItemsCount = Datalist.size();
CHeaderCtrl* pHeaderCtrl = lstCtrl->GetHeaderCtrl();
iColumnCount = pHeaderCtrl->GetItemCount();
iStartOrder = lstCtrl->GetItemCount();
// Reset Start RowOrder
while( ( iCurItemOrder < iItemsCount )
&& ( iColumnCount > 0 )) {
lineValue item = Datalist[iCurItemOrder];
iCurColOrder = 0;
while( iCurColOrder < iColumnCount ) {
if( iCurColOrder == 0 ) {
lstCtrl->InsertItem(iStartOrder + iCurItemOrder, item[iCurColOrder]);
} else {
lstCtrl->SetItemText(iStartOrder + iCurItemOrder, iCurColOrder, item[iCurColOrder]);
}
iCurColOrder++;
}
iCurItemOrder++;
}
return iCurItemOrder;
}
void CListControlOper::UpdateSelData(CListView* hCLV, DWORD listID, listValues Datalist)
{
int iCurColOrder = 0;
int iColumnCount = 0;
int InputColumnCount = 0;
listValues::iterator ite;
int iUpdateRowNum = 0;
ListControl* lstCtrl = GetListCtrlPointer(hCLV,listID);
CHeaderCtrl* pHeaderCtrl = lstCtrl->GetHeaderCtrl();
iColumnCount = pHeaderCtrl->GetItemCount();
for( ite = Datalist.begin(); ite != Datalist.end(); ite++) {
iCurColOrder = 0;
lineValue item = (*ite).second;
iUpdateRowNum = (*ite).first;
InputColumnCount = item.size();
while( iCurColOrder < iColumnCount &&
iCurColOrder < InputColumnCount) {
lstCtrl->SetItemText(iUpdateRowNum, iCurColOrder, item[iCurColOrder]);
iCurColOrder++;
}
}
}
listValues CListControlOper::GetAllData(CListView* hCLV, DWORD listID)
{
int iSelOrder = 0;
listValues items;
int iItemCount = 0;
ListControl* lstCtrl = GetListCtrlPointer(hCLV,listID);
iItemCount = lstCtrl->GetItemCount();
�
ListView 操作的类文件
4星 · 超过85%的资源 需积分: 10 4 浏览量
2010-07-16
11:06:38
上传
评论
收藏 4KB ZIP 举报
yinzhiqing
- 粉丝: 11
- 资源: 20