• 締切済み

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

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

みんなの回答

  • yuipu
  • ベストアンサー率38% (18/47)
回答No.3

lpofnの要素lpstrFile にはファイル名を格納するバッファアドレスを指定しますが、初期値を持たない場合、そのバッファはゼロで初期化していますか(少なくとも先頭だけでも)? OPENFILENAME http://hp.vector.co.jp/authors/VA023539/tips/dialog/004.htm http://msdn.microsoft.com/ja-jp/library/ms646839.aspx

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.2

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

pipikeji
質問者

補足

lpstrFileに関しては、最初内部バッファを設定していたので、 それが悪さをしているのかと思い、 グローバルなバッファに変更しても同じでした。。。 その他の引数(OPENFILENAME )に関しても特に問題ないと思っています。 同じ様な設定で、GetOpenFileNameでは正常に動作するのですが・・・

  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

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

pipikeji
質問者

補足

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

関連するQ&A