+ if (nWidth <= 0 )
+ nWidth = vSize.x;
+ if (nHeight <= 0 )
+ nHeight = vSize.y;
+ }
+ if (nX < 0 )
+ nX = 0;
+ if (nY < 0 )
+ nY = 0;
+
+ long lSstyle = 0L;
+
+ lSstyle = WS_VISIBLE |
+ WS_TABSTOP |
+ SPBS_MASTER | // We use only single field spin buttons
+ SPBS_NUMERICONLY; // We default to numeric data
+
+ if (m_windowStyle & wxCLIP_SIBLINGS )
+ lSstyle |= WS_CLIPSIBLINGS;
+
+ //
+ // If the parent is a scrolled window the controls must
+ // have this style or they will overlap the scrollbars
+ //
+ if (pParent)
+ if (pParent->IsKindOf(CLASSINFO(wxScrolledWindow)) ||
+ pParent->IsKindOf(CLASSINFO(wxGenericScrolledWindow)))
+ lSstyle |= WS_CLIPSIBLINGS;
+
+ SPBCDATA vCtrlData;
+
+ vCtrlData.cbSize = sizeof(SPBCDATA);
+ vCtrlData.ulTextLimit = 10L;
+ vCtrlData.lLowerLimit = 0L;
+ vCtrlData.lUpperLimit = 100L;
+ vCtrlData.idMasterSpb = vId;
+ vCtrlData.pHWXCtlData = NULL;
+
+ m_hWnd = (WXHWND)::WinCreateWindow( GetWinHwnd(pParent)
+ ,WC_SPINBUTTON
+ ,(PSZ)NULL
+ ,lSstyle
+ ,0L, 0L, 0L, 0L
+ ,GetWinHwnd(pParent)
+ ,HWND_TOP
+ ,(HMENU)vId
+ ,(PVOID)&vCtrlData
+ ,NULL
+ );
+ if (m_hWnd == 0)
+ {
+ return FALSE;
+ }
+ if(pParent)
+ pParent->AddChild((wxSpinButton *)this);
+
+ ::WinQueryWindowPos(m_hWnd, &vSwp);
+ SetXComp(vSwp.x);
+ SetYComp(vSwp.y);
+ SetFont(*wxSMALL_FONT);
+ //
+ // For OS/2 we want to hide the text portion so we can substitute an
+ // independent text ctrl in its place. 10 device units does this
+ //
+ SetSize( nX
+ ,nY
+ ,10L
+ ,nHeight
+ );
+ wxAssociateWinWithHandle( m_hWnd
+ ,(wxWindowOS2*)this
+ );
+ ::WinSetWindowULong(GetHwnd(), QWL_USER, (LONG)this);
+ fnWndProcSpinCtrl = (WXFARPROC)::WinSubclassWindow(m_hWnd, (PFNWP)wxSpinCtrlWndProc);
+ return TRUE;
+} // end of wxSpinButton::Create