VC++.NET2003の.NET Frameworkを使用しています。
コモンダイアログOpenFileDialogでフィルタにテキストファイルとすべての拡張子をセットしテキストファイルをデフォルトにします。
実行して「ファイルの種類」をすべてのファイルに変更すると、ファイルリストに何も表示されなくなります。
「開く」ボタンを押下するとファイルリストにすべてのファイルが表示されるようになります。
「ファイルの種類」を変更したとき、すぐに該当ファイルのリストを表示するようにしたいのですが、解決方法などご存知でしたらご教授願います。
OPENFILENAME ofn; であるものとして、\0が各内容のくぎりです
後は、ファイルを検索する方法と同じです。
失敗例
ofn.lpstrFilter = "プログラム言語ファイル(*.cpp)\0*.cpp\0"
"ファイル(*.txt)\0.";
失敗例
ofn.lpstrFilter = "プログラム言語ファイル(*.cpp)\0*.cpp\0"
"ファイル(*.txt)\0.*";
この方法で問題ないとおもいます。
ofn.lpstrFilter = "プログラム言語ファイル(*.cpp)\0*.cpp\0"
"ファイル(*.txt)\0*.";
また、メッセージフックによる変更を希望していなら、ファイルの種類が表示してあるコンポボックスのID は1136です。
> NET Frameworkを使用しています。
なのでAPIのOpenFileDialogとは違うのでは?
System::Windows::Forms::OpenFileDialogクラス
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemwindowsformsopenfiledialogclasstopic.asp
> なのでAPIのOpenFileDialogとは違うのでは?
なんてAPIなかったです。
GetOpenFileNameですよね、OPENFILENAME構造体を引数に使うのは。
Blueさんのいうとうりです、また上の文章で"る"がぬけてました。
OpenFileDialog* ofdとして、前の文章の\0を|にかえて判断してください。
ofd->Filter = S"txt files (*.txt)|*.txt|All files (*.*)|*.*" ;
> "txt files (*.txt)|*.txt|All files (*.*)|*.*"
"txt files (*.txt)|*.txt|All files (*.*)|*.*||"
ではありませんか?
# .NETは知らないけど、その辺の仕様は踏襲していると思うのですが。
# '\0'が区切り文字にしても、最後は"\0\0"で終わる必要があるはずです。
MSDNでFileDialog.Filter プロパティを確認してみると、
C#、VB.NETの具体例しか載っていませんが、
> "txt files (*.txt)|*.txt|All files (*.*)|*.*"
でいいようです。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemwindowsformsfiledialogclassfiltertopic.asp
ちなみに、
> # '\0'が区切り文字にしても、最後は"\0\0"で終わる必要があるはずです。
char s[] = "\0";
で、変数宣言時に初期化すると、
s[0]='\0'
s[1]='\0'
になります。
ツイート | ![]() |