CTRLBARS サンプル:ユーザー設定コントロールの範囲を示します

CTRLBARS サンプルは、次のカスタマイズ オプション コントロール バーの例を示しています。

  • 特定のフレーム ウィンドウにおける複数のコントロール バー、コントロール バーの表示と非表示の選択、フレーム ウィンドウの境界に沿ったコントロールの動的再配置。 コントロール バー領域で、フレーム ウィンドウを Z オーダーによるで、(CMainFrame::OnCreate を参照) を作成する順序が最初に割り当てられます。 CTRLBARS CWnd::SetWindowPos 関数を使用して、ダイアログ バーの Z オーダーを変更します。 表示、または非表示にするコントロール バーを使用して CWnd::ShowWindow します。 CTRLBARS Z オーダーを変更または表示、または非表示にするコントロール バーときに、ウィンドウの不動産、残りの可視コントロール バーを再割り当てされるようにするには、CFrameWnd::RecalcLayout 後で呼び出します。

  • カスタム ツール バー、ツール バー上のボタンの動的再配置、ツール バーへのコントロール (コンボ ボックスなど) の追加。 CTRLBARS は、ツールバーをカスタマイズするのには、2 つの方法を示します。 最初のツール バー [Tool Bar] では、[short] (ボタン 5 個) と [long] (ボタン 10 個) の場合でボタンの配置を切り替えます。 CToolBar::SetButtonInfo タイルの位置で、ツールバーのビットマップと、コマンド ID にマップするのには、各ボタンの CTRLBARS を呼び出します。 2 番目のツールバー、[Style Bar] コントロール (この例ではコンボ ボックス) を使用して、ツールバーのボタンまたは区切り記号を置換する方法を示します。 CMainFrame::CreateStyleBar 100 ピクセル幅ツールバー セパレーターを作成します。 次に、ツールバーの子としてコンボ ボックス (IDW_COMBO) を作成し、それだけで、区切り文字を割り当てられている領域を実行するようにコンボ ボックスの位置を設定します。

  • カスタム ステータス バー、カスタム インジケーター、およびメッセージ行へのテキストの送信。 ステータス バーでは、フレームワークはなどの指定と ID_INDICATOR_CAPSindicators[] 配列に渡される CStatusBar::SetIndicators に識別の 1 つとして自動的に CAP のロック、Num Lock、またはスクロール ロックを示すインジケーター更新されます。 CTRLBARS 標準ステータス バー インジケーター、Ins キーを押して、ユーザーを切り替える、上書き (上書) の状態を拡張する方法を示しています。 これは、メッセージ ハンドラー (ID_TOGGLE_INSERT キーにマップされた) VK_INSERT コマンドと、文字列「上書」リソース文字列 (ID_INDICATOR_OVR) が必要です。上書きモードが有効になっているときに表示するには。 リソースの ID ID_INDICATOR_OVR は、定義済みの MFC 定数です。

  • ダイアログ バー。これは、ダイアログ リソース テンプレートによりレイアウトが定義されているコントロール バーです。 すべてのコントロール バーと同様に、ダイアログ バーのコントロールからの通知は、ダイアログ バーのオーナーであるメイン フレーム ウィンドウに送られます。 たとえば、CMainFrame::OnSelChangePaletteCBN_SELCHANGE 通知ダイアログ バーのコンボ ボックス コントロールからハンドラーです。 CMainFrame もハンドラーが 3/非チェック ボックス ([スタイルの とパレットの ) の 2 つあります。 ハンドラーを 3 番目のチェック ボックスは、非表示/表示ツールバー ID_VIEW_TOOLBAR のフレームワーク、標準のハンドラーを提供するため記述する必要はありません。

  • フローティング ツール パレット。ツール バーのように動作しますが、ツール ボタンの 2 次元配列を表示し、オーナー フレーム ウィンドウの上にモードレス ウィンドウとして表示されます。 フローティング ツール パレット CPaletteBarから派生した再利用可能なクラスで CToolBar、実装されています。 ツールバー ボタンの動作で CToolBarCPaletteBar からの派生を提供します。 CPaletteBar で実装されたパレット固有の動作は、次のとおりです。

    • フローティング (WS_POPUP) ウィンドウ スタイル

    • 2 次元の配置ツール ボタンの行と列には:作成、描画、およびボタン ヒット テスト

    • 細い (テキストなし) タイトル バー

    • 追跡四角形を使用した移動できるパレット

  • CTRLBARS には、ON_COMMAND_EX と ON_UPDATE_COMMAND_UI_RANGE の使用例もあります。 CTRLBARS のコントロール バー用のカスタマイズ オプションの多くは、「テクニカル ノート 31: コントロール バー」で説明されています。

  • セキュリティに関するメモセキュリティに関するメモ

    このサンプル コードは概念を示すためのものであり、その概念に関連するコードのみを示しています。特定の環境について必ずしもセキュリティ要件を満たしていませんので、そのまま使用しないでください。セキュリティおよびエラー処理コードを追加して、プロジェクトをより安全かつ堅牢にすることをお勧めします。これらのサンプル コードは、現状有姿のままで提供されるものであり、一切保証されていません。

サンプルとそのインストール手順を取得するには

Visual Studio のサンプルにアクセスするには

  • [ヘルプ] メニューの [サンプル] をクリックします。

    既定では、これらのサンプルは drive:\Program Files\Microsoft Visual Studio 10.0\Samples\ にインストールされています。

  • このサンプルの最新版および他のサンプルの一覧については、MDSN Web サイトに Visual Studio サンプル 」を参照してください。

サンプルのビルドと実行

CTRLBARS サンプルをビルドおよび実行するには

  1. Ctrlbars.sln を開きます。

  2. [ビルド] メニューの [ビルド] をクリックします。

  3. でデバッグ メニューの、[デバッグなしで開始 をクリックします。

最初に CTRLBARS を実行するときは、以下のコントロールがすべて表示されます。

  • 5 ボタンがツールバーはすぐに、メニュー バーの下に配置されます。 最初のボタン (太い上向きの矢印) を使用すると、ツール バーの大きさが [Short] (ボタン 5 個) と [Long] (ボタン 10 個) の間で切り替わります。 ボタンは常にアクティブでない ショート/長整数型の最初の ボタンとを開き、バージョン情報] ダイアログ ボックスの ヘルプ ボタンを除くです。

  • 2 番目のツール バーは、最初のツール バーのすぐ下に配置されます。 このツールバーは、[Style Bar] という名前は、次のテキストの配置スタイルの 1 つ指定です。左、中央、右、または揃え)。 いずれかのスタイルを選択すると、[Style Bar] の状態だけが変化します。

  • ステータス バーはウィンドウの一番下に配置されます。

  • ツール ボタンなどの 3 × 4 配列がフローティング パレットは、ウィンドウの上部にあります。

  • ダイアログ バーは、ウィンドウの左の境界に配置されます。 このコントロール バーのレイアウトがダイアログ テンプレート リソース (IDD_VIEW_SELECT) で定義されているため、ダイアログ バーです。

[View] メニューでは、最初の 4 つのコントロール バーを表示または非表示にできます。 ダイアログ バーは常に表示されています。 ツールの 、 スタイルパレット コントロール バーの非表示/表示状態の /非 チェック ボックス、ダイアログ バーに直ちに反映されます。 また、このチェック ボックスを使用して、ほかのコントロール バーの表示または非表示を切り替えることもできます。

表示 ] メニューの コマンドのメニュー バー上を使用すると、ダイアログ バー、Z オーダーのコントロール バーの上部になるように、コントロール バーを並べ替えることができます。 ダイアログ バーの先頭にある場合は、全体のウィンドウを除く、メニュー バーとタイトル バーの左端に沿って拡張します。 2 つのツール バーの左端は、ダイアログ バーに接します。 ダイアログ バーを本来の Z オーダーの位置 (ほかのすべてのコントロール バーの後ろ) に戻すと、ダイアログ バーの最上部が 2 番目のツール バーの下部に接し、ダイアログ バーの最下部はステータス バーの上部に接します。 つまり、コントロール バーが指定順にウィンドウ領域を割り当てられるという基本アルゴリズムが反映されています。

の左、右、中央揃え)、4 つのテキストの配置スタイルのいずれかを選択] メニューの使用スタイルします。 任意に選択、即時および対応するボタン、バーのコンボ ボックス スタイルで反映されます。 同様に、[Style Bar] のコンボ ボックスに表示されているスタイルを選択することも、4 つのボタンのどれかをクリックして選択することもできます。 新しい選択範囲は直ちにおよびスタイル メニューで、他のコントロールの状態に反映されます。

パレット メニューを使用して、3 × 4 から 6 - で - 2 にツール パレットの配置を変更できます。

からパレット ツールを選択すると、]、[< 種類 > した [ステータス バー メッセージ行を示していますツールは、"< 種類 > で選択した 12 ツールのことを示します。 この選択内容は、ダイアログ バーのコンボ ボックスに反映されます。 また、このコンボ ボックスでも、ツールを選択できます。

ツール、最後に選択した表示に加え、ステータス バーも 3 つのキー、INS、Caps Lock、および Num Lock の状態を示しています。

Keywords

このサンプルでは、次のキーワードを使用します。

AfxFormatString1; AfxGetApp; AfxIsValidAddress; AfxRegisterWndClass; AfxThrowResourceException; BitBlt; CBrush::CreateSolidBrush; CCmdUI::ContinueRouting; CCmdUI::Enable; CCmdUI::SetCheck; CCmdUI::SetText; CComboBox::AddString; CComboBox::Create; CComboBox::GetCurSel; CComboBox::GetLBText; CComboBox::SetCurSel; CControlBar::GetBarStyle; CControlBar::SetBarStyle; CDC::Attach; CDC::Detach; CDC::PatBlt; CDC::RectVisible; CDialogBar::Create; CDumpContext::GetDepth; CFont::CreateFontIndirect; CFrameWnd::LoadFrame; CFrameWnd::RecalcLayout; CFrameWnd::SetMessageText; CGdiObject::Attach; CObject::AssertValid; CObject::Dump; CRect::Height; CRect::InflateRect; CRect::SetRectEmpty; CRect::Width; CStatusBar::Create; CStatusBar::GetPaneInfo; CStatusBar::SetIndicators; CStatusBar::SetPaneInfo; CString::LoadString; CToolBar::CToolBar; CToolBar::CommandToIndex; CToolBar::Create; CToolBar::GetButtonInfo; CToolBar::GetItemID; CToolBar::GetItemRect; CToolBar::LoadBitmap; CToolBar::SetButtonInfo; CToolBar::SetButtons; CToolBar::SetHeight; CToolBar::SetSizes; CWinApp::InitInstance; CWinApp::OnIdle; CWnd::ClientToScreen; CWnd::CreateEx; CWnd::GetCapture; CWnd::GetClientRect; CWnd::GetDC; CWnd::GetDlgItem; CWnd::GetOwner; CWnd::GetParentFrame; CWnd::GetSafeHwnd; CWnd::GetStyle; CWnd::GetWindowRect; CWnd::Invalidate; CWnd::InvalidateRect; CWnd::OnCancelMode; CWnd::OnCreate; CWnd::OnLButtonDown; CWnd::OnMouseActivate; CWnd::OnMouseMove; CWnd::OnSysColorChange; CWnd::PreCreateWindow; CWnd::ReleaseDC; CWnd::SendMessage; CWnd::SetCapture; CWnd::SetFont; CWnd::SetWindowPos; CWnd::ShowWindow; CWnd::UpdateDialogControls; CWnd::UpdateWindow; CreateBitmap; CreateCompatibleBitmap; CreateCompatibleDC; CreateDIBitmap; CreatePatternBrush; CreatePen; CreateSolidBrush; DeleteDC; DeleteObject; FillRect; FindResource; FrameRect; FreeResource; GetActiveWindow; GetBValue; GetCapture; GetDC; GetDeviceCaps; GetGValue; GetNextWindow; GetObjectType; GetParent; GetRValue; GetStockObject; GetSysColor; GetSystemMetrics; GetVersion; GetWindow; HIBYTE; InvertRect; LOBYTE; LoadCursor; LoadIcon; LoadResource; LockResource; MAKEINTRESOURCE; OffsetRect; PatBlt; RGB; ReleaseCapture; ReleaseDC; SelectObject; SendMessage; SetActiveWindow; SetBkColor; SetCapture; SetROP2; SetRect; SetTextColor; StretchDIBits; UpdateWindow; free; lstrcpy; malloc; memcpy; memset

注意

このサンプルの Visual C++ ウィザード、ライブラリ、およびコンパイラ、一部の機能が完全に実演可能性がありますが、まだ、目的のタスクを完了する方法を示しています。

参照

その他の技術情報

MFC サンプル