• 締切済み

エディットの文字サイズ変更

エディットボックスの文字サイズを変更する方法を教えてください。 HFONTを使う方法でやってみたけど、エディットのフォントは デフォルトのままで、フォントが変更されていないように見えました。 LRESULT CALLBACK WndProc( …  static HWND hEdit;  static HFONT hFont;  switch (msg) {  case WM_CREATE:   hEdit = CreateWindow( … );   hFont = CreateFont( … );   if(!hFont)エラー処理 …;   SendMessage(hEdit, WM_SETFONT, (WPARAM)hFont, 0);   break;  case WM_DESTROY:   DeleteObject(hFont);   PostQuitMessage(0);   break;

みんなの回答

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

正しいフォントが作成できていないのでは? フォント名が間違っているとか。 次の処理でフォントが置き換わることを確認しました。 case WM_CREATE: hEdit = CreateWindow("EDIT", "Edit", WS_CHILD | WS_VISIBLE, 0,0,200,100, hWnd, (HMENU)1, hInst, NULL ); hFont = CreateFont( 100,0,0,0,0,0,0,0,SHIFTJIS_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FF_DONTCARE,"MS Pゴシック"); SendMessage( hEdit, WM_SETFONT, (WPARAM)hFont, 0); break; "MS"と"P"の間のスペースは半角です。

A__
質問者

お礼

フォントはきちんと作られているみたいです。  HFONT hFontOld;  hdc = BeginPaint(hWnd, &ps);  hFontOld = (HFONT)SelectObject(hdc, hFont);  TextOut(hdc, 0, 0, "a", 1);  SelectObject(hdc, hFontOld);  EndPaint(hWnd, &ps); ならフォントは変わりました。 それの前後でGetTextExtentPoint32()を使っても、フォントが変わっているのを 確認できたけど、エディットについてはGetTextExtentPoint32()を使っても フォントの変更はされていないみたいでした。 taka_tetsuさんは #include <iostream.h> main(){ char *buf = new char[100]; memset(buf, 0, 100); delete []buf; } がコンパイルできないみたいだから、結果が同じにならないこともあるみたいです。

A__
質問者

補足

実際のソースではエディットのハンドルを、隣のエディットと間違えていたことが分かりました。 それができなかった原因でした。 できました。 ありがとうございました。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

LPARAMをTRUEにしてもだめですか? SendMessage(hEdit, WM_SETFONT, (WPARAM)hFont, (LPARAM)TRUE);

A__
質問者

お礼

ありがとうございます。 LPARAM は再描画フラグだと思います。 WM_CREATEでは、まだhEditが表示されていないから再描画は 関係ないと思うけど、(LPARAM)TRUEをやってみました。 結果は、(LPARAM)0の時と同じでした。 PostMessage()もやってみたけど、結果は変わりませんでした。

  • mneko
  • ベストアンサー率33% (46/139)
回答No.1

Visual c++として答えます。 リソースのダイアログを開いて、ダイアログ全体を選択して、右クリック プロパティを開き、「フォント」ボタンをクリックしてサイズを変更してください。