1

質問:

既に実行中のファイルを開くダイアログの現在のディレクトリを変更する方法を知っている人はいますか?

詳細:

すべての検証、既存のチェック、および作成テストがオフになっている (OpenFileName フラグを介して) カスタマイズされたファイルを開くダイアログ (カスタム テンプレートを使用して追加のコントロールを追加) があります。

これらをオフにすると、ダイアログの組み込みの動作が無効になり、ユーザーが「ファイル名」コンボ ボックスにフォルダー名を入力して Enter キーを押すと、現在表示されているフォルダーが変更されます。

その動作を追加したいと思います。これがいつ発生するかは、フック プロシージャを介して検出できます。OK ボタンを非表示にし、アクセラレータをオフにして、独自の「選択」ボタンをコントロールに配置しました。つまり、CDN_FILEOK メッセージが表示されるのは、ユーザーが入力後にテキスト ボックスに Enter キーを押したときだけです。

ただし、ダイアログに現在のディレクトリを変更するようにプログラムで指示する方法がわかりません。

ウィンドウ内の SHELLDLL_DefView コントロールに何らかのメッセージを送信することでこれを達成できるのではないかと考えていましたが、それに関するドキュメントを見つけることができませんでした。

4

2 に答える 2

0

回避策を見つけることができました。

検証がオフになっている場合、「\」で終わるディレクトリ名を入力すると、表示されるフォルダーは変更されますが、「\」で終わらないディレクトリ名を入力すると変更されないことがわかりました。

spy++ を使用して、Enter キーを押すと、上位ワードが BN_CLICKED で下位ワードが ID_OK である wParam 引数を使用して、WM_COMMAND メッセージが共通ダイアログ コントロールに送信されることがわかりました。

共通ダイアログをサブクラス化すると、メッセージをインターセプトし、ファイル名コンボ ボックスのテキストを変更し、メッセージを元のサブクラス プロシージャに転送し、後でテキストを元に戻すことができます。

少しハックですが、ダイアログから必要な動作を得ることができます。

于 2009-01-23T00:14:28.043 に答える