アプリ版:「スタンプのみでお礼する」機能のリリースについて

ビジュアルC++でプログラミングをしているのですが、ツールから貼り付けたボタンの有効/無効を操作したのですが、何度やっても成功しません><、


ネットで検索した結果
CWnd* myWnd = GetDlgItem(IDC_MYEDIT);
myWnd->EnableWindow(TRUE);

でできると書いてあるのですが、どのサイトの物を使用してもビルドできませんでした(;ロ;)

どなたか原因がわかるかた、ご教授くださいm(__)m

A 回答 (4件)

みているサンプルは


「Windows フォームアプリケーション」
で作成したプロジェクト用のものではありません。

どのタイミングで有効・無効を切り替えるかわかりませんが、
Enabledプロパティで変更できませんか?

this->button1->Enabled = false; // 無効

Control::Enabled プロパティ
http://msdn.microsoft.com/ja-jp/library/system.w …
    • good
    • 0
この回答へのお礼

回答ありがとうございます!

ビルドに成功し、ボタンの無効に成功しました

重ねてありがとうございます^^

下記3名の方々も、。すばやい対応ありがとうございました^^

お礼日時:2010/11/26 14:46

.NET Formアプリケーション開発あるいはExpress EditionでMFCが使えない、なんてオチじゃないことを確認したいので、VC++のバージョンを提示してください。

この回答への補足

原因究明にご協力くださりありがとうございますm(__)m
バージョンは「バージョン5.1.2600 Service Pack 3 ビルド 2600」です

補足日時:2010/11/26 14:26
    • good
    • 0

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

補足日時:2010/11/26 14:25
    • good
    • 0

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メンバ関数を呼び出す事ができません


この部分の意味がよくわかりませんでした
もしかしてエラー内容に出ているのでしょうか?
無知で申し訳ありませんでした
お時間をとっていただき、ありがとうございます^^

補足日時:2010/11/26 14:22
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A