フォント・ダイアログを使う
サンプル・プログラムのコード追加部分のソースです。
// アトリビュート
public:
CFontdlgsapDoc* GetDocument();
//フォントダイアログ操作用
CFont myFONT;
COLORREF myTXTCOLOR;
CString FontName;
CFontdlgsapView::CFontdlgsapView()
{
// TODO: この場所に構築用のコードを追加してください。
//フォント用領域初期化
myTXTCOLOR = RGB(0,0,0); //黒を設定
FontName.Empty();
}
void CFontdlgsapView::OnDraw(CDC* pDC)
{
CFontdlgsapDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: この場所にネイティブ データ用の描画コードを追加します。
//フォント変更用
CFont* oldFont = pDC->SelectObject(&myFONT); //変更前のフォント情報を退避
pDC->SetTextColor(myTXTCOLOR); //テキストに、指定された色を設定
pDC->SetBkMode(TRANSPARENT); //設定するモードを指定
pDC->TextOut(10,50,"設定フォント:" + FontName);
pDC->SelectObject(oldFont); //内部設定情報を戻す
}
//フォント設定用のメニュー
void CFontdlgsapView::OnViewFont()
{
// TODO: この位置にコマンド ハンドラ用のコードを追加してください
CClientDC myDC(this);
static LOGFONT lf;
static int first = 1;
//ダイアログボックスの初期設定
if(first == 1){
first = 0;
myDC.GetCurrentFont()->GetLogFont(&lf); //システム・フォントを取得
}
//フォント・ダイアログを開く
CFontDialog myDLG(&lf, CF_EFFECTS | CF_SCREENFONTS | CF_LIMITSIZE);
//文字の選択可能ポイント・サイズを設定
myDLG.m_cf.nSizeMin = 10;
myDLG.m_cf.nSizeMax = 30;
//現在のテキスト・カラーを設定
myDLG.m_cf.rgbColors = myTXTCOLOR;
//ダイアログの選択フォントを反映
if(myDLG.DoModal() == IDOK){
myTXTCOLOR = myDLG.m_cf.rgbColors; //色の取得
FontName = lf.lfFaceName; //フォント名の取得
myFONT.CreateFontIndirect(&lf); //LOGFONT 構造体で与えられた特性で CFont オブジェクトを初期化
Invalidate(TRUE); //画面再表示
}
}