2010-10-13 10 views
5

Sto provando a disegnare un CSpinButtonCtrl come amico di una casella di modifica in Windows 7. Quando la mia finestra CEdit è alta 12 finestre di dialogo, i pulsanti di selezione sono scalati davvero male e il bordo superiore è tagliato fuori.CSpinButtonCtrl problema di disegno con piccolo controllo CEdit

spin fail

Questo sembra piuttosto brutto. Come posso aggirare questo, o devo limitare i miei controlli CEdit ad essere 14 unità di dialogo alte?

I miei controlli sono dichiarati nel seguente modo:

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 

Ho provato il ridimensionamento utilizzando MoveWindow, ma questo non aiuta. Qualche idea?

+0

Beh, immagino che le mie opzioni siano: 1) Succhialo; 2) Effettua tutti i miei controlli di modifica 14 DU in alto; 3) Ignora il controllo, disegna e mantieni i miei pulsanti. * sigh * Sto tendendo verso 1) ... – north5

+0

Vogliamo anche evitare di andare e riporre tutto di nuovo ... persuadere Windows a fare la cosa giusta sarebbe preferibile! – Bids

risposta

2

Penso che vorrei andare per # 2 - sei premuto per lo spazio sullo schermo?

+0

Molti dei miei controlli sono piuttosto occupati e sto cercando di ridurre gli immobili verticali dove posso. Per inciso, la mia interfaccia utente è stata replicata su Mac OS X, dove esiste un controllo di dimensioni "piccole" standard (ma non controllo di spin come standard, quindi raramente vengono utilizzate). – north5

0

Un'altra opzione è: lasciarlo non collegato (rimuovere UDS_ALIGNRIGHT) e posizionarlo accanto al controllo di modifica.

3

ho trovato il codice per modificare la larghezza

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

Metti nel OnInitDialog().

Problemi correlati