トップ 検索 一覧 差分 ソース ヘルプ RSS ログイン

VB6のVitsa対応状況

VB6のVitsa対応状況

DVD Flickの猫科研究所版を作成するに当たって久々にVB6に触れて、どうやらVistaでは(やっぱり)問題があるようなのでメモ。

基本的にはWindows Vista と Windows Server 2008 における Visual Basic 6.0 のサポートについてとその英語版(より正確)にあるように、VB6のランタイムライブラリはVistaに含まれているので、動作するはず。

ただし、いくつか注意点がある。

  • インストーラもソフト自体も旧式なので動かすにはコツが要る。
    • インストーラを「管理者として実行」を使用する。
    • 互換性タブで「管理者としてこのプログラムを実行する」を使用する。
    • 互換性タブで「互換モードでこのプログラムを実行する」を使用する。
  • メジャーなランタイムは標準で含まれるが、標準では含まれない物もある。
    • vb6jp.dllの様な言語別の物が含まれないのには注意。
    • 含まれずともテスト自体はされているので配布すれば動作可能。
  • regsvr32をし直さないと動作しない物がある模様。
    • regsvr自体は.batなどで一括でもよいが、やはり「管理者として実行」する。
    • 特に独自OCX/DLLはregsvr32が必要と思われるので注意。
  • Vistaに含まれるランタイムライブラリはVista専用に更新されたもの。
    • Microsoftから得られるものはVista用ではない。
    • 上記regsvr32で動かない場合にこれで再インストールの手はあるが、推奨できない。

そのほか、作成する側としては、フォームの配置に注意しなければならない。VBで指定するコントロールの座標単位が何であるか微妙に謎だが、Vistaではこの基準が変わるらしく、同じサイズにならない。一般にはフォントが大きめに表示されるので、スペースを多めに取らなければならない。

そして、VBに限らない話ではあるが、JIS X 0213:2004(いわゆるJIS2004)に注意しなければならない。Unicodeアプリではそれほど問題ではないが、VB6はフォーム関連がANSIビルドの扱いになるのでJIS2004の文字を表示できない。そしてJIS2004の文字はVistaのIMEで入力されてしまうらしい(ただし、表示は崩れるのでユーザが気づくことはできる)。「森鴎外」の「鴎」の旧字体とか。

しかも「鴎」の旧字体はUTF-16でサロゲートペアになるらしく、なおさら問題になる。Unicodeビルドができない以上どうしようもないが。

VB6のString自体は実質BSTRであり、Unicode対応(ただしサロゲートペアには対応しておらず、UTF-16ではなくUCS2相当らしい)なのだが、なぜかフォームはOEM文字セットで動作するとのこと。マイクロソフトはどうしてこんな中途半端な仕様にしたのだろう…。

最終更新時間:2009年02月08日 14時12分49秒