north5
north5

Reputation: 393

CSpinButtonCtrl drawing problem with small CEdit control

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?

Upvotes: 5

Views: 1302

Answers (3)

FVianello
FVianello

Reputation: 41

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().

Upvotes: 4

djeidot
djeidot

Reputation: 4642

Another option is: leave it unattached (remove UDS_ALIGNRIGHT) and place it right next to the edit control.

Upvotes: 0

Jeff
Jeff

Reputation: 2009

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

Upvotes: 2

Related Questions