Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
OpenFileDialogで一覧、アイコン表示などを制御したい
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30239#CommentId82789
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 (社会人)
投稿日時
2017/4/10 11:23:49
OS レベルでは、切り替えるための定数も用意されていますが、利用はお奨めしません。
https://msdn.microsoft.com/ja-jp/library/bb762510.aspx
これを利用するには、COM の IShellFolder インターフェイスを取得し、
IShellFolder.CreateViewObject メソッドで IShellView インターフェイスを得て、
IShellView.CreateViewWindow メソッドの 第二引数に指定する FOLDERSETTINGS 構造体の
ViewMode フィールドに、上記の定数を割り当てて呼び出せば切り替わるかと思いますが、
残念ながら .NET Frarmework の System.Windows.Forms.OpenFileDialog クラスや
API CodePack の Microsoft.WindowsAPICodePack.Dialogs.CommonOpenFileDialog クラスには
そのための直接的な方法が用意されていないようなので、かなり面倒な手続きが必要になるでしょう。
[EternalWindows]
http://eternalwindows.jp/shell/shellname/shellname08.html
> IShellFolderを取得し、CreateViewObjectでIShellViewを取得します。
> 続いて、IShellView::CreateViewWindowを呼び出すために、FOLDERSETTINGS 構造体を初期化します。
> ViewModeはフォルダビューの表示形式であり、FVM_DETAILSを指定すると詳細表示の形式になります。
> FVM_ICONを指定した場合はアイコン表示になり、FVM_THUMBNAILを指定した場合はサムネイル表示になるでしょう。
あるいは、OFN_ENABLEHOOK でコモンダイアログをフックするなどして、
"SHELLDLL_DefView" なウィンドウを捕えて WM_COMMAND を SendMessage する手も
思い当たりますが、いずれにせよ VB からの呼出は お奨めしません。
[MSDN Magazine March 2004]
http://download.microsoft.com/download/3/a/7/3a7fa450-1f33-41f7-9e6d-3aa95b5a6aea/MSDNMagazineMarch2004en-us.chm
【C++ Q&A : List View Mode, SetForegroundWindow, and Class Protection】
> The dialog sends a WM_COMMAND message to the SHELLDLL_DefView, with command ID = 0x702c.
> So to change the view to details, all you have to do is send a WM_COMMAND—to the shell window, not the list control:
> CWnd* pshellwnd = dlg->GetDlgItem(lst2);
> pshellwnd->SendMessage(WM_COMMAND, ODM_VIEW_DETAIL); // 0x702c
[ファイルを開く -- コモンダイアログの「表示メニュー」を「詳細」で開く]
http://winofsql.jp/VA003334/infoboard_page.php?mid=smalltech&id=050120221448