【C++/CLI】メニューを付ける

新規プロジェクトの作成のページでは、何もしないだたのウィンドウ表示のプログラムを作成しましたが、このウィンドウにメニューを付けたいと思います。

 

と、その前に簡単にVisualStudioの操作説明をしたいと思います。

 

フォーム(ウィンドウ)上にメニューやボタンなどを配置するときは、ソリューションエクスプローラのタブを選択し、フォームのファイル(*.h)を選択し、デザイナの表示アイコンをクリックします。

 

 

デザイナの表示からイベント処理などのソースコードを書くときはコードの表示アイコンをクリックします。

 

 

オブジェクト(メニューやボタン、ピクチャボックスなど)の名前や大きさ、位置などの情報を設定するには右下のプロパティタブを選択し、プロパティアイコンをクリックします。

 

 

メニューをクリックしたときなどの処理(イベント処理)を表示するにはイベントアイコンをクリックします。

 

 

と、準備はここまで。

 

フォームファイル(*.h)を選択し、デザイナを表示します。
右側のツールボックスをタブを選択し、この中からMenuStripを選択し、フォームの上にドラッグ&ドロップします。

 

 

次にここへ入力と書かれた部分に表示するメニューの文字を記入していきます。

 

 

ここで、ファイルの文字の右側に(F)と表示されていますが、これはメニューをAltキーを使って操作するときの文字で、文字の入力時にはファイル(&F)のようにアルファベットの頭に&を付けます。
また、メニューの間に表示されている仕切り線(Separator)はここへ入力の部分に - (ハイフン)を入力します。

 

 

ここで、デフォルトではそれぞれのメニューの名前(Name)は開くOToolStripMenuItemなどとなっており、このままだとソースコードに日本語が入ってしまっていまいちなので、それぞれ下表のように名前を付けておきます。

 

Text (Name)
ファイル(&F) mnuFile
開く(&O) mnuFileOpen
終了(&X) mnuFileExit

 

この名前の付け方はVB6.0の時に使っていたプレフィックスを用いていますが、詳しく知りたい方は
このページ↓を参照すると良いと思います。
http://msdn.microsoft.com/en-us/library/aa263493(VS.60).aspx

 

次にメニューをクリックしたときの処理(イベント処理)を追加していきます。
メニューのイベント処理は開く(O)をダブルクリックすると、メニューをクリックした時の処理のソースコードが自動的に作成されます。このへんはVB6.0と同じです。

private: System::Void mnuFileOpen_Click(System::Object^  sender, System::EventArgs^  e) {

             }

 

この{ } の間にメニューをクリックしたときの処理を書いていきます。
下記は開くメニューをクリックした時にファイルを開くダイアログボックスを表示し、ファイル名を眼セージボックスで表示するソースコードです。

 private: System::Void mnuFileOpen_Click(System::Object^  sender, System::EventArgs^  e) {
                 //ファイル→ファイルを開く

                 //ファイルを開くダイアログの作成
                 OpenFileDialog^ dlg = gcnew OpenFileDialog;
                 //ファイルフィルタ
                 dlg->Filter = "画像ファイル(*.bmp,*.jpg,*.png,*.tif,*.ico)|*.bmp;*.jpg;*.png;*.tif;*.ico";
                 //ダイアログの表示 (Cancelボタンがクリックされた場合は何もしない)
                 if (dlg->ShowDialog() == System::Windows::Forms::DialogResult::Cancel) return;
                 //取得したファイル名の表示
                 MessageBox::Show(dlg->FileName);
             }

 

終了メニューは下記の通りです。

 

private: System::Void mnuFileExit_Click(System::Object^  sender, System::EventArgs^  e) {
                 //ファイル→終了
                 this->Close();
             }

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください