2010-10-13 8 views
5

Estoy tratando de dibujar un CSpinButtonCtrl como un amigo de un cuadro de edición en Windows 7. Cuando mi ventana CEdit tiene 12 unidades de diálogo de altura, los botones giratorios se escalan realmente mal y el borde superior está recortado.Problema de dibujo de CSpinButtonCtrl con el pequeño control CEdit

spin fail

Esto se ve muy feo. ¿Cómo puedo evitar esto o debo restringir mis controles CEdit a 14 unidades de diálogo?

Mis controles se declaran así:

EDITTEXT  IDC_LOWER_EDIT,51,20,63,12,ES_MULTILINE | ES_WANTRETURN,WS_EX_RIGHT 
CONTROL   "",IDC_LOWER_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,104,17,11,12 

He intentado cambiar el tamaño utilizando MoveWindow, pero eso no ayuda. ¿Algunas ideas?

+0

Bueno, supongo que mis opciones son: 1) Suck it up; 2) Hacer que todos mis controles de edición tengan 14 DUs altos; 3) Anular el control, dibujar y mantener mis propios botones. * suspiro * Estoy tendiendo hacia 1) ... – north5

+0

También queremos evitar ir y poner todo de nuevo ... ¡convencer a Windows de hacer lo correcto sería preferible! – Bids

Respuesta

2

Creo que iría por el n. ° 2: ¿está usted presionando para tener espacio en la pantalla?

+0

Muchos de mis controles están bastante ocupados y estoy tratando de reducir los bienes raíces verticales donde puedo. Por cierto, mi IU está replicada en Mac OS X, donde hay un tamaño de control "pequeño" estándar (pero no hay control de giro como estándar, por lo que rara vez se usan). – north5

0

Otra opción es: dejarlo desacoplado (eliminar UDS_ALIGNRIGHT) y colocarlo justo al lado del control de edición.

3

He encontrado el código para cambiar el ancho

CWnd* pWnd = GetDlgItem(IDC_SPIN1); 
CRect rect; 
pWnd->GetWindowRect(&rect); 
ScreenToClient(&rect); 
rect.right += 5 ; // make 5 pixels wider 
pWnd->MoveWindow(&rect) ; 

Póngalo en el OnInitDialog().

Cuestiones relacionadas