ファイラ実装

  メンバ関数とメンバ変数の追加とイベントからの呼び出し





  
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 );
	}
}
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ