現在C++の勉強をしています。プログラミング初心者です。
今はコマンドプロンプトに結果を表示させて確認している、といった感じで進めています。
そこでふと、簡単なクイズ・ゲームを作った時にコマンドプロンプトのまま表示されるのってなんだか寂しいなぁ、と思いました。
普通は、何かウィンドウ(メッセージボックス)が表示されてボタンを押してクイズに答えていく……と思うんですがどうやってメッセージボックスを表示させるんですか?
大まかな流れや、ソース、リソースにこうやって繋げて◯◯する……など具体例なども上げていただきながら教えていただけると嬉しいです。
ご教授よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
C/C++には標準ではその機能は備わっていません。メッセージボックスはOS(Windows)が提供する機能なので、Windows APIを呼び出す必要があります。したがって、必然的にWindows専用のプログラムとなります。
ただし、他のOS(というかデスクトップ環境)にも同様の機能はありますので、それに応じたAPIを使うことでメッセージボックスを表示させることができます。
Visual C++をお使いなら、windows.h
をインクルードすることでWindows APIが使えるようになります。
とりあえず、添付画像のようなメッセージボックスを表示するならこのようになります。
C++
1// メッセージボックスを表示して押したボタンのIDが返されます。 2int btnid = MessageBox(NULL, "ファイルを上書きしますか?", "質問", MB_YESNOCANCEL|MB_ICONWARNING);
もし型が違うというようなエラーになるなら
C++
1int btnid = MessageBox(NULL, L"ファイルを上書きしますか?", L"質問", MB_YESNOCANCEL|MB_ICONWARNING);
このようにしてください。Windowsのネイティブ文字コードはワイド文字(UTF-16)なので、Windows APIでは文字列を扱うところはワイド文字(L"~"
)で指定しないといけない場合が多いです。
使い方の詳細はMSDNのリファレンスを参照してください。
https://msdn.microsoft.com/ja-jp/library/cc410914.aspx
単にメッセージボックスを表示するだけならともかく、本格的にGUIアプリを作ろうとすると、コンソール用のプログラムとは作り方が大きく変わってきますので、できればWindows向けプログラミングの入門書でHello World
から順を追って勉強されることをお勧めします。
投稿2016/03/05 03:35
総合スコア5938
0
開発ツールによってさまざまですが、Win32 APIの基本から抑えた方が良いかと。
「Win32 API MessageBox」で検索すると色々出てきますが、各種開発ツールではヘルプに載っていない色々なパラメータがあります。
MSDN MessageBox
https://msdn.microsoft.com/ja-jp/library/cc410914.aspx
メッセージボックスのタイプがOKボタンだけならuTypeパラメーターにはMB_OKだけですが、
ご質問のようにはいいいえキャンセルの3ボタンを表示する場合にはMB_YESNOCANCELを指定します。
また戻り値も様々ですので一度変数に代入してから条件分岐を行います。
例はC++BuilderXE系の場合ですが、開発環境によって呼び出し方が様々ですのでお使いの開発環境のヘルプを調べてみてください。
C++
1// 2 int ret; 3 ret = Application->MessageBoxA("内容が変更されていますが保存しますか?","保存確認", MB_YESNOCANCEL ); 4 if( IDYES == ret ) { 5 //保存 6 SaveCSV( Sender );//csvファイルに保存する 7 } else if( IDCANCEL == ret ) { 8 //中止 9 return; 10 } 11
投稿2016/03/05 03:32
編集2016/03/05 03:34総合スコア241
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
3/5 あまりにヒントの出し方が不親切であったと考え、全面改訂
まず、開発環境がVC2015とのことですが、「環境」とはこれ以外にも、プロジェクトの設定により決められる、言語環境・プログラムが実際に動作するのことも言います。
新規プロジェクトを作るとき、WindowsとかCLRとか、何か選んだと思うのですが、その内容でどのように教えるかが変わるので、それを知りたかったのです。詳しくは下記のページを参照してください。
http://vivi.dyndns.org/tech/cpp/VS.html
もし、Win32 コンソール アプリケーションか、Win32 プロジェクトなどを選んだ場合、MessageBoxという関数を該当箇所で使えば、メッセージボックスを表示できます。これは標準機能なので、リソースは不要です。
猫でもわかるプログラミング、Windows SDK編(下記参照)の第8章が使用例です。こちらのサイトはコンソールでないプログラムの書き方も紹介されています。
http://www.kumei.ne.jp/c_lang/index_sdk.html
投稿2016/03/05 02:34
編集2016/03/05 04:48総合スコア1720
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/05 03:54
2016/03/05 04:12
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。