,MPARAM wParam
,MPARAM lParam
);
+MRESULT EXPENTRY wxRadioBoxWndProc( HWND hWnd
+ ,UINT uMessage
+ ,MPARAM wParam
+ ,MPARAM lParam
+ );
// ---------------------------------------------------------------------------
// global vars
// ---------------------------------------------------------------------------
// the pointer to standard radio button wnd proc
+extern void wxAssociateWinWithHandle( HWND hWnd
+ ,wxWindowOS2* pWin
+ );
static WXFARPROC fnWndProcRadioBtn = NULL;
+static WXFARPROC fnWndProcRadioBox = NULL;
// ===========================================================================
// implementation
, const wxString& rsName
)
{
- //
- // System fonts are too big in OS/2 and they are blue
- // We want smaller fonts and black by default.
- //
- wxFont* pTextFont = new wxFont( 10
- ,wxMODERN
- ,wxNORMAL
- ,wxNORMAL
- );
wxColour vColour;
LONG lColor;
vColour.Set(wxString("BLACK"));
- lColor = (LONG)vColour.GetPixel();
+ m_backgroundColour = pParent->GetBackgroundColour();
m_nSelectedButton = -1;
- m_nNoItems = nNum;
+ m_nNoItems = 0;
m_nMajorDim = nMajorDim == 0 ? nNum : nMajorDim;
m_nNoRowsOrCols = nMajorDim;
#endif
,rsName
))
-
-
-
-
+ return FALSE;
if (!OS2CreateControl( "STATIC"
-#if RADIOBTN_PARENT_IS_RADIOBOX
- ,SS_GROUPBOX | WS_GROUP | WS_CLIPCHILDREN
-#else
- ,SS_GROUPBOX | WS_GROUP | WS_CLIPSIBLINGS
-#endif
+ ,SS_GROUPBOX
,rPos
,rSize
,rsTitle
))
+ return FALSE;
+ wxAssociateWinWithHandle(m_hWnd, this);
#if RADIOBTN_PARENT_IS_RADIOBOX
HWND hWndParent = GetHwnd();
#else
//
// Some radio boxes test consecutive id.
//
+ m_nNoItems = nNum;
(void)NewControlId();
m_ahRadioButtons = new WXHWND[nNum];
m_pnRadioWidth = new int[nNum];
m_pnRadioHeight = new int[nNum];
- if (pTextFont->Ok())
- {
- hFont = pTextFont->GetResourceHandle();
- }
-
for (int i = 0; i < nNum; i++)
{
m_pnRadioWidth[i] = m_pnRadioHeight[i] = -1;
}
m_ahRadioButtons[i] = (WXHWND)hWndBtn;
SubclassRadioButton((WXHWND)hWndBtn);
+ wxAssociateWinWithHandle(hWndBtn, this);
wxOS2SetFont( hWndBtn
- ,*pTextFont
+ ,*wxSMALL_FONT
);
::WinSetWindowULong(hWndBtn, QWL_USER, (ULONG)this);
m_aSubControls.Add(nNewId);
,NULL
,NULL
);
- SetFont(*pTextFont);
+ SetFont(*wxSMALL_FONT);
+ fnWndProcRadioBox = (WXFARPROC)::WinSubclassWindow( GetHwnd()
+ ,(PFNWP)wxRadioBoxWndProc
+ );
+ ::WinSetWindowULong(GetHwnd(), QWL_USER, (ULONG)this);
lColor = (LONG)vColour.GetPixel();
::WinSetPresParam( m_hWnd
,PP_FOREGROUNDCOLOR
,sizeof(LONG)
,(PVOID)&lColor
);
+ ::WinSetPresParam( m_hWnd
+ ,PP_BORDERDARKCOLOR
+ ,sizeof(LONG)
+ ,(PVOID)&lColor
+ );
lColor = (LONG)m_backgroundColour.GetPixel();
::WinSetPresParam( m_hWnd
,sizeof(LONG)
,(PVOID)&lColor
);
+ ::WinSetPresParam( m_hWnd
+ ,PP_BORDERLIGHTCOLOR
+ ,sizeof(LONG)
+ ,(PVOID)&lColor
+ );
+ SetXComp(0);
+ SetYComp(0);
SetSelection(0);
SetSize( rPos.x
,rPos.y
,rSize.x
,rSize.y
);
- delete pTextFont;
return TRUE;
} // end of wxRadioBox::Create
nXx = nCurrentX;
if (nY == -1 && !(nSizeFlags & wxSIZE_ALLOW_MINUS_ONE))
nYy = nCurrentY;
-
+ if (nYy < 0)
+ nYy = 0;
+ if (nXx < 0)
+ nXx = 0;
wxGetCharSize( m_hWnd
,&nCx1
,(LONG)nMaxHeight
,SWP_ZORDER | SWP_SIZE | SWP_MOVE | SWP_SHOW
);
+ GetParent()->Refresh();
//
// Where do we put the next button?
//
if (nSelectedButton == -1)
{
//
- // Just ignore it - due to a hack with WM_NCHITTEST handling in our
- // wnd proc, we can receive dummy click messages when we click near
- // the radiobox edge (this is ugly but Julian wouldn't let me get
- // rid of this...)
+ // Just ignore it
+ //
return FALSE;
}
if (nSelectedButton != m_nSelectedButton)
);
} // end of wxRadioBtnWndProc
+MRESULT EXPENTRY wxRadioBoxWndProc(
+ HWND hWnd
+, UINT uMessage
+, MPARAM wParam
+, MPARAM lParam
+)
+{
+ return (fnWndProcRadioBox( hWnd
+ ,(ULONG)uMessage
+ ,(MPARAM)wParam
+ ,(MPARAM)lParam
+ )
+ );
+} // end of wxRadioBoxWndProc
+