メッセージボックス


初心者あおい  2013-06-14 17:29:23  No: 73722

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のメンバーではありませんとかエラーが出てしまいます。

どこに問題があるのでしょうか?


Blue  2013-06-14 18:07:16  No: 73723

記憶があいまいなんですが、確かなんかクラス名と衝突しちゃった気がする。

なので、ネームスペースをフルに書いてみてはどうでしょうか?

>>DialogResult rc;
System::Windows::Forms::DialogResult rc;

Forms::DialogResult rc;

でもいけるかも。

# C++/CLIから勉強を始めるようですけど、正直これの言語は需要がない気がする。


Blue  2013-06-14 18:29:11  No: 73724

確認してみたところ、かぶっているのは
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


tetrapod  2013-06-15 02:35:54  No: 73725

技術面では既にコメントがあるので、他の方向から

提示コードは C++/CLI という言語で書かれているようだ。
C++ と C++/CLI は、似ているけど違う言語。
C++ も初心者向けではないと思うが C++/CLI ははっきり言って入門に使う言語ぢゃない。
今のうちに方向転換することを強く推奨する。

Windows プログラミングしか視野にないなら C# がおすすめ
Linux/組み込み系も視野にあるなら C++ (C++/CLI でなく純粋 C++)


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加