APIのみでコントロールのフォントを変えるには?

[戻る]
suzugoya [E-Mail] [HomePage] 2002/11/25(月) 22:09:57
環境:Windows98,VC6.0
MFCを使用しないで、EDITBOX,BUTTON,LABEL等の
フォントを変える方法が分かりません
例えば、DIALOG BOXでボタンに表示される文字が大きすぎます
参考書をいろいろ調べてみましたが載っておりません
よろしくお願いします

PAI 2002/11/25(月) 22:14:58
WM_SETFONT

suzugoya [E-Mail] [HomePage] 2002/11/25(月) 22:38:11
回答ありがとうございます
  hFont=CreateFont(......);
  SendMessage(hwnd,WM_SETFONT,hFont,TRUE);
では
 3 番目の引数を 'struct HFONT__ *' から 'unsigned int' に変換できません
のエラーがでてしまいます

どこが悪いのでしょうか

RAPT 2002/11/25(月) 22:43:12
こんばんは、RAPTです。

…キャストしましょう。

> hFont=CreateFont(......);
> SendMessage(hwnd,WM_SETFONT,hFont,TRUE);
LRESULT SendMessage(HWND, UINT, WPARAM, LPARAM);
なので、
SendMessage(hwnd, WM_SETFONT, (WPARAM)hFont, TRUE);
としましょう。
# TRUEは、#define TRUE 1 となっているため、コンパイルは通る。

Windows98/VC++6.0std/SDK-may2002/ATL3.0/WTL7.0

suzugoya [E-Mail] [HomePage] 2002/11/25(月) 23:09:57
???HFONTの宣言の仕方で結果が変わります
//------------------------------------------------
1.
static HFONT hFont;   //globalでも同じ

WM_CREATE:
     SendMessage(hErabu[0],WM_SETFONT,(WPARAM)hFont,TRUE);   //働かない

WM_SIZE:
     hDC=GetDC(...);
     SelectObject( hDC, hFont );                               
     TextOut(hDC,..);                                           //働く


//--------------------------------------------------
2.
HFONT hFont;

WM_CREATE:
     SendMessage(hErabu[0],WM_SETFONT,(WPARAM)hFont,TRUE);   //働く

WM_SIZE:
     hDC=GetDC(...);
     SelectObject( hDC, hFont );                                     
     TextOut(hDC,..);                                          //働かない

となりました
?????です

suzugoya [E-Mail] [HomePage] 2002/11/25(月) 23:28:21
申し訳ありません
不十分な記述をしてしまいました

//------------------------------------------------
1.
static HFONT hFont;   //globalでも同じ

WM_CREATE:
     hFont=CreateFont(.....);
     SendMessage(hErabu[0],WM_SETFONT,(WPARAM)hFont,TRUE);   //働かない

WM_SIZE:
     hDC=GetDC(...);
     SelectObject( hDC, hFont );                               
     TextOut(hDC,..);                                           //働く
     DeleteObject(hFont);        //======================抜けていました

//--------------------------------------------------
2.static なしでは 駄目ですね
//--------------------------------------------------
3.staticをつけるのは当然ですね
  
  DeleteObject(hFont);  
  を最後につけることで、長い間の疑問を解決できました
  ありがとうございました

  しかし、1.の場合
   WM_CREATE より WM_SIZE の方が先に働くのでしょうか

PAI 2002/11/26(火) 14:12:57
何でかよくわからないんですが、WM_CREATEより、WM_SIZEが先にきます。
何ででしょ。

suzugoya [E-Mail] [HomePage] 2002/11/27(水) 12:26:49
[[解決]]
PAIさん PARTさん
ありがとうございました
それから、このホームページを開いておられる ららら? さんにも感謝します

次々と不明な点がでてきます
これからもお願いします

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