CListCtrl을 상속하여 생성한 클래스에서 리스트의 컬럼과 아이템을 추가, 삭제, 갱신하는 예
void DCMListCtrl::CreateHead()
{
CRect clientRect;
GetClientRect(&clientRect);
int picColWidth = clientRect.right-(50+80+80+80+85);
SetExtendedStyle( LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER | LVS_EX_GRIDLINES );
SetRedraw(FALSE);
DeleteAllItems();
InsertColumn(0, _T("순번"), LVCFMT_CENTER, 50, -1);
InsertColumn(1, _T("환자이름"), LVCFMT_CENTER, 80, -1);
InsertColumn(2, _T("환자번호"), LVCFMT_CENTER, 80, -1);
InsertColumn(3, _T("환자성별"), LVCFMT_CENTER, 80, -1);
InsertColumn(4, _T("진료날짜"), LVCFMT_CENTER, 85, -1);
InsertColumn(5, _T("사진파일"), LVCFMT_LEFT, picColWidth, -1);
for(int i = 0;i < GetHeaderCtrl()->GetItemCount();++i)
SetColumnWidth(i,LVSCW_AUTOSIZE_USEHEADER);
SetRedraw(TRUE);
Invalidate();
//칼럼 추가 인덱스, 칼람명, 정렬방향, 칼럼폭, 서브아이템 갯수
}
void DCMListCtrl::CreateBody()
{
if(this->vecResult==NULL) return;
SetRedraw(FALSE);
DeleteAllItems();
/*
CString msg;
msg.Format(_T("CreateBody()아이템수=%d"), this->vecResult->size());
AfxMessageBox(msg);
*/
for(UINT i=0;i<this->vecResult->size();i++)
{
PatientTokenVO patient;
FileNameTokenizer::toPatientTokenVO(CString((*vecResult)[i]), &patient);
int seq = i;
CString seq_string;
seq_string.Format(_T("%d"),seq+1);
DateUtility::ParseStrDate(patient.GetStudyDate());
CString studyDate = DateUtility::Format();
CString patientID = patient.GetPatientID();
CString patientName = patient.GetPatientName();
CString patientSex = patient.GetPatientSex();
CString dcmFullPath = patient.GetFileName();
int nItem = 0;
nItem = InsertItem(0,seq_string);
SetItem(nItem,1,LVIF_TEXT,patientName,0,0,0,NULL);
SetItem(nItem,2,LVIF_TEXT,patientID,0,0,0,NULL);
SetItem(nItem,3,LVIF_TEXT,patientSex,0,0,0,NULL);
SetItem(nItem,4,LVIF_TEXT,studyDate,0,0,0,NULL);
SetItem(nItem,5,LVIF_TEXT,dcmFullPath,0,0,0,NULL);
//AfxMessageBox(studyDate+" "+patientID+" "+patientName+" "+patientSex+"\n"+dcmFileName);
}
SetRedraw(TRUE);
Invalidate();
}