メンバ関数とメンバ変数の追加とイベントからの呼び出し |
|
|
class MyClass : public CLWin
{
public:
LboxString MyDir;
void MyEnumFile();
void LVClick();
void LVDblclick();
void ProcOperator();
void WMCreate();
MyClass();
virtual ~MyClass();
};
| |
|
|
// *********************************************************
// ファイルリスト
// *********************************************************
void MyClass::MyEnumFile()
{
this->MsgOk("ファイルリスト");
}
| |
|
|
// *********************************************************
// オペレータイベント
// *********************************************************
void MyClass::ProcOperator()
{
switch( ControlId ) {
case IDM_FILEOPEN:
MsgOk( "ファイルを開く " );
break;
case IDM_ENUMFILE:
this->MyEnumFile();
break;
}
}
| |
|
|
|
|
class MyClass : public CLWin
{
public:
void MyEnumListEnd();
LboxImagelist *MyImagelist;
void MyEnumListInit();
LboxString MyDir;
void MyEnumFile();
void LVClick();
void LVDblclick();
void ProcOperator();
void WMCreate();
MyClass();
virtual ~MyClass();
};
| |
|
|
// *********************************************************
// コンストラクタ
// *********************************************************
MyClass::MyClass()
{
this->MyImagelist = NULL;
}
| |
|
|
// *********************************************************
// ファイルリスト
// *********************************************************
void MyClass::MyEnumFile()
{
this->MyEnumListEnd();
this->MyEnumListInit();
}
// *********************************************************
// リストビューの初期化
// *********************************************************
void MyClass::MyEnumListInit()
{
LView->Initialize();
LView->AddColumn( "名前" );
LView->AddColumn( LVCFMT_RIGHT, 100, "サイズ" );
LView->AddColumn( "更新日時" );
this->MyImagelist = new LboxImagelist();
this->MyImagelist->CreateSystemFile( );
LView->SetImageList( this->MyImagelist );
}
// *********************************************************
// リストビューの終了処理
// *********************************************************
void MyClass::MyEnumListEnd()
{
if ( LView->hImgListBase != NULL ) {
ListView_SetImageList(
LView->hWnd,
NULL,
LVSIL_SMALL
);
}
if ( this->MyImagelist != NULL ) {
delete this->MyImagelist;
this->MyImagelist = NULL;
}
}
| |
|
|
|
|
// *********************************************************
// ファイルリスト
// *********************************************************
void MyClass::MyEnumFile()
{
this->MyEnumListEnd();
this->MyEnumListInit();
LboxString LWork;
LWork.operator = ( "*.*" );
LView->Hide();
this->MyEnumFileGet( &LWork );
LView->Fit();
LView->Show();
}
| |
|
|
// *********************************************************
// ファイル情報の取得
// *********************************************************
void MyClass::MyEnumFileGet(LboxString *LWild)
{
// システムイメージリストのインデックス取得用
LboxFileSystem Fs;
LboxString LWork;
if ( this->MyDir.operator != ("") ) {
Fs.ChangeDirectory( &(this->MyDir) );
}
// ファイル情報取得用
HANDLE hFile;
BOOL bRet;
WIN32_FIND_DATA wfd;
FILETIME ft;
SYSTEMTIME st;
hFile = ::FindFirstFile( LWild->szLboxString, &wfd );
if ( hFile == INVALID_HANDLE_VALUE ) {
return;
}
bRet = true;
while( bRet ) {
// ファイルのみ
if ( !(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ) {
LView->AddRow();
// ファイル名
LView->SetColumnText( 0, wfd.cFileName );
// サイズ
LWork.Printf( "%lu", wfd.nFileSizeLow );
LWork.NumberFormat( &LWork );
LView->SetColumnText( 1, &LWork );
// 更新日時
::FileTimeToLocalFileTime( &(wfd.ftLastWriteTime), &ft );
::FileTimeToSystemTime( &ft, &st );
LView->SetColumnPrintf(
2,
"%02d/%02d/%02d %02d:%02d:%02d",
st.wYear,
st.wMonth,
st.wDay,
st.wHour,
st.wMinute,
st.wSecond
);
// イメージ
LView->SetImage(
LView->nCurrentRow,
0,
Fs.SmallIconIndex( wfd.cFileName )
);
}
bRet = ::FindNextFile( hFile, &wfd );
}
::FindClose( hFile );
LView->Sort( 0, 0 );
}
| |
|
|
|
|
// *********************************************************
// ファイルリスト
// *********************************************************
void MyClass::MyEnumFile()
{
this->MyEnumListEnd();
this->MyEnumListInit();
LboxString LWork;
LWork.operator = ( "*.*" );
LView->Hide();
this->MyEnumFileGet( &LWork );
this->MyEnumDirGet();
LView->Fit();
LView->Show();
}
| |
|
|
// *********************************************************
// ディレクトリ情報の取得
// *********************************************************
void MyClass::MyEnumDirGet()
{
LboxListview LVDir( this->hWnd, LBOX_LISTVIEW_CREATE );
LVDir.Initialize();
LVDir.AddColumn( "" );
LVDir.AddColumn( "" );
LVDir.AddColumn( "" );
// システムイメージリストのインデックス取得用
LboxFileSystem Fs;
LboxString LWork;
// ファイル情報取得用
HANDLE hFile;
BOOL bRet;
WIN32_FIND_DATA wfd;
FILETIME ft;
SYSTEMTIME st;
hFile = ::FindFirstFile( "*.*", &wfd );
if ( hFile == INVALID_HANDLE_VALUE ) {
return;
}
bRet = true;
while( bRet ) {
// ディレクトリのみ
if ( wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) {
if ( ::lstrcmp( wfd.cFileName, "." ) != 0 ) {
LVDir.AddRow();
// ファイル名
LVDir.SetColumnText( 0, wfd.cFileName );
// 更新日時
::FileTimeToLocalFileTime( &(wfd.ftLastWriteTime), &ft );
::FileTimeToSystemTime( &ft, &st );
LVDir.SetColumnPrintf(
2,
"%02d/%02d/%02d %02d:%02d:%02d",
st.wYear,
st.wMonth,
st.wDay,
st.wHour,
st.wMinute,
st.wSecond
);
}
}
bRet = ::FindNextFile( hFile, &wfd );
}
::FindClose( hFile );
LVDir.Sort( 0, 0 );
// ファイル一覧に転送
int nRow;
nRow = -1;
while( LVDir.FindNextRow( &nRow ) ) {
LVDir.SetCurrentRow( nRow );
LView->InsertRow( nRow );
// ファイル名
LVDir.GetColumnText( 0, &LWork );
LView->SetColumnText( 0, &LWork );
// イメージ
LView->SetImage(
LView->nCurrentRow,
0,
Fs.SmallIconIndex( LWork.szLboxString )
);
// 更新日時
LVDir.GetColumnText( 2, &LWork );
LView->SetColumnText( 2, &LWork );
}
}
| |
|
|
|