- ベストアンサー
エディットボックスの色変更について(初心者です)
はじめまして、xuanといいます。 VC++を使っているのですが、エディットボックスを読取専用にすると自動的に色が灰色っぽくなってしまいますけれども、こちらを元のように白色に変更するにはどうすればいいのでしょうか? とりあえずctlColor()を使えば出来るらしいということは分かったのですが、他に何をすればいいのかということが良く分かりません。 よろしければ、細かい部分まで教えていただきたいのですが…。 お手数ですが、よろしくお願いします。
- みんなの回答 (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); に相当するコードを書けばオッケなのではないかと。
その他の回答 (1)
- A__
- ベストアンサー率47% (22/46)
ES_READONLY であれば EDIT でも WM_CTLCOLORSTATIC が発生。 case WM_CTLCOLORSTATIC: if(HWND(lParam) == hEdit) return (LRESULT)GetStockObject(WHITE_BRUSH); break;
お礼
返事の方遅れてしまい、申し訳ありませんでした。 こちらの方を見させていただきまして、しばらく自分でやってみようと思ったのですが、分からない部分が出てきてしまいましたので、よろしければ教えていただきたいのですが…。 ES_READONRYの意味がどうしてもよくわからないのです。 私はプロパティの方で読取専用に設定したのですが、読取専用にした地点でこのような関数が出来ているのでしょうか? ヘルプで見てみたところ、ES_READONLYの参照のところにCEdit::Createとあり、そこに BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID ); を使うというようなことがあったのですが、これを参考に自分で作ればよいのでしょうか? ただ、これを使ってみようと思ったもののrectの意味がよく分からないのです。 お手数ですが、よろしければお願いします。
お礼
回答ありがとうございます。 なるほど、そういう意味だったのですか…。どうも、何を見てもどういう意味なのか良く分からなかったのです。 プログラムは(という言い方をして良いのかどうかよく分かりませんが)確かにMFCです。 この質問をした当時はMFCという種類があって、他の種類があるとは知らなかったものですから…。 本当にありがとうございました。 参考にさせていただいて、また頑張ってみようと思います!