WM_SETFONTとWM_GETFONTについて – プログラミング – Home

通知
すべてクリア

[解決済] WM_SETFONTとWM_GETFONTについて


owner
 owner
(@owner)
ゲスト
結合: 20年前
投稿: 3
Topic starter  

すいません、Fontについてわからないことがあるのでお尋ねします

環境は VS.NET VC++7 & Win32 です

トップウィンドウのウィンドウプロシージャのWM_CREATEにおいて

HFONT hFont = CreateFont(適当なフォント設定);

SendMessage(hWindow, WM_SETFONT, (WPARAM) hFont, MAKELPARAM(true, 0));

HFONT now_hFont = reinterpret_cast<HFONT>(SendMessage(hWindow, WM_GETFONT, 0,
0));

としたところ
now_hFont は WM_SETFONTでセットしたはずの hFont の値が返ってこずにNULLが返ってきま

WM_GETFONTでNULLを返した場合はデフォルトのシステムフォントだそうですが
なぜ直前にセットしたにもかかわらずフォントが変更されないのでしょうか?

ちなみに GetLastError()してみましたが、処理は正常に完了しました、となっていました。

さらに上のコードのあとに

HGDIOBJ obj = GetCurrentObject(GetDC(hWindow), OBJ_FONT);
HGDIOBJ obj2 = SelectObject(GetDC(hWindow), hFont);

としてみましたが
obj は NULLで無い値
obj2 もNULLで無い値がかえってきましたが
実際画面に表示されているフォントは変更されませんでした。

こういった問題はどうすれば解決できるのでしょうか?


引用未解決
トピックタグ
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

hWindowはトップウィンドウでしょうか?
だとすると、自身でWM_SETFONT/WM_GETFONTのハンドラを書かなければなりません。
DefWindowProcは、フォント管理してくれません。


返信引用
owner
 owner
(@owner)
ゲスト
結合: 20年前
投稿: 3
Topic starter  

ありがとうございます。
自分で作成して成功しました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました