トップ 検索 一覧 ヘルプ RSS ログイン

VB6のVitsa対応状況の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!VB6のVitsa対応状況

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

基本的には[Windows Vista と Windows Server 2008 における Visual Basic 6.0 のサポートについて|http://msdn.microsoft.com/ja-jp/vbasic/cc707268.aspx]とその[英語版(より正確)|http://msdn.microsoft.com/en-us/vbrun/ms788708.aspx]にあるように、VB6のランタイムライブラリはVistaに含まれているので、動作するはず。

ただし、いくつか注意点がある。
*インストーラもソフト自体も旧式なので動かすにはコツが要る。
**インストーラを「管理者として実行」を使用する。
**互換性タブで「管理者としてこのプログラムを実行する」を使用する。
**互換性タブで「互換モードでこのプログラムを実行する」を使用する。
*メジャーなランタイムは標準で含まれるが、標準では含まれない物もある。
**vb6jp.dllの様な言語別の物が含まれないのには注意。
**含まれずともテスト自体はされているので配布すれば動作可能。
*regsvr32をし直さないと動作しない物がある模様。
**regsvr自体は.batなどで一括でもよいが、やはり「管理者として実行」する。
**特に独自OCX/DLLはregsvr32が必要と思われるので注意。
*Vistaに含まれるランタイムライブラリはVista専用に更新されたもの。
**[Microsoftから得られるもの|http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=7b9ba261-7a9c-43e7-9117-f673077ffb3c]はVista用ではない。
**上記regsvr32で動かない場合にこれで再インストールの手はあるが、推奨できない。

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

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

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

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