Mesoscopic Programming

タコさんプログラミング専門

ファイルビュワー作成日誌 #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() 関数はツールチップを表示するとき呼ばれます。


日付が変わりそうなので今日はここまでとします。

以上です。