
コンパイルはできるのですが、GetFontでCFontが取得できません。
これを最も早い段階で実行するには、どこに書けばいいんでしょうか?
OnCreateで、リストボックスのCreate後すぐに書きました。
また、もっと簡単にサイズだけ変更する方法はありませんか?
なぜ、GetFontが失敗するのか教えてください。お願いします。
MFCです。
LOGFONT logFont;
CFont* pFont;
pFont = m_OutputListBoxBuf.GetFont();
pFont->GetLogFont(&logFont);
logFont.lfHeight = logFont.lfHeight * 0.4;
logFont.lfWidth = logFont.lfWidth * 0.4;
No.4ベストアンサー
- 回答日時:
OnCreate内でなら GetDCでCDCを取得
ダミーのフォントを選択して現在のフォントを取得
このフォントから LOGFONTを取得
といった手順ではいかがでしょう
CFont DummyFont;
DummyFont.CreatePointFont(120, "MS 明朝");
CDC* pDC = GetDC();
CFont* pDCFont = pDC->SelectObject( &DummyFont );
pDC->SelctObject( pDCFont );
ReleaseDC( pDC );
pDCFont->GetLogFont( &logFont );
logFont.lfHeight = logFont.lfHeight * 0.4;
logFont.lfWidth = logFont.lfWidth * 0.4;
m_Font.CreateInDirect( &logFont );
m_ctlList.SetFont( &m_Font );
といった具合で
でもこの方法だと Systemフォントですからさほど自由度が無いように思います
ありがとうございます。
流れは理解できましたが、CreateInDirectでエラーが出てしまいまい、
このメンバが無かったのでCreateFontIndirectWに書き換えましたが実行後エラーが出ました。が、思いっきり削って
CFont* font = new CFont;
font->CreatePointFont(80, _T("MS 明朝"));
m_ListBox.SetFont(font);
これでサイズとフォント体を変更できるようになりました。
納得いかないので、もうすこしLOGFONT取り込み>編集>Setを頑張ってみます。
目的は達成しました。ありがとうございました。
No.3
- 回答日時:
手前で使用しているリストボックスのフォント変更メソッドです。
これを参考にしてみてください。
/**
* リストボックスのフォントを変更。
* @param[in] hWnd リストボックスを示すウィンドウハンドル
* @param[in] hFont リストボックスに適用する新しいフォント
*/
virtual void setFont(HWND hWnd, HFONT hFont)
{
if ((!hWnd) || (!hFont))
{
return;
}
WPARAM wParam = (WPARAM)hFont;
BOOL fRedraw = TRUE;
LPARAM lParam = MAKELPARAM(fRedraw, 0);
UINT uMsg = WM_SETFONT;
::PostMessage(hWnd, uMsg, wParam, lParam);
}
No.1
- 回答日時:
こんにちは。
新しいフォントクラスを作成してエディットボックスクラスにセットしないとけないのでは?
LOGFONT logFont;
CFont* pFont, *pNewFont;
pFont = m_OutputListBoxBuf.GetFont();
pFont->GetLogFont(&logFont);
logFont.lfHeight = logFont.lfHeight * 0.4;
logFont.lfWidth = logFont.lfWidth * 0.4;
//新しいフォントクラスを作成する
pNewFont = new CFont();
pNewFont->CreateFontIndirect(&logFont);
m_OutputListBoxBuf.SetFont(pNewFont);
この回答への補足
GetFontはすでにコントロールに設定されているデフォルトのフォントを読み込んでくれるのではないんでしょうか?
この設定を読み込んでlfHeightとlfWidthの値だけを書き換えて
コントロールに戻したいのですが、このやり方で新しく作ったフォントにGetFontを試しましたが、
同じくGetFontの戻り値事態がなくエラーが出てしまいます。
デフォルトのフォントを読み込む方法を教えてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
wordで分数打とうとするとフォ...
-
リソースエディタでスタティッ...
-
VB.NET2005 TextBox 高さ(Heig...
-
エディットボックスのフォント...
-
「アイテムは収集されました」...
-
エクセルで作った新しいウイン...
-
マインクラフト(pc版)で座標...
-
VBでのハンドルの使い方
-
[VB.net] DataGridViewの列ヘッ...
-
メッセージボックスを大きくす...
-
ゲームでは結局どっちが良いの?
-
検索の画面がでなくなってしま...
-
jw-cadにBMP画像を貼り付けまし...
-
C言語による楕円関数の記述
-
Excelの上下を固定したい
-
C# ウィンドウハンドルの取得
-
エクセルのコントロールツール...
-
グラフの交点の求め方(Excel)
-
非アクティブのウィンドウを最...
-
ボタンの表示の色、フォントを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コンボボックス内の文字サイズ変更
-
VB.NET2005 TextBox 高さ(Heig...
-
VBAのフォント変更(エクセルか...
-
ドロップダウンリストのフォン...
-
リソースエディタでスタティッ...
-
Macbook Word フォント色変更で...
-
コンボボックスの一部のアイテ...
-
VBA TEXTBOXテキストボックスの...
-
文字色 エクリプス
-
VBにて指定した通りにExcelの列...
-
フォントの大きさ
-
エディットボックスのフォント...
-
エクセルのシート名のフォント...
-
static 文字が上に張り付いて・...
-
個数可変のボタン配置
-
リストビューのハンドルについて
-
VC++2010 ボタンなどのレイアウ...
-
CreateFontのフォントの高さに...
-
C# のフォームデザイン&レイア...
-
Msgboxで使用するフォントの指...
おすすめ情報