Condividi tramite


Ancoraggio e barre degli strumenti mobili

Microsoft Foundation Class Library supporta barre degli strumenti ancorabili. Una barra degli strumenti ancorabile può essere collegata, o ancorata, a qualsiasi lato della finestra padre oppure può essere scollegata, o floated, nella propria finestra mini-frame. Questo articolo illustra come usare barre degli strumenti ancorabili nelle applicazioni.

Se si usa la Creazione guidata applicazione per generare lo scheletro dell'applicazione, viene chiesto di scegliere se si desiderano barre degli strumenti ancorabili. Per impostazione predefinita, la Creazione guidata applicazione genera il codice che esegue le tre azioni necessarie per posizionare una barra degli strumenti ancorabile nell'applicazione:

Se uno di questi passaggi non è presente, l'applicazione visualizzerà una barra degli strumenti standard. Gli ultimi due passaggi devono essere eseguiti per ogni barra degli strumenti ancorabile nell'applicazione.

Altri argomenti trattati in questo articolo includono:

Per esempi, vedere l'esempio DOCKTOOL generale MFC.

Abilitazione dell'ancoraggio in una finestra cornice

Per ancorare le barre degli strumenti a una finestra cornice, è necessario abilitare la finestra cornice (o la destinazione) per consentire l'ancoraggio. Questa operazione viene eseguita usando la funzione CFrameWnd::EnableDocking , che accetta un parametro DWORD che è un set di bit di stile che indica quale lato della finestra cornice accetta l'ancoraggio. Se una barra degli strumenti sta per essere ancorata e ci sono più lati a cui potrebbe essere ancorata, i lati indicati nel parametro passato a EnableDocking vengono utilizzati nell'ordine seguente: in alto, in basso, a sinistra, a destra. Se si vuole essere in grado di ancorare le barre di controllo ovunque, passare CBRS_ALIGN_ANY a EnableDocking.

Abilitazione dell'ancoraggio per una barra degli strumenti

Dopo aver preparato la destinazione per l'ancoraggio, è necessario preparare la barra degli strumenti (o l'origine) in modo simile. Chiama CControlBar::EnableDocking per ogni barra degli strumenti che vuoi ancorare, specificando i lati di destinazione a cui deve ancorare la barra degli strumenti. Se nessuno dei lati specificati nella chiamata per CControlBar::EnableDocking trovare le corrispondenze con i lati abilitati per l'ancoraggio nella finestra cornice, la barra degli strumenti non è in grado di ancorare, sarà float. Una volta che è stato spostato, rimane una barra degli strumenti mobile, non è in grado di ancorare alla finestra cornice.

Se l'effetto desiderato è una barra degli strumenti mobile permanente, chiamare EnableDocking con un parametro pari a 0. Chiama quindi CFrameWnd::FloatControlBar. La barra degli strumenti rimane mobile, in modo permanente non è in grado di ancorare da nessuna parte.

Ancoraggio della barra degli strumenti

Il framework chiama CFrameWnd::D ockControlBar quando l'utente tenta di rilasciare la barra degli strumenti su un lato della finestra cornice che consente l'ancoraggio.

Inoltre, è possibile chiamare questa funzione in qualsiasi momento per ancorare le barre di controllo alla finestra cornice. Questa operazione viene eseguita normalmente durante l'inizializzazione. Più barre degli strumenti possono essere ancorate a un lato specifico della finestra cornice.

Virgola mobile sulla barra degli strumenti

La rimozione di una barra degli strumenti ancorabile dalla finestra cornice viene chiamata virgola mobile sulla barra degli strumenti. Chiamare CFrameWnd::FloatControlBar per eseguire questa operazione. Specificare la barra degli strumenti da spostare, il punto in cui deve essere posizionato e uno stile di allineamento che determina se la barra degli strumenti mobile è orizzontale o verticale.

Il framework chiama questa funzione quando un utente trascina una barra degli strumenti dalla posizione ancorata e la rilascia in una posizione in cui l'ancoraggio non è abilitato. Può essere ovunque all'interno o all'esterno della finestra cornice. Come con DockControlBar, è anche possibile chiamare questa funzione durante l'inizializzazione.

L'implementazione MFC delle barre degli strumenti ancorabili non fornisce alcune delle funzionalità estese disponibili in alcune applicazioni che supportano barre degli strumenti ancorabili. Non vengono fornite funzionalità come le barre degli strumenti personalizzabili.

Ridimensionamento dinamico della barra degli strumenti

A partire da Visual C++ versione 4.0, è possibile consentire agli utenti dell'applicazione di ridimensionare dinamicamente le barre degli strumenti mobili. In genere, una barra degli strumenti ha una forma lunga e lineare, visualizzata orizzontalmente. È tuttavia possibile modificare l'orientamento della barra degli strumenti e la relativa forma. Ad esempio, quando l'utente ancora una barra degli strumenti su uno dei lati verticali della finestra cornice, la forma viene modificata in un layout verticale. È anche possibile rimodellare la barra degli strumenti in un rettangolo con più righe di pulsanti.

È possibile:

  • Specificare il ridimensionamento dinamico come caratteristica della barra degli strumenti.

  • Specificare il ridimensionamento fisso come caratteristica della barra degli strumenti.

Per fornire questo supporto, sono disponibili due nuovi stili della barra degli strumenti da usare nelle chiamate alla funzione membro CToolBar::Create . ovvero:

  • CBRS_SIZE_DYNAMIC barra di controllo è dinamica.

  • CBRS_SIZE_FIXED barra di controllo è fissa.

Lo stile dinamico delle dimensioni consente all'utente di ridimensionare la barra degli strumenti mentre è mobile, ma non mentre è ancorata. La barra degli strumenti "esegue il wrapping" se necessario per modificare la forma quando l'utente trascina i bordi.

Lo stile fisso delle dimensioni mantiene gli stati di ritorno a capo di una barra degli strumenti, fissando la posizione dei pulsanti in ogni colonna. L'utente dell'applicazione non può modificare la forma della barra degli strumenti. La barra degli strumenti esegue il wrapping in posizioni designate, ad esempio le posizioni dei separatori tra i pulsanti. Mantiene questa forma se la barra degli strumenti è ancorata o mobile. L'effetto è una tavolozza fissa con più colonne di pulsanti.

È anche possibile usare CToolBar::GetButtonStyle per restituire uno stato e uno stile per i pulsanti sulle barre degli strumenti. Lo stile di un pulsante determina la modalità di visualizzazione del pulsante e la modalità di risposta all'input dell'utente; lo stato indica se il pulsante è in uno stato di wrapping.

Impostazione delle posizioni di ritorno a capo per una barra degli strumenti a stile fisso

Per una barra degli strumenti con lo stile fisso delle dimensioni, designare gli indici del pulsante della barra degli strumenti in corrispondenza del quale verrà eseguito il wrapping della barra degli strumenti. Il codice seguente illustra come eseguire questa operazione nell'override della OnCreate finestra cornice principale:

// 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 ...

L'esempio MFC General DOCKTOOL mostra come usare le funzioni membro delle classi CControlBar e CToolBar per gestire il layout dinamico di una barra degli strumenti. Vedere il file EDITBAR. CPP in DOCKTOOL.

Cosa vuoi sapere di più su

Vedi anche

Implementazione della barra degli strumenti MFC