Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CSpinButtonCtrl drawing problem with small CEdit control

Tags:

visual-c++

mfc

I'm trying to draw a CSpinButtonCtrl as a buddy of an edit box in Windows 7. When my CEdit window is 12 dialog units high, the spin buttons are scaled really badly and the top border is clipped off.

spin fail

This looks pretty ugly. How can I get around this, or must I restrict my CEdit controls to be 14 dialog units high?

My controls are declared thusly:

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

I've tried resizing using MoveWindow, but that doesn't help. Any ideas?

like image 364
north5 Avatar asked Oct 13 '10 14:10

north5


2 Answers

I found the code for changing the width

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

Put it in the OnInitDialog().

like image 127
FVianello Avatar answered Oct 21 '22 15:10

FVianello


I think I would go for #2 - are you that pressed for screen space?

like image 26
Jeff Avatar answered Oct 21 '22 15:10

Jeff