EDIT CONTROLの文字サイズを変えたい

解決


紅輝  2007-03-25 22:29:44  No: 64787  IP: 192.*.*.*

VS2005 C++ネーティブコードでプログラムしています。
EDIT CONTROLの文字がFROMと同じサイズになって見難いので、特定のEDIT CONTROLのみ14程度に大きくしたいのですが。ちなみにFROMは10を使っています。宜しくお願いします。

編集 削除
紅輝  2007-03-25 22:30:58  No: 64788  IP: 192.*.*.*

FROMではなくてFORM(フォーム)でした。すみません。

編集 削除
Blue  2007-03-25 23:25:25  No: 64789  IP: 192.*.*.*

>VS2005 C++ネーティブコード
ネイティブなのにFormなんでしょうか?

マネージドのFormであればTextBoxのプロパティのフォントを変えればいいだけ。

Win32 SDKを使っているばあいは、SendMessageでWM_SETFONTでフォントを設定すれば
いいだけです。

編集 削除
Ban  2007-03-26 01:06:19  No: 64790  IP: 192.*.*.*

# CFormViewとかですかね…?

編集 削除
紅輝  2007-03-26 08:54:36  No: 64791  IP: 192.*.*.*

ご指摘の通り、CFormViewクラスを使っています。通常のウインドウスタイルのままでコントロールを多数配置しています。複雑な信号処理計算をしていますので、マネージコードでは追いつかないのではないかと思いますので、ネーティブコードを採用しています。
マネージコードのEdit Controlはプロパティにフォント設定がありますが、ネーティブコードでは有りませんので、方法が分かりません。宜しく。
ネーティブコードでプログラム書き直してテストするしかありませんかね?

編集 削除
Blue  2007-03-26 09:14:57  No: 64792  IP: 192.*.*.*

> SendMessageでWM_SETFONTでフォントを設定すれば
> いいだけです。
って書いてありますけど。

というかMFCですね。
CWnd::SetFont
があるのでそれを使ってフォントを設定してください。
CFontの変数はEDITが存在する間必要になるので、FormViewのメンバ変数にしておくとよいでしょう。

編集 削除
Blue  2007-03-26 09:18:01  No: 64793  IP: 192.*.*.*

類似スレ
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200603/06030036.txt

編集 削除
紅輝  2007-03-26 14:59:05  No: 64794  IP: 192.*.*.*

Blueさん。SendMessageの使い方良く分かりませんでした。
m_Font.CreatePointFont(240,L"MS ゴシック");を使うと行間隔が広がるのと変な文字表示に変わるのみで、文字は大きくなりません。
m_Font.CreateFont(24,0,0,0,FW_NORMAL,FALSE,FALSE,FALSE,SHIFTJIS_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE, L"MS ゴシック");を使ってみても、CreatePointFontを使ったのと同様に行感覚が広がって変な文字が出ます。システム文字でもなさそうです。
EditRich2のコントロールを貼り付けたら、別スレッドの終了処理の行で変なエラーになります。AfxInitRichEdit2();を入れましたがね。  VS2005は色々分からないところが出て困りますわ。こうなると、BlueさんのSendMessageが頼りです。よろしく。

編集 削除
Blue  2007-03-26 15:15:07  No: 64795  IP: 192.*.*.*

> CWnd::SetFont
を使うといっているのになんでSendMessageやRichEditが出てきているのでしょうか?

単なるEdit Controlのフォントを変えるだけなのですよね?
それともEdit Controlの中の文字列の特定の文字だけのフォントを変えたいのでしょうか?

とりあえず現状のコードを載せてください。
>m_Font
は前述どおり、クラスのメンバ変数にしないといけません。

編集 削除
紅輝  2007-03-26 15:37:55  No: 64796  IP: 192.*.*.*

::OnInitialUpdate()の中に、
CFont m_Font;
m_Font.CreateFont(24,0,0,0,FW_NORMAL,FALSE,FALSE,FALSE,SHIFTJIS_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE, L"MS ゴシック");
m_edit1.SetFont(&m_Font);を書いています。

後は、必要なところで、
CString ss;
m_edit1.SetWindowText(ss);
で表示させています。  単にEdit Controlのフォントの大きさを変えたいだけです。よろしく。

編集 削除
Blue  2007-03-26 16:13:18  No: 64797  IP: 192.*.*.*

>::OnInitialUpdate()の中に、
>CFont m_Font;
間違い。
ローカル変数にするとその関数を抜けるとm_Fontの寿命が尽きるため、
>CFontの変数はEDITが存在する間必要になるので
という条件に反する。
どう対応すべきかは記述済み。


というか、変数名の頭に m_ を着けるのは メンバ変数のXXX という意味合いで着けるのが
一般的です。

編集 削除
紅輝  2007-03-26 17:09:53  No: 64798  IP: 192.*.*.*

Blueさん、旨く大きな文字に変わりました。
m_edit.SetFont(&m_Font);でセットされるのであれば、ローカル変数でも好いかと思いました。2個一で動いているのですね。
有難うございました。
しかし、FONTを20以上にすると、大きくはなるのですが、太字になってしまいます。この方が、見やすくて好いですがね。
m_Font.CreatePointFont(240,L"MS ゴシック");でも試してみました。同様に200以上になると太字になりましたが、この関数でも同様に使えます。
どちらでも好いでしょうかね?
とにかく旨く行きました。感謝感謝です。

編集 削除
紅輝  2007-03-26 22:03:19  No: 64799  IP: 192.*.*.*

Blueさんに教えていただきテストが旨く行きましたので、実際のプログラムの方も修正しテストしました。バッチリデス。有難うございました。また、何かの時は、よろしくお願いします。

編集 削除