すいません、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で無い値がかえってきましたが
実際画面に表示されているフォントは変更されませんでした。
こういった問題はどうすれば解決できるのでしょうか?
hWindowはトップウィンドウでしょうか?
だとすると、自身でWM_SETFONT/WM_GETFONTのハンドラを書かなければなりません。
DefWindowProcは、フォント管理してくれません。
ありがとうございます。
自分で作成して成功しました。