タイトル : Re^5: VB6 上で表示化け 投稿日 : 2018/10/12(Fri) 01:33 投稿者 : 魔界の仮面弁士
> > 正確なフォント名とフォントサイズが分かるなら、提示してもらえると助かります。 > フォント名は MS明朝、フォントサイズは 10 です。 それは≪正確な≫フォント名では無いように見えます。 "MS明朝" や "MS明朝" ではなく、 "MS 明朝" なのではありませんか? (英語表記では "MS Mincho") ちなみにプロポーショナル版の方は、 "MS P明朝" が正式表記です。(英語表記では "MS PMincho") ※多言語対応アプリケーションの場合、英語表記での指定をお奨めします。 たとえば下記の場合、Label1 や Label2 のフォント名はシステムに存在しないため、 代替フォント(たとえば、"MS Pゴシック" や "Arial" など)で表示される可能性があります。 Private Sub Form_Load() Label1.Font.Name = "MS明朝" Label2.Font.Name = "MS明朝" Label3.Font.Name = "MS 明朝" Label4.Font.Name = "MS Mincho" '下記が無いと、欧文フォント(Charset = 0)になってしまう Label1.Font.Charset = 128 Label2.Font.Charset = 128 Label3.Font.Charset = 128 Label4.Font.Charset = 128 Label1.Caption = Label1.Font.Name Label2.Caption = Label2.Font.Name Label3.Caption = Label3.Font.Name Label4.Caption = Label4.Font.Name End Sub > 起動時に日本語表示か英語表示かのフラグを読み込んで > フォントの名称やCharsetをプログラムで設定してメインフォームを表示します。 切り替えるための文字列情報は、どこから得ていますか? 外部ファイル? プログラム内に Const 等で埋め込み? もしも、VB6 の LoadResString 関数を用いて読み込んでいるのだとしたら、 ストリングテーブルの ID がズレているのでは無いでしょうか。 古いバージョンの exe は正常表示されているとのことなので、 古い exe を、埋め込みリソースを読めるアプリ(Visual Studio 6.0 など)で 開いてみて、文字列リソースの内容を比較してみると良いかもしれません。 また、多言語対応実装ということで「ロケールID」の扱いは大丈夫でしょうか。 たとえば、StrConv の第 3 引数などで使われる ID のことです。(GetUserDefaultLCID API など) https://msdn.microsoft.com/ja-jp/library/cc392381.aspx http://www1.kokusaika.jp/advisory/org/ja/vb_resource.html > 雑談用掲示板に貼り付けたように、デザイン画面上では正常に表示されています。 > おかしくなる前に作成した exe ファイルを起動して正常な画面を貼り付けます。 メニューの [ファイル(&F)] が、[終了(&F)] になっているのは『文字化け』とは違いそうですが、 その隣の [ヘルプ(&H)] が [ホル?把持長(&H)] は『文字化け』っぽいですね…。 プログラムで Caption を書き換えているようなので、 mnuHelp.Caption = 新しい文字列 の行を、 Dim raw() As Byte raw = 新しい文字列 mnuHelp.Caption = raw Dim dump As String With CreateObject("Microsoft.XMLDOM").createElement("h") .DataType = "bin.hex" .NodeTypedValue = raw dump = .Text End With MsgBox dump, vbInformation Or vbSystemModal, raw に置き換えて、そもそも想定通りの文字列を渡しているかどうかを、 文字コードのレベルから確認してみてはいかがでしょう。 |