Klasa CControlBar
Klasa bazowa klas cStatusBar, CToolBar, CDialogBar, CReBar i COleResizeBar.
class CControlBar : public CWnd
Nazwa/nazwisko | opis |
---|---|
CControlBar::CControlBar | CControlBar Tworzy obiekt. |
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. |
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. |
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.
CControlBar
Nagłówek: afxext.h
Struktura wywołuje tę funkcję składową, aby obliczyć wymiary dynamicznego paska narzędzi.
virtual CSize CalcDynamicLayout(
int nLength,
DWORD nMode);
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. |
Rozmiar paska sterowania w pikselach obiektu CSize .
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ę.
Wywołaj tę funkcję składową, aby obliczyć rozmiar poziomy paska sterowania.
virtual CSize CalcFixedLayout(
BOOL bStretch,
BOOL bHorz);
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.
Rozmiar paska sterowania w pikselach CSize
obiektu.
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 |
Struktura wywołuje tę funkcję, aby obliczyć obszar klienta paska sterowania.
virtual void CalcInsideRect(
CRect& rect,
BOOL bHorz) const;
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.
Ta funkcja jest wywoływana przed malowanie paska sterowania.
Zastąpi tę funkcję, aby dostosować renderowanie obramowań i paska uchwytu paska sterowania.
CControlBar
Tworzy obiekt.
CControlBar();
Wywoływana przez platformę w celu renderowania obramowań i paska uchwytu paska sterowania.
virtual void DoPaint(CDC* pDC);
PDC
Wskazuje kontekst urządzenia, który ma być używany do renderowania obramowań i uchwytu paska sterowania.
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.
Wywoływana przez platformę w celu renderowania obramowań paska sterowania.
virtual void DrawBorders(
CDC* pDC,
CRect& rect);
PDC
Wskazuje kontekst urządzenia, który ma być używany do renderowania obramowań paska sterowania.
Rect
CRect
Obiekt zawierający wymiary paska sterowania.
Zastąpi tę funkcję, aby dostosować wygląd obramowań paska sterowania.
Wywoływana przez strukturę w celu renderowania uchwytu paska sterowania.
virtual void DrawGripper(
CDC* pDC,
const CRect& rect);
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.
Zastąpij tę funkcję, aby dostosować wygląd uchwytu paska sterowania.
Wywołaj tę funkcję, aby umożliwić zadokowanie paska sterowania.
void EnableDocking(DWORD dwDockStyle);
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.
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.
Wywołaj tę funkcję, aby określić, które ustawienia CBRS_ (style paska sterowania) są obecnie ustawione dla paska sterowania.
DWORD GetBarStyle();
Bieżące ustawienia CBRS_ (style paska sterowania) dla paska sterowania. Aby uzyskać pełną listę dostępnych stylów, zobacz CControlBarBar::SetBarStyle .
Nie obsługuje stylów WS_ (stylu okna).
Zwraca bieżące wartości obramowania paska sterowania.
CRect GetBorders() const;
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.
Zwraca liczbę elementów innych niż HWND w CControlBar
obiekcie.
int GetCount() const;
Liczba elementów innych niż HWND obiektu CControlBar
. Ta funkcja zwraca wartość 0 dla obiektu CDialogBar .
Typ elementu zależy od obiektu pochodnego: okienek dla obiektów CStatusBar oraz przycisków i separatorów obiektów CToolBar .
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;
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.
Aby uzyskać więcej informacji na temat zadokowalnych pasków kontrolek, zobacz CControlBar::EnableDocking i CFrameWnd::D ockControlBar.
Wywołaj tę funkcję składową, aby określić, czy pasek sterowania jest przestawny, czy zadokowany.
BOOL IsFloating() const;
Nonzero, jeśli pasek kontrolny jest zmienny; w przeciwnym razie 0.
Aby zmienić stan paska sterowania z zadokowanego na przestawny, wywołaj element CFrameWnd::FloatControlBar.
Jeśli wartość jest niezerowa, obiekt CControlBar
zostanie usunięty, gdy pasek sterowania systemu Windows zostanie zniszczony.
BOOL m_bAutoDelete;
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
.
Lokalny właściciel paska sterowania.
CWnd* m_pInPlaceOwner;
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;
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.
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.
Wywołaj tę funkcję, aby ustawić żądane style CBRS_ dla paska sterowania.
void SetBarStyle(DWORD dwStyle);
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.
Nie ma wpływu na ustawienia WS_ (styl okna).
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);
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.
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);
Zmienia lokalnego właściciela paska sterowania.
void SetInPlaceOwner(CWnd* pWnd);
pWnd
Wskaźnik do CWnd
obiektu.
Przykładowe CTRLBARS MFC
Klasa CWnd
Wykres hierarchii
Klasa CToolBar
Klasa CDialogBar
Klasa CStatusBar
Klasa CReBar