HWND hWnd = GetHwnd();
- if (hWnd != 0)
- {
- char zFont[128];
- char zFacename[30];
- char zWeight[30];
- char zStyle[30];
-
- //
- // The fonts available for Presentation Params are just three
- // outline fonts, the rest are available to the GPI, so we must
- // map the families to one of these three
- //
- switch(rFont.GetFamily())
- {
- case wxSCRIPT:
- case wxDECORATIVE:
- case wxROMAN:
- strcpy(zFacename,"Times New Roman");
- break;
-
- case wxTELETYPE:
- case wxMODERN:
- strcpy(zFacename, "Courier");
- break;
-
- case wxSWISS:
- case wxDEFAULT:
- default:
- strcpy(zFacename, "Helvetica");
- break;
- }
-
- switch(rFont.GetWeight())
- {
- default:
- case wxNORMAL:
- case wxLIGHT:
- zWeight[0] = '\0';
- break;
-
- case wxBOLD:
- case wxFONTWEIGHT_MAX:
- strcpy(zWeight, "Bold");
- break;
- }
- switch(rFont.GetStyle())
- {
- case wxITALIC:
- case wxSLANT:
- strcpy(zStyle, "Italic");
- break;
-
- default:
- zStyle[0] = '\0';
- break;
- }
- sprintf(zFont, "%d.%s", rFont.GetPointSize(), zFacename);
- if (zWeight[0] != '\0')
- {
- strcat(zFont, " ");
- strcat(zFont, zWeight);
- }
- if (zStyle[0] != '\0')
- {
- strcat(zFont, " ");
- strcat(zFont, zStyle);
- }
- ::WinSetPresParam(hWnd, PP_FONTNAMESIZE, strlen(zFont) + 1, (PVOID)zFont);
- }
+ wxOS2SetFont( hWnd
+ ,rFont
+ );
return(TRUE);
-}
+} // end of wxWindowOS2::SetFont
bool wxWindowOS2::SetCursor(
const wxCursor& rCursor
{
HWND hwnd = (HWND)hWnd;
- wxASSERT_MSG( !m_fnOldWndProc, wxT("subclassing window twice?") );
wxCHECK_RET(::WinIsWindow(vHabmain, hwnd), wxT("invalid HWND in SubclassWin") );
- m_fnOldWndProc = (WXFARPROC) ::WinSubclassWindow(hwnd, (PFNWP)wxWndProc);
+ wxAssociateWinWithHandle( hWnd
+ ,(wxWindow*)this
+ );
+ if (!wxCheckWindowWndProc( hWnd
+ ,(WXFARPROC)wxWndProc
+ ))
+ {
+ m_fnOldWndProc = (WXFARPROC) ::WinSubclassWindow(hwnd, (PFNWP)wxWndProc);
+ }
+ else
+ {
+ m_fnOldWndProc = (WXFARPROC)NULL;
+ }
} // end of wxWindowOS2::SubclassWin
void wxWindowOS2::UnsubclassWin()
//
QMSG vMsg;
- while (::WinPeekMsg(vHabmain, &vMsg, (HWND)0, WM_COMMAND,
- WM_COMMAND,PM_REMOVE) && vMsg.msg != WM_QUIT)
+ while (::WinPeekMsg(vHabmain, &vMsg, (HWND)0, WM_COMMAND, WM_COMMAND, PM_REMOVE)
+ && vMsg.msg != WM_QUIT)
{
wxTheApp->DoMessage((WXMSG*)&vMsg);
}
, int nY
)
{
- HWND hWnd = GetHwnd();
- HWND hWndParent = GetParent() ? GetWinHwnd(GetParent()) : (HWND)0;
+ HWND hWndOwner = GetHwnd();
+ HWND hWndParent = GetHwnd();
HWND hMenu = GetHmenuOf(pMenu);
+ bool bIsWaiting = TRUE;
pMenu->SetInvokingWindow(this);
pMenu->UpdateUI();
wxCurrentPopupMenu = pMenu;
::WinPopupMenu( hWndParent
- ,hWnd
+ ,hWndOwner
,hMenu
,nX
,nY
,0L
- ,PU_MOUSEBUTTON2DOWN | PU_MOUSEBUTTON2 | PU_KEYBOARD
+ ,PU_HCONSTRAIN | PU_VCONSTRAIN | PU_MOUSEBUTTON2DOWN | PU_MOUSEBUTTON2
);
- // we need to do it righ now as otherwise the events are never going to be
- // sent to wxCurrentPopupMenu from ;()
- //
- // note that even eliminating (ugly) wxCurrentPopupMenu global wouldn't
- // help and we'd still need wxYieldForCommandsOnly() as the menu may be
- // destroyed as soon as we return (it can be a local variable in the caller
- // for example) and so we do need to process the event immediately
- wxYieldForCommandsOnly();
+ while(bIsWaiting)
+ {
+ QMSG vMsg;
+
+ while (::WinPeekMsg(vHabmain, &vMsg, (HWND)0, WM_COMMAND, WM_COMMAND, PM_REMOVE)
+ && vMsg.msg != WM_QUIT)
+ {
+ wxTheApp->DoMessage((WXMSG*)&vMsg);
+ }
+ if (vMsg.msg == WM_DESTROY || vMsg.msg == WM_QUIT)
+ break;
+ }
wxCurrentPopupMenu = NULL;
pMenu->SetInvokingWindow(NULL);
//
if (pParent)
{
- if (IsKindOf(CLASSINFO(wxStatusBar)) &&
- pParent->IsKindOf(CLASSINFO(wxFrame)))
+ if ( pParent->IsKindOf(CLASSINFO(wxGenericScrolledWindow)) ||
+ pParent->IsKindOf(CLASSINFO(wxScrolledWindow))
+ )
{
- RECTL vRect;
- wxFrame* pFrame = wxDynamicCast(pParent, wxFrame);
+ if (IsKindOf(CLASSINFO(wxStatusBar)) &&
+ pParent->IsKindOf(CLASSINFO(wxFrame)))
+ {
+ RECTL vRect;
+ wxFrame* pFrame = wxDynamicCast(pParent, wxFrame);
- ::WinQueryWindowRect((HWND)pFrame->GetFrame(), &vRect);
- nY = vRect.yTop - (nY + nHeight);
+ ::WinQueryWindowRect((HWND)pFrame->GetFrame(), &vRect);
+ nY = vRect.yTop - (nY + nHeight);
+ }
+ else
+ nY = pParent->GetSize().y - (nY + nHeight);
}
- else
- nY = pParent->GetSize().y - (nY + nHeight);
}
else
{