- ベストアンサー
ビジュアルC++でボタンの有効/無効
ビジュアルC++でプログラミングをしているのですが、ツールから貼り付けたボタンの有効/無効を操作したのですが、何度やっても成功しません><、 ネットで検索した結果 CWnd* myWnd = GetDlgItem(IDC_MYEDIT); myWnd->EnableWindow(TRUE); でできると書いてあるのですが、どのサイトの物を使用してもビルドできませんでした(;ロ;) どなたか原因がわかるかた、ご教授くださいm(__)m
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
みているサンプルは 「Windows フォームアプリケーション」 で作成したプロジェクト用のものではありません。 どのタイミングで有効・無効を切り替えるかわかりませんが、 Enabledプロパティで変更できませんか? this->button1->Enabled = false; // 無効 Control::Enabled プロパティ http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.enabled.aspx
その他の回答 (3)
- D-Matsu
- ベストアンサー率45% (1080/2394)
.NET Formアプリケーション開発あるいはExpress EditionでMFCが使えない、なんてオチじゃないことを確認したいので、VC++のバージョンを提示してください。
補足
原因究明にご協力くださりありがとうございますm(__)m バージョンは「バージョン 5.1.2600 Service Pack 3 ビルド 2600」です
- neko3839
- ベストアンサー率37% (100/269)
1.ビルド時に、どのようなエラーになりますか? 2.IDC_MYEDIT はツールから貼り付けたボタンのオブジェクトIDなのでしょうか? ※試しに VisualC++ 6.0 で試してみましたが、ボタンのオブジェクトIDがIDC_MYEDIT とすれば (ボタンのオブジェクトIDがIDC_MYEDIT というのは紛らわしいですが) CWnd* myWnd = GetDlgItem(IDC_MYEDIT); myWnd->EnableWindow(TRUE); により、無効化されたボタンを有効化できましたよ。
補足
回答いただきありがとうございますm(__)m neko3839さんの張ってくださったプログラムを実行した結果 ------ ビルド開始: プロジェクト: test2, 構成: Debug Win32 ------ test2.cpp d:\visualstudio - d00\test2\test2\Form1.h(81): error C2065: 'CWnd' : 定義されていない識別子です。 d:\visualstudio - d00\test2\test2\Form1.h(81): error C2065: 'myWnd' : 定義されていない識別子です。 d:\visualstudio - d00\test2\test2\Form1.h(81): error C2065: 'IDC_MYEDIT' : 定義されていない識別子です。 d:\visualstudio - d00\test2\test2\Form1.h(81): error C3861: 'GetDlgItem': 識別子が見つかりませんでした d:\visualstudio - d00\test2\test2\Form1.h(82): error C2065: 'myWnd' : 定義されていない識別子です。 d:\visualstudio - d00\test2\test2\Form1.h(82): error C2227: '->EnableWindow' : 左側がクラス、構造体、共用体、ジェネリック型へのポインターではありません。 型は ''unknown-type'' です。 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== とエラーがでました ボタンは // // button1 // this->button1->Location = System::Drawing::Point(116, 119); this->button1->Name = L"button1"; this->button1->Size = System::Drawing::Size(75, 23); this->button1->TabIndex = 0; this->button1->Text = L"button1"; this->button1->UseVisualStyleBackColor = true; this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click); // という風に記述されています 初心者ですので、詳しい事がよくわかっていません。申し訳ないです お時間割いて回答していただきありがとうございますm(__)m
- chie65536(@chie65535)
- ベストアンサー率44% (8754/19864)
CButton *button=(CButton*)GetDlgItem(IDC_MYEDIT); button->EnableWindow(FALSE); では駄目ですか? 有効、無効、可視、不可視、キャプションの変更などの為にメンバ関数を呼ぶ場合、オブジェクト変数は「コントロールの種類に合ったクラス」でなければなりません。 例えば、ボタンならCButtonクラスじゃないといけません。 共通親クラスであるCWndクラスでは「オブジェクトの実体がボタンなのか何なのか判らなくなっている」ので、EnableWindowメンバ関数を呼び出す事ができません。
補足
早速の回答ありがとうございます^^ノ chie65535さんの張ってくださったプログラムを実行した結果 ------ ビルド開始: プロジェクト: test2, 構成: Debug Win32 ------ test2.cpp d:\visualstudio - d00\test2\test2\Form1.h(81): error C2065: 'CButton' : 定義されていない識別子です。 d:\visualstudio - d00\test2\test2\Form1.h(81): error C2065: 'CButton' : 定義されていない識別子です。 d:\visualstudio - d00\test2\test2\Form1.h(81): error C2059: 構文エラー : ')' d:\visualstudio - d00\test2\test2\Form1.h(82): error C2039: 'EnableWindow' : 'System::Windows::Forms::Button' のメンバーではありません。 c:\program files\reference assemblies\microsoft\framework\.netframework\v4.0\system.windows.forms.dll : 'System::Windows::Forms::Button' の宣言を確認してください。 d:\visualstudio - d00\test2\test2\Form1.h(82): error C2065: 'FALSE' : 定義されていない識別子です。 というエラーがでました><、 一番最後は理解できるのですが、他が検討もつきません><、 ふがいない結果で申し訳ありませんでした >有効、無効、可視、不可視、キャプションの変更などの為にメンバ関数を呼ぶ場合、オブジェクト変数>は「コントロールの種類に合ったクラス」でなければなりません。 > >例えば、ボタンならCButtonクラスじゃないといけません。 > >共通親クラスであるCWndクラスでは「オブジェクトの実体がボタンなのか何なのか判らなくなってい>>る」ので、EnableWindowメンバ関数を呼び出す事ができません この部分の意味がよくわかりませんでした もしかしてエラー内容に出ているのでしょうか? 無知で申し訳ありませんでした お時間をとっていただき、ありがとうございます^^
お礼
回答ありがとうございます! ビルドに成功し、ボタンの無効に成功しました 重ねてありがとうございます^^ 下記3名の方々も、。すばやい対応ありがとうございました^^