1,menuの作成 |
2,メンバ関数の作成 |
3,メンバ関数の編集 |
ここでは、menuをどのようにつくるかを解説します。
menu作成には大きく分けて3段階あります。
1番目にmenuを作成します。
2番目にオブジェクトの動作に対応したメンバ関数をつくります。
3番目にメンバ関数を編集します。
ここで、menuを形だけ作成します。
「プロジェクトワークスペース」の「リソース」の「menu」で「IDR_MAINFRAME」
を選択します。すると、アプリのメニューバーのイメージが現れます。
ここでは、メニューによって円か四角形か三角形をつくるsoftをつくります。
そこで、「編集」と「表示」をすべて削除します。
「ファイル」は「終了」以外を削除します。
また、ヘルプの右側をダブルクリックするとデフォルトでポップアップメニューが
できます。ここでは、メニューのタイトルだけをつくります。従ってIDはいりません。
下層のメニューにIDを設定します。
ここでは、三角形を「ID_TRI」にしました。
キャプションには、「三角形(&S)」と入力します。
&SはALTキーとSを押しても同様に実行できるようにます。
ここで、ClassWizardを立ち上げます。
クラス名を「CNamaeView」を選択します。
オブジェクトIDに先ほどの「ID_TRI」を選択します。
さらに「メッセージ」で「command」をダブルクリックするとメンバ関数が
追加されます。ここで、ダイアログが現れます。
メンバ関数名は自動的に「OnTri」になりますが別名にもできます。
「OK」すると、関数が追加されます。
これを「ID_CIR」と「ID_SUQ」もやります。
先ほどの設定をすると以下のような関数が自動的に追加されます。
void CNamaeView::OnTri() { // TODO: この位置にコマンド ハンドラ用のコードを追加してください } void CNamaeView::OnSuq() { // TODO: この位置にコマンド ハンドラ用のコードを追加してください } void CNamaeView::OnCir() { // TODO: この位置にコマンド ハンドラ用のコードを追加してください }
この状態では、例えばメニューで「四角形」を選択するとvoid
CNamaeView::OnSuq() が実行されます。
このsoftでは、kata変数で描く図形を設定し、メンバ関数で形を決めることにします。
まず、namaeView.hを次のようにします。
class CNamaeView : public CView { private: int kata; protected: // シリアライズ機能のみから作成します。 CNamaeView(); DECLARE_DYNCREATE(CNamaeView) ・・・
このようにkata変数をintで宣言しています。次にnamaeView.cppのコントラスタに
CNamaeView::CNamaeView() { kata=0; }
また、OnDraw関数には次のように描画するためのコードを描きます。
void CNamaeView::OnDraw(CDC* pDC) { CNamaeDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (kata==1){ pDC->MoveTo(50,50); pDC->LineTo(150,50); pDC->LineTo(100,100); pDC->LineTo(50,50); } if (kata==2){pDC->Rectangle(50,50,150,100);} if (kata==3){pDC->Ellipse(50,50,150,100);} }
さらに、メンバ関数を次のように編集します。
void CNamaeView::OnTri() { kata=1; InvalidateRect(NULL,TRUE); } void CNamaeView::OnSuq() { kata=2; InvalidateRect(NULL,TRUE); } void CNamaeView::OnCir() { kata=3; InvalidateRect(NULL,TRUE); }
InvalidateRect(NULL,TRUE);という関数はOnDraw関数を実行せよという命令です。
これを実行すると次のようになります。
C++のPageに戻る