- ベストアンサー
CWnd::EnableWindow()の扱い方
CWnd::EnableWindow()で有効、無効を切り替えるというのはわかりますが、エディットボックスの有効、無効を切り替えるにはどうしたらいいでしょうか? 現在MFCで開発していますが、エディットボックスのメンバ変数にはCStringを使っているので、EnableWindowの使い方がわかりません。 動作環境はWindows2000とNTです。 ツールはVC++6.0を使用しています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
> CEditを使用すると、多くの個所を修正しなくてはならなくなるので、 > 使用することができませんでした。 や、ですから、CString 型の変数は残したまで、 CEdit 型の変数を追加すればよいのです。 ClassWizard の「メンバ変数」-「変数の追加」で、 カテゴリに「コントロール」を選んでください。 (↑方法1) > ウィンドウハンドルの取得の仕方がわかりません。 ウィンドウハンドルというかポインタの取得方法は、 #1 で episteme さんが書いておられる通りです。 「コントロールID」のところには例えば IDC_EDIT1 などが入ります。 (↑方法2)
その他の回答 (2)
方法1 エディットボックスに CEdit 型のメンバ変数を割り当てる。 CEdit は CWnd の派生クラスなので EnableWindow が使えます。 CString 型のメンバ変数と CEdit 型のメンバ変数は同時に割り当てられます。 方法2 GetDlgItem を使って、エディットボックスへのポインタを取得し、 そのポインタを使って EnableWindow を呼び出す。
補足
コンパイルしてみました。 CEditを使用すると、多くの個所を修正しなくてはならなくなるので、使用することができませんでした。時間もあまりないので・・・。 ウィンドウハンドルの取得の仕方がわかりません。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
GetDlgItem(コントロールID)->EnableWindow(...);
お礼
はじめは意味がわからなかったのですが、実際にやってみました。そしたら、何の問題もなくできましたよ。 CStringでひっかかって悩んでいたのが嘘のようでした。 ありがとうございました。 また何かありましたら、アドバイスの方よろしくお願いします。 プログラマーを目指しているのですが、わたしはそのなかでも一番の落ちこぼれ組みの一人だったので、なにかと大変です。 わからないわけではありませんが、普通の人より、理解するのに3倍くらいの時間がかかるだけなんです。 本当にありがとうございました。 m(_ _)m