MSX VIEWer開発裏話(06)


連載目次

記述内容はすべて当時のものです。

当初、MSX VIEWerでは開いたファイルをリッチエディットコントロール(修飾情報を含む文書を表示するためのソフトウェア部品)に読み込み、保存するときはリッチエディットコントロールの中身を読み出してファイルに書き込む仕様になっていました。

しかし、この実装だとMSX VIEWerでプログラムを保存すると、半角カタカナや半角ひらがな、グラフィック文字など、7ビットASCIIの範囲から外れた文字が化けてしまうのです。

この現象はWindows98では起こらず、Windows2000やXPなど、NT系のOSでのみ起こります。私はいまだにメインPC(=MSX VIEWerの開発機でもある)でWindows98を使っているため、最初この現象に気づいていませんでした。

調べてみるとNT系のOSであっても、ファイルから読み込む時点では文字は化けておらず(バイナリファイルとして1バイトずつ読み込んでいるので当たり前なんですが)、リッチエディットコントロールにセットした時点で化けてしまうことがわかりました。

そこで、ファイルを読み込んだときに、内容をリッチエディットコントロールに送るのではなく、先に一時ファイルにアスキーセーブしておき、それを読み込んでRTFファイルに変換し、そのRTFファイルをリッチエディットコントロールに送るように変更しました。ユーザーがアスキーセーブの操作をしたときは、先に作っておいた一時ファイルをコピーするだけにしました。

これにより、読み込んだ後にユーザーが内容を変更して、保存してもそれを反映させることができなくなってしまいました。そのため、思い切って編集機能をなくし(=入力不可にし)読み込み専用のソフトにすることにしました。

これで、とりあえず文字化け問題は解決(というか回避)できたのですが、新たなる問題が明らかとなりました。

つづく。

(06/26/2004 06:55:25 PM)