Klasa CControlBar
Klasa bazowa klas cStatusBar, CToolBar, CDialogBar, CReBar i COleResizeBar.
Składnia
class CControlBar : public CWnd
Elementy członkowskie
Konstruktory chronione
Nazwa/nazwisko | opis |
---|---|
CControlBar::CControlBar | CControlBar Tworzy obiekt. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
CControlBar::CalcDynamicLayout | Zwraca rozmiar dynamicznego paska sterowania jako obiektu CSize . |
CControlBar::CalcFixedLayout | Zwraca rozmiar paska sterowania jako obiekt CSize . |
CControlBar::CalcInsideRect | Zwraca bieżące wymiary powierzchni paska sterowania; w tym obramowania. |
CControlBar::D oPaint | Renderuje obramowania i uchwyt paska sterowania. |
CControlBar::D rawBorders | Renderuje obramowania paska sterowania. |
CControlBar::D rawGripper | Renderuje uchwyt paska sterowania. |
CControlBar::EnableDocking | Umożliwia, aby pasek sterowania był zadokowany lub przestawny. |
CControlBar::GetBarStyle | Pobiera ustawienia stylu paska sterowania. |
CControlBar::GetBorders | Pobiera wartości obramowania paska sterowania. |
CControlBar::GetCount | Zwraca liczbę elementów innych niż HWND na pasku sterowania. |
CControlBar::GetDockingFrame | Zwraca wskaźnik do ramki, w której jest zadokowany pasek sterowania. |
CControlBar::IsFloating | Zwraca wartość niezerową, jeśli dany pasek sterowania jest przestawny. |
CControlBar::OnUpdateCmdUI | Wywołuje obsługę poleceń interfejsu użytkownika. |
CControlBar::SetBarStyle | Modyfikuje ustawienia stylu paska sterowania. |
CControlBar::SetBorders | Ustawia wartości obramowania paska sterowania. |
CControlBar::SetInPlaceOwner | Zmienia lokalnego właściciela paska sterowania. |
Publiczne elementy członkowskie danych
Nazwa/nazwisko | opis |
---|---|
CControlBar::m_bAutoDelete | Jeśli wartość jest niezerowa, obiekt CControlBar zostanie usunięty, gdy pasek sterowania systemu Windows zostanie zniszczony. |
CControlBar::m_pInPlaceOwner | Lokalny właściciel paska sterowania. |
Uwagi
Pasek sterowania to okno, które jest zazwyczaj wyrównane do lewej lub prawej strony okna ramki. Może zawierać elementy podrzędne, które są kontrolkami opartymi na HWND, które są oknami, które generują komunikaty systemu Windows i odpowiadają na nie lub elementy inne niż HWND, które nie są windows i są zarządzane przez kod aplikacji lub kod struktury. Pola listy i kontrolki edycji to przykłady kontrolek opartych na HWND; Okienka paska stanu i przyciski mapy bitowej to przykłady kontrolek opartych na HWND.
Okienka paska sterowania to zazwyczaj okienka podrzędne dla nadrzędnej ramki okna i zazwyczaj elementy równorzędne dla widoku klienta lub klienta MDI ramki okna. Obiekt CControlBar
używa informacji dotyczących prostokąta klienta okna nadrzędnego, w celu ustalenia własnej pozycji. Następnie informuje okno nadrzędne, ile miejsca pozostaje nieprzydzielonego, w obszarze klienta okna nadrzędnego.
Aby uzyskać więcej informacji na temat funkcji CControlBar
, zobacz:
Uwaga techniczna 31: Paski sterujące.
Hierarchia dziedziczenia
CControlBar
Wymagania
Nagłówek: afxext.h
CControlBar::CalcDynamicLayout
Struktura wywołuje tę funkcję składową, aby obliczyć wymiary dynamicznego paska narzędzi.
virtual CSize CalcDynamicLayout(
int nLength,
DWORD nMode);
Parametry
nLength
Żądany wymiar paska sterowania, poziomy lub pionowy, w zależności od kolumny dwMode.
nMode
Następujące wstępnie zdefiniowane flagi służą do określania wysokości i szerokości dynamicznego paska sterowania. Użyj operatora bitowego OR (|
), aby połączyć flagi.
Flagi trybu układu | Znaczenie |
---|---|
LM_STRETCH | Wskazuje, czy pasek sterowania powinien być rozciągnięty do rozmiaru ramki. Ustaw, jeśli pasek nie jest paskiem dokowania (nie jest dostępny do zadokowania). Nie ustawiono, gdy pasek jest zadokowany lub pływający (dostępny do zadokowania). W przypadku ustawienia LM_STRETCH ignoruje nLength i zwraca wymiary na podstawie stanu LM_HORZ. LM_STRETCH działa podobnie do parametru bStretch używanego w elemencie CalcFixedLayout. Zobacz tę funkcję składową, aby uzyskać więcej informacji na temat relacji między rozciąganiem i orientacją. |
LM_HORZ | Wskazuje, że pasek jest w poziomie lub w pionie. Ustaw, jeśli pasek jest zorientowany w poziomie, a jeśli jest zorientowany w pionie, nie jest ustawiony. LM_HORZ działa podobnie do parametru bHorz używanego w elemencie CalcFixedLayout. Zobacz tę funkcję składową, aby uzyskać więcej informacji na temat relacji między rozciąganiem i orientacją. |
LM_MRUWIDTH | Ostatnio używana szerokość dynamiczna. Ignoruje parametr nLength i używa zapamiętanej ostatnio używanej szerokości. |
LM_HORZDOCK | Wymiary zadokowane w poziomie. Ignoruje parametr nLength i zwraca rozmiar dynamiczny o największej szerokości. |
LM_VERTDOCK | Wymiary zadokowane w pionie. Ignoruje parametr nLength i zwraca rozmiar dynamiczny o największej wysokości. |
LM_LENGTHY | Ustaw, jeśli nLength wskazuje wysokość (kierunek Y) zamiast szerokości. |
LM_COMMIT | Resetuje LM_MRUWIDTH do bieżącej szerokości przestawnego paska sterowania. |
Wartość zwracana
Rozmiar paska sterowania w pikselach obiektu CSize .
Uwagi
Zastąpij tę funkcję składową, aby zapewnić własny układ dynamiczny w klasach pochodnych z CControlBar
klasy . Klasy MFC pochodzące z CControlBar
klasy , takie jak CToolbar, zastępują tę funkcję składową i zapewniają własną implementację.
CControlBar::CalcFixedLayout
Wywołaj tę funkcję składową, aby obliczyć rozmiar poziomy paska sterowania.
virtual CSize CalcFixedLayout(
BOOL bStretch,
BOOL bHorz);
Parametry
bStretch
Wskazuje, czy słupek powinien być rozciągnięty do rozmiaru ramki. Parametr bStretch jest niezerowy, gdy pasek nie jest paskiem dokowania (niedostępnym do dokowania) i jest 0, gdy jest zadokowany lub pływający (dostępny do zadokowania).
bHorz
Wskazuje, że pasek jest w poziomie lub w pionie. Parametr bHorz jest niezerowy, jeśli słupek jest zorientowany poziomo i jest 0, jeśli jest zorientowany pionowo.
Wartość zwracana
Rozmiar paska sterowania w pikselach CSize
obiektu.
Uwagi
Paski sterowania, takie jak paski narzędzi, mogą rozciągać się w poziomie lub w pionie, aby pomieścić przyciski zawarte na pasku sterowania.
Jeśli wartość bStretch ma wartość TRUE, rozciągnij wymiar wzdłuż orientacji dostarczonej przez bHorz. Innymi słowy, jeśli bHorz ma wartość FALSE, pasek sterowania jest rozciągnięty w pionie. Jeśli wartość bStretch ma wartość FALSE, nie występuje żaden odcinek. W poniższej tabeli przedstawiono możliwe permutacje oraz wynikowe style paska sterowania bStretch i bHorz.
bStretch | bHorz | Rozciąganie | Orientacja | Docking/Not docking (Zadokowanie/Brak zadokowania) |
---|---|---|---|---|
PRAWDA | PRAWDA | Rozciągnięcie w poziomie | Orientacja pozioma | Brak zadokowania |
PRAWDA | FAŁSZ | Rozciągnięcie w pionie | Orientacja pionowa | Brak zadokowania |
FAŁSZ | PRAWDA | Brak dostępnego rozciągania | Orientacja pozioma | Dokowanie |
FAŁSZ | FAŁSZ | Brak dostępnego rozciągania | Orientacja pionowa | Dokowanie |
CControlBar::CalcInsideRect
Struktura wywołuje tę funkcję, aby obliczyć obszar klienta paska sterowania.
virtual void CalcInsideRect(
CRect& rect,
BOOL bHorz) const;
Parametry
Rect
Zawiera bieżące wymiary paska sterowania; w tym granice.
bHorz
Wskazuje, że pasek jest w poziomie lub w pionie. Parametr bHorz jest niezerowy, jeśli słupek jest zorientowany poziomo i jest 0, jeśli jest zorientowany pionowo.
Uwagi
Ta funkcja jest wywoływana przed malowanie paska sterowania.
Zastąpi tę funkcję, aby dostosować renderowanie obramowań i paska uchwytu paska sterowania.
CControlBar::CControlBar
CControlBar
Tworzy obiekt.
CControlBar();
CControlBar::D oPaint
Wywoływana przez platformę w celu renderowania obramowań i paska uchwytu paska sterowania.
virtual void DoPaint(CDC* pDC);
Parametry
PDC
Wskazuje kontekst urządzenia, który ma być używany do renderowania obramowań i uchwytu paska sterowania.
Uwagi
Zastąpij tę funkcję, aby dostosować zachowanie rysunku paska sterowania.
Inną metodą dostosowywania jest zastąpienie DrawBorders
funkcji i DrawGripper
i dodanie niestandardowego kodu rysunku dla obramowań i uchwytu. Ponieważ te metody są wywoływane DoPaint
przez metodę domyślnąDoPaint
, przesłonięcia nie są potrzebne.
CControlBar::D rawBorders
Wywoływana przez platformę w celu renderowania obramowań paska sterowania.
virtual void DrawBorders(
CDC* pDC,
CRect& rect);
Parametry
PDC
Wskazuje kontekst urządzenia, który ma być używany do renderowania obramowań paska sterowania.
Rect
CRect
Obiekt zawierający wymiary paska sterowania.
Uwagi
Zastąpi tę funkcję, aby dostosować wygląd obramowań paska sterowania.
CControlBar::D rawGripper
Wywoływana przez strukturę w celu renderowania uchwytu paska sterowania.
virtual void DrawGripper(
CDC* pDC,
const CRect& rect);
Parametry
PDC
Wskazuje kontekst urządzenia, który ma być używany do renderowania uchwytu paska sterowania.
Rect
CRect
Obiekt zawierający wymiary uchwytu paska sterowania.
Uwagi
Zastąpij tę funkcję, aby dostosować wygląd uchwytu paska sterowania.
CControlBar::EnableDocking
Wywołaj tę funkcję, aby umożliwić zadokowanie paska sterowania.
void EnableDocking(DWORD dwDockStyle);
Parametry
dwDockStyle
Określa, czy pasek sterowania obsługuje dokowanie i boki okna nadrzędnego, do którego można zadokować pasek sterowania, jeśli jest obsługiwany. Może to być co najmniej jeden z następujących elementów:
CBRS_ALIGN_TOP Umożliwia dokowanie w górnej części obszaru klienta.
CBRS_ALIGN_BOTTOM Umożliwia dokowanie w dolnej części obszaru klienta.
CBRS_ALIGN_LEFT Umożliwia dokowanie po lewej stronie obszaru klienta.
CBRS_ALIGN_RIGHT Umożliwia dokowanie po prawej stronie obszaru klienta.
CBRS_ALIGN_ANY Umożliwia dokowanie po dowolnej stronie obszaru klienta.
CBRS_FLOAT_MULTI Umożliwia upłynięcie wielu pasków sterowania w jednym mini-ramowym oknie.
Jeśli wartość 0 (oznacza to, że nie ma flag), pasek sterowania nie zostanie zadokowany.
Uwagi
Określone boki muszą być zgodne z jedną z boków włączoną do zadokowania w oknie ramowym docelowym lub pasek sterowania nie może być zadokowany do tego okna ramowego.
CControlBar::GetBarStyle
Wywołaj tę funkcję, aby określić, które ustawienia CBRS_ (style paska sterowania) są obecnie ustawione dla paska sterowania.
DWORD GetBarStyle();
Wartość zwracana
Bieżące ustawienia CBRS_ (style paska sterowania) dla paska sterowania. Aby uzyskać pełną listę dostępnych stylów, zobacz CControlBarBar::SetBarStyle .
Uwagi
Nie obsługuje stylów WS_ (stylu okna).
CControlBar::GetBorders
Zwraca bieżące wartości obramowania paska sterowania.
CRect GetBorders() const;
Wartość zwracana
CRect
Obiekt, który zawiera bieżącą szerokość (w pikselach) po każdej stronie obiektu paska sterowania. Na przykład wartość lewego elementu członkowskiego obiektu CRect jest szerokością obramowania po lewej stronie.
CControlBar::GetCount
Zwraca liczbę elementów innych niż HWND w CControlBar
obiekcie.
int GetCount() const;
Wartość zwracana
Liczba elementów innych niż HWND obiektu CControlBar
. Ta funkcja zwraca wartość 0 dla obiektu CDialogBar .
Uwagi
Typ elementu zależy od obiektu pochodnego: okienek dla obiektów CStatusBar oraz przycisków i separatorów obiektów CToolBar .
CControlBar::GetDockingFrame
Wywołaj tę funkcję składową, aby uzyskać wskaźnik do bieżącego okna ramki, do którego jest zadokowany pasek sterowania.
CFrameWnd* GetDockingFrame() const;
Wartość zwracana
Wskaźnik do okna ramki, jeśli się powiedzie; w przeciwnym razie wartość NULL.
Jeśli pasek sterowania nie jest zadokowany do okna ramki (czyli jeśli pasek sterowania jest przestawny), ta funkcja zwróci wskaźnik do nadrzędnego obiektu CMiniFrameWnd.
Uwagi
Aby uzyskać więcej informacji na temat zadokowalnych pasków kontrolek, zobacz CControlBar::EnableDocking i CFrameWnd::D ockControlBar.
CControlBar::IsFloating
Wywołaj tę funkcję składową, aby określić, czy pasek sterowania jest przestawny, czy zadokowany.
BOOL IsFloating() const;
Wartość zwracana
Nonzero, jeśli pasek kontrolny jest zmienny; w przeciwnym razie 0.
Uwagi
Aby zmienić stan paska sterowania z zadokowanego na przestawny, wywołaj element CFrameWnd::FloatControlBar.
CControlBar::m_bAutoDelete
Jeśli wartość jest niezerowa, obiekt CControlBar
zostanie usunięty, gdy pasek sterowania systemu Windows zostanie zniszczony.
BOOL m_bAutoDelete;
Uwagi
m_bAutoDelete jest zmienną publiczną typu BOOL.
Obiekt paska sterowania jest zwykle osadzony w obiekcie okna ramowego. W takim przypadku wartość m_bAutoDelete wynosi 0, ponieważ osadzony obiekt paska sterowania jest niszczony, gdy okno ramki zostanie zniszczone.
Ustaw tę zmienną na wartość niezerową, jeśli przydzielisz CControlBar
obiekt na stercie i nie planujesz wywołać metody delete
.
CControlBar::m_pInPlaceOwner
Lokalny właściciel paska sterowania.
CWnd* m_pInPlaceOwner;
CControlBar::OnUpdateCmdUI
Ta funkcja składowa jest wywoływana przez strukturę w celu zaktualizowania stanu paska narzędzi lub paska stanu.
virtual void OnUpdateCmdUI(
CFrameWnd* pTarget,
BOOL bDisableIfNoHndler) = 0;
Parametry
pTarget
Wskazuje główne okno ramki aplikacji. Ten wskaźnik jest używany do routingu komunikatów aktualizacji.
bDisableIfNoHndler
Flaga wskazująca, czy kontrolka, która nie ma programu obsługi aktualizacji, powinna być automatycznie wyświetlana jako wyłączona.
Uwagi
Aby zaktualizować pojedynczy przycisk lub okienko, użyj makra ON_UPDATE_COMMAND_UI na mapie komunikatów, aby odpowiednio ustawić procedurę obsługi aktualizacji. Aby uzyskać więcej informacji na temat korzystania z tego makra, zobacz ON_UPDATE_COMMAND_UI .
OnUpdateCmdUI
program jest wywoływany przez platformę, gdy aplikacja jest bezczynna. Okno ramki do zaktualizowania musi być oknem podrzędnym, przynajmniej pośrednio, widocznym oknem ramowym. OnUpdateCmdUI
jest zaawansowanym przesłonięciem.
CControlBar::SetBarStyle
Wywołaj tę funkcję, aby ustawić żądane style CBRS_ dla paska sterowania.
void SetBarStyle(DWORD dwStyle);
Parametry
dwStyle
Żądane style paska sterowania. Może to być co najmniej jeden z następujących elementów:
CBRS_ALIGN_TOP Umożliwia zadokowanie paska sterowania do góry obszaru klienta okna ramowego.
CBRS_ALIGN_BOTTOM Umożliwia zadokowanie paska sterowania do dołu obszaru klienta okna ramowego.
CBRS_ALIGN_LEFT Umożliwia zadokowanie paska sterowania po lewej stronie obszaru klienta okna ramowego.
CBRS_ALIGN_RIGHT Umożliwia zadokowanie paska sterowania po prawej stronie obszaru klienta okna ramowego.
CBRS_ALIGN_ANY Umożliwia zadokowanie paska sterowania do dowolnej strony obszaru klienta okna ramowego.
CBRS_BORDER_TOP Powoduje narysowanie obramowania na górnej krawędzi paska sterowania, gdy będzie widoczne.
CBRS_BORDER_BOTTOM Powoduje narysowanie obramowania na dolnej krawędzi paska sterowania, gdy będzie ono widoczne.
CBRS_BORDER_LEFT Powoduje narysowanie obramowania na lewej krawędzi paska sterowania, gdy będzie widoczne.
CBRS_BORDER_RIGHT Powoduje narysowanie obramowania na prawej krawędzi paska sterowania, gdy będzie ono widoczne.
CBRS_FLOAT_MULTI Umożliwia upłynięcie wielu pasków sterowania w jednym mini-ramowym oknie.
CBRS_TOOLTIPS Powoduje wyświetlanie wskazówek narzędzia dla paska sterowania.
CBRS_FLYBY Powoduje, że tekst wiadomości jest aktualizowany w tym samym czasie co wskazówki dotyczące narzędzi.
CBRS_GRIPPER Powoduje chwytak, podobny do tego, który był używany na pasmach w
CReBar
obiekcie, do rysowania dla dowolnejCControlBar
klasy pochodnej.
Uwagi
Nie ma wpływu na ustawienia WS_ (styl okna).
CControlBar::SetBorders
Wywołaj tę funkcję, aby ustawić rozmiar obramowań paska sterowania.
void SetBorders(
int cxLeft = 0,
int cyTop = 0,
int cxRight = 0,
int cyBottom = 0);
void SetBorders(LPCRECT lpRect);
Parametry
cxLeft
Szerokość (w pikselach) lewego obramowania paska sterowania.
cyTop
Wysokość (w pikselach) górnego obramowania paska sterowania.
cxRight
Szerokość (w pikselach) prawego obramowania paska sterowania.
cyBottom
Wysokość (w pikselach) dolnego obramowania paska sterowania.
lpRect
Wskaźnik do obiektu CRect, który zawiera bieżącą szerokość (w pikselach) każdego obramowania obiektu paska sterowania.
Przykład
Poniższy przykład kodu ustawia górny i dolny obramowanie paska sterowania na 5 pikseli, a lewe i prawe obramowania na 2 piksele:
CControlBar &m_myControlBar = m_Rebar;
m_myControlBar.SetBorders(2, 5, 2, 5);
CControlBar::SetInPlaceOwner
Zmienia lokalnego właściciela paska sterowania.
void SetInPlaceOwner(CWnd* pWnd);
Parametry
pWnd
Wskaźnik do CWnd
obiektu.
Uwagi
Zobacz też
Przykładowe CTRLBARS MFC
Klasa CWnd
Wykres hierarchii
Klasa CToolBar
Klasa CDialogBar
Klasa CStatusBar
Klasa CReBar