軌道計算プログラム、Windows98で不具合発生

 軌道計算プログラムの公開版が完成直前に大問題発覚。Microsoft Visual C++.NETで開発すると(MFCを使うと)、Windows 98でファイルを開くためのダイアログボックスが表示されないのだ。Windows 2000でファイルアクセス機能の拡張に伴ってOPENFILENAME構造体のサイズを大きくしたのが関係していると言うことはすぐにわかったが簡単な対策が思いつかず、結局大格闘の末、下のようなプログラムにすると動作してくれた。MFCのどこかにバグがありそうだ。

memset(pPathName, 0, _MAX_PATH);
memset(&ofn, 0, sizeof(OPENFILENAME));
ofn.lStructSize = 76;
// sizeof(OPENFILENAME)にすると
// Windows 98でダイアログボックス
// が開かない
ofn.hwndOwner = hWnd;
ofn.lpstrFilter =
"(*.obs)*.obs(*.txt)*.txt(*.*)*.*";
ofn.nFilterIndex = 1;
ofn.lpstrInitialDir = pApp->m_szObsFolder;
ofn.lpstrFile = pPathName;
ofn.nMaxFile = _MAX_PATH;
ofn.lpstrTitle= szTitle;
ofn.Flags = OFN_FILEMUSTEXIST;
ofn.lpstrDefExt = "obs";
if (::GetOpenFileName(&ofn))
ret = OK;
else
ret = NG;

 これでいよいよ一般公開かな~。

 


高知県ランキング
上のバナーをポチッと押していただくと著者が元気になりますのでよろしくお願いします。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です