OFNHookProc
Windows 7 で共通コントロール ダイアログをインストルメント化するために実装してGetOpenFileName()
います。インストルメンテーションは C++ で記述されています。ユーザーがライブラリ (ドキュメントや画像など) を選択するまで、問題なく動作します。これが発生すると、CDN_FOLDERCHANGE
期待どおりに通知を受け取りCDM_GETFOLDERPATH
ますが、新しく選択したフォルダーを取得するメッセージをダイアログに送信すると、-1 のエラーが返され、CommDlgExtendedError
0 が返されます。ある意味では、これは理にかなっています。フォルダーではありませんが、他のメッセージはどれも機能していないようです (CDM_GETFOLDERIDLIST
または などCDM_GETFILEPATH
)。
OFNHookProc
では、現在選択されているアイテムまたはフォルダーがライブラリであることを からどのように判断しますか? それがライブラリであることがわかったら、どのファイル システム フォルダがライブラリを構成しているかを把握できるように、ライブラリへのインターフェイスをどのように取得しますIShellItem
か?IShellLibrary
(ダイアログを作成するコードはレガシ コードであるため、Windows 7 で推奨されているライブラリを適切な方法でサポートするインターフェイスにGetOpenFileName
置き換えることはできません)。IFileOpenDialog