ファイルビュワー作成日誌 #004:ファイルブラウザ
概要
ツリービューコントロールでファイルブラウザを作ろうのコーナーです。
世の中いろんなビュワーがあるけれど、ファイル開くのって大抵OSまかせじゃないですか。
別のファイル開くたんびにファイルオープンダイアログが表示されてすごい面倒じゃないですか。
自分でブラウザ持ってれば一瞬なのに。
だからブラウザを作ります。
デバッグの時もテスト用のいろんなファイル開くのがスピーディに行えるのですごい効率的なんですよね。
だから私はファイルブラウザを作ります。
ツリービューウィンドウクラス
ツリービューウィンドウはペーンウィンドウの1つです。
ファイルブラウザはツリービューウィンドウの機能の1つです。
実装にはツリービューコントロールを使います。
将来的にはファイルブラウザとしてだけでなく、木構造で表現可能なものなら何でもブラウジングできる可能性があります。
たとえば X-File なんかも木構造で表現できますよね。
クラス定義
class TreeView : public Pane { public : static const LPCTSTR pszKeyPath; public : HWND hTreeCtrl; public : inline LPCTSTR GetRegistClassName() { return _T( "ClassTreeView" ); } inline LPCTSTR GetCreateWindowName() { return _T( "TreeView" ); } inline LPCTSTR GetSectionName() { return _T( "TreeView" ); } VOID UpdateTree(); INT CreateChildTree( HTREEITEM hParent ); VOID MakeItemPath( LPTSTR path, HTREEITEM hItem, BOOL first = TRUE ); BOOL GetSelectItemPath( LPTSTR path ); BOOL SelectItemPath( LPCTSTR path ); HTREEITEM SearchItemPath( HTREEITEM hParent, LPCTSTR path ); BOOL OnViewRefresh(); BOOL OnCommand( UINT id ); LRESULT OnWmCreate(); LRESULT OnWmDestroy(); LRESULT OnWmSize(); LRESULT OnWmSetFocus(); LRESULT OnScClose(); LRESULT OnTvnSelChanged(); LRESULT OnTvnGetDispInfo(); LRESULT OnTvnGetInfoTip(); };
解説
変数はツリービューコントロールの hTreeView だけです。
pszKeyPath は最後に選択してたファイルをプロファイルに覚えておくためのキーです。
UpdateTree() 関数で現在接続中のすべてのドライブ情報をツリービューに追加します。
GetSelectItemPath() 関数で選択項目のフルパス名を取得します。
MakeItemPath() 関数では指定項目のフルパス名を取得します。
SelectItemPath() 関数で指定パスの項目を選択します。
SearchItemPath() 関数は指定パスを探すやつです。
OnTvnSelChanged() 関数は選択項目を変更したとき呼ばれます。
OnTvnGetDispInfo() 関数は閉じてるフォルダを開こうとするとき呼ばれます。
OnTvnGetInfoTip() 関数はツールチップを表示するとき呼ばれます。
日付が変わりそうなので今日はここまでとします。
以上です。