データの保存を行いたいのですが
「名前を付けて保存」ウィンドウにてファイル名を指定しパスを取得するにはどうすればよろしいでしょうか。
よろしくお願い致します。
Visual C++ .net/ダイアログベースです。
OPENFILENAME構造体に必要事項を設定して、GetOpenFileName()関数を呼び出せばよいはずです。
>OPENFILENAME構造体に必要事項を設定して、GetOpenFileName()関数を呼び出せばよいはずです。
GetSaveFileNameなのでは?
MFCを利用しているならば CFileDialog を使うのも手ですね。
あ、そうですね。
間違えました。
>K.様 Blue様
ご返答ありがとうございます。
「名前を付けて保存」のウィンドウは下記ソースにて表示出来ましたが
「保存」ボタンをクリックするとエラーになります。
どこが原因なのでしょうか。
また、この作業にて
テキストファイル(中身はtest words)を作成したいと思っております。
宜しくお願い致します。
//以下ソース
char current[ MAX_PATH ];
memset( current, 0, sizeof( current ) );
GetCurrentDirectory( sizeof( current ), current );
char buff[ MAX_PATH ];
memset( buff, 0, sizeof( buff ) );
char* title = "Title";
OPENFILENAME fn;
memset( &fn, 0, sizeof( fn ) );
fn.lStructSize = sizeof( fn );
fn.lpstrFilter = "*.*";
fn.lpstrFile = buff;
fn.nMaxFile = sizeof( buff );
fn.lpstrFileTitle = title;
fn.nMaxFileTitle = sizeof( title );
fn.lpstrInitialDir = current;
GetSaveFileName( &fn );
//以上ソース
> 「保存」ボタンをクリックするとエラーになります。
どのようなエラーが出るのですか?
> fn.lpstrFilter = "*.*";
フィルタの書式が間違っています。
> fn.lpstrFileTitle = title;
> fn.nMaxFileTitle = sizeof( title );
titleはリテラルを指すポインタですから,
変更がかかるような場合は未定義動作になります。
#たぶん,ここが一番の問題。
そもそも,lpstrFileTitleに初期値を与える事は無意味です。
>YuO様
ご教授ありがとうございました。
エラーはフィルタの設定によるものでした。
無事に解決致しました。
ありがとうございました。
もう一つお伺いしたいのですが、
メインダイアログのボタンをクリックして
モードレスダイアログを表示し、モードレスダイアログのボタンにて
メインダイアログのボタンを無効(グレーアウト)にするにはどうすればよろしいでしょうか。
ツイート | ![]() |