!!!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で入力されてしまうらしい(ただし、表示は崩れるのでユーザが気づくことはできる)。「森鴎外」の「鴎」の旧字体とか。 しかも「鴎」の旧字体は''UTF-16でサロゲートペアになる''らしく、なおさら問題になる。Unicodeビルドができない以上どうしようもないが。 VB6のString自体は実質BSTRであり、Unicode対応(ただしサロゲートペアには対応しておらず、UTF-16ではなくUCS2相当らしい)なのだが、なぜかフォームはOEM文字セットで動作するとのこと。マイクロソフトはどうしてこんな中途半端な仕様にしたのだろう…。