コンパイルはできるのですが、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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) シート名を簡単に書く方法があれば教えてください。 4 2023/08/24 12:40
- Photoshop(フォトショップ) 写真のサイズ変更 1 2022/08/07 16:00
- Gmail 「Andoroidスマホ、Gmailで 文字の大きさの変更はどうすればいいのでしょうか?」 普段、文 1 2023/04/04 17:11
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
- PowerPoint(パワーポイント) PowerPointの箇条書きの既定のリストを変更する方法について 1 2022/12/15 18:41
- iPhone(アイフォーン) iPhoneのメールボックスのコピー 3 2023/01/31 10:42
- Excel(エクセル) [テーマのフォント]、[見出しのフォント]、[本文のフォント]とは何ぞや? 2 2023/02/27 09:18
- エアコン・クーラー・冷暖房機 エアコンを設置したい 3 2022/06/25 02:24
- Excel(エクセル) Excelのリストにある文字を含むセルを、複数の色で色付けしたいです 2 2022/08/11 17:39
- Excel(エクセル) エクセル シート内のボックスを縦並びから横並びに 7 2023/04/05 04:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォントの大きさ
-
コンボボックス内の文字サイズ変更
-
VBAのフォント変更(エクセルか...
-
VB.NET2005 TextBox 高さ(Heig...
-
英語OSで日本語アプリのダイア...
-
OSの違いによるバーコード(CODE...
-
Msgboxで使用するフォントの指...
-
VBA TEXTBOXテキストボックスの...
-
WPFのフォントカラー変更につい...
-
文字色 エクリプス
-
チェックボックスの箱のサイズ...
-
リストコンロールの一行だけを...
-
コンボボックスの一部のアイテ...
-
背景色のついでに文字色もかえ...
-
リソースエディタでスタティッ...
-
エディットボックスのフォント...
-
プロポーショナルフォントの文...
-
リストボックスのフォントをサ...
-
VBにて指定した通りにExcelの列...
-
ドロップダウンリストのフォン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォントの大きさ
-
コンボボックス内の文字サイズ変更
-
VBAのフォント変更(エクセルか...
-
チェックボックスの箱のサイズ...
-
VB.NET2005 TextBox 高さ(Heig...
-
リソースエディタでスタティッ...
-
コンボボックスの一部のアイテ...
-
ドロップダウンリストのフォン...
-
エディットボックスのフォント...
-
文字色 エクリプス
-
プロポーショナルフォントの文...
-
Eclipseで修正したファイル名の...
-
ワードでコントロールツールボ...
-
EDITBOXに関して
-
VBA TEXTBOXテキストボックスの...
-
エディットの文字サイズ変更
-
Msgboxで使用するフォントの指...
-
カレンダーコントロールとサイ...
-
ActiveReport中のフォントサイ...
-
WPFのフォントカラー変更につい...
おすすめ情報