WM_SETFONTとWM_GETFONTについて

[戻る]
owner 2005/01/14(金) 15:24:37
すいません、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 2005/01/14(金) 16:56:29
hWindowはトップウィンドウでしょうか?
だとすると、自身でWM_SETFONT/WM_GETFONTのハンドラを書かなければなりません。
DefWindowProcは、フォント管理してくれません。

owner 2005/01/19(水) 20:27:44
[[解決]]
ありがとうございます。
自分で作成して成功しました。

古いスレッドには追加発言できません。