タイトル : Re^6: Windowsのシステムで使用しているフォントの取得。 投稿日 : 2009/11/20(Fri) 17:44 投稿者 : 魔界の仮面弁士
画面上で使用可能なフォントは、 List1.Clear With Screen For n = 1 To .FontCount - 1 List1.AddItem .Fonts(n) Next End With のようにして一覧できます。“DLLから取得したフォント名”が、 この中にあるフォント名と一致しているかどうか確認してみてください。 なお、VB6 の標準コントロールは Unicode に対応していませんので、 使用可能な文字集合は、言語設定に依存することに注意してください。 また、コントロールの Font プロパティを設定する際には、 .Font.Charset の指定も必要になりますので、お忘れなく。 > > 日本語OSでは、システムフォントを取得しバイト型のまま(LOGFONTのlfFaceNameを) > 日本語OSでバイト型のまま各コントロールのFontに値を渡した場合、 > 期待通りフォントが変更されたと書きましたが、変更されていませんでした。 API に文字列を渡すときには、ANSI版/Unicode版 いずれの API を使うかによって コーディングが異なってきます。 実際に、どのようなコードを記述しているのかを明記してみてください。 今の状態では、コードに問題があるのか、記述に問題があるのか、環境依存の 問題なのか判断ができませんが、コピー & ペーストで検証可能なコードが提示されれば、 第三者によるテストが可能となるでしょう;少なくとも「日本語 OS」上でのテストが。 > 中国語版の場合、chrで変換した時点で"?"が混じった化けた状態のフォント名に たとえば何という数値を、どの文字に変換しようとしていますか? また、変換した結果をどのようにして確認しましたか? (VB 標準の TextBox/Label/MsgBox 等では、多言語文字を表現できません) Unicode 版 API が使えるなら、Chr 変換は不要かと思います。もし変換するにしても、 正しい文字であれば ChrW/AscW はほぼ損失無く相互変換できるはずです。 ANSI 版 API の場合には、StrConv に vbUnicode を渡すことで、 ANSI バイナリを VB の文字列に変換できるかと思います。 念のため、StrConv の第三引数も指定しておいた方が良いでしょう。 (私自身は、中文版で検証した事はありません) なお、各国語版のアプリ生成のために、IPDK も提供されていたりします。 残念ながら、SP6 対応版は提供されなかったようですが…。 http://msdn.microsoft.com/ja-jp/library/cc765234.aspx |