Last Updated 2002/09/30
週刊Bravo!! > Programing Tips > Visual C++ > API

SHBrowseForFolder(フォルダ選択ダイアログ)にボタン追加


BFFM_INITIALIZED にて自前のボタン作成後,フォルダ選択ダイアログをサブ
クラス化する.
このプロシジャにて,作成したボタンの WM_COMMAND に応答して後は元のプロ
シジャに流す.

コールバックの BFFM_INITIALIZED 時,プロシージャを変更する(サブクラス化)
    OldProc = ( WNDPROC )SetWindowLong( hWnd, GWL_WNDPROC, ( LONG )NewSubProc );
    ( hWnd は「フォルダ選択のダイアログ」(SHBrowseForFolderのコールバックに
      わたってくるハンドル)のウィンドウハンドル)

上で指定した NewSubProc にて
    if( ( uMsg == WM_COMMAND ) && ( LOWORD( wParam ) == 自分で作ったボタンのID ) ) {
        // ボタンの処理
    }
    return( CallWindowProc( ( FARPROC )OldProc, hWnd, uMsg, wParam, lParam ) );



[OK]ボタンと[キャンセル]ボタンの間にボタンを追加した場合など,TAB
オーダーがおかしい場合は,[キャンセル]ボタンを ::DestroyWindow() で一旦
削除して,再び作成する(ID は IDCANCEL)を作成するとタブオーダーは正常
となる.
参照
SHBrowseForFolder(フォルダ選択ダイアログ)
クラス内コールバック関数

フォルダ選択ダイアログにてフォルダの作成

2002/09/30


週刊Bravo!! > Programing Tips > Visual C++ > API

感想要望などを下記メールアドレスまでお願いします.
前向きなメールがこれからを左右します.(^^)

DSSへメールを送る