• ベストアンサー

CWnd::EnableWindow()の扱い方

 CWnd::EnableWindow()で有効、無効を切り替えるというのはわかりますが、エディットボックスの有効、無効を切り替えるにはどうしたらいいでしょうか? 現在MFCで開発していますが、エディットボックスのメンバ変数にはCStringを使っているので、EnableWindowの使い方がわかりません。 動作環境はWindows2000とNTです。 ツールはVC++6.0を使用しています。

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

  • ベストアンサー
noname#5537
noname#5537
回答No.3

> CEditを使用すると、多くの個所を修正しなくてはならなくなるので、 > 使用することができませんでした。 や、ですから、CString 型の変数は残したまで、 CEdit 型の変数を追加すればよいのです。 ClassWizard の「メンバ変数」-「変数の追加」で、 カテゴリに「コントロール」を選んでください。 (↑方法1) > ウィンドウハンドルの取得の仕方がわかりません。 ウィンドウハンドルというかポインタの取得方法は、 #1 で episteme さんが書いておられる通りです。 「コントロールID」のところには例えば IDC_EDIT1 などが入ります。 (↑方法2)

snow-black
質問者

お礼

はじめは意味がわからなかったのですが、実際にやってみました。そしたら、何の問題もなくできましたよ。  CStringでひっかかって悩んでいたのが嘘のようでした。  ありがとうございました。  また何かありましたら、アドバイスの方よろしくお願いします。  プログラマーを目指しているのですが、わたしはそのなかでも一番の落ちこぼれ組みの一人だったので、なにかと大変です。  わからないわけではありませんが、普通の人より、理解するのに3倍くらいの時間がかかるだけなんです。  本当にありがとうございました。  m(_ _)m

その他の回答 (2)

noname#5537
noname#5537
回答No.2

方法1 エディットボックスに CEdit 型のメンバ変数を割り当てる。 CEdit は CWnd の派生クラスなので EnableWindow が使えます。 CString 型のメンバ変数と CEdit 型のメンバ変数は同時に割り当てられます。 方法2 GetDlgItem を使って、エディットボックスへのポインタを取得し、 そのポインタを使って EnableWindow を呼び出す。

snow-black
質問者

補足

 コンパイルしてみました。  CEditを使用すると、多くの個所を修正しなくてはならなくなるので、使用することができませんでした。時間もあまりないので・・・。  ウィンドウハンドルの取得の仕方がわかりません。

回答No.1

GetDlgItem(コントロールID)->EnableWindow(...);