Flickの猫科研究所版を作成するに当たって久々にVB6に触れて、どうやらVistaでは(やっぱり)問題があるようなのでメモ。サポートについてとその英語版(より正確)にあるように、VB6のランタイムライブラリはVistaに含まれているので、動作するはず。いくつか注意点がある。インストーラもソフト自体も旧式なので動かすにはコツが要る。インストーラを「管理者として実行」を使用する。互換性タブで「管理者としてこのプログラムを実行する」を使用する。互換性タブで「互換モードでこのプログラムを実行する」を使用する。メジャーなランタイムは標準で含まれるが、標準では含まれない物もある。vb6jp.dllの様な言語別の物が含まれないのには注意。含まれずともテスト自体はされているので配布すれば動作可能。regsvr32をし直さないと動作しない物がある模様。regsvr自体は.batなどで一括でもよいが、やはり「管理者として実行」する。独自OCX/DLLはregsvr32が必要と思われるので注意。Vistaに含まれるランタイムライブラリはVista専用に更新されたもの。Microsoftから得られるものはVista用ではない。上記regsvr32で動かない場合にこれで再インストールの手はあるが、推奨できない。そのほか、作成する側としては、フォームの配置に注意しなければならない。VBで指定するコントロールの座標単位が何であるか微妙に謎だが、Vistaではこの基準が変わるらしく、同じサイズにならない。一般にはフォントが大きめに表示されるので、スペースを多めに取らなければならない。0213:2004(いわゆるJIS2004)に注意しなければならない。Unicodeアプリではそれほど問題ではないが、VB6はフォーム関連がANSIビルドの扱いになるのでJIS2004の文字を表示できない。JIS2004の文字はVistaのIMEで入力されてしまうらしい(ただし、表示は崩れるのでユーザが気づくことはできる)。「森鴎外」の「鴎」の旧字体とか。「鴎」の旧字体はUTF-16でサロゲートペアになるらしく、なおさら問題になる。Unicodeビルドができない以上どうしようもないが。VB6のString自体は実質BSTRであり、Unicode対応(ただしサロゲートペアには対応しておらず、UTF-16ではなくUCS2相当らしい)なのだが、なぜかフォームはOEM文字セットで動作するとのこと。マイクロソフトはどうしてこんな中途半端な仕様にしたのだろう...。Perl5.010001。