CHOOSEFONT

ChooseFont関数を使用してフォント選択ダイアログボックスを表示する際の初期化情報を格納します。ユーザーがダイアログボックスを閉じると、ユーザーに選択されたフォントの情報がこの構造体に格納されます。

typedef struct {
    DWORD        lStructSize;    // 構造体サイズ(=60)
    HWND         hwndOwner;      // オーナーウィンドウハンドル
    HDC          hDC;            // プリンタのデバイスハンドル
    LPLOGFONT    lpLogFont;      // LOGFONT構造体のアドレス
    INT          iPointSize;     // サイズ(ポイント数)
    DWORD        Flags;          // フラグ
    DWORD        rgbColors;      // 文字色
    LPARAM       lCustData;      // アプリケーション定義値
    LPCFHOOKPROC lpfnHook;       // フックプロシージャアドレス
    LPTCSTR      lpTemplateName; // テンプレートリソース名
    HINSTANCE    hInstance;      // モジュールインスタンス
    LPTSTR       lpszStyle;      // スタイルデータ
    WORD         nFontType;      // フォントタイプ
    WORD         ___MISSING_ALIGNMENT__; 
    INT          nSizeMin;       // サイズ最小値
    INT          nSizeMax;       // サイズ最大値
} CHOOSEFONT, *LPCHOOSEFONT;

メンバ

lStructSize

この構造体のサイズをバイト単位で指定します。60を指定します。

hwndOwner

ダイアログボックスのオーナーウィンドウのハンドルを指定します。

0 (NULL) を指定すると、オーナーウィンドウを持たないダイアログボックスが作成されます。

hDC

プリンタのデバイスコンテキスト(または情報コンテキスト)のハンドルを指定します。ここで指定したプリンタがサポートするフォントがリスト表示されます。

このメンバは、FlagsメンバでCF_PRINTERFONTSまたはCF_BOTHが指定されている場合のみ有効です。それ以外の場合は、このメンバは無視されます。

lpLogFont

LOGFONT構造体のアドレスを指定します。

FlagsメンバにCF_INITTOLOGFONTSTRUCTを指定した場合は、この構造体で指定したフォントに最も近いフォントが選択されている状態でダイアログボックスが初期化されます。

ユーザーによってダイアログボックスの [OK] ボタンが押されると、ChooseFont関数はこの構造体に選択されたフォントの情報を格納します。

iPointSize

フォントサイズを1/10ポイント単位で指定します。ユーザーがダイアログボックスを閉じた後に、設定されたフォントサイズが格納されます。

Flags

オプションフラグを指定します。以下の値の組み合わせで指定します。

0x00000001 (CF_SCREENFONTS)

システムがサポートしているスクリーンフォントのみがリスト表示されます。

0x00000002 (CF_PRINTERFONTS)

hDCメンバで指定されたデバイスコンテキスト(または情報コンテキスト)に関連付けられているプリンタがサポートするフォントのみがリスト表示されます。

0x00000003 (CF_BOTH)

システムがサポートしているスクリーンフォントとhDCメンバで指定されたデバイスコンテキスト(または情報コンテキスト)に関連付けられているプリンタがサポートするフォントがリスト表示されます。このフラグはCF_SCREENFONTSCF_PRINTERFONTSの組み合わせです。

0x00000004 (CF_SHOWHELP)

ヘルプボタンを表示します。hwndOwnerメンバには、ヘルプボタンが押されたときに送られるHELPMSGSTRING ("commdlg_help") 登録メッセージを受け取るウィンドウを指定しなければなりません。

0x00000008 (CF_ENABLEHOOK)

lpfnHookメンバで指定されたフックプロシージャを有効にします。

0x00000010 (CF_ENABLETEMPLATE)

hInstanceメンバとlpTemplateNameメンバで指定されたダイアログボックステンプレートをデフォルトテンプレートの代わりに使用します。

0x00000020 (CF_ENABLETEMPLATEHANDLE)

hInstanceメンバで指定されたメモリブロックに含まれるダイアログボックステンプレートを使用します。lpTemplateNameメンバは無視されます。

0x00000040 (CF_INITTOLOGFONTSTRUCT)

ダイアログボックスをlpLogFontメンバが指し示すLOGFONT構造体で指定されたフォントが選択された状態に初期化します。

0x00000080 (CF_USESTYLE)

フォントスタイルコンボボックスをlpszStyleメンバが指し示すバッファで指定されたスタイルデータで初期化します。ユーザーがダイアログボックスを閉じた後に、このバッファにスタイルデータが格納されます。

0x00000100 (CF_EFFECTS)

ユーザーが打ち消し線・下線・文字色を指定できるようにします。このフラグが指定されると、rgbColorsに初期の文字色を指定することができます。また、lpLogFontメンバが指し示すLOGFONT構造体のlfStrikeOutメンバとlfUnderlineメンバに初期の設定を指定することができます。ユーザーがダイアログボックスを閉じた後に、これらのメンバに選択された設定が格納されます。

0x00000200 (CF_APPLY)

ダイアログボックスに [適用] ボタンを表示します。フックプロシージャ中でWM_COMMANDメッセージを処理する必要があります。フックプロシージャは、ダイアログボックスにWM_CHOOSEFONT_GETLOGFONTメッセージを送信して、現在選択されているフォント情報が格納されたLOGFONT構造体を取得することができます。

0x00000400 (CF_SCRIPTSONLY, CF_ANSIONLY)

非OEM文字セットやシンボル文字セットを選択できるようにします。

0x00000800 (CF_NOVECTORFONTS, CF_NOOEMFONTS)

ベクトルフォントを選択できないようにします。

0x00001000 (CF_NOSIMULATIONS)

GDIフォントシミュレーションを行なわないようにします。

0x00002000 (CF_LIMITSIZE)

nSizeMinメンバおよびnSizeMaxメンバで、フォントサイズの範囲を制限します。

0x00004000 (CF_FIXEDPITCHONLY)

固定ピッチフォントのみを選択できるようにします。

0x00008000 (CF_WYSIWYG)

ディスプレイとプリンタの両方で使用可能なフォントのみを選択できるようにします。CF_BOTHCF_SCALABLEONLYをともに指定しなければなりません。

0x00010000 (CF_FORCEFONTEXIST)

存在しないフォントやスタイルをユーザーが選択しようした場合には、関数がエラーを返すようにします。

0x00020000 (CF_SCALABLEONLY)

スケーリング可能なフォント(ベクトルフォント、スケーリング可能プリンタフォント、TrueTypeフォント、およびその他の技術によってスケーリング可能なフォント)のみを選択できるようにします。

0x00040000 (CF_TTONLY)

TrueTypeフォントのみを選択できるようにします。

0x00080000 (CF_NOFACESEL)

ダイアログボックスの初期状態を設定するのにLOGFONT構造体の情報を使用する場合、初期状態でフォント名のコンボボックスに何も選択されていないようにします。

0x00100000 (CF_NOSTYLESEL)

ダイアログボックスの初期状態を設定するのにLOGFONT構造体の情報を使用する場合、初期状態でフォントスタイルのコンボボックスに何も選択されていないようにします。

0x00200000 (CF_NOSIZESEL)

ダイアログボックスの初期状態を設定するのにLOGFONT構造体の情報を使用する場合、初期状態でフォントサイズのコンボボックスに何も選択されていないようにします。

0x00400000 (CF_SELECTSCRIPT)

LOGFONT構造体のlfCharSetメンバで指定された文字セットを持つフォントのみが表示されます。文字セットコンボボックスで指定される文字セットをユーザーが変更することができないようになります。

0x00800000 (CF_NOSCRIPTSEL)

文字セットのコンボボックスを無効にします。ユーザーがダイアログボックスを閉じた後に、LOGFONT構造体のlfCharSetメンバには1 (DEFAULT_CHARSET) が格納されます。

0x01000000 (CF_NOVERTFONTS)

水平方向のフォントのみがリスト表示されます。

rgbColors

FlagsメンバでCF_EFFECTSを指定した場合は、文字色の初期値をRGB (COLORREF) 値で指定します。ユーザーがダイアログボックスを閉じた後に、ユーザーに選択された文字色のRGB値がこのメンバに格納されます。

lCustData

lpfnHookメンバで指定されたフックプロシージャに渡すアプリケーション定義の値を指定します。システムがフックプロシージャにWM_INITDIALOGメッセージを送るとき、このメッセージのlParamパラメータは、ダイアログボックス作成時に指定されたCHOOSEFONT構造体のアドレスになります。フックプロシージャは、そのアドレスで指定された構造体を参照してlCustDataメンバの値を取得することができます。

lpfnHook

CFHookProcフックプロシージャのアドレスを指定します。

FlagsメンバにCF_ENABLEHOOKフラグが指定されていない場合にはこのメンバは無視されます。

lpTemplateName

hInstanceメンバで指定されたモジュールに含まれるダイアログボックスのテンプレートリソースの名前を表す文字列のアドレスを指定します。番号付けされたダイアログボックスリソースの場合は、その整数値を指定します。

FlagsメンバにCF_ENABLETEMPLATEが指定されていない場合にはこのメンバは無視されます。

hInstance

FlagsメンバにCF_ENABLETEMPLATEHANDLEを指定した場合は、ダイアログボックスのテンプレートリソースを含むメモリオブジェクトのハンドルを指定します。

FlagsメンバにCF_ENABLETEMPLATEを指定した場合は、lpTemplateNameメンバで指定された名前のダイアログボックスのテンプレートリソースを含むモジュールのハンドルを指定します。

それ以外の場合にはこのメンバは無視されます。

lpszStyle

スタイルデータを含むバッファのアドレスを指定します。FlagsメンバにCF_USESTYLEを指定した場合は、このバッファのデータを使用してフォントスタイルコンボボックスが初期化されます。ユーザーがダイアログボックスを閉じた後に、フォントスタイルコンボボックスの文字列がこのバッファに格納されます。

nFontType

選択されたフォントのタイプが格納されます。以下の値の組み合わせになります。

0x0100 (BOLD_FONTTYPE)

フォントは太字体のフォントです。この情報は、LOGFONT構造体のlfWeightメンバにも反映され、FW_BOLDと同等になります。

0x0200 (ITALIC_FONTTYPE)

イタリック体のフォント属性が設定されます。この情報は、LOGFONT構造体のlfItalicメンバにも反映されます。

0x0400 (REGULAR_FONTTYPE)

フォントは通常の太さのフォントです。この情報は、LOGFONT構造体のlfWeightメンバにも反映され、FW_REGULARと同等になります。

0x2000 (SCREEN_FONTTYPE)

フォントはスクリーンフォントです。

0x4000 (PRINTER_FONTTYPE)

フォントはプリンタフォントです。

0x8000 (SIMULATED_FONTTYPE)

フォントはGDIによってシミュレートされます。

nSizeMin

ユーザーが選択可能なフォントサイズ(ポイント数)の最小値を指定します。FlagsメンバにCF_LIMITSIZEを指定した場合にのみ有効です。

nSizeMax

ユーザーが選択可能なフォントサイズ(ポイント数)の最大値を指定します。FlagsメンバにCF_LIMITSIZEを指定した場合にのみ有効です。

対応情報

Windows 95 以降 / Windows NT 4.0 以降

変数との対応

HSP 変数 メンバ
メンバ名 オフセット サイズ
chfont.0 lStructSize ( = 60 ) 0 4
chfont.1 hwndOwner 4 4
chfont.2 hDC 8 4
chfont.3 lpLogFont 12 4
chfont.4 iPointSize 16 4
chfont.5 Flags 20 4
chfont.6 rgbColors 24 4
chfont.7 lCustData 28 4
chfont.8 lpfnHook 32 4
chfont.9 lpTemplateName 36 4
chfont.10 hInstance 40 4
chfont.11 lpszStyle 44 4
chfont.12 下位ワード nFontType 48 2
上位ワード 未使用(アライメント処理) 50 2
chfont.13 nSizeMin 52 4
chfont.14 nSizeMax 56 4