ファイル選択ダイアログのサイズ

[戻る]
K 2007/03/27(火) 22:01:42
ファイル選択ダイアログにlpTemplateNameを指定し、拡張したダイアログを表示する
と、当然サイズが通常よりも大きくなります。

その後、同一プロセス内で拡張なし(lpTemplateNameをNULL)のファイル選択ダイアロ
グを表示すると、拡張して大きくなったときのままのサイズで表示されてしまいます。

元サイズに戻すにはどうしたらいいんでしょうか?
大きくなったままだと不恰好なので・・・

CFileDialogでもGetOpenFileName/GetSaveFileNameでもかまいません。

つばさ 2007/03/28(水) 10:22:07
OPENFILENAME構造体の中身を見てみると

Flags OFN_ENABLETEMPLATE 
lpTemplateName メンバと hInstance メンバで指定されるダイアログ テンプレートを利
用してダイアログボックスを作成します。

とあります

lpTemplateNameだけでなく Flags、hInstanceの値も関係してると思われます

↓参考にしてください
http://www.activebasic.com/help_center/Pages/API/Window/CommonDialogBox/type_OPE
NFILENAME.htm

2007/03/28(水) 14:38:53
ダイアログサイズ変更許可のフラグ切れば良いって話では無い?
違ったらごめん。

K 2007/03/28(水) 23:20:37
2回目に表示した時は、OFN_ENABLETEMPLATEもOFN_ENABLETEMPLATEHANDLEも指定していま
せんし、hInstance、lpTemplateName はNULLです。

>ダイアログサイズ変更許可のフラグ切れば良いって話では無い?
ん、確かにこれだとデフォルトのサイズに戻りますが、
サイズ変更はできてもいいと思います。

試しに、メモ帳のファイル選択ダイアログを開き、サイズを大きくしてみます。
閉じてからもう一度開くと、大きくなったまま開きました。
どうも、コモンダイアログの仕様っぽいです。

自分で大きくした場合はそのままでもいいけど、拡張して大きくなった分は
元に戻して欲しいです。


ちなみに、Windows XP SP2で確認しています。

2007/03/29(木) 22:12:27
まぁ、コモンダイアログは次回起動時に前回のディレクトリ覚えてたりするのでそれ
と同じでサイズも記録してるんでしょうね…。

設定保存に関しても設定できてよさそうだからなんかAPIかフラグはあると思う。
レジストリにエントリがあったと思うけど、最悪自分の分のコモンダイアログのレジス
トリを変更すればいいのかな。

K 2007/03/30(金) 21:04:50
[[解決]]
MSDNを見ても、レジストリはプレイスフォルダの設定くらいしか見当たりません。
フラグもなさそうなんですよね・・・

フックしてCDN_INITDONEあたりで無理やりサイズ変更とかしかなさそうです。
あきらめるorフックの方向で進めたいと思います。
ありがとうございました。

古いスレッドには追加発言できません。