처음 설계에는 ListCtrl이 업데이트 될 때 마다 썸네일을 생성하는 방법을 썼는데....
무척 느렸다. (절망할 정도로.;)
그래서 해결하려한 방법이 CImageList의 Serialize로 구현하는거 였는데...
우선 MSDN을 보자
MFC Library Reference
CImageList::Read
Call this function to read an image list from an archive.
CImageList::Write
Call this function to write an image list object to an archive.
대충 해석하면 "archive로부터 이미지 리스트를 읽고 쓴다" 로 보면 된다
즉....
CArchive를 이용해서 FIle의 보관소를 만들어 입출력 시키면 된다는 예기다
Ex)
Write()
TCHAR szData[MAX_PATH];
_stprintf(szData, _T("Thumbnail.idx"));
CFile fileImageData(szData, CFile::modeCreate | CFile::modeWrite);
CArchive arData(&fileImageData, CArchive::store);
m_imageList->Write(&arData);
arData.Close();
fileImageData.Close();
Read()
TCHAR szData[MAX_PATH];
_stprintf(szData, _T("Thumbnail.idx"));
CFile fileImageData(szData, CFile::modeRead);
CArchive arData(&fileImageData, CArchive::load);
m_imageList->Read(&arData);
arData.Close();
fileImageData.Close();
겁나 쉽다.....여기에 예외처리와 이미지 리스트번호에 따른 선택 분기를 넣어준다면 더욱 좋을 것이다
※ 참고
CImageList 특성상 이미지를 넣었다 제거한다 해도 메모리에는 빈 공백으로 할당이 잡혀있다 (이미지 크기 만큼)
그래서 파일로 저장했을 때에 인덱스 파일이 커지면 커졌지, 줄어들지는 않는다.
이부분을 수동으로 작업해주는 센스가 필요~!