• ベストアンサー

エディットボックスの色変更について(初心者です)

はじめまして、xuanといいます。 VC++を使っているのですが、エディットボックスを読取専用にすると自動的に色が灰色っぽくなってしまいますけれども、こちらを元のように白色に変更するにはどうすればいいのでしょうか? とりあえずctlColor()を使えば出来るらしいということは分かったのですが、他に何をすればいいのかということが良く分かりません。 よろしければ、細かい部分まで教えていただきたいのですが…。 お手数ですが、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

横槍回答っす。 ES_READONLYは関数じゃなくて、スタイル設定用のマクロです。 Create関数を自作するんじゃなくて、 Createを呼ぶときdwStyleにES_READONLYを指定すれば (スタイルがそれだけじゃマズイけど)、読み取り専用になります。 RECTはただの構造体です。 名前のとおり長方形を表し、left、top、right、bottomの四つの要素を持ちます。 この場合はウィンドウの大きさを指定するためにウィンドウの座標を スクリーン座標で代入すればいいんではないかと思います。 あ、RECT&の&は「参照」ですよ、念のため。 >私はプロパティの方で読取専用に MFC(ですよね?)はよく判らないのでこの部分が掴めませんが… クラスウィザードでOnCtlColorStaticみたいなメッセージハンドラを作って、 そのなかに if(HWND(lParam) == hEdit) return (LRESULT)GetStockObject(WHITE_BRUSH); に相当するコードを書けばオッケなのではないかと。

xuan
質問者

お礼

回答ありがとうございます。 なるほど、そういう意味だったのですか…。どうも、何を見てもどういう意味なのか良く分からなかったのです。 プログラムは(という言い方をして良いのかどうかよく分かりませんが)確かにMFCです。 この質問をした当時はMFCという種類があって、他の種類があるとは知らなかったものですから…。 本当にありがとうございました。 参考にさせていただいて、また頑張ってみようと思います!

その他の回答 (1)

  • A__
  • ベストアンサー率47% (22/46)
回答No.1

ES_READONLY であれば EDIT でも WM_CTLCOLORSTATIC が発生。  case WM_CTLCOLORSTATIC:   if(HWND(lParam) == hEdit)    return (LRESULT)GetStockObject(WHITE_BRUSH);  break;

xuan
質問者

お礼

返事の方遅れてしまい、申し訳ありませんでした。 こちらの方を見させていただきまして、しばらく自分でやってみようと思ったのですが、分からない部分が出てきてしまいましたので、よろしければ教えていただきたいのですが…。 ES_READONRYの意味がどうしてもよくわからないのです。 私はプロパティの方で読取専用に設定したのですが、読取専用にした地点でこのような関数が出来ているのでしょうか? ヘルプで見てみたところ、ES_READONLYの参照のところにCEdit::Createとあり、そこに BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID ); を使うというようなことがあったのですが、これを参考に自分で作ればよいのでしょうか? ただ、これを使ってみようと思ったもののrectの意味がよく分からないのです。 お手数ですが、よろしければお願いします。

関連するQ&A