フォント・ダイアログを使う


 フォントの設定を行うためのコモンダイアログです。「CFontDialogクラス」を使用します。
 以下に、その概要を記述します。

【生成書式】
  CFontDialog(LPLOGFONT lplfInitial = NULL,                    //選択結果を入れるLOGFONT構造体
               DWORD dwFlags = CF_EFFECTS | CF_SCREENFONTS,    //カスタマイズフラグ
               CDC* pdcPrinter = NULL,                         //プリンタのデバイスコンテキストへのポインタ
               CWnd* pParentWnd = NULL );                      //親ウィンドウ

 カスタマイズフラグ( DWORD dwFlags ):
    このフラグはダイアログボックスの機能と概観をカスタマイズするためのものです。
    主なdwFlagsの値を示します。
    
        ----------------------------------------------------------------------------
    | dwFlags値              | 意味                                            |
        ----------------------------------------------------------------------------
    | CF_APPLY               | 「更新」ボタンを有効                            |
        ----------------------------------------------------------------------------
        | CF_BOTH                |プリンタをスクリーンフォントのリスト表示         |
        ----------------------------------------------------------------------------
        | CF_TTONLY              |TrueTypeフォントのみ有効                         |
        ----------------------------------------------------------------------------
        | CF_EFFECTS             |取消線、下線、カラーの各機能を有効               |
        ----------------------------------------------------------------------------
        | CF_FIXEDPITCHONLY      |固定ピッチフォントのみ選択                       |
        ----------------------------------------------------------------------------
        | CF_INITTOLOGFONTSTRUCT |LOGFONT構造体で初期化                            |
        ----------------------------------------------------------------------------
        | CF_LIMITSIZE           |nSizeMin、nSizeMaxによる指定を有効               |
        ----------------------------------------------------------------------------
        | CF_PRINTERFONTS        |プリンタ・フォントのみ有効                       |
        ----------------------------------------------------------------------------
        | CF_SCALABLEONLY        |スケーラブル・フォントのみ有効                   |
        ----------------------------------------------------------------------------
        | CF_SCREENFONTS         |スクリーン・フォントのみ有効                     |
        ----------------------------------------------------------------------------
        | CF_SCRIPTSONLY         |非OEMセットとシンボルセットを選択可能            |
        ----------------------------------------------------------------------------
        | CF_SHOWHELP            |「ヘルプ」ボタンを表示する                       |
        ----------------------------------------------------------------------------
        | CF_WYSIWYG             |プリンタと画面の両方で使えるフォントのみ選択可能 |
        ----------------------------------------------------------------------------

【ダイアログボックスの外観】
  m_cfメンバ変数(CHOOSEFONT型構造体)を調整すると、表示されるダイアログボックスの外観を細かく
調整することが出来ます。

  「CHOOSEFONT型構造体」
     typedef struct {
         DWORD        lStructSize;       //構造体のサイズ(単位:Byte)
         HWND         hwndOwner;            //親ウィンドウ(オーナーウィンド)のハンドル
         HDC          hDC;                  //プリンタのデバイスコンテキスト
         LPLOGFONT    lpLogFont;            //LOGFONT構造体へのポインタ
         INT          iPointSize;           //フォントのサイズ(1/10ポイント単位)
         DWORD        Flags;                //初期化設定フラグ
         DWORD        rgbColors;            //テキストカラーのRGB
         LPARAM       lCustData;            //アプリケーション定義データ
         LPCFHOOKPROC lpfnHook;             //フック関数のポインタ
         LPCTSTR      lpTemplateName;       //ダイアログボックスの名前
         HINSTANCE    hInstance;            //インスタンスハンドル
         LPTSTR       lpszStyle;            //スタイルデータ
         WORD         nFontType;            //フォントタイプ
         WORD         ___MISSING_ALIGNMENT__;  //使用しない
         INT          nSizeMin;             //選択可能な最小ポイント・サイズ
         INT          nSizeMax;             //選択可能な最大ポイント・サイズ
     } CHOOSEFONT; 

【結果の取得】
  LOGFONT構造体に選択したフォントなどの結果が入ります。従って、この構造体を直接参照すれば
結果を取得することが出来ます。また、フォント情報取得用の関数による取得も可能です。

  「LOGFONT構造体」
    typedef struct tagLOGFONT { 
        LONG lfHeight;                  //高さ
        LONG lfWidth;                   //幅
        LONG lfEscapement;              //文字送り(
        LONG lfOrientation;             //方位
        LONG lfWeight;                  //文字の太さ
        BYTE lfItalic;                  //斜体
        BYTE lfUnderline;               //下線
        BYTE lfStrikeOut;               //取消線
        BYTE lfCharSet;                 //キャラクターセット(ANSI,OEM,etc)
        BYTE lfOutPrecision;            //
        BYTE lfClipPrecision;           //
        BYTE lfQuality;                 //
        BYTE lfPitchAndFamily;          //
        TCHAR lfFaceName[LF_FACESIZE];  //
    } LOGFONT; 

    「フォント情報取得用の関数」
     ----------------------------------------------------------------------------
   | 関数名                 | 説明                                            |
     ----------------------------------------------------------------------------
   | GetCurrentFont         |フォント情報を取得                               |
     ----------------------------------------------------------------------------
     | GetFaceName            |フォントの書体を返す                             |
     ----------------------------------------------------------------------------
     | GetStyleName           |フォントのスタイル名を返す                       |
     ----------------------------------------------------------------------------
     | GetSize                |フォントのポイントサイズ                         |
     ----------------------------------------------------------------------------
     | GetColor               |フォントのカラー                                 |
     ----------------------------------------------------------------------------
     | GetWeight              |フォントの太さ                                   |
     ----------------------------------------------------------------------------
     | IsStrikeOut            |取消線付かどうかを返す                           |
     ----------------------------------------------------------------------------
     | IsUnderline            |下線付かどうかを返す                             |
     ----------------------------------------------------------------------------
     | IsBold                 |太字かどうかを返す                               |
     ----------------------------------------------------------------------------
     | IsItalic               |斜体かどうかを返す                               |
     ----------------------------------------------------------------------------