0

こんにちは、単一ドキュメントの MFC アプリケーションで問題が発生しています。

独自のツールバーを MainFrm クラス (CFrameWnd) に追加したいと考えています。

私はMFCの初心者です。だから私はそれを追加する場所でさえわからない.


ここのところ:

ID IDR_TOOLBAR1 のツールバー リソースが作成されます

ID ID_SELECT_SHAPE のツールバーボタン

MainFrm.h でCToolBar m_wndMyToolBar;宣言されています

MainFrm.cpp:

if (!m_wndMyToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
            !m_wndMyToolBar.LoadToolBar(IDR_TOOLBAR1))
{
    TRACE0("Failed to create toolbar\n");
    return -1;      // fail to create
}


ツールバーが表示されるようになりました。わーい!
しかし、イベント ハンドラーを追加する方法がわかりません。

私が正しい軌道に乗っているかどうかを判断できる人はいますか? もしそうなら、誰がそのイベントを追加する方法を教えてくれますか?

4

1 に答える 1

1

はい、あなたは正しい軌道に乗っています。MainFrame.cpp には、次で始まるセクションが必要です。

BEGIN_MESSAGE_MAP 

で終わります

END_MESSAGE_MAP

そのセクション内に、エントリが必要になります

ON_COMMAND  (ID_SELECT_SHAPE, &CFrameWnd::OnSelectShape)

.h ファイルに宣言を追加します

afx_msg void OnSelectShape();

.cpp ファイルで、イベントを処理する OnSelectShape 関数を実装します。

ハンドラーが何をする必要があり、ハンドラーが持つ必要があるデータによっては、ハンドラーを追加して、CFrameWnd クラスではなく CView... クラスに実装する方が簡単な場合があります。ハンドラーは、CDocument... クラスにも実装できます。ツールバー ボタンがクリックされると、MFC Doc-View フレームワークは最初にビュー内のハンドラーを探します。使用可能なハンドラーがない場合は、Document でハンドラーを検索し、最終的にそこにハンドラーがない場合は、メイン フレーム ウィンドウでハンドラーを検索します。

于 2012-10-02T19:37:22.417 に答える