Windows には、コモンダイアログというものが用意されています。これは、ファイル名や色を選ぶための「メニュー」のようなもので、アプリケーション使用中に何度も目にした事があるでしょう。プログラムを書く時にはこのコモンダイアログを使う事で、対話的な処理を簡単に実現する事ができます。 「ファイルを開く」ダイアログの使い方「ファイルを開く」ダイアログをつかうためには、まずOPENFILENAME構造体を作成してそこで各種の設定をします。 ・OPENFILENAME構造体 やけにたくさん変数がありますが、とりあえずダイアログを出してファイルを選択するだけなら、ファイル名のバッファとフィルター関連の設定だけをして、あとは0でうめておいても大丈夫でしょう。 ofn.lpstrFilter="テキスト(*.txt)\0*.txt\0すべてのファイル(*.*)\0*.*\0\0"; とすれば、「テキスト(*.txt)」「すべてのファイル(*.*)」と表示されて*.txt、*.* というフィルターが適用されるわけです。ちなみにこのフィルターの初期位置はnFilterIndexで指定できますから(最初のフィルターが1なので注意)、この値を2にすると最初にフィルターとして「すべてのファイル(*.*)」が表示されます。 また、ダイアログのタイトルを変更したい時は、lpstrTitleに文字列を設定してください。 ・設定例 ofn.lStructSize=sizeof(OPENFILENAME); ofn.hwndOwner=hwnd; ofn.hInstance=NULL; ofn.lpstrFilter= // フィルター "テキスト(*.txt)\0*.txt\0すべてのファイル(*.*)\0*.*\0\0"; ofn.lpstrCustomFilter=NULL; ofn.nMaxCustFilter=0; ofn.nFilterIndex=1; // フィルターの初期位置 ofn.lpstrFile=szFn; // ファイル名用文字列バッファ ofn.nMaxFile=255; // 文字列バッファのサイズ ofn.lpstrFileTitle=szFt; // ファイルのタイトル用文字列バッファ ofn.nMaxFileTitle=255; // 文字列バッファのサイズ ofn.lpstrInitialDir=NULL; ofn.lpstrTitle="コモンダイアログテスト"; // タイトル ofn.Flags=OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; ofn.nFileOffset=0; ofn.nFileExtension=0; ofn.lpstrDefExt=NULL; ofn.lCustData=0; ofn.lpfnHook=NULL; ofn.lpTemplateName=NULL; フラグで指定した数値の意味は、OFN_FILEMUSTEXISTが存在しないファイルを選べなくする(選ぶとエラーを表示)もので、OFN_HIDEREADONLY が「読み取り専用ファイルとして開く」のチェックを表示しないようにするものです。 実際に「ファイルを開く」ダイアログを表示するには、この構造体のアドレスを引数としてGetOpenFileNameを呼び出してください。この関数は、エラーを起こしたりファイルが選択されずにダイアログが閉じられると、FALSE(0)を返します。また、選択されたファイル名はlpstrFileで指定したバッファに入っています。 プログラム今回のプログラムは、ボタンをクリックすると「ファイルを開く」ダイアログを出します。さらにファイルが選択されると、そのファイルの大きさを調べ、メッセージボックスで選択されたファイル名とサイズを表示するようにしました。 |