
【WIN32 GetSaveFileNameがVISTA以降で落ちる】
【WIN32 GetSaveFileNameがVISTA以降で落ちる】
VS2008でC++を用いて、WIN32アプリを作成し、
「名前をつけて保存」させるために、GetSaveFileNameを利用しているのですが、
VISTA以降で、ファイル名を入力し、「保存」ボタンを押すと、
COMDLG32.dllのexception(C0000005)エラーが発生してしまい、
強制終了してしまいます。
XPでは問題ないのですが、原因がわかりません。
他HP等で検索しても該当する内容がなかったために、質問させていただきます。
投稿日時 - 2010-09-09 10:32:40
このQ&Aは役に立ちましたか?
3人が「このQ&Aが役に立った」と投票しています
回答(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
「保存」を押したタイミングでコケてるなら、引数lpofnのlpstrFileに適切にバッファが割り当てられていない、ということをまず疑います。
それも含めて渡している引数の中身を精査するところがスタート地点でしょう。
投稿日時 - 2010-09-09 12:55:47
lpstrFileに関しては、最初内部バッファを設定していたので、
それが悪さをしているのかと思い、
グローバルなバッファに変更しても同じでした。。。
その他の引数(OPENFILENAME )に関しても特に問題ないと思っています。
同じ様な設定で、GetOpenFileNameでは正常に動作するのですが・・・
投稿日時 - 2010-09-09 13:21:27