« スカイセンサー2000PC修理中 | メイン | DE406惑星座標ファイルの置き場所がない »

2004年07月25日

軌道計算プログラム、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)\0*.obs\0(*.txt)\0*.txt\0(*.*)\0*.*\0\0";
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;
 これでいよいよ一般公開かな~。
 

 
今日  昨日  累計