APIを使用した「ファイルを開く」について

解決


マンボ  2002-11-14 00:44:46  No: 76349

VB6SP5で開発を進めているのですが、コモンダイアログを使わず、
APIのGetOpenFileNameを使用したいと考えております。
Windows95/98では問題なく動く事は確認できたのですが、Windows2000では
構造体(OPENFILENAME)のメンバが増えているらしく動作しません。
いろいろ調べたつもりですが、何が違うのかわかりませんのでなたか教えて
下さい。お願いします。


YuO  2002-11-14 01:52:43  No: 76350

95/NT4/98/ME(?)用のOPENFILENAMEA構造体を利用すれば,
2000/XPでも問題なく動くと思うのですが。

詳しくは
http://msdn.microsoft.com/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/CommonDialogBoxLibrary/CommonDialogBoxReference/CommonDialogBoxStructures/OPENFILENAME.asp
などを参照。
まぁ,新しい構造体を使うのは,The Places Barを表示しないために,
FlagsExにOFN_EX_NOPLACESBARを与えるときのみですが。


マンボ  2002-11-14 05:02:00  No: 76351

YuOさん、ご回答有難うございます。
OPENFILENAMEの構造体を確認しましたが、追加されている部分がVBでは
どうの様な記述になるか教えて頂けませんか。
宜しくお願いします。

<<追加分>>
#if (_WIN32_WINNT >= 0x0500)
  void *        pvReserved;
  DWORD         dwReserved;
  DWORD         FlagsEx;
#endif // (_WIN32_WINNT >= 0x0500)


YuO  2002-11-14 09:19:15  No: 76352

VBのヘルプにどのようにCのデータ型とVBのデータ型のマッピングが載っています。
それを調べればわかる話だと思いますが。

まぁ,今回は全てLong型にしてしまえば終わりですけどね。


マンボ  2002-11-15 02:59:27  No: 76353

とりあえず、いろいろやってみたらうまく行きました。
ご協力、ご指導ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加