TN031: paski sterowania
[!UWAGA]
Następująca uwaga techniczna nie został zaktualizowana od pierwszego uwzględnienia jej w dokumentacji online.W rezultacie niektóre procedury i tematy może być nieaktualne lub nieprawidłowe.Aby uzyskać najnowsze informacje, zaleca się wyszukać temat w indeksie dokumentacji online.
Ta notatka zawiera opis klas pasek sterowania w MFC: Ogólne CControlBar, CStatusBar, CToolBar, CDialogBar, i CDockBar.
CControlBar
A ControlBar jest CWnd-pochodnych klasy, która:
Wyrównanie do góry lub u dołu okna ramki.
Może zawierać elementy podrzędne, które są albo kontrole oparte na HWND (na przykład CDialogBar) lub non-HWND podstawie elementów (na przykład CToolBar, CStatusBar).
Paski formant obsługuje dodatkowe style:
CBRS_TOP(Wartość domyślna) przypiąć pasek sterowania do góry.
CBRS_BOTTOMNumer PIN pasek sterowania do dołu.
CBRS_NOALIGNNie zmienia położenie na pasku sterowania, gdy zmienia rozmiar obiektu nadrzędnego.
Klasy pochodne CControlBar zapewnienia bardziej interesujące implementacji:
CStatusBarPasek stanu, elementy są okienka pasek stanu zawierające tekst.
CToolBarPasek narzędzi, elementy są przyciski z mapami bitowymi ustawionych w rzędzie.
CDialogBarPasek narzędzi ramka zawierająca wzorzec windows formantów (utworzonych z zasobu szablonu okno dialogowe).
CDockBar A uogólnione miejsce dokowania dla innych CControlBar pochodnych obiektów.Określonego elementu członkowskiego funkcji i zmiennych, które są dostępne w tej klasie mogą ulec zmianie w przyszłych wydaniach.
Wszystkie pasek sterowania obiektów/windows będzie okien podrzędnych niektóre okna ramki nadrzędnej.Są one zazwyczaj dodawane jako element równorzędny do obszaru klienckiego ramki (na przykład klienta MDI lub widoku).Ważne jest podrzędny identyfikator okna pasek sterowania.Domyślny układ pasek sterowania działa tylko dla kontroli pasków z identyfikatorami w zakresie AFX_IDW_CONTROLBAR_FIRST do AFX_IDW_CONTROLBAR_LAST.Należy zauważyć, że chociaż istnieje zakres kontroli 256 bar identyfikatory, pierwsze 32 te pasek sterowania identyfikatory są specjalne ponieważ są bezpośrednio obsługiwane przez architekturę podglądu wydruku.
CControlBar Klasy daje standardowej implementacji dla:
Wyrównywanie pasek sterowania do górnej, dolnej lub którejś części ramki.
Przydzielanie tablice elementu sterowania.
Wspieranie wdrażania klas pochodnych.
Zazwyczaj zostaną osadzone obiekty pasek sterowania C++ jako członkowie CFrameWnd klasy i będzie można oczyścić kiedy nadrzędny HWND i obiektu są niszczone.Jeśli trzeba przydzielić obiektu paska sterowania na stercie, można po prostu ustawić m_bAutoDestruct członka TRUE aby pasek sterowania "usunąć tę" podczas HWND jest niszczony.
[!UWAGA]
Jeśli można tworzyć własne CControlBar-pochodnych klasy, a nie przy użyciu jednego z MFC pochodnych klas, takie jak CStatusBar, CToolBar, lub CDialogBar, trzeba będzie zestaw m_dwStyle element członkowski danych.Można to zrobić w ręcznej zmiany z Create:
// CMyControlBar is derived from CControlBar
BOOL CMyControlBar::Create( CWnd* pParentWnd, DWORD dwStyle, UINT nID )
{
m_dwStyle = dwStyle;
.
.
.
}
Pasek sterowania układu algorytm
Algorytm Układ paska sterowania jest bardzo proste.Okno ramek wysyła wiadomość WM_SIZEPARENT do wszystkich obiektów podrzędnych w zakresie pasek sterowania.Wskaźnik do prostokąta klienta nadrzędnego jest przekazywana wraz z tej wiadomości.Ta wiadomość jest wysyłana do dzieci w porządku osi Z.Dzieci pasek sterowania użyć tych informacji do pozycji i zmniejszyć rozmiar obszaru klienta nadrzędnego.Ostateczne prostokąt, który opuścił dla obszaru klienckiego normalne (mniej paski sterowania) jest używana do pozycji okna głównego klienta (zazwyczaj klienta, widok lub podziału okna MDI).
Zobacz CWnd::RepositionBars i CFrameWnd::RecalcLayout uzyskać więcej szczegółów.
MFC prywatnych wiadomości systemu Windows, łącznie z WM_SIZEPARENT, są udokumentowane w technicznej 24 Uwaga.
CStatusBar
Pasek stanu jest pasek sterowania, który ma wiersza tekstu wyjściowego okienek.Istnieją dwa podstawowe sposoby używanie tekstu wyjściowego okienek:
Jako wiersz wiadomości
(na przykład standardowe menu Pomoc wiersz wiadomości).Zwykle są one dostępne przez 0 systemem indeksowane
Jako wskaźniki stanu
(na przykład WPR, NUM i SCRL wskaźniki).Te są zwykle dostępne przez identyfikator ciągiem i polecenia.
Czcionka na pasku stanu jest punkt 10 MS Sans Serif (podyktowane Podręcznik projektowania aplikacji interfejsu systemu Windows lub czcionki twórców map najlepszego dopasowania 10-punktowej czcionki proporcjonalne szwajcarski).W niektórych wersjach systemu Windows, takich jak japoński edition wybrane czcionki są różne.
Kolory używane na pasku stanu są również zgodne z zaleceniem Podręcznik projektowania aplikacji interfejsu systemu Windows.Te kolory nie są zapisane i są zmieniane dynamicznie w odpowiedzi na dostosowanie użytkownika w Panelu sterowania.
Element |
Wartości kolorów systemu Windows |
Domyślne RGB |
---|---|---|
Tło paska stanu |
COLOR_BTNFACE |
RGB (192, 192, 192) |
Tekst paska stanu |
COLOR_BTNTEXT |
RGB (000 000, 000) |
Stan paska góry do lewej krawędzi |
COLOR_BTNHIGHLIGHT |
RGB (255, 255, 255) |
Bot/prawe krawędzie — pasek stanu |
COLOR_BTNSHADOW |
RGB (128, 128, 128) |
CCmdUI Obsługa CStatusBar
Sposób wskaźniki są zwykle aktualizowane jest przez ON_UPDATE_COMMAND_UI mechanizmu.Na czas bezczynności, paska stanu będzie wywoływać ON_UPDATE_COMMAND_UI obsługi o identyfikatorze ciąg okienka wskaźnika.
ON_UPDATE_COMMAND_UI Obsługi może wywołać:
Włącz: Aby włączyć lub wyłączyć okienko.Okienko wyłączone wygląda dokładnie tak samo jak włączone okienko, ale tekst jest niewidoczny (to znaczy, wyłącza się wskaźnik tekst).
SetText: Aby zmienić tekst.Należy zachować ostrożność, jeśli używasz tego ponieważ okienku nie będzie automatycznie dopasowywany.
Odnoszą się do klasy CStatusBar w Informacje dotyczące biblioteki klas szczegółowe informacje na temat CStatusBar tworzenie i dostosowywanie interfejsów API.Większość dostosowywania pasków stanu powinno być wykonane przed na pasku stanu jest początkowo widoczne.
Na pasku stanu obsługuje tylko jednym okienku elastyczna, zwykle pierwszego okienka.Rozmiar tego okienka jest naprawdę minimalny rozmiar.Jeśli pasek stanu jest większy niż minimalny rozmiar wszystkich okienek, otrzyma wszelkie dodatkowe szerokości do okienka elastyczna.Domyślna aplikacja z paskiem stanu ma wyrównany do prawej wskaźników dla WPR, NUM i SCRL od pierwszego okienka jest elastyczna.
CToolBar
Pasek narzędzi jest pasek sterowania z wierszem mapa bitowa przycisków, które mogą obejmować separatory.Są obsługiwane dwa style przycisków: przyciski pola wyboru i przyciski.Funkcje grupy opcji może być zbudowana z pola wyboru, przyciski i ON_UPDATE_COMMAND_UI.
Wszystkie przyciski na pasku narzędziowym bitmapy są pobierane z jednej bitmapy.Ta mapa bitowa musi zawierać jeden obraz lub glifów dla każdego przycisku.Zazwyczaj kolejność obrazów/glifów w mapie bitowej jest takiej samej kolejności, które będą pobierane na ekranie. (Można to zmienić za pomocą dostosowania interfejsy API.)
Każdy przycisk musi mieć taki sam rozmiar.Wartość domyślna to standard 24 x 22 piksele.Każdy obraz/glif musi mieć taki sam rozmiar i musi być side-by-side w mapie bitowej.Domyślny rozmiar obrazu/glifów jest 16 x 15 pikseli.W związku z tym dla narzędzi z przyciskami 10 (przy użyciu standardowych rozmiarów), trzeba to 160 pikseli szerokości i wysokości 15 pikseli bitmapy.
Każdy przycisk ma jeden i tylko jeden obraz/glifów.Inny przycisk stwierdza i style (na przykład wciśnięty, w górę, w dół, wyłączone, wyłączone w dół, nieokreślony) algorytmicznie są generowane na podstawie jednego obrazu/glifów.Teoretycznie można dowolnego koloru bitmapy lub DIB.Algorytm generowania inny przycisk Państwa działa najlepiej, jeśli oryginalny obraz jest odcieni szarości.Przyjrzyj się przycisków na pasku narzędzi Standardowy i clipart przycisk paska narzędzi w próbce ogólne MFC CLIPART przykłady.
Kolory używane w pasku narzędzi są również zgodne z zaleceniem Podręcznik projektowania aplikacji interfejsu systemu Windows.Te kolory nie są zapisane i są zmieniane dynamicznie w odpowiedzi na dostosowanie użytkownika w Panelu sterowania.
Element |
Wartości kolorów systemu Windows |
Domyślne RGB |
---|---|---|
Tła paska narzędzi |
COLOR_BTNFACE |
RGB(192,192,192) |
Przyciski paska narzędzi góry do lewej krawędzi |
COLOR_BTNHIGHLIGHT |
RGB(255,255,255) |
Bot/prawej krawędzi przyciski paska narzędzi |
COLOR_BTNSHADOW |
RGB(128,128,128) |
Ponadto mapa bitowa przycisków na pasku narzędzi są ponownie pokolorowane tak, jakby były standardowych formantów przycisk systemu Windows.To ponownego kolorowania występuje po załadowaniu mapy bitowej z zasobu i w odpowiedzi na zmianę kolorów systemowych w odpowiedzi na dostosowanie użytkownika w Panelu sterowania.Następujące kolory mapy bitowej narzędzi będzie automatycznie klipu, więc powinny być używane z rozwagą.Jeśli nie chcesz mieć część swojej mapy bitowej ponownie pokolorowane, należy użyć na kolor, który jest ściśle zbliżona jeden zmapowane wartości RGB.Mapowanie odbywa się na podstawie dokładnej wartości RGB.
Wartość RGB |
Mapowanego dynamicznie wartość KOLORU |
---|---|
RGB (000 000, 000) |
COLOR_BTNTEXT |
RGB (128, 128, 128) |
COLOR_BTNSHADOW |
RGB (192, 192, 192) |
COLOR_BTNFACE |
RGB (255, 255, 255) |
COLOR_BTNHIGHLIGHT |
Odnoszą się do klasy CToolBarInformacje dotyczące biblioteki klas szczegółowe informacje na temat CToolBar tworzenie i dostosowywanie interfejsów API.Większość dostosowywania pasków narzędzi należy wykonać przed paska narzędzi jest początkowo widoczne.
Dostosowywanie interfejsów API pozwala dopasować przycisk identyfikatory, style, szerokość odstępu i obraz/glif, który jest używany do działania przycisku.Domyślnie nie należy używać tych interfejsów API.
CCmdUI Obsługa CToolBar
Przyciski paska narzędzi są zawsze na bieżąco sposób jest przez ON_UPDATE_COMMAND_UI mechanizmu.Na czas bezczynności, paska narzędzi będzie wywoływać ON_UPDATE_COMMAND_UI obsługi o identyfikatorze polecenia tego przycisku.ON_UPDATE_COMMAND_UInie jest wywoływana dla separatorów, ale jest wywoływana dla przycisków pola wyboru i przyciski.
ON_UPDATE_COMMAND_UI Obsługi może wywołać:
Włącz: Aby włączyć lub wyłączyć przycisk.To działa równie przycisków pola wyboru i przyciski.
SetCheck: Aby ustawić stan wyboru jednego przycisku.Zawód ten dla przycisku paska narzędzi zamieni go w przycisku pole wyboru.SetCheckprzyjmuje parametr, który może być 0 (nie jest zaznaczona), 1 (zaznaczone) lub 2 (nieokreślona)
SetRadio: Skrót dla SetCheck.
Pole wyboru przycisków znajdują się przyciski pola wyboru "AUTO"; to znaczy kiedy użytkownik naciśnie je natychmiast zmienią Państwo.Sprawdzany jest stan dół lub obniżone.Nie istnieje sposób interfejsu użytkownika wbudowanej zmienić przycisk w stan "nieokreślone"; które muszą być wykonywane przez kod.
Dostosowywanie interfejsów API pozwoli zmienić stan przycisku na pasku narzędzi danego, najlepiej należy zmienić tych państw w ON_UPDATE_COMMAND_UI obsługi dla polecenia reprezentuje przycisk na pasku narzędzi.Należy pamiętać, że przetwarzanie bezczynności zmieni stan przycisków paska narzędzi z ON_UPDATE_COMMAND_UI obsługi, więc zmiany wprowadzone w tych państwach poprzez SetButtonStyle ginące po następnym bezczynności.
Przyciski paska narzędzi będą wysyłać WM_COMMAND wiadomości jak normalne przyciski lub elementy menu i normalnie są obsługiwane przez ON_COMMAND obsługi w tej samej klasie, która zapewnia ON_UPDATE_COMMAND_UI obsługi.
Istnieją cztery narzędzi przycisk style (wartości TBBS_) używane dla stanów wyświetlania:
TBBS_CHECKED: pole wyboru jest zaznaczone obecnie (w dół).
TBBS_INDETERMINATE: pole wyboru jest aktualnie nieokreślone.
TBBS_DISABLED: Przycisk jest obecnie wyłączony.
TBBS_PRESSED: Aktualnie Naciśnięto przycisk.
Sześć urzędowego stylów przycisków Podręcznik projektowania aplikacji interfejsu Windows są reprezentowane przez następujące wartości TBBS:
Aż = 0
Mouse Down = TBBS_PRESSED (| inny styl)
Wyłączone = TBBS_DISABLED
Dół = TBBS_CHECKED
W dół wyłączona = TBBS_CHECKED | TBBS_DISABLED
Nieokreślony = TBBS_INDETERMINATE
CDialogBar
Pasek dialogowy jest pasek sterowania, który zawiera standardowych formantów systemu Windows.Działa podobnie jak okno dialogowe, ponieważ zawiera formanty i obsługuje przechodzenie między nimi.Działa również jak okno dialogowe, ponieważ korzysta z szablonu okno dialogowe do reprezentowania na pasku.
A CDialogBar jest używany dla narzędzi Podgląd wydruku, który zawiera formanty standardowe paź.
Za pomocą CDialogBar jest jak przy CFormView.Musisz Definiowanie szablonu okno dialogowe paska i usunąć wszystkie style, z wyjątkiem WS_CHILD.Należy zauważyć, że okno dialogowe nie muszą być widoczne.
Powiadomienia kontroli dla CDialogBar zostaną wysłane do elementu nadrzędnego pasek sterowania (podobnie jak przyciski paska narzędzi).
CCmdUI Obsługa CDialogBar
Okno dialogowe przyciski paska powinny być aktualizowane przez ON_UPDATE_COMMAND_UI mechanizmu obsługi.W czasie bezczynności, paska okno będzie wywoływać ON_UPDATE_COMMAND_UI obsługi o identyfikatorze polecenia wszystkie przyciski o identyfikatorze >= 0x8000 (to znaczy w zakresie identyfikatorów poleceń).
ON_UPDATE_COMMAND_UI Obsługi może wywołać:
Włącz: Aby włączyć lub wyłączyć przycisk.
SetText: Aby zmienić tekst przycisku.
Dostosowywanie jest możliwe za pośrednictwem Menedżera okien standardowych interfejsów API.