VB6でのEXEが文字化け?
投稿者 流れ者  (社会人)
投稿日時
2009/9/8 02:34:02
考えられる原因の一つは
ソフトで使われているフォントが家の環境に無い
でしょうか。
あと疑問ですが、VB6のEXEとなると、ランタイムが必要なはずですが、
家の環境にVB6ランタイムは入っていますか?
ソフトで使われているフォントが家の環境に無い
でしょうか。
あと疑問ですが、VB6のEXEとなると、ランタイムが必要なはずですが、
家の環境にVB6ランタイムは入っていますか?
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2009/9/8 06:34:08
可能性1)
学校のPCは、画面が 120dpi に設定されていて、
自宅のPCは、標準の 96dpi のままになっている。
http://support.microsoft.com/kb/880503/ja
確認のため、学校と自宅のそれぞれで、
可能性2)
学校の PC は開発環境なので、当然、VB6 のランタイムが揃っているが、
自宅の PC には VB6 のランタイムをインストールしたことがない。そのため、
OS 自体が持つ、基本ライブラリのみで実行されているため、日本語版VB6の
既定のフォントである「MS Pゴシック, 9pt」ではなく、
「MS Sans Serif, 8.25Pt」や「Tahoma, 8.25pt」などになっている。
確認のため、学校と自宅のそれぞれで、
学校のPCは、画面が 120dpi に設定されていて、
自宅のPCは、標準の 96dpi のままになっている。
http://support.microsoft.com/kb/880503/ja
確認のため、学校と自宅のそれぞれで、
Label1.Caption = CStr(1440 / Screen.TwipsPerPixelX) & "dpi"
という処理を組み込んだアプリを実行してみてください。可能性2)
学校の PC は開発環境なので、当然、VB6 のランタイムが揃っているが、
自宅の PC には VB6 のランタイムをインストールしたことがない。そのため、
OS 自体が持つ、基本ライブラリのみで実行されているため、日本語版VB6の
既定のフォントである「MS Pゴシック, 9pt」ではなく、
「MS Sans Serif, 8.25Pt」や「Tahoma, 8.25pt」などになっている。
確認のため、学校と自宅のそれぞれで、
Label2.Caption = Me.Font.Name & ", " & Me.Font.Size & "pt, Charset=" & Me.Font.Charset
という処理を組み込んだアプリを実行してみてください。
投稿者 Knyacky  (中学生)
投稿日時
2009/9/10 02:36:41
>家の環境にVB6ランタイムは入っていますか?
これが原因でした。手に入れるにはどこから取ればいいですか?
これが原因でした。手に入れるにはどこから取ればいいですか?
投稿者 Knyacky  (中学生)
投稿日時
2009/9/10 02:48:13
そういえば、不思議なことに文字化けしないソフトもあるんです。
例えば、Visual Basic中学校の投稿プログラムのPANEKURA。
これは、フォントのボールド・イタリックが切れただけで、ちゃんと読めました。
一体何が違うのですか?
例えば、Visual Basic中学校の投稿プログラムのPANEKURA。
これは、フォントのボールド・イタリックが切れただけで、ちゃんと読めました。
一体何が違うのですか?
投稿者 流れ者  (社会人)
投稿日時
2009/9/10 02:55:06
>>家の環境にVB6ランタイムは入っていますか?
>
>これが原因でした。手に入れるにはどこから取ればいいですか?
マイクロソフトのHPからダウンロードできます。
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=7B9BA261-7A9C-43E7-9117-F673077FFB3C
>
>これが原因でした。手に入れるにはどこから取ればいいですか?
マイクロソフトのHPからダウンロードできます。
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=7B9BA261-7A9C-43E7-9117-F673077FFB3C
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2009/9/10 07:19:15
ランタイムをきちんとインストールしておけば、こういった問題は発生しません。
EXE のみを配布するのではなく、VB6 付属の「ディストリビューション ウィザード」あるいは
「Visual Studio Installer」で、作成したアプリのインストーラを作ってみてください。
一度ランタイムを配布してしまえば、EXE のみでも動作しますけれどね。
(なお、ランタイム単独での再頒布は禁止されています)
> 文字化けしないソフトもあるんです。
ランタイムのひとつ VB6JP.DLL が無い場合、英語版として実行されます。
この場合、何もフォントを設定しないコントロールについては、先述したように
「MS Sans Serif」の 8.25ポイント (Charset = 0) が利用されます。
これは欧文フォントであるため、日本語は文字化けしてしまいます。
しかし、VB6JP.DLL がある場合には、こちらも先述したように、
「MS Pゴシック」の 9ポイント (Charset = 128) が利用されます。
既定のフォントは通常、それぞれの国で利用されるもっとも一般的な
フォントが割り当てられています。他の国では、このようなファイル名です。
VB6JP.DLL 日本
VB6FR.DLL フランス
VB6DE.DLL ドイツ
VB6IT.DLL イタリア
VB6KO.DLL 韓国
VB6ES.DLL スペイン
VB6CHS.dll 中国(簡体字)
VB6CHT.dll 中国(繁体字)
> 一体何が違うのですか?
デザイン時(もしくは実行時)に、フォントを設定してあるコントロールについては、
既定のフォントではなく、指定したフォントが使用されるからです。
# なお、指定したフォントが実行環境に無い場合には、自動的に代替フォントが
# 利用される仕様になっています。
EXE のみを配布するのではなく、VB6 付属の「ディストリビューション ウィザード」あるいは
「Visual Studio Installer」で、作成したアプリのインストーラを作ってみてください。
一度ランタイムを配布してしまえば、EXE のみでも動作しますけれどね。
(なお、ランタイム単独での再頒布は禁止されています)
> 文字化けしないソフトもあるんです。
ランタイムのひとつ VB6JP.DLL が無い場合、英語版として実行されます。
この場合、何もフォントを設定しないコントロールについては、先述したように
「MS Sans Serif」の 8.25ポイント (Charset = 0) が利用されます。
これは欧文フォントであるため、日本語は文字化けしてしまいます。
しかし、VB6JP.DLL がある場合には、こちらも先述したように、
「MS Pゴシック」の 9ポイント (Charset = 128) が利用されます。
既定のフォントは通常、それぞれの国で利用されるもっとも一般的な
フォントが割り当てられています。他の国では、このようなファイル名です。
VB6JP.DLL 日本
VB6FR.DLL フランス
VB6DE.DLL ドイツ
VB6IT.DLL イタリア
VB6KO.DLL 韓国
VB6ES.DLL スペイン
VB6CHS.dll 中国(簡体字)
VB6CHT.dll 中国(繁体字)
> 一体何が違うのですか?
デザイン時(もしくは実行時)に、フォントを設定してあるコントロールについては、
既定のフォントではなく、指定したフォントが使用されるからです。
# なお、指定したフォントが実行環境に無い場合には、自動的に代替フォントが
# 利用される仕様になっています。
投稿者 Knyacky  (中学生)
投稿日時
2009/9/13 21:26:43
>EXE のみを配布するのではなく、VB6 付属の「ディストリビューション ウィザード」あるいは
>「Visual Studio Installer」で、作成したアプリのインストーラを作ってみてください。
じつは、ディストリビュージョンウィザードは、起動すると
『予期せぬエラーが発生しました。終了します。』と出てきて使えないので、EXEだけ配布、という事態になっているのです。
>「Visual Studio Installer」で、作成したアプリのインストーラを作ってみてください。
じつは、ディストリビュージョンウィザードは、起動すると
『予期せぬエラーが発生しました。終了します。』と出てきて使えないので、EXEだけ配布、という事態になっているのです。
Captionプロパティに入っているコントロール(たとえばラベル)が文字化けします。
そうでなくても、文字が小さくなります。(たとえばコマンドボタン)
これはどういうことなのでしょうか?
家のパソコン
OS:Windows XP Professional SP3
プログラム環境:VB2008,VC#2008,VC++2008
学校のパソコン
OS:Windows XP Professional SP3
プログラム環境:VB6