ListBoxDocMF の使い方で...
以前の,画像付ファイル名リストボックス(ListBoxDocMF)の利用方法の改良
前の方法では,対応する画像(EMF)が存在しない,または見つからないと,意図した動作にならない.
そのため,ファイルを登録する時に,対応画像が存在しないとそれを作成して登録する方法.
DImageS::Draw を利用している.
BOOL CDropOpenDlg::UpdateDImgLB()
{
CWaitCursor wait ;
::TrimSameString(DropFiles) ;
{
static DelFileE dfe ;
DImgAry.RemoveAll() ;
long len = 0 ;
int makeCount = 5 ;
for (int dIndex=0 ; dIndex0) {
dfe.Add(mfName) ;
MetaFile mf(FALSE) ;
CWnd* mainWnd = AfxGetMainWnd() ;
CRect rect(0,0,100,100) ;
if (!mf.Create(mainWnd,rect,mfName)) { return FALSE ; }
CMetaFileDC* mfDC = mf.GetMetaDC() ;
{
dImg.Draw(mfDC,rect) ;
}
mf.Close() ;
makeCount– ;
dfe.Add(::GetFileDir(mfName)) ;
}
DImgAry.Add(dImg) ;
len = max(len,dropFile.GetLength()) ;
}
m_CtrlDropFiles.ResetContent() ;
for (int rIndex=0 ; rIndex<DImgAry.GetSize() ; rIndex++) {
CString fileName = DImgAry.GetAt(rIndex).GetFileName() ;
m_CtrlDropFiles.AddString(fileName,fileName) ;
CString mfName = CacheFile::GetCF_Name(fileName,1000) ;
if (::FileIsExist(mfName)) {
m_CtrlDropFiles.SetAtDocMF(rIndex,mfName) ;
}
else {
HICON icon = DImageS_GetIcon(fileName) ;
m_CtrlDropFiles.SetAtIcon(rIndex,icon) ;
}
}
::SetHorizontalExtent(&m_CtrlDropFiles,len) ;
}
return TRUE ;
}