画像付ファイル名のリストボックス
ヘッダファイルへの追加
#include “DImgS.hxx” または “DImg.hxx”
#include “ODrawDcM.hxx”
ListBoxDocMF m_ListDImage;
CArray <DImageS,DImageS> DImgAry ; または <DImage,…>
OnInitDialog など
m_ListDImage.SubclassDlgItem(IDC_XXXX_FILE_LIST,this) ;
m_ListDImage.Init() ;
m_ListDImage.ResetContent() ;
リストに表示するファイルの設定
DImgAry.RemoveAll() ;
for (int dIndex=0 ; dIndex<addFiles.GetSize() ; dIndex++) {
DImageS dImg ; または DImage
dImg.SetFileName(addFiles[dIndex]) ;
DImgAry.Add(dImg) ;
}
m_ListDImage.ResetContent() ;
for (int rIndex=0 ; rIndex<DImgAry.GetSize() ; rIndex++) {
CString fileName = DImgAry.GetAt(rIndex).GetFileName() ;
m_ListDImage.AddString(fileName,fileName) ;
// 以下は登録時に画像を付ける場合
CString mfName = CacheFile::GetCF_Name(fileName,1000) ;
if (::FileIsExist(mfName)) {
m_ListDImage.SetAtDocMF(rIndex,mfName) ;
}
else {
HICON icon = DImageS_GetIcon(fileName) ;
m_ListDImage.SetAtIcon(rIndex,icon) ;
}
}
DImageS クラスでなく DImage クラスを使用した場合は,ImageDMF クラスをサポートする形になる.
DImageS クラスでは,対応付けた EMF での動作になる.
現状の ListBoxDocMF では Shell Extension を利用できないみたい.
別のクラスを用意するか変更が必要.間にListBoxDocSE などを用意するか?
コントロールをサブクラス化した時のエラー
ダイアログのコントロールをサブクラス化した時の実行時エラーの対応.
m_ListXxx.SubclassDlgItem(IDC_Xxxx_LIST,this) ;
—————————
Microsoft Visual C++ Debug Library
—————————
Debug Assertion Failed!
Program: …\Xxxx\Xxxx\Debug\Xxxx.exe
File: wincore.cpp
Line: 321
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
—————————
中止(A) 再試行(R) 無視(I)
—————————
以前 CListBox として使用していたので,変数として割り付けられていた.
変数を削除してOK.