Visual C++ を始めて1週間の初心者です。
ある処理をしたとき途中でメッセージボックス(「はい」「いいえ」のボタン)を表示し、「はい」を選択すると処理が中断されるようにしたいです。
ネットで調べて参考に以下のようなソースを書きました。
using namespace System::Windows::Forms;
DialogResult rc;
rc=MessageBox::Show("終了しますか?","選択",MessageBoxButtons::YesNo,MessageBoxIcon::Question);
if(rc==DialogResult::Yes)return;
しかし、rcが定義されていない識別子です。とか YesがSystem::Windows::Form::DialogResultのメンバーではありませんとかエラーが出てしまいます。
どこに問題があるのでしょうか?
記憶があいまいなんですが、確かなんかクラス名と衝突しちゃった気がする。
なので、ネームスペースをフルに書いてみてはどうでしょうか?
>>DialogResult rc;
System::Windows::Forms::DialogResult rc;
Forms::DialogResult rc;
でもいけるかも。
# C++/CLIから勉強を始めるようですけど、正直これの言語は需要がない気がする。
確認してみたところ、かぶっているのは
Formのプロパティ名と同じ様で、Formの継承クラス(Form1とか)で単に
DialogResultとかくと、this->DialogResultと解釈されてしまいます。
やはり、回避策はnamespaceつけるぐらいなんでしょうね。
Formをつかっているならたぶん
using namespace System;
using namespace System::Windows::Forms;
は記述されていると思うので、
Windows::Forms::DialogResult
とすればいいです。
すなわち
Windows::Forms::DialogResult rc;
rc = MessageBox::Show("終了しますか?","選択", MessageBoxButtons::YesNo, MessageBoxIcon::Question);
if (rc == Windows::Forms::DialogResult::Yes) return;
Form.DialogResult プロパティ
>>http://msdn.microsoft.com/ja-jp/library/system.windows.forms.form.dialogresult%28v=vs.80%29.aspx
技術面では既にコメントがあるので、他の方向から
提示コードは C++/CLI という言語で書かれているようだ。
C++ と C++/CLI は、似ているけど違う言語。
C++ も初心者向けではないと思うが C++/CLI ははっきり言って入門に使う言語ぢゃない。
今のうちに方向転換することを強く推奨する。
Windows プログラミングしか視野にないなら C# がおすすめ
Linux/組み込み系も視野にあるなら C++ (C++/CLI でなく純粋 C++)
ツイート | ![]() |