こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

回答受付中の質問

【WIN32 GetSaveFileNameがVISTA以降で落ちる】

【WIN32 GetSaveFileNameがVISTA以降で落ちる】

VS2008でC++を用いて、WIN32アプリを作成し、
「名前をつけて保存」させるために、GetSaveFileNameを利用しているのですが、
VISTA以降で、ファイル名を入力し、「保存」ボタンを押すと、
COMDLG32.dllのexception(C0000005)エラーが発生してしまい、
強制終了してしまいます。
XPでは問題ないのですが、原因がわかりません。
他HP等で検索しても該当する内容がなかったために、質問させていただきます。

投稿日時 - 2010-09-09 10:32:40

QNo.6169431

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

lpofnの要素lpstrFile にはファイル名を格納するバッファアドレスを指定しますが、初期値を持たない場合、そのバッファはゼロで初期化していますか(少なくとも先頭だけでも)?

OPENFILENAME
http://hp.vector.co.jp/authors/VA023539/tips/dialog/004.htm
http://msdn.microsoft.com/ja-jp/library/ms646839.aspx

投稿日時 - 2010-09-11 09:19:10

ANo.2

「保存」を押したタイミングでコケてるなら、引数lpofnのlpstrFileに適切にバッファが割り当てられていない、ということをまず疑います。
それも含めて渡している引数の中身を精査するところがスタート地点でしょう。

投稿日時 - 2010-09-09 12:55:47

補足

lpstrFileに関しては、最初内部バッファを設定していたので、
それが悪さをしているのかと思い、
グローバルなバッファに変更しても同じでした。。。

その他の引数(OPENFILENAME )に関しても特に問題ないと思っています。
同じ様な設定で、GetOpenFileNameでは正常に動作するのですが・・・

投稿日時 - 2010-09-09 13:21:27

ANo.1

隠れたバグが環境が変わって見つかることはあります
デバッグするしかないでしょう

投稿日時 - 2010-09-09 11:16:18

補足

GetSaveFileName関数内で落ちてるので、
デバッグできないんです・・・・
何か良い方法はありますか?

投稿日時 - 2010-09-09 11:56:28