VB6におけるCommonDialogの「文字セット」

解決


amuk  2006-11-01 06:20:04  No: 133944

開発環境はVB6.0 Windows XP(日本語)です。

VB6.0でCommonDialogを使用してフォントを設定させるプログラムを以下のように組みます。

CommonDialog1.flags = cdlCFBoth
CommonDialog1.FontName = Text1.FontName
CommonDialog1.FontSize = Text1.FontSize
CommonDialog1.FontBold = Text1.FontBold
CommonDialog1.FontItalic = Text1.FontItalic
CommonDialog1.ShowFont

以上の設定でCommonDialogは「フォント名」「スタイル」「サイズ」を任意に指定できますが、
「文字セット」の部分を指定することができません。
また、CommonDialogから指定したフォントの値を取得できますが
「文字セット」の部分に関しては得る事ができません。

例えば、日本語OSで中国語のNSIMSUNフォントを指定し、
さらに文字セットをCHINESE_GB2312に指定します。
しかし、「文字セット」の情報を取得できないので
NSIMSUNフォントのCHINESE_GB2312を使用したくても使用できません。

「文字セット」の情報の取得方法を教えていただけますでしょうか?


魔界の仮面弁士  2006-11-01 07:20:26  No: 133945

CommonDialog コントロールからの直接取得はできません。
かわりに、API を使用するようにしてください。

http://support.microsoft.com/kb/625288/it

# 上記はイタリア語です(英語版・日本語版では公開されていませんでした)が、
# コードは万国共通なので、頑張って読み取ってください。


amuk  2006-11-01 09:03:47  No: 133946

早速、リンク先のプログラムを実行して解読してみました。
CommonDialogからのlgFont.lfCharSetで文字セットを得られることがわかりました。

ここで追加の質問になりますが、
CommonDialogを開くときに
「フォント名」「スタイル」「サイズ」「文字セット」を指定して開く事はできないでしょうか?
CommonDialogを開いたときに現在の設定値を表示したいのです。
現状では未指定の状態で開いてしまいます。


魔界の仮面弁士  2006-11-01 09:58:09  No: 133947

CF_INITTOLOGFONTSTRUCT とか。


amuk  2006-11-02 08:02:14  No: 133948

ありがとうございます。
これで目的を達成できそうです。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加