antenn-a
company profile

MFC航海日記 二十五日(フォントの選択)

今回は、フォントの選択と実装について触れたいと思う。 フォントの選択には「CFontDialog」というコモンダイアログを生成して、選択させる事になる。 勿論全てを自前で行う事は可能であるが、構造体を渡すだけでフォントの選択をさせる事が出来るので、このコモンダイアログを用いるのが手っ取り早い方法である。

prev

ここで準備を紹介したい。
まずこのコモンダイアログを使用するには「LOGFONT」なる構造体を作らなければならない。 この構造体についてはヘルプを見たほうが分かると思うのでそちらに任せたいと思う。

ここで注意したいのは、CFontのオブジェクトはバックアップが効かないという点である。

もしフォントのバックアップやフォンと情報をメンバとして取っておく事を考えるとすると、LOGFONT構造体の形でしか残す事が出来ないのである。 筆者は最初にフォントを扱ったときにこれが分からず(よくヘルプを見なかった為だが)非常に困った事がある。

逆にいうとこれさえ分かれば後は簡単である。 基本的に構造体に必要なデータを入力して引数に代入してあげれば良いだけである。
以下にLOGFONTの初期化例を挙げる
    LogFont.lfHeight = -15;
    LogFont.lfWidth = 0;
    LogFont.lfEscapement = 0;
    LogFont.lfOrientation = 0;
    LogFont.lfWeight = 400;
    LogFont.lfItalic = FALSE;
    LogFont.lfUnderline = FALSE;
    LogFont.lfStrikeOut = FALSE;
    LogFont.lfCharSet = 128;
    LogFont.lfOutPrecision = 3;
    LogFont.lfClipPrecision = 2;
    LogFont.lfQuality = 1;
    LogFont.lfPitchAndFamily = 17;

prev

ここからは実験していないので確証ではないのだが、ヘルプによると「ダイアログの初期化は構築してから表示するまでに行う事」といった記述がある。 従って、タイミングとしては
    CFontDialog CFDlg( &logfont, CF_EFFECTS | CF_SCREENFONTS );
    //Dialogの初期化
    CFDlg.m_cf.lpLogFont = &logfont;
    CFDlg.DoModal();
という順番になるのでは?と思う。

prev

なんだか、今回は実に身の無い紹介になってしまったような気がする。 うーん。次回はクリップボードへの文字列の格納方法について述べるが、これもまた簡単に出来てしまう為TIPSになってしまいそうである。


antenn-a

prev next


antenn-a