2009-02-10 1 views
6

Ho una CToolbar e al suo interno ho un pulsante con stile BTNS_BUTTON | BTNS_DROPDOWN. Vorrei fare un pulsante diviso, quindi il lato sinistro del pulsante è un pulsante e il lato destro ha un menu a discesa.perché lo stile BTNS_DROPDOWN fa spostare l'intera barra degli strumenti su un paio di pixel?

Per completare questo, creo il tasto allora io chiamo :: SendMessage in questo modo:

::SendMessage(hwndForButton, TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_DRAWDDARROWS); 

Questa grande opera e crea il pulsante di divisione, ma ha anche il mal effetto di spostare verso il basso la barra degli strumenti un coppia di pixel. Se non invio il messaggio, ho ancora il problema (e non ho più il pulsante di divisione).

Se cambio lo stile del pulsante in BTNS_BUTTON | BTNS_WHOLEDROPDOWN, non ho alcun problema, anche se non ho il pulsante di divisione.

Qualsiasi indizio su cosa potrebbe andare storto qui? Immagino che ci sia un margine che viene applicato a un BNTS_DROPDOWN e sta facendo abbassare la barra degli strumenti.

+0

Hai mai risolto questo? - Sto ottenendo esattamente lo stesso problema :( – Alan

+0

No, non l'ho mai risolto. Ho finito per spostare la finestra di un paio di pixel per correggere il layout. Questo non è l'ideale e potrebbe far sembrare divertente la barra degli strumenti con DPI alto set up. – Jared

risposta

1

Ebbene questa domanda è molto vecchio anzi, ma dal momento che appare in cima di risultati di Google sul tema e per riferimento futuro la navigazione un po 'più sembra che ci sia una soluzione (citato da http://www.ureader.com/msg/1484852.aspx):

"non so perché, ma l'ascesa problema quando ho impostato il lo stile BTNS_DROPDOWN dall'inizio. sono se aggiungere i pulsanti senza alcuna del set per BTNS_DROPWN e nella riga successiva ho uso TB_SETBUTTONINFO a cambia lo stile, tutto funziona bene. "

0

Abbiamo avuto lo stesso problema con l'impostazione dello stile BTNS_DROPDOWN, su un'estensione CToolBar, che veniva resa più evidente quando il ridimensionamento DPI era superiore al 100%.

Il collegamento di floyd73 sembra essere interrotto, ma avendo tentato di impostare lo stile di discesa separatamente tramite setbuttoninfo non ha funzionato.

La soluzione che abbiamo trovato era di ri-scala della barra degli strumenti, dopo gli stili sono stati fissati per tener conto dei pulsanti nuovi formati utilizzando SetSizes():

auto imgList = GetToolBarCtrl().GetImageList(); 
if (imgList) 
{ 
    //Scale toolbar buttons to fit the correct scaled icons 
    CSize buttonSize(GetToolBarCtrl().GetButtonSize()); 
    CSize imageSize; 
    ImageList_GetIconSize(imageList, &imageSize.cx, &imageSize.cy); 

    SetSizes(buttonSize, imageSize); 
} 

abbiamo bloccato questo in un normalsize() funzione da utilizzare alla fine di qualsiasi impostazione personalizzata della barra degli strumenti, che dovrebbe consentirci di catturare qualsiasi altra attività di ridimensionamento divertente con gli stili dei pulsanti.

Spero che questo aiuti chiunque deve ancora affrontare lo stesso problema.