ツール バーに関する基本事項
更新 : 2007 年 11 月
ここでは、MFC の実装に関する基本事項について説明します。基本事項を理解することにより、アプリケーション ウィザードでオプションを選択することで、既定のツール バーをアプリケーションに追加できます。ここでは、次の内容について説明します。
アプリケーション ウィザードの [ツールバー] オプション
ツール バーのコード
ツール バー リソースの編集
複数のツール バー
アプリケーション ウィザードの [ツールバー] オプション
既定のボタンを備えたツール バーを 1 つ生成するには、[ユーザー インターフェイスの機能] ページの [標準ドッキング] オプションを選択します。これにより、次の動作を行うコードがアプリケーションに追加されます。
ツール バー オブジェクトを作成する。
ツール バーを管理する (ドッキングまたはフローティングを行う機能など)。
ツール バーのコード
ツール バーは、アプリケーションの CMainFrame クラスのデータ メンバとして宣言された CToolBar オブジェクトです。つまり、ツール バー オブジェクトは、メイン フレーム ウィンドウ オブジェクトに埋め込まれています。これは、MFC コードではフレーム ウィンドウの作成時にツール バーが作成され、フレーム ウィンドウが破棄されるとツール バーも破棄される、ということを意味します。次のマルチ ドキュメント インターフェイス (MDI: Multiple Document Interface) アプリケーション用の部分クラス宣言は、埋め込まれるツール バーおよびステータス バーのデータ メンバを示しています。また、OnCreate メンバ関数のオーバーライドも示しています。
class CMainFrame : public CMDIFrameWnd
{
// Implementation
protected: // control bar embedded members
CStatusBar m_wndStatusBar;
CToolBar m_wndToolBar;
// Generated message map functions
protected:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
DECLARE_MESSAGE_MAP()
ツール バーは CMainFrame::OnCreate で作成されます。MFC コードは、フレームのウィンドウの作成後、それが表示される前に、OnCreate を呼び出します。アプリケーション ウィザードによって生成される既定の OnCreate は、以下のツール バー タスクを行います。
CToolBar オブジェクトの Create メンバ関数を呼び出して、基になる CToolBarCtrl オブジェクトを作成します。
LoadToolBar を呼び出して、ツール バー リソース情報を読み込みます。
ドッキング、フローティング、およびツール ヒントを有効にする関数を呼び出します。これらの呼び出しの詳細については、「ドッキング ツール バーとフローティング ツール バー」を参照してください。
メモ : |
---|
MFC の「標準のサンプル」の「DOCKTOOL サンプル : ドッキング可能ツール バー」には、新しい形式および古い形式の MFC ツール バーの例があります。COldToolbar を使用してツール バーを作成する場合は、手順 2 で LoadBitmap (LoadToolBar ではなく) と SetButtons を呼び出す必要があります。新しい形式のツール バーの場合は、LoadToolBar を呼び出す必要があります。 |
ドッキング、フローティング、およびツール ヒントの関数呼び出しはオプションです。それらの行を OnCreate から削除することもできます。その結果、ツール バーは固定されたままとなり、フローティングや再ドッキングはできません。また、ツール ヒントも表示されません。
ツール バー リソースの編集
アプリケーション ウィザードを使用して生成する既定のツール バーは、MFC Version 4.0 で導入されている RT_TOOLBAR カスタム リソースに基づいています。ツール バー エディタを使用して、このリソースを編集できます。エディタを使用すると、簡単にボタンを追加、削除、および再整列できます。ツール バー エディタには、Visual C++ の通常のグラフィックス エディタによく似ている、ボタン用のグラフィカル エディタが含まれています。以前のバージョンの Visual C++ に比べると、ツール バーの編集作業は簡単になっています。
ツール バー ボタンをコマンドに結び付けるには、ボタンに ID_MYCOMMAND などのコマンド ID を指定します。ツール バー エディタにある、ボタンのプロパティ ページでコマンド ID を指定します。次に、そのコマンドのハンドラ関数を作成します。詳細については、「関数へのメッセージの割り当て」を参照してください。
新しい形式の CToolBar メンバ関数は、RT_TOOLBAR リソースを処理します。つまり LoadToolBar が、LoadBitmap の代わりにツール バー ボタン イメージのビットマップを読み込みます。また、SetButtons の代わりにボタン スタイルを設定し、ボタンとビットマップ イメージを結び付けます。
ツール バー エディタの使い方の詳細については、「ツール バー エディタ」を参照してください。
複数のツール バー
アプリケーション ウィザードには、既定のツール バーが 1 つ用意されています。アプリケーションで複数のツール バーが必要な場合、既定のツール バーを表示するためにウィザードで生成されたコードを基に、追加のツール バーを作成できます。
ツール バーをあるコマンドの結果として表示する場合は、以下の操作を行う必要があります。
ツール バー エディタを使用して、新しいツール バー リソースを作成し、それを LoadToolbar メンバ関数を使用して、OnCreate に読み込みます。
新しい CToolBar オブジェクトをメイン フレーム ウィンドウ クラスに埋め込みます。
ツール バーをドッキングまたはフローティングさせたり、ツール バーのスタイルを設定したりする、適切な関数呼び出しを OnCreate に作成します。
さらに詳しくは次のトピックをクリックしてください
CToolBar クラスと CToolBarCtrl クラス