Udostępnij za pośrednictwem


Dokowanie i przestawne paski narzędzi

Biblioteka klas programu Microsoft Foundation obsługuje zadokowalne paski narzędzi. Zadokowany pasek narzędzi można umieścić przy dowolnej krawędzi okna nadrzędnego lub można go odłączyć i przenieść do własnego mini-okna. W tym artykule wyjaśniono, jak używać dokowalnych pasków narzędzi w aplikacjach.

Jeśli używasz Kreatora aplikacji do generowania szkieletu aplikacji, zostaniesz poproszony o wybranie, czy chcesz, aby paski narzędzi były dokowalne. Domyślnie Kreator aplikacji generuje kod, który wykonuje trzy akcje niezbędne do umieszczania dokowalnego paska narzędzi w aplikacji:

Jeśli brakuje któregokolwiek z tych kroków, aplikacja wyświetli standardowy pasek narzędzi. Ostatnie dwa kroki należy wykonać dla każdego zadokowalnego paska narzędzi w aplikacji.

Inne tematy omówione w tym artykule obejmują:

Przykłady można znaleźć w przykładzie MFC General DOCKTOOL .

Włączanie dokowania w oknie ramowym

Aby zadokować paski narzędzi do okna ramki, należy włączyć okno ramki (lub miejsce docelowe), aby umożliwić dokowanie. Odbywa się to przy użyciu funkcji CFrameWnd::EnableDocking , która przyjmuje jeden parametr DWORD , który jest zestawem bitów stylów wskazujących, która strona okna ramki akceptuje zadokowanie. Jeśli pasek narzędzi ma zostać zadokowany i istnieje wiele boków, do których można go zadokować, boki wskazane w parametrze przekazanym do EnableDocking są używane w następującej kolejności: górna, dolna, lewa, prawa. Jeśli chcesz mieć możliwość zadokowania pasków sterowania w dowolnym miejscu, przekaż CBRS_ALIGN_ANY do EnableDocking.

Włączanie dokowania dla paska narzędzi

Po przygotowaniu miejsca docelowego do zadokowania należy przygotować pasek narzędzi (lub źródło) w podobny sposób. Wywołaj metodę CControlBar::EnableDocking dla każdego paska narzędzi, który chcesz zadokować, określając strony docelowe, do których ma być dokowany pasek narzędzi. Jeśli żadna z boków określonych podczas wywołania CControlBar::EnableDocking nie odpowiada bokom włączonym do zadokowania w oknie ramowym, pasek narzędzi nie może zostać zadokowany — będzie unosił się swobodnie. Po przejściu w stan unoszenia, pozostaje unoszącym się paskiem narzędzi, którego nie można zadokować do ramowego okna.

Jeśli chcesz efektu trwale pływającego paska narzędzi, wywołaj EnableDocking z parametrem 0. Następnie wywołaj CFrameWnd::FloatControlBar. Pasek narzędzi pozostaje unoszący się, nie może nigdzie zostać zadokowany.

Dokowanie paska narzędzi

Struktura wywołuje CFrameWnd::DockControlBar, gdy użytkownik próbuje opuścić pasek narzędzi na bok okna ramki, który umożliwia dokowanie.

Ponadto można wywołać tę funkcję w dowolnym momencie, aby zadokować paski sterowania do okna ramki. Zwykle odbywa się to podczas inicjowania. Więcej niż jeden pasek narzędzi można zadokować do określonej strony okna ramki.

Pływający pasek narzędzi

Odłączenie dokowalnego paska narzędzi od okna głównego nazywa się ustawianiem paska narzędzi w stanie pływającym. Wywołaj CFrameWnd::FloatControlBar , aby to zrobić. Określ pasek narzędzi, który ma być pływający, punkt, w którym ma zostać umieszczony, oraz styl wyrównania, który definiuje, czy pływający pasek narzędzi jest poziomy, czy pionowy.

Struktura wywołuje tę funkcję, gdy użytkownik przeciąga pasek narzędzi z zadokowanej lokalizacji i upuszcza go w miejscu, gdzie dokowanie nie jest włączone. Może to być dowolne miejsce wewnątrz lub poza oknem ramowym. Podobnie jak w przypadku DockControlBar, można również wywołać tę funkcję podczas inicjowania.

Wdrożenie pasków narzędzi dokowalnych w MFC nie zapewnia niektórych rozszerzonych funkcji dostępnych w aplikacjach, które obsługują takie paski narzędzi. Funkcje, takie jak dostosowywalne paski narzędzi, nie są udostępniane.

Dynamicznie zmienia rozmiar paska narzędzi

Od wersji 4.0 programu Visual C++ można umożliwić użytkownikom aplikacji dynamiczne zmienianie rozmiaru przestawnych pasków narzędzi. Zazwyczaj pasek narzędzi ma długi, liniowy kształt wyświetlany w poziomie. Można jednak zmienić orientację paska narzędzi i jego kształt. Na przykład gdy użytkownik zadokuje pasek narzędzi przy jednej z pionowych krawędzi okna ramki, układ zmienia się na pionowy. Można również przekształcić pasek narzędzi w prostokąt z wieloma wierszami przycisków.

Masz następujące możliwości:

  • Określ dynamiczne ustalanie rozmiaru jako charakterystykę paska narzędzi.

  • Określ ustalony rozmiar jako cechę paska narzędzi.

Aby zapewnić tę obsługę, istnieją dwa nowe style paska narzędzi do użycia w wywołaniach elementu członkowskiego funkcji CToolBar::Create. Są to:

  • CBRS_SIZE_DYNAMIC Pasek sterowania jest dynamiczny.

  • CBRS_SIZE_FIXED Pasek sterowania jest stały.

Styl dynamiczny rozmiaru umożliwia użytkownikowi zmianę rozmiaru paska narzędzi, gdy jest on przestawny, ale nie podczas jego zadokowania. Pasek narzędzi "zawija" w razie potrzeby, aby zmienić kształt, gdy użytkownik przeciąga jego krawędzie.

Styl o stałym rozmiarze zachowuje stany zawijania paska narzędzi, utrzymując położenie przycisków w każdej kolumnie. Użytkownik aplikacji nie może zmienić kształtu paska narzędzi. Pasek narzędzi zawija się w wyznaczonych miejscach, takich jak miejsca separatorów między przyciskami. Zachowuje ten kształt niezależnie od tego, czy pasek narzędzi jest zadokowany, czy pływający. Efekt jest stałą paletą z wieloma kolumnami przycisków.

Możesz również użyć CToolBar::GetButtonStyle , aby zwrócić stan i styl przycisków na paskach narzędzi. Styl przycisku określa sposób wyświetlania przycisku i sposób reagowania na dane wejściowe użytkownika; stan informuje, czy przycisk jest w stanie opakowanym.

Ustawianie ustawień zawijania dla paska narzędzi Fixed-Style

W przypadku paska narzędzi o stałym rozmiarze należy wyznaczyć indeksy przycisków paska narzędzi, w których pasek narzędzi zostanie zawijany. Poniższy kod pokazuje, jak to zrobić w przesłonięciu okna głównego ramki OnCreate.

// Get the style of the first button separator
UINT nStyle = m_wndToolBar.GetButtonStyle(3);
// Augment the state for wrapping
nStyle |= TBBS_WRAPPED;
m_wndToolBar.SetButtonStyle(3, nStyle);

// Do the same for other wrap locations ...

// Set the bar style to size fixed
m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
   CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_FIXED);

// Call docking/floating functions as needed ...

W przykładzie MFC General DOCKTOOL pokazano, jak używać funkcji składowych klas CControlBar i CToolBar do zarządzania dynamicznym układem paska narzędzi. Zobacz plik EDITBAR.CPP w DOCKTOOL.

Co chcesz dowiedzieć się więcej o

Zobacz także

Implementacja paska narzędzi MFC