2009-02-10 9 views
6

Tengo un CToolbar y dentro de él tengo un botón con el estilo BTNS_BUTTON | BTNS_DROPDOWN. Me gustaría hacer que sea un botón dividido, por lo que el lado izquierdo del botón es un botón, y el lado derecho tiene un menú desplegable.¿por qué el estilo BTNS_DROPDOWN hace que toda la barra de herramientas se mueva hacia abajo un par de píxeles?

Para completar esto, creo el botón entonces que llamo :: SendMessage de este modo:

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

Esto funciona muy bien y crea el botón de división, pero también tiene el mal efecto de mover hacia abajo la barra de herramientas de una par de píxeles. Si no envío el mensaje, todavía tengo el problema (y ya no tengo el botón de división).

Si cambio el estilo del botón a BTNS_BUTTON | BTNS_WHOLEDROPDOWN, entonces no tengo un problema, aunque tampoco tengo el botón de división.

¿Alguna pista sobre qué podría estar pasando mal aquí? Me imagino que hay un margen que se aplica a un BNTS_DROPDOWN y está haciendo que la barra de herramientas se mueva hacia abajo.

+0

¿Alguna vez resolvió esto? - Obtengo exactamente el mismo problema :( – Alan

+0

No, nunca resolvió esto. Terminé moviendo la ventana un par de píxeles para corregir el diseño. Esto es menos que ideal y puede hacer que la barra de herramientas se vea divertida en alta resolución configuraciones. – Jared

Respuesta

1

bien esta pregunta es muy edad de hecho, pero ya que aparece en la parte superior de los resultados de Google sobre el tema y para referencia futura navegar un poco más lejos, parece que hay una solución (citado de http://www.ureader.com/msg/1484852.aspx):

"no sé por qué, pero el aumento problema cuando me puse el estilo BTNS_DROPDOWN desde el principio. he si añadir los botones sin cualquiera de los conjuntos de BTNS_DROPWN y en la línea siguiente, uso TB_SETBUTTONINFO a cambia el estilo, todo funciona bien ".

0

Tuvimos el mismo problema con la configuración del estilo BTNS_DROPDOWN, en una extensión CToolBar, que se hacía más aparente cuando la escala de DPI estaba por encima del 100%.

El enlace de floyd73 parece estar roto, pero al intentar establecer el estilo de lista desplegable por separado a través de setbuttoninfo no funcionó.

La solución que encontramos fue re-escala de la barra de herramientas después de que los estilos se han establecido teniendo en cuenta los nuevos tamaños de botón usando SetSizes(): función

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); 
} 

nos limitamos esto en un normalsize() para usar al final de cualquier configuración personalizada de la barra de herramientas, lo que nos debería permitir capturar cualquier otro negocio divertido de cambio de tamaño con estilos de botones.

Espero que esto ayude a cualquier persona que todavía enfrenta el mismo problema.

Cuestiones relacionadas