Freigeben über


CTRLBARS-Beispiel: Veranschaulicht benutzerdefinierte Steuerleisten

Das CTRLBARS-Beispiel demonstriert die folgenden Anpassungen Optionen für die Steuerleisten:

  • Mehrerer Steuerleisten in einem Rahmenfenster, selektives ein- und Ausblenden der Steuerleisten und dynamische Neuanordnung von Steuerelementen auf den Rand des Rahmenfensters. Die Steuerleisten werden Speicherplatz in das Rahmenfenster in Ihrer Z-Reihenfolge zugeordnet und dem, ist zunächst die Reihenfolge, in der Sie erstellt wurden (siehe CMainFrame::OnCreate). CTRLBARS ändert die Z-Reihenfolge der Dialogleisten mithilfe der Funktion CWnd::SetWindowPos. Sie Blendet oder eine Steuerleiste mit CWnd::ShowWindow aus. Bei jeder der Z-Reihenfolge Änderung oder blendet oder eine Steuerleiste, ruft es CFrameWnd::RecalcLayout danach, so dass das Fenster den verbleibenden sichtbaren Steuerleisten neu zugeordnet werden wird.

  • Benutzerdefinierte Symbolleisten, dynamisches Neuanordnung von Schaltflächen auf der Symbolleiste und Hinzufügen von Steuerelementen (z. B. eines Kombinationsfelds) zu einer Symbolleiste. Jeder veranschaulicht zwei Möglichkeiten, eine Symbolleiste angepasst. Der erste Symbolleiste auf der Symbolleiste ändert die Anordnung der Schaltflächen zwischen kurzen (5 Schaltflächen) und Long (10 Schaltflächen). CTRLBARS ruft CToolBar::SetButtonInfo für jede Schaltfläche, um es an eine Position nebeneinander auf der Symbolleistenbitmap und an eine Befehls-ID zuordnen. Der zweiten Symbolleiste, die Leiste Format veranschaulicht, wie ersetzen Sie eine Symbolleisten-Schaltfläche (oder Trennzeichen) mithilfe eines Steuerelements (eines Kombinationsfelds in diesem Beispiel). CMainFrame::CreateStyleBar erstellt eine 100 Pixel breiten Symbolleisten-Trennzeichen. Anschließend erstellt das Kombinationsfeld (IDW_COMBO) als untergeordnetes Element der Symbolleiste und legt die Position des im Kombinationsfeld auszuführende den Speicherplatz, die das Trennzeichen reservierten fest.

  • Benutzerdefinierte Statusleiste, benutzerdefinierte Indikatoren und Senden von Text in der Zeile angezeigt. In Statusleisten aktualisiert das Framework automatisch einen Indikator FESTSTELL-, NUM oder Rollen bei, z. B. ID_INDICATOR_CAPS als einer der an indicators[]CStatusBar::SetIndicators Array übergeben Angabe. Jeder veranschaulicht Balken die standardmäßigen Statussymbole mit dem Status Überschreibmodus (ÜB) erweitern, die der Benutzer durch Drücken der EINFG-Taste schaltet. Dies erfordert einen Meldungshandler für den Befehl ID_TOGGLE_INSERT (auf den Schlüssel VK_INSERT ) sowie eine Ressourcenzeichenfolge (ID_INDICATOR_OVR) für den Text "ÜB"angezeigt Sie werden, wenn der Überschreibmodus aktiviert ist. Ressource ID ID_INDICATOR_OVR ist eine vordefinierte MFC-Konstante.

  • Dialogleiste, also eine Steuerleiste, deren Layout wird durch ein Dialogfeld Ressource Vorlage definiert. Wie bei jeder Steuerleiste werden Benachrichtigungen von Steuerelementen auf der Dialogleiste an den Besitzer der Dialogleiste, nämlich das Hauptrahmenfenster weitergeleitet. CMainFrame::OnSelChangePalette ist z. B. der Handler für das CBN_SELCHANGE Benachrichtigung von Kombinationsfeld-Steuerelement auf eine Dialogleiste. CMainFrame auch hat Handler für zwei der drei an Kontrollkästchen (Formatvorlagen und Palette). Kein Handler muss für das dritte Kontrollkästchen Symbolleiste ein-/ausblenden, geschrieben werden, da das Framework den standard-Handler für ID_VIEW_TOOLBAR bereitstellt.

  • Unverankerte Symbolpalette, dem verhält sich wie eine Symbolleiste aber ein zweidimensionales Array von Symbolleisten-Schaltflächen angezeigt wird und als nicht modales Fenster über das Rahmenfenster Besitzer überlagert. Die unverankerte Symbolpalette ist in einer wiederverwendbaren Klasse CPaletteBarCToolBar abgeleitet implementiert wurde. Die Ableitung von CToolBar stellt CPaletteBar mit Symbolleiste Schaltfläche Verhalten. Das in CPaletteBar implementierte palettenspezifische Verhalten beinhaltet:

    • Unverankertes (WS_POPUP) Fensterstil.

    • Zweidimensionale Anordnung der Symbolleisten-Schaltflächen in Zeilen und Spalten: Erstellen, zeichnen und Trefferüberprüfung für Schaltflächen.

    • (Kein Text) Dünne Titelleiste.

    • Verschiebbare Palette mit einer Verfolgung Rechteck.

  • CTRLBARS demonstriert auch mithilfe von ON_COMMAND_EX und ON_UPDATE_COMMAND_UI_RANGE. Viele der Steuerelement-Leiste Anpassungsoptionen dargestellt, indem jeder werden in Technischer Hinweis 31 erläutert.

  • SicherheitshinweisSicherheitshinweis

    Dieser Beispielcode soll ein Konzept veranschaulichen, und es wird nur den Code, der für dieses Konzept relevant sind. Möglicherweise erfüllt dieser nicht die Sicherheitsanforderungen für eine bestimmte Umgebung, und er sollte nicht genau wie dargestellt verwendet werden. Wir empfehlen, Sicherheits- und Fehlerbehandlungscode hinzuzufügen, um Ihre Projekte sicherer und stabiler zu machen. Microsoft stellt diesen Beispielcode "Wie besehen"keine Garantien.

So erhalten Sie Beispiele und Anweisungen für deren Installation:

Um Beispiele von Visual Studio zuzugreifen

  • im Menü Hilfe Menü klicken Beispiele.

    Standardmäßig sind die Beispiele in installiert. Laufwerk: \Programme\Microsoft visual Studio 10.0\Samples\.

  • Die neueste Version dieses Beispiels und eine Liste der anderen Beispiele finden Sie unter Visual Studio Samples auf der MSDN-Website.

Erstellen und Ausführen des Beispiels

So erstellen und das CTRLBARS-Beispiel führen

  1. Öffnen Sie CTRLBARS.sln.

  2. erstellen Sie Menü, klicken Sie auf erstellen.

  3. Debuggen Sie auf Menü, klicken Sie auf Starten ohne Debuggen.

Beim Ausführen von CTRLBARS sind die verschiedenen Steuerelemente eingeblendet.

  • Eine Symbolleiste, die fünf Tasten aufweist, die unmittelbar unterhalb der Menüleiste befindet sich. Die erste Schaltfläche (mit dem dicken Aufwärtspfeil) Schaltet die Symbolleiste Anordnung zwischen "Short"(5 Schaltflächen) und "Lang"(10 Schaltflächen). Die Schaltflächen sind immer außer der ersten Short/Long Schaltfläche und die Hilfe Schaltfläche öffnet das Info-Dialogfeld inaktiv.

  • Eine zweite Symbolleiste, die unmittelbar unterhalb der ersten Symbolleiste befindet sich. Diese Symbolleiste, mit dem Namen der Leiste Format ist, in dem Sie eine der folgenden Formatvorlagen für Text Ausrichtung angeben: Links, zentriert, rechts oder Blocksatz. Eine der Formatvorlagen auswählen hat keine Auswirkungen außer den Zustand des Style-Leiste zu ändern.

  • Eine Statusleiste befindet sich am unteren Rand des Fensters.

  • Oben liegt im Fenster eine unverankerte Palette mit einer 3 x 4-Array von Symbolleisten-Schaltflächen.

  • Eine Dialogleiste liegt am linken Rand des Fensters. Es ist eine Dialogleiste, da das Layout dieser Steuerleiste in einer Dialogfeldressource Vorlage (IDD_VIEW_SELECT) definiert ist.

Das Menü View können Sie die ein- oder Ausblenden eines der ersten vier Steuerleisten. Die Dialogleiste ist immer sichtbar. Die ein-und ausblenden-Zustand der Tools, Formatvorlagenund Palette Steuerleisten wird in der an Kontrollkästchen auf der Dialogleiste sofort sichtbar. Sie können ausblenden oder Anzeigen eines anderen Steuerleisten, indem Sie das Kontrollkästchen umschalten.

Befehls Dlg Bar Top in im Ansicht verwenden, können Sie neu die Steuerleisten anordnen so, dass die Dialogleiste am oberen Rand der Z-Reihenfolge der Steuerleisten ist. Wenn die Dialogleiste am Anfang ist, erweitert es entlang des gesamten linken Rahmens des Fensters außer für die Menüleiste und Titelleiste. Das linke Ende zwei Symbolleisten berühren die Dialogleiste. Wenn die Dialogleiste an seiner ursprünglichen Position Z-Reihenfolge zurückgegeben wird (nach allen anderen Steuerleisten), berührt die Oberkante der Dialogleiste am unteren Rand der zweiten Symbolleiste Leiste, und das Ende der Dialogleiste berührt am oberen Rand der Statusleiste angezeigt. Dies entspricht den grundlegenden Algorithmus, dass Steuerleisten Fenster Immobilien Grundlage First-Come, First-Serve reserviert werden.

Stil Menü können Sie eine der vier Ausrichtung Textformatvorlagen, Left, Centered, Right oder Justified auswählen. Jede Auswahl wird sofort in die Formatvorlage Balken Kombinationsfeld und die entsprechende Schaltfläche sichtbar. Einer Auswahl können Sie ebenso entweder durch Auswahl eines der Formate in das Kombinationsfeld Format Leiste oder drücken eine der vier Schaltflächen vornehmen. Die neue Auswahl wird sofort in den Zustand der anderen Steuerelemente und im Format wiedergegeben.

Im Menü Palette können Sie die Tool-Anordnung von der Palette von 3 x 4 in 2 x 6 ändern.

Wenn Sie ein Tool aus der Palette auswählen, wird Meldungszeile der Statusleiste die Meldung "Sie die < > ausgewählt habenTool"in welcher < Typ >Gibt an, welche 12 Tools, die Sie ausgewählt haben. Diese Auswahl wird im Kombinationsfeld der Dialogleiste angezeigt. Sie können auch ein Tool verwenden dieses Kombinationsfeld auswählen.

Die Statusleiste, zusätzlich zum Anzeigen des zuletzt verwendeten Tool zeigt auch den Status der drei Schlüssel, INS, FESTSTELL- und NUM.

Schlüsselwörter

Dieses Beispiel demonstriert die Verwendung der folgenden Schlüsselwörter:

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

Hinweis

Zeigt weiterhin wie Sie den beabsichtigten Vorgang ausführen, aber in diesem Beispiel möglicherweise nicht genau veranschaulichen einige Features von Visual C++-Assistenten, Bibliotheken und Compiler.

Siehe auch

Weitere Ressourcen

MFC-Beispiele