- 締切済み
エディットの文字サイズ変更
エディットボックスの文字サイズを変更する方法を教えてください。 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;
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- taka_tetsu
- ベストアンサー率65% (1020/1553)
正しいフォントが作成できていないのでは? フォント名が間違っているとか。 次の処理でフォントが置き換わることを確認しました。 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"の間のスペースは半角です。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
LPARAMをTRUEにしてもだめですか? SendMessage(hEdit, WM_SETFONT, (WPARAM)hFont, (LPARAM)TRUE);
お礼
ありがとうございます。 LPARAM は再描画フラグだと思います。 WM_CREATEでは、まだhEditが表示されていないから再描画は 関係ないと思うけど、(LPARAM)TRUEをやってみました。 結果は、(LPARAM)0の時と同じでした。 PostMessage()もやってみたけど、結果は変わりませんでした。
- mneko
- ベストアンサー率33% (46/139)
Visual c++として答えます。 リソースのダイアログを開いて、ダイアログ全体を選択して、右クリック プロパティを開き、「フォント」ボタンをクリックしてサイズを変更してください。
お礼
フォントはきちんと作られているみたいです。 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; } がコンパイルできないみたいだから、結果が同じにならないこともあるみたいです。
補足
実際のソースではエディットのハンドルを、隣のエディットと間違えていたことが分かりました。 それができなかった原因でした。 できました。 ありがとうございました。