次の方法で共有


CMFCToolBarFontComboBox クラス

ユーザーがシステム フォントの一覧からフォントを選択できるようにするコンボ ボックス コントロールを含むツール バー ボタン。

構文

class CMFCToolBarFontComboBox : public CMFCToolBarComboBoxButton

メンバー

保護されたコンストラクター

名前 説明
CMFCToolBarFontComboBox::CMFCToolBarFontComboBox CMFCToolBarFontComboBox オブジェクトを構築します。

パブリック メソッド

名前 説明
CMFCToolBarFontComboBox::GetFontDesc コンボ ボックス内の指定したインデックスの CMFCFontInfo オブジェクトへのポインターを返します。
CMFCToolBarFontComboBox::SetFont フォントの名前、またはフォントのプレフィックスと文字セットに従って、フォント コンボ ボックス内のフォントを選択します。

データ メンバー

CMFCToolBarFontComboBox::m_nFontHeight
フォント コンボ ボックス内の文字の高さ。

解説

ツール バーにフォント コンボ ボックス ボタンを追加するには、次の手順に従います。

  1. 親ツール バー リソースでボタンのダミー リソース ID を予約します。

  2. CMFCToolBarFontComboBox オブジェクトを構築します。

  3. AFX_WM_RESETTOOLBAR メッセージを処理するメッセージ ハンドラーで、 CMFCToolBar::ReplaceButton を使用して、元のボタンを新しいコンボ ボックス ボタンに置き換えます。

  4. CMFCToolBarFontComboBox::SetFont メソッドを使用して、コンボ ボックスで選択されているフォントをドキュメント内のフォントと同期します。

ドキュメントのフォントをコンボ ボックスで選択したフォントと同期するには、 CMFCToolBarFontComboBox::GetFontDesc メソッドを使用して選択したフォントの属性を取得し、それらの属性を使用して CFont Class オブジェクトを作成します。

フォント コンボ ボックス ボタンは、Win32 関数 EnumFontFamiliesEx を呼び出して、システムで使用できる画面フォントとプリンター フォントを決定します。

継承階層

CObject

CMFCToolBarButton

CMFCToolBarComboBoxButton

CMFCToolBarFontComboBox

要件

Header: afxtoolbarfontcombobox.h

CMFCToolBarFontComboBox::CMFCToolBarFontComboBox

CMFCToolBarFontComboBox オブジェクトを構築します。

public:
CMFCToolBarFontComboBox(
    UINT uiID,
    int iImage,
    int nFontType = DEVICE_FONTTYPE | RASTER_FONTTYPE | TRUETYPE_FONTTYPE,
    BYTE nCharSet = DEFAULT_CHARSET,
    DWORD dwStyle = CBS_DROPDOWN,
    int iWidth = 0,
    BYTE nPitchAndFamily = DEFAULT_PITCH);

protected:
CMFCToolBarFontComboBox(
    CObList* pLstFontsExternal,
    int nFontType,
    BYTE nCharSet,
    BYTE nPitchAndFamily);

CMFCToolBarFontComboBox();

パラメーター

uiID
[in]コンボ ボックスのコマンド ID。

iImage
[in]ツール バー イメージの 0 から始まるインデックス。 イメージは、CMFCToolBarImages クラスCMFCToolBar クラスクラスが保持するオブジェクトにあります。

nFontType
[in]コンボ ボックスに含まれるフォントの種類。 このパラメーターには、次の値の組み合わせ (ブール型 OR) を指定できます。

DEVICE_FONTTYPE

RASTER_FONTTYPE

TRUETYPE_FONTTYPE

nCharSet
[in]DEFAULT_CHARSETに設定すると、コンボ ボックスには、すべての文字セット内のすべての一意の名前付きフォントが含まれます。 (同じ名前のフォントが 2 つある場合、コンボ ボックスにはそのうちの 1 つが含まれます)。有効な文字セット値に設定すると、コンボ ボックスには指定した文字セット内のフォントのみが含まれます。 使用可能な文字セットの一覧については、 LOGFONT を参照してください。

dwStyle
[in]コンボ ボックスのスタイル。 ( を参照してください。コンボ ボックスのスタイル)

iWidth
[in]編集コントロールの幅 (ピクセル単位)。

nPitchAndFamily
[in]DEFAULT_PITCHに設定すると、コンボ ボックスにはピッチに関係なくフォントが含まれます。 FIXED_PITCHまたはVARIABLE_PITCHに設定すると、コンボ ボックスにはそのピッチの種類のフォントのみが含まれます。 現在、フォント ファミリに基づくフィルター処理はサポートされていません。

pLstFontsExternal
[out]使用可能なフォントを格納する CObList クラス オブジェクトへのポインター。

解説

通常、 CMFCToolBarFontComboBox オブジェクトは、使用可能なフォントの一覧を 1 つの共有 CObList オブジェクトに格納します。 コンストラクターの 2 番目のオーバーロードを使用し、pLstFontsExternal への有効なポインターを指定すると、そのCMFCToolBarFontComboBox オブジェクトは代わりに、pLstFontsExternalが指すCObListを使用可能なフォントで埋めます。

次の例では、 CMFCToolBarFontComboBox オブジェクトを構築する方法を示します。 このコード スニペットは、 Word パッド サンプルの一部です。

CMFCToolBarFontComboBox *CFormatBar::CreateFontComboButton()
{
   // CSize m_szBaseUnits
   return new CMFCToolBarFontComboBox(IDC_FONTNAME,
                                      GetCmdMgr()->GetCmdImage(IDC_FONTNAME, FALSE),
                                      TRUETYPE_FONTTYPE | DEVICE_FONTTYPE,
                                      DEFAULT_CHARSET,
                                      WS_VISIBLE | WS_TABSTOP | WS_VSCROLL | CBS_DROPDOWN |
                                          CBS_AUTOHSCROLL | CBS_HASSTRINGS | CBS_OWNERDRAWFIXED,
                                      (3 * LF_FACESIZE * m_szBaseUnits.cx) / 2);
}

CMFCToolBarFontComboBox::GetFontDesc

コンボ ボックス内の指定したインデックスの CMFCFontInfo オブジェクトへのポインターを返します。

const CMFCFontInfo* GetFontDesc(int iIndex=-1) const;

パラメーター

iIndex
[in]コンボ ボックス項目の 0 から始まるインデックスを指定します。

戻り値

CMFCFontInfo オブジェクトを指すポインターです。 iIndex で有効な項目インデックスが指定されていない場合、戻り値は NULL になります。

CMFCToolBarFontComboBox::m_nFontHeight

コンボ ボックスに所有者描画スタイルがある場合のフォント コンボ ボックスの文字の高さをピクセル単位で指定します。

static int m_nFontHeight

解説

m_nFontHeight変数が 0 の場合、高さはコンボ ボックスの既定のフォントに従って自動的に計算されます。 高さは、ベースラインの上の文字の上昇とベースラインの下の文字の降下の両方を含みます。

CMFCToolBarFontComboBox::SetFont

パラメーターで指定されているフォント名と文字セットに従って、フォント コンボ ボックス内のフォントを選択します。

BOOL SetFont(
    LPCTSTR lpszName,
    BYTE nCharSet=DEFAULT_CHARSET,
    BOOL bExact=FALSE);

パラメーター

lpszName
[in]フォント名またはプレフィックスを指定します。

nCharSet
[in]文字セットを指定します。

bExact
[in] lpszName にフォント名またはフォント プレフィックスを含めるかどうかを指定します。

戻り値

フォントが正常に選択された場合は 0 以外。それ以外の場合は 0。

解説

bExact が TRUE の場合、このメソッドは、lpszName として指定した名前と完全に一致するフォントを選択します。 bExact が FALSE の場合、このメソッドは、lpszName として指定したテキストで始まり、nCharSet として指定した文字セットを使用するフォントを選択します。 nCharSetがDEFAULT_CHARSETに設定されている場合、文字セットは無視され、フォントの選択にはlpszNameのみが使用されます。

関連項目

階層図
クラス
CMFCToolBar クラス
CMFCToolBarButton クラス
CMFCToolBarComboBoxButton クラス
CMFCFontInfo クラス
CMFCToolBar::ReplaceButton
チュートリアル: ツール バーへのコントロールの追加