Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Microsoft Foundation-klassbiblioteket stöder dockningsbara verktygsfält. Ett dockningsbart verktygsfält kan dockas till vilken sida som helst av det överordnade fönstret, eller lossas och sväva i ett eget miniramfönster. Den här artikeln beskriver hur du använder dockningsbara verktygsfält i dina program.
Om du använder programguiden för att generera programmets skelett uppmanas du att välja om du vill ha dockbara verktygsfält. Som standard genererar programguiden koden som utför de tre åtgärder som krävs för att placera ett dockbart verktygsfält i programmet:
Om något av de här stegen saknas visar programmet ett standardverktygsfält. De två sista stegen måste utföras för varje dockningsbart verktygsfält i ditt program.
Andra ämnen som beskrivs i den här artikeln är:
Se DOCKTOOL-exempelexemplet MFC Allmänt för exempel.
Aktivera dockning i ett ramfönster
Om du vill docka verktygsfält till ett ramfönster måste ramfönstret (eller målet) vara aktiverat för att tillåta dockning. Detta görs med hjälp av funktionen CFrameWnd::EnableDocking , som tar en DWORD-parameter som är en uppsättning formatbitar som anger vilken sida av ramfönstret som accepterar dockning. Om ett verktygsfält håller på att dockas och det finns flera sidor som det kan dockas till, används de sidor som anges i parametern som skickas till EnableDocking i följande ordning: överst, nederkant, vänster, höger. Om du vill kunna docka kontrollstaplar var som helst, skickar du CBRS_ALIGN_ANY till EnableDocking.
Aktivera dockning för ett verktygsfält
När du har förberett destinationen för dockning måste du förbereda verktygsfältet (eller källan) på samma sätt. Anropa CControlBar::EnableDocking för varje verktygsfält som du vill docka, och ange de målsidor som verktygsfältet ska docka till. Om ingen av de sidor som anges i anropet matchar de sidor som är aktiverade för dockning i ramfönstret, kan verktygsfältet inte dockas utan det kommer att flyta. När det väl flyter, förblir det ett flytande verktygsfält som inte kan dockas till ramfönstret.
Om den effekt du vill ha är ett permanent flytande verktygsfält anropar du EnableDocking med parametern 0. Anropa sedan CFrameWnd::FloatControlBar. Verktygsfältet förblir flytande och kan inte dockas permanent någonstans.
Docka verktygsfältet
Ramverket anropar CFrameWnd::D ockControlBar när användaren försöker släppa verktygsfältet på en sida av ramfönstret som tillåter dockning.
Dessutom kan du anropa den här funktionen när som helst för att docka kontrollfält till ramfönstret. Detta görs normalt under initieringen. Fler än ett verktygsfält kan dockas till en speciell sida av fönsterramen.
Flytande verktygsfält
Att koppla loss ett dockbart verktygsfält från ramfönstret kallas att flytta det verktygsfältet. Anropa CFrameWnd::FloatControlBar för att göra detta. Ange verktygsfältet som ska flyttals, den punkt där det ska placeras och ett justeringsformat som avgör om det flytande verktygsfältet är vågrätt eller lodrätt.
Ramverket anropar den här funktionen när en användare drar ett verktygsfält från sin dockade plats och släpper den på en plats där dockning inte är aktiverat. Detta kan vara var som helst i eller utanför ramfönstret. Precis som med DockControlBarkan du även anropa den här funktionen under initieringen.
MFC-implementeringen av dockningsbara verktygsfält tillhandahåller inte några av de utökade funktioner som finns i vissa program som stöder dockningsbara verktygsfält. Funktioner som anpassningsbara verktygsfält tillhandahålls inte.
Ändra storlek på verktygsfältet dynamiskt
Från och med Visual C++ version 4.0 kan du göra det möjligt för användare av ditt program att ändra storlek på flytande verktygsfält dynamiskt. Ett verktygsfält har vanligtvis en lång, linjär form som visas vågrätt. Men du kan ändra verktygsfältets orientering och dess form. När användaren till exempel dockar ett verktygsfält mot en av ramfönstrets lodräta sidor ändras formen till en lodrät layout. Det går också att omforma verktygsfältet till en rektangel med flera rader med knappar.
Du kan:
Ange dynamisk storleksändring som en egenskap för verktygsfältet.
Ange fast storlek som en egenskap för verktygsfältet.
För att tillhandahålla det här stödet finns det två nya verktygsfältsformat som du kan använda i dina anrop till funktionen CToolBar::Create member. De är:
CBRS_SIZE_DYNAMIC Kontrollfältet är dynamiskt.
CBRS_SIZE_FIXED Kontrollfältet är fast.
Med den storleksdynamiska stilen kan användaren justera verktygsfältets storlek medan det flyter, men inte när det är fastsatt. Verktygsfältet justerar sig där det behövs för att ändra form när användaren drar i dess kanter.
Den storleksfixerade stilen bevarar radbrytningsläget i ett verktygsfält och fixerar knapparnas position i varje kolumn. Programmets användare kan inte ändra verktygsfältets form. Verktygsfältet bryts vid angivna platser, som till exempel vid avgränsarna mellan knapparna. Den behåller den här formen oavsett om verktygsfältet är dockat eller flytande. Effekten är en fast palett med flera kolumner med knappar.
Du kan också använda CToolBar::GetButtonStyle för att returnera ett tillstånd och format för knappar i verktygsfälten. En knapps stil avgör hur knappen visas och hur den svarar på användarindata; tillståndet visar om knappen är i ett inlindat tillstånd.
Ange radbytespositioner för ett Fixed-Style verktygsfält
För ett verktygsfält med storleksbestämt format anger du knappindex för verktygsfältet där verktygsfältet ska radbrytas. Följande kod visar hur du gör detta i huvudramfönstrets åsidosättning 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 ...
Det generella DOCKTOOL-exemplet i MFC visar hur du använder medlemsfunktioner av klasserna CControlBar och CToolBar för att hantera dynamisk layout av ett verktygsfält. Se filen EDITBAR.CPP i DOCKTOOL.