OS/2 scrolling support for controls

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@13430 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
David Webster 2002-01-07 00:49:10 +00:00
parent bdb2ce96bb
commit 5d44b24ee6
19 changed files with 772 additions and 1068 deletions

View File

@ -70,6 +70,15 @@ bool wxButton::Create(
//
if (m_windowStyle & wxCLIP_SIBLINGS )
lStyle |= 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)))
lStyle |= WS_CLIPSIBLINGS;
m_hWnd = (WXHWND)::WinCreateWindow( GetHwndOf(pParent) // Parent handle
,WC_BUTTON // A Button class window
,(PSZ)rsLabel.c_str() // Button text

View File

@ -34,52 +34,90 @@ IMPLEMENT_DYNAMIC_CLASS(wxBitmapCheckBox, wxCheckBox)
// wxCheckBox
// ----------------------------------------------------------------------------
bool wxCheckBox::OS2Command(WXUINT WXUNUSED(param), WXWORD WXUNUSED(id))
bool wxCheckBox::OS2Command(
WXUINT WXUNUSED(uParam)
, WXWORD WXUNUSED(wId)
)
{
wxCommandEvent event(wxEVT_COMMAND_CHECKBOX_CLICKED, m_windowId);
event.SetInt(GetValue());
event.SetEventObject(this);
ProcessCommand(event);
wxCommandEvent rEvent( wxEVT_COMMAND_CHECKBOX_CLICKED
,m_windowId
);
rEvent.SetInt(GetValue());
rEvent.SetEventObject(this);
ProcessCommand(rEvent);
return TRUE;
}
} // end of wxCheckBox::OS2Command
// Single check box item
bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
const wxPoint& pos,
const wxSize& size, long style,
bool wxCheckBox::Create(
wxWindow* pParent
, wxWindowID vId
, const wxString& rsLabel
, const wxPoint& rPos
, const wxSize& rSize
, long lStyle
#if wxUSE_VALIDATORS
const wxValidator& validator,
, const wxValidator& rValidator
#endif
const wxString& name)
, const wxString& rsName
)
{
SetName(name);
SetName(rsName);
#if wxUSE_VALIDATORS
SetValidator(validator);
SetValidator(rValidator);
#endif
if (parent) parent->AddChild(this);
if (pParent)
pParent->AddChild(this);
SetBackgroundColour(parent->GetBackgroundColour()) ;
SetForegroundColour(parent->GetForegroundColour()) ;
SetBackgroundColour(pParent->GetBackgroundColour());
SetForegroundColour(pParent->GetForegroundColour());
m_windowStyle = lStyle;
m_windowStyle = style;
wxString sLabel = rsLabel;
wxString Label = label;
if (Label == wxT(""))
Label = wxT(" "); // Apparently needed or checkbox won't show
if (sLabel == wxT(""))
sLabel = wxT(" "); // Apparently needed or checkbox won't show
if ( id == -1 )
if (vId == -1 )
m_windowId = NewControlId();
else
m_windowId = id;
m_windowId = vId;
int x = pos.x;
int y = pos.y;
int width = size.x;
int height = size.y;
int nX = rPos.x;
int nY = rPos.y;
int nWidth = rSize.x;
int nHeight = rSize.y;
long lSstyle = 0L;
// TODO: create checkbox
lSstyle = BS_AUTOCHECKBOX |
WS_TABSTOP |
WS_VISIBLE;
if (lStyle & 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;
m_hWnd = (WXHWND)::WinCreateWindow ( GetHwndOf(pParent)
,WC_BUTTON
,rsLabel.c_str()
,lSstyle
,0, 0, 0, 0
,GetWinHwnd(pParent)
,HWND_TOP
,(HMENU)m_windowId
,NULL
,NULL
);
//
// Subclass again for purposes of dialog editing mode
//
SubclassWin(m_hWnd);
LONG lColor = (LONG)m_backgroundColour.GetPixel();
@ -90,45 +128,73 @@ bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
,(PVOID)&lColor
);
SetFont(parent->GetFont());
SetFont(pParent->GetFont());
SetSize(x, y, width, height);
SetSize( nX
,nY
,nWidth
,nHeight
);
return TRUE;
} // end of wxCheckBox::Create
return FALSE;
}
void wxCheckBox::SetLabel(const wxString& label)
void wxCheckBox::SetLabel(
const wxString& rsLabel
)
{
// TODO
}
::WinSetWindowText(GetHwnd(), rsLabel.c_str());
} // end of wxCheckBox::SetLabel
wxSize wxCheckBox::DoGetBestSize() const
{
int wCheckbox, hCheckbox;
static int nCheckSize = 0;
wxString str = wxGetWindowText(GetHWND());
if ( !str.IsEmpty() )
if (!nCheckSize)
{
GetTextExtent(str, &wCheckbox, &hCheckbox);
wCheckbox += RADIO_SIZE;
wxScreenDC vDc;
if ( hCheckbox < RADIO_SIZE )
hCheckbox = RADIO_SIZE;
vDc.SetFont(wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT));
//
// The height of a standard button in the dialog units is 8,
// translate this to pixels (as one dialog unit is precisely equal to
// 8 character heights, it's just the char height)
//
nCheckSize = vDc.GetCharHeight();
}
int nWidthCheckbox;
int nHeightCheckbox;
wxString sStr = wxGetWindowText(GetHWND());
if (!sStr.IsEmpty())
{
GetTextExtent( sStr
,&nWidthCheckbox
,&nHeightCheckbox
);
nWidthCheckbox += nCheckSize + GetCharWidth();
if (nHeightCheckbox < nCheckSize)
nHeightCheckbox = nCheckSize;
}
else
{
wCheckbox = RADIO_SIZE;
hCheckbox = RADIO_SIZE;
nWidthCheckbox = nCheckSize;
nHeightCheckbox = nCheckSize;
}
return wxSize(wCheckbox, hCheckbox);
}
return wxSize( nWidthCheckbox
,nHeightCheckbox
);
} // end of wxCheckBox::DoGetBestSize
void wxCheckBox::SetValue(bool val)
void wxCheckBox::SetValue(
bool bValue
)
{
// TODO
}
::WinSendMsg(GetHwnd(), BM_SETCHECK, (MPARAM)bValue, 0);
} // end of wxCheckBox::SetValue
#ifndef BST_CHECKED
#define BST_CHECKED 0x0001
@ -136,101 +202,82 @@ void wxCheckBox::SetValue(bool val)
bool wxCheckBox::GetValue() const
{
// TODO
return FALSE;
}
return((LONGFROMMR(::WinSendMsg(GetHwnd(), BM_QUERYCHECK, (MPARAM)0, (MPARAM)0)) == 1L));
} // end of wxCheckBox::GetValue
WXHBRUSH wxCheckBox::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor,
WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
void wxCheckBox::Command (
wxCommandEvent& rEvent
)
{
// TODO:
/*
#if wxUSE_CTL3D
if ( m_useCtl3D )
{
HBRUSH hbrush = Ctl3dCtlColorEx(message, wParam, lParam);
return (WXHBRUSH) hbrush;
}
#endif
if (GetParent()->GetTransparentBackground())
SetBkMode((HDC) pDC, TRANSPARENT);
else
SetBkMode((HDC) pDC, OPAQUE);
::SetBkColor((HDC) pDC, RGB(GetBackgroundColour().Red(), GetBackgroundColour().Green(), GetBackgroundColour().Blue()));
::SetTextColor((HDC) pDC, RGB(GetForegroundColour().Red(), GetForegroundColour().Green(), GetForegroundColour().Blue()));
*/
wxBrush *backgroundBrush = wxTheBrushList->FindOrCreateBrush(GetBackgroundColour(), wxSOLID);
// Note that this will be cleaned up in wxApp::OnIdle, if backgroundBrush
// has a zero usage count.
// backgroundBrush->RealizeResource();
return (WXHBRUSH) backgroundBrush->GetResourceHandle();
}
void wxCheckBox::Command (wxCommandEvent & event)
{
SetValue ((event.GetInt() != 0));
ProcessCommand (event);
}
SetValue((rEvent.GetInt() != 0));
ProcessCommand(rEvent);
} // end of wxCheckBox:: Command
// ----------------------------------------------------------------------------
// wxBitmapCheckBox
// ----------------------------------------------------------------------------
bool wxBitmapCheckBox::Create(wxWindow *parent, wxWindowID id, const wxBitmap *label,
const wxPoint& pos,
const wxSize& size, long style,
bool wxBitmapCheckBox::Create(
wxWindow* pParent
, wxWindowID vId
, const wxBitmap* pLabel
, const wxPoint& rPos
, const wxSize& rSize
, long lStyle
#if wxUSE_VALIDATORS
const wxValidator& validator,
, const wxValidator& rValidator
#endif
const wxString& name)
, const wxString& rsName
)
{
SetName(name);
SetName(rsName);
#if wxUSE_VALIDATORS
SetValidator(validator);
SetValidator(rValidator);
#endif
if (parent) parent->AddChild(this);
if (pParent)
pParent->AddChild(this);
SetBackgroundColour(parent->GetBackgroundColour()) ;
SetForegroundColour(parent->GetForegroundColour()) ;
m_windowStyle = style;
SetBackgroundColour(pParent->GetBackgroundColour()) ;
SetForegroundColour(pParent->GetForegroundColour()) ;
m_windowStyle = lStyle;
if ( id == -1 )
if (vId == -1)
m_windowId = NewControlId();
else
m_windowId = id;
m_windowId = vId;
int x = pos.x;
int y = pos.y;
int width = size.x;
int height = size.y;
int nX = rPos.x;
int nY = rPos.y;
int nWidth = rSize.x;
int nHeight = rSize.y;
checkWidth = -1 ;
checkHeight = -1 ;
m_nCheckWidth = -1 ;
m_nCheckHeight = -1 ;
// long msStyle = CHECK_FLAGS;
HWND wx_button = 0; // TODO: Create the bitmap checkbox
HWND hButton = 0; // TODO: Create the bitmap checkbox
m_hWnd = (WXHWND)wx_button;
m_hWnd = (WXHWND)hButton;
//
// Subclass again for purposes of dialog editing mode
SubclassWin((WXHWND)wx_button);
//
SubclassWin((WXHWND)hButton);
SetSize(x, y, width, height);
// TODO: ShowWindow(wx_button, SW_SHOW);
SetSize( nX
,nY
,nWidth
,nHeight
);
::WinShowWindow(hButton, TRUE);
return TRUE;
}
} // end of wxBitmapCheckBox::Create
void wxBitmapCheckBox::SetLabel(const wxBitmap& bitmap)
void wxBitmapCheckBox::SetLabel(
const wxBitmap& rBitmap
)
{
wxFAIL_MSG(wxT("not implemented"));
}
} // end of wxBitmapCheckBox::SetLabel

View File

@ -50,8 +50,8 @@ bool wxChoice::Create(
))
return FALSE;
lSstyle = CBS_DROPDOWNLIST |
WS_TABSTOP |
WS_VISIBLE;
WS_TABSTOP |
WS_VISIBLE;
if (lStyle & wxCLIP_SIBLINGS )
lSstyle |= WS_CLIPSIBLINGS;

View File

@ -163,6 +163,7 @@ bool wxComboBox::Create(
gfnWndprocEdit = (WXFARPROC)::WinSubclassWindow( (HWND)GetHwnd()
,(PFNWP)wxComboEditWndProc
);
::WinSetWindowULong(GetHwnd(), QWL_USER, (ULONG)this);
return TRUE;
} // end of wxComboBox::Create

View File

@ -113,6 +113,10 @@ bool wxControl::OS2CreateControl(
, WXDWORD dwExstyle
)
{
int nX = rPos.x == -1 ? 0 : rPos.x;
int nY = rPos.y == -1 ? 0 : rPos.y;
int nW = rSize.x == -1 ? 0 : rSize.x;
int nH = rSize.y == -1 ? 0 : rSize.y;
//
// Doesn't do anything at all under OS/2
//
@ -121,6 +125,42 @@ bool wxControl::OS2CreateControl(
dwExstyle = GetExStyle(dwStyle);
}
wxWindow* pParent = GetParent();
PSZ zClass;
if (!pParent)
return FALSE;
if ((strcmp(zClassname, "COMBOBOX")) == 0)
zClass = WC_COMBOBOX;
else if ((strcmp(zClassname, "STATIC")) == 0)
zClass = WC_STATIC;
dwStyle |= WS_VISIBLE;
//
// 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)))
dwStyle |= WS_CLIPSIBLINGS;
m_hWnd = (WXHWND)::WinCreateWindow( (HWND)GetHwndOf(pParent) // Parent window handle
,(PSZ)zClass // Window class
,(PSZ)rsLabel.c_str() // Initial Text
,(ULONG)dwStyle // Style flags
,(LONG)0 // X pos of origin
,(LONG)0 // Y pos of origin
,(LONG)0 // control width
,(LONG)0 // control height
,(HWND)GetHwndOf(pParent) // owner window handle (same as parent
,HWND_TOP // initial z position
,(ULONG)GetId() // Window identifier
,NULL // no control data
,NULL // no Presentation parameters
);
if ( !m_hWnd )
{
#ifdef __WXDEBUG__
@ -129,29 +169,6 @@ bool wxControl::OS2CreateControl(
return FALSE;
}
PSZ zClass;
if ((strcmp(zClassname, "COMBOBOX")) == 0)
zClass = WC_COMBOBOX;
else if ((strcmp(zClassname, "STATIC")) == 0)
zClass = WC_STATIC;
dwStyle |= WS_VISIBLE;
m_hWnd = (WXHWND)::WinCreateWindow( (HWND)GetHwndOf(GetParent()) // Parent window handle
,(PSZ)zClassname // Window class
,(PSZ)rsLabel.c_str() // Initial Text
,(ULONG)dwStyle // Style flags
,(LONG)0 // X pos of origin
,(LONG)0 // Y pos of origin
,(LONG)0 // control width
,(LONG)0 // control height
,(HWND)GetHwndOf(GetParent()) // owner window handle (same as parent
,HWND_TOP // initial z position
,(ULONG)GetId() // Window identifier
,NULL // no control data
,NULL // no Presentation parameters
);
//
// Subclass again for purposes of dialog editing mode
//
@ -161,6 +178,8 @@ bool wxControl::OS2CreateControl(
// Controls use the same font and colours as their parent dialog by default
//
InheritAttributes();
if (nW == 0 || nH == 0)
SetBestSize(rSize);
return TRUE;
} // end of wxControl::OS2CreateControl

View File

@ -31,23 +31,18 @@
#define wxDIALOG_DEFAULT_WIDTH 500
#define wxDIALOG_DEFAULT_HEIGHT 500
// Lists to keep track of windows, so we can disable/enable them
// for modal dialogs
wxWindowList wxModalDialogs;
wxWindowList wxModelessWindows; // Frames and modeless dialogs
extern wxList WXDLLEXPORT wxPendingDelete;
IMPLEMENT_DYNAMIC_CLASS(wxDialog, wxPanel)
IMPLEMENT_DYNAMIC_CLASS(wxDialog, wxTopLevelWindow)
BEGIN_EVENT_TABLE(wxDialog, wxPanel)
EVT_SIZE(wxDialog::OnSize)
EVT_BUTTON(wxID_OK, wxDialog::OnOK)
EVT_BUTTON(wxID_APPLY, wxDialog::OnApply)
EVT_BUTTON(wxID_CANCEL, wxDialog::OnCancel)
EVT_CHAR_HOOK(wxDialog::OnCharHook)
EVT_SYS_COLOUR_CHANGED(wxDialog::OnSysColourChanged)
EVT_CLOSE(wxDialog::OnCloseWindow)
END_EVENT_TABLE()
BEGIN_EVENT_TABLE(wxDialog, wxTopLevelWindow)
EVT_BUTTON(wxID_OK, wxDialog::OnOK)
EVT_BUTTON(wxID_APPLY, wxDialog::OnApply)
EVT_BUTTON(wxID_CANCEL, wxDialog::OnCancel)
EVT_CHAR_HOOK(wxDialog::OnCharHook)
EVT_SYS_COLOUR_CHANGED(wxDialog::OnSysColourChanged)
EVT_CLOSE(wxDialog::OnCloseWindow)
END_EVENT_TABLE()
void wxDialog::Init()
{
@ -76,64 +71,27 @@ bool wxDialog::Create(
HWND hWnd;
Init();
m_pOldFocus = (wxWindow*)FindFocus();
SetName(rsName);
wxTopLevelWindows.Append(this);
if (pParent)
pParent->AddChild(this);
if (vId == -1)
m_windowId = NewControlId();
else
m_windowId = vId;
if (lX < 0)
lX = wxDIALOG_DEFAULT_X;
if (lY < 0)
lY = wxDIALOG_DEFAULT_Y;
m_windowStyle = lStyle;
if (lWidth < 0)
lWidth = wxDIALOG_DEFAULT_WIDTH;
if (lHeight < 0)
lHeight = wxDIALOG_DEFAULT_HEIGHT;
SetExtraStyle(GetExtraStyle() | wxTOPLEVEL_EX_DIALOG);
//
// Save focus before doing anything which can potentially change it
//
m_pOldFocus = FindFocus();
//
// All dialogs should really have this style
//
m_windowStyle |= wxTAB_TRAVERSAL;
lStyle |= wxTAB_TRAVERSAL;
//
// Allows creation of dialogs with & without captions under MSWindows,
// resizeable or not (but a resizeable dialog always has caption -
// otherwise it would look too strange)
//
if (lStyle & wxRESIZE_BORDER )
zDlg = "wxResizeableDialog";
else if (lStyle & wxCAPTION )
zDlg = "wxCaptionDialog";
else
zDlg = "wxNoCaptionDialog";
OS2Create( GetWinHwnd(pParent)
,NULL
,rsTitle.c_str()
,0L
,lX
,lY
,lWidth
,lHeight
,GetWinHwnd(pParent)
,HWND_TOP
,(long)m_windowId
,NULL
,NULL
);
hWnd = (HWND)GetHWND();
if (!hWnd)
{
if (!wxTopLevelWindow::Create( pParent
,vId
,rsTitle
,rPos
,rSize
,lStyle
,rsName
))
return FALSE;
}
SubclassWin(GetHWND());
::WinSetWindowText( hWnd
,(PSZ)rsTitle.c_str()
);
SetFont(wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT));
return TRUE;
} // end of wxDialog::Create
@ -143,35 +101,21 @@ void wxDialog::SetModal(
)
{
if (bFlag)
{
m_windowStyle |= wxDIALOG_MODAL ;
else if ( m_windowStyle & wxDIALOG_MODAL )
m_windowStyle -= wxDIALOG_MODAL ;
wxModelessWindows.DeleteObject(this);
if (!bFlag)
wxModelessWindows.Append(this);
wxModelessWindows.DeleteObject(this);
}
else
{
m_windowStyle &= ~wxDIALOG_MODAL ;
wxModelessWindows.Append(this);
}
} // end of wxDialog::SetModal
wxDialog::~wxDialog()
{
m_isBeingDeleted = TRUE;
wxTopLevelWindows.DeleteObject(this);
Show(FALSE);
if (!IsModal())
wxModelessWindows.DeleteObject(this);
//
// If this is the last top-level window, exit.
//
if (wxTheApp && (wxTopLevelWindows.Number() == 0))
{
wxTheApp->SetTopWindow(NULL);
if (wxTheApp->GetExitOnFrameDelete())
{
::WinPostMsg(GetHwnd(), WM_QUIT, 0, 0);
}
}
} // end of wxDialog::~wxDialog
//
@ -208,64 +152,9 @@ void wxDialog::OnCharHook(
rEvent.Skip();
}
void wxDialog::Iconize(
bool WXUNUSED(bIconize)
)
{
} // end of wxDialog::Iconize
bool wxDialog::IsIconized() const
{
return FALSE;
} // end of wxDialog::IsIconized
void wxDialog::DoSetClientSize(
int nWidth
, int nHeight
)
{
HWND hWnd = (HWND) GetHWND();
RECTL vRect;
RECTL vRect2;
::WinQueryWindowRect(hWnd, &vRect);
::WinQueryWindowRect(hWnd, &vRect2);
LONG lActualWidth = vRect2.xRight - vRect2.xLeft - vRect.xRight + nWidth;
LONG lActualHeight = vRect2.yTop + vRect2.yTop - vRect.yTop + nHeight;
::WinSetWindowPos( GetHwnd()
,HWND_TOP
,(LONG)vRect2.xLeft
,(LONG)vRect2.yTop
,(LONG)lActualWidth
,(LONG)lActualHeight
,SWP_SIZE | SWP_MOVE
);
wxSizeEvent vEvent( wxSize( lActualWidth
,lActualHeight
)
,m_windowId
);
vEvent.SetEventObject( this );
GetEventHandler()->ProcessEvent(vEvent);
} // end of wxDialog::DoSetClientSize
void wxDialog::DoGetPosition(
int* pnX
, int* pnY
) const
{
RECTL vRect;
::WinQueryWindowRect(GetHwnd(), &vRect);
if (pnX)
*pnX = vRect.xLeft;
if (pnY)
*pnY = vRect.yBottom; // OS/2's bottom is windows' top???
} // end of wxDialog::DoGetPosition
// ----------------------------------------------------------------------------
// showing the dialogs
// ----------------------------------------------------------------------------
bool wxDialog::IsModal() const
{
@ -407,7 +296,7 @@ bool wxDialog::Show(
wxModalDialogs.DeleteObject(this);
}
}
return FALSE;
return TRUE;
} // end of wxDialog::Show
//
@ -431,6 +320,10 @@ void wxDialog::EndModal(
Show(FALSE);
} // end of wxDialog::EndModal
// ----------------------------------------------------------------------------
// wxWin event handlers
// ----------------------------------------------------------------------------
void wxDialog::OnApply(
wxCommandEvent& rEvent
)
@ -495,17 +388,6 @@ void wxDialog::OnCloseWindow(
closing.DeleteObject(this);
} // end of wxDialog::OnCloseWindow
//
// Destroy the window (delayed, if a managed window)
//
bool wxDialog::Destroy()
{
wxCHECK_MSG( !wxPendingDelete.Member(this), FALSE,
_T("wxDialog destroyed twice") );
wxPendingDelete.Append(this);
return TRUE;
} // end of wxDialog::Destroy
void wxDialog::OnSysColourChanged(
wxSysColourChangedEvent& rEvent
)

View File

@ -52,7 +52,7 @@
extern wxWindowList wxModelessWindows;
extern wxList WXDLLEXPORT wxPendingDelete;
extern wxChar wxFrameClassName[];
extern const wxChar* wxFrameClassName;
#if wxUSE_MENUS_NATIVE
extern wxMenu *wxCurrentPopupMenu;
@ -96,39 +96,33 @@ IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxWindow)
void wxFrame::Init()
{
m_bIconized = FALSE;
#if wxUSE_TOOLTIPS
m_hWndToolTip = 0;
#endif
// Data to save/restore when calling ShowFullScreen
m_lFsStyle = 0L;
m_lFsOldWindowStyle = 0L;
m_nFsStatusBarFields = 0;
m_nFsStatusBarHeight = 0;
m_nFsToolBarHeight = 0;
m_bFsIsMaximized = FALSE;
m_hWndToolTip = 0L;
m_bWasMinimized = FALSE;
m_bFsIsShowing = FALSE;
m_bIsShown = FALSE;
m_pWinLastFocused = (wxWindow *)NULL;
m_pWinLastFocused = NULL;
m_hFrame = NULL;
m_hTitleBar = NULL;
m_hHScroll = NULL;
m_hVScroll = NULL;
m_frameMenuBar = NULL;
m_frameToolBar = NULL;
m_frameStatusBar = NULL;
m_hTitleBar = NULLHANDLE;
m_hHScroll = NULLHANDLE;
m_hVScroll = NULLHANDLE;
//
// Initialize SWP's
//
memset(&m_vSwp, 0, sizeof(SWP));
memset(&m_vSwpClient, 0, sizeof(SWP));
memset(&m_vSwpTitleBar, 0, sizeof(SWP));
memset(&m_vSwpMenuBar, 0, sizeof(SWP));
memset(&m_vSwpHScroll, 0, sizeof(SWP));
memset(&m_vSwpVScroll, 0, sizeof(SWP));
memset(&m_vSwpStatusBar, 0, sizeof(SWP));
memset(&m_vSwpToolBar, 0, sizeof(SWP));
m_bIconized = FALSE;
} // end of wxFrame::Init
bool wxFrame::Create(
@ -137,153 +131,30 @@ bool wxFrame::Create(
, const wxString& rsTitle
, const wxPoint& rPos
, const wxSize& rSize
, long lulStyle
, long lStyle
, const wxString& rsName
)
{
int nX = rPos.x;
int nY = rPos.y;
int nWidth = rSize.x;
int nHeight = rSize.y;
bool bOk = FALSE;
SetName(rsName);
m_windowStyle = lulStyle;
m_frameMenuBar = NULL;
#if wxUSE_TOOLBAR
m_frameToolBar = NULL;
#endif //wxUSE_TOOLBAR
#if wxUSE_STATUSBAR
m_frameStatusBar = NULL;
#endif //wxUSE_STATUSBAR
if (!wxTopLevelWindow::Create( pParent
,vId
,rsTitle
,rPos
,rSize
,lStyle
,rsName
))
return FALSE;
SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE));
if (vId > -1 )
m_windowId = vId;
else
m_windowId = (int)NewControlId();
if (pParent)
pParent->AddChild(this);
m_bIconized = FALSE;
if ((m_windowStyle & wxFRAME_FLOAT_ON_PARENT) == 0)
pParent = NULL;
bOk = OS2Create( m_windowId
,pParent
,wxFrameClassName
,this
,rsTitle
,nX
,nY
,nWidth
,nHeight
,lulStyle
);
if (bOk)
{
if (!pParent)
wxTopLevelWindows.Append(this);
wxModelessWindows.Append(this);
}
return(bOk);
wxModelessWindows.Append(this);
return TRUE;
} // end of wxFrame::Create
wxFrame::~wxFrame()
{
m_isBeingDeleted = TRUE;
wxTopLevelWindows.DeleteObject(this);
DeleteAllBars();
if (wxTheApp && (wxTopLevelWindows.Number() == 0))
{
wxTheApp->SetTopWindow(NULL);
if (wxTheApp->GetExitOnFrameDelete())
{
::WinPostMsg(NULL, WM_QUIT, 0, 0);
}
}
wxModelessWindows.DeleteObject(this);
//
// For some reason, wxWindows can activate another task altogether
// when a frame is destroyed after a modal dialog has been invoked.
// Try to bring the parent to the top.
//
// MT:Only do this if this frame is currently the active window, else weird
// things start to happen.
//
if (wxGetActiveWindow() == this)
{
if (GetParent() && GetParent()->GetHWND())
{
::WinSetWindowPos( (HWND) GetParent()->GetHWND()
,HWND_TOP
,0
,0
,0
,0
,SWP_ZORDER
);
}
}
} // end of wxFrame::~wxFrame
//
// IF we have child controls in the Frame's client we need to alter
// the y position, because, OS/2 controls are positioned relative to
// wxWindows orgin (top left) not the OS/2 origin (bottom left)
void wxFrame::AlterChildPos()
{
//
// OS/2 is the only OS concerned about this
//
wxWindow* pChild = NULL;
wxControl* pCtrl = NULL;
RECTL vRect;
SWP vSwp;
::WinQueryWindowRect(GetHwnd(), &vRect);
for (wxWindowList::Node* pNode = GetChildren().GetFirst();
pNode;
pNode = pNode->GetNext())
{
wxWindow* pChild = pNode->GetData();
::WinQueryWindowPos(pChild->GetHWND(), &vSwp);
vSwp.y += (vRect.yTop - m_vSwpClient.cy);
if (pChild->IsKindOf(CLASSINFO(wxControl)))
{
pCtrl = wxDynamicCast(pChild, wxControl);
//
// Must deal with controls that have margins like ENTRYFIELD. The SWP
// struct of such a control will have and origin offset from its intended
// position by the width of the margins.
//
vSwp.y -= pCtrl->GetYComp();
vSwp.x -= pCtrl->GetXComp();
}
::WinSetWindowPos( pChild->GetHWND()
,HWND_TOP
,vSwp.x
,vSwp.y
,vSwp.cx
,vSwp.cy
,SWP_MOVE
);
::WinQueryWindowPos(pChild->GetHWND(), &vSwp);
pChild = NULL;
}
} // end of wxFrame::AlterChildPos
//
// Get size *available for subwindows* i.e. excluding menu bar, toolbar etc.
//
@ -292,19 +163,15 @@ void wxFrame::DoGetClientSize(
, int* pY
) const
{
RECTL vRect;
::WinQueryWindowRect(GetHwnd(), &vRect);
wxTopLevelWindow::DoGetClientSize( pX
,pY
);
//
// No need to use statusbar code as in WIN32 as the FORMATFRAME
// window procedure ensures PM knows about the new frame client
// size internally. A ::WinQueryWindowRect is all that is needed!
// size internally. A ::WinQueryWindowRect (that is called in
// wxWindow's GetClient size from above) is all that is needed!
//
if (pX)
*pX = vRect.xRight - vRect.xLeft;
if (pY)
*pY = vRect.yTop - vRect.yBottom;
} // end of wxFrame::DoGetClientSize
//
@ -316,214 +183,48 @@ void wxFrame::DoSetClientSize(
, int nHeight
)
{
HWND hWnd = GetHwnd();
RECTL vRect;
RECTL vRect2;
::WinQueryWindowRect(GetHwnd(), &vRect);
::WinQueryWindowRect(GetHwnd(), &vRect2);
//
// Find the difference between the entire window (title bar and all)
// and the client area; add this to the new client size to move the
// window. Remember OS/2's backwards y coord system!
//
int nActualWidth = vRect2.xRight - vRect2.xLeft - vRect.xRight;
int nActualHeight = vRect2.yTop + vRect2.yTop - vRect.yTop;
#if wxUSE_STATUSBAR
wxStatusBar* pStatusBar = GetStatusBar();
if (pStatusBar && pStatusBar->IsShown())
{
nActualHeight += pStatusBar->GetSize().y;
}
#endif // wxUSE_STATUSBAR
wxPoint vPoint(GetClientAreaOrigin());
nActualWidth += vPoint.x;
nActualHeight += vPoint.y;
POINTL vPointl;
vPointl.x = vRect2.xLeft;
vPointl.y = vRect2.yTop;
::WinSetWindowPos( hWnd
,HWND_TOP
,vPointl.x
,vPointl.y
,nActualWidth
,nActualHeight
,SWP_MOVE | SWP_SIZE | SWP_SHOW
);
wxSizeEvent vEvent( wxSize( nWidth
,nHeight
)
,m_windowId
);
vEvent.SetEventObject(this);
GetEventHandler()->ProcessEvent(vEvent);
//
// Statusbars are not part of the OS/2 Client but parent frame
// so no statusbar consideration
//
wxTopLevelWindow::DoSetClientSize( nWidth
,nHeight
);
} // end of wxFrame::DoSetClientSize
void wxFrame::DoGetSize(
int* pWidth
, int* pHeight
) const
{
RECTL vRect;
::WinQueryWindowRect(m_hFrame, &vRect);
*pWidth = vRect.xRight - vRect.xLeft;
*pHeight = vRect.yTop - vRect.yBottom;
} // end of wxFrame::DoGetSize
void wxFrame::DoGetPosition(
int* pX
, int* pY
) const
{
RECTL vRect;
POINTL vPoint;
::WinQueryWindowRect(m_hFrame, &vRect);
*pX = vRect.xRight - vRect.xLeft;
*pY = vRect.yTop - vRect.yBottom;
} // end of wxFrame::DoGetPosition
// ----------------------------------------------------------------------------
// variations around ::ShowWindow()
// wxFrame: various geometry-related functions
// ----------------------------------------------------------------------------
void wxFrame::DoShowWindow(
int bShowCmd
)
void wxFrame::Raise()
{
::WinShowWindow(m_hFrame, (BOOL)bShowCmd);
m_bIconized = bShowCmd == SWP_MINIMIZE;
} // end of wxFrame::DoShowWindow
wxFrameBase::Raise();
::WinSetWindowPos( (HWND) GetParent()->GetHWND()
,HWND_TOP
,0
,0
,0
,0
,SWP_ZORDER
);
}
bool wxFrame::Show(
bool bShow
)
// generate an artificial resize event
void wxFrame::SendSizeEvent()
{
int nShowCmd;
SWP vSwp;
if (bShow)
if (!m_bIconized)
{
nShowCmd = SWP_SHOW;
RECTL vRect = wxGetWindowRect(GetHwnd());
(void)::WinPostMsg( m_hFrame
,WM_SIZE
,MPFROM2SHORT(vRect.xRight - vRect.xLeft, vRect.yTop - vRect.yBottom)
,MPFROM2SHORT(vRect.xRight - vRect.xLeft, vRect.yTop - vRect.yBottom)
);
}
else // hide
{
nShowCmd = SWP_HIDE;
}
DoShowWindow(nShowCmd);
if (bShow)
{
wxActivateEvent vEvent(wxEVT_ACTIVATE, TRUE, m_windowId);
::WinQueryWindowPos(m_hFrame, &vSwp);
m_bIconized = vSwp.fl & SWP_MINIMIZE;
::WinQueryWindowPos(m_hWnd, &m_vSwpClient);
::WinSendMsg(m_hFrame, WM_UPDATEFRAME, (MPARAM)~0, 0);
::WinEnableWindow(m_hFrame, TRUE);
vEvent.SetEventObject(this);
GetEventHandler()->ProcessEvent(vEvent);
}
else
{
//
// Try to highlight the correct window (the parent)
//
if (GetParent())
{
HWND hWndParent = GetHwndOf(GetParent());
::WinQueryWindowPos(hWndParent, &vSwp);
m_bIconized = vSwp.fl & SWP_MINIMIZE;
if (hWndParent)
::WinSetWindowPos( hWndParent
,HWND_TOP
,vSwp.x
,vSwp.y
,vSwp.cx
,vSwp.cy
,SWP_ZORDER | SWP_ACTIVATE | SWP_SHOW | SWP_MOVE
);
::WinEnableWindow(hWndParent, TRUE);
}
}
return TRUE;
} // end of wxFrame::Show
void wxFrame::Iconize(
bool bIconize
)
{
DoShowWindow(bIconize ? SWP_MINIMIZE : SWP_RESTORE);
} // end of wxFrame::Iconize
void wxFrame::Maximize(
bool bMaximize)
{
DoShowWindow(bMaximize ? SWP_MAXIMIZE : SWP_RESTORE);
} // end of wxFrame::Maximize
void wxFrame::Restore()
{
DoShowWindow(SWP_RESTORE);
} // end of wxFrame::Restore
bool wxFrame::IsIconized() const
{
SWP vSwp;
::WinQueryWindowPos(m_hFrame, &vSwp);
if (vSwp.fl & SWP_MINIMIZE)
((wxFrame*)this)->m_bIconized = TRUE;
else
((wxFrame*)this)->m_bIconized = FALSE;
return m_bIconized;
} // end of wxFrame::IsIconized
// Is it maximized?
bool wxFrame::IsMaximized() const
{
SWP vSwp;
bool bIconic;
::WinQueryWindowPos(m_hFrame, &vSwp);
return (vSwp.fl & SWP_MAXIMIZE);
} // end of wxFrame::IsMaximized
void wxFrame::SetIcon(
const wxIcon& rIcon
)
{
wxFrameBase::SetIcon(rIcon);
if ((m_icon.GetHICON()) != NULLHANDLE)
{
::WinSendMsg( m_hFrame
,WM_SETICON
,(MPARAM)((HPOINTER)m_icon.GetHICON())
,NULL
);
::WinSendMsg( m_hFrame
,WM_UPDATEFRAME
,(MPARAM)FCF_ICON
,(MPARAM)0
);
}
} // end of wxFrame::SetIcon
}
#if wxUSE_STATUSBAR
wxStatusBar* wxFrame::OnCreateStatusBar(
@ -960,191 +661,6 @@ bool wxFrame::ShowFullScreen(
//
// Frame window
//
bool wxFrame::OS2Create(
int nId
, wxWindow* pParent
, const wxChar* zWclass
, wxWindow* pWxWin
, const wxChar* zTitle
, int nX
, int nY
, int nWidth
, int nHeight
, long ulStyle
)
{
ULONG ulCreateFlags = 0L;
ULONG ulStyleFlags = 0L;
ULONG ulExtraFlags = 0L;
FRAMECDATA vFrameCtlData;
HWND hParent = NULLHANDLE;
HWND hTitlebar = NULLHANDLE;
HWND hHScroll = NULLHANDLE;
HWND hVScroll = NULLHANDLE;
HWND hFrame = NULLHANDLE;
HWND hClient = NULLHANDLE;
SWP vSwp[10];
RECTL vRect[10];
USHORT uCtlCount;
ERRORID vError;
wxString sError;
m_hDefaultIcon = (WXHICON) (wxSTD_FRAME_ICON ? wxSTD_FRAME_ICON : wxDEFAULT_FRAME_ICON);
if (pParent)
hParent = GetWinHwnd(pParent);
else
hParent = HWND_DESKTOP;
if (ulStyle == wxDEFAULT_FRAME_STYLE)
ulCreateFlags = FCF_SIZEBORDER | FCF_TITLEBAR | FCF_SYSMENU |
FCF_MINMAX | FCF_TASKLIST;
else
{
if ((ulStyle & wxCAPTION) == wxCAPTION)
ulCreateFlags = FCF_TASKLIST;
else
ulCreateFlags = FCF_NOMOVEWITHOWNER;
if ((ulStyle & wxVSCROLL) == wxVSCROLL)
ulCreateFlags |= FCF_VERTSCROLL;
if ((ulStyle & wxHSCROLL) == wxHSCROLL)
ulCreateFlags |= FCF_HORZSCROLL;
if (ulStyle & wxMINIMIZE_BOX)
ulCreateFlags |= FCF_MINBUTTON;
if (ulStyle & wxMAXIMIZE_BOX)
ulCreateFlags |= FCF_MAXBUTTON;
if (ulStyle & wxTHICK_FRAME)
ulCreateFlags |= FCF_DLGBORDER;
if (ulStyle & wxSYSTEM_MENU)
ulCreateFlags |= FCF_SYSMENU;
if (ulStyle & wxCAPTION)
ulCreateFlags |= FCF_TASKLIST;
if (ulStyle & wxCLIP_CHILDREN)
{
// Invalid for frame windows under PM
}
if (ulStyle & wxTINY_CAPTION_VERT)
ulCreateFlags |= FCF_TASKLIST;
if (ulStyle & wxTINY_CAPTION_HORIZ)
ulCreateFlags |= FCF_TASKLIST;
if ((ulStyle & wxTHICK_FRAME) == 0)
ulCreateFlags |= FCF_BORDER;
if (ulStyle & wxFRAME_TOOL_WINDOW)
ulExtraFlags = kFrameToolWindow;
if (ulStyle & wxSTAY_ON_TOP)
ulCreateFlags |= FCF_SYSMODAL;
}
if ((ulStyle & wxMINIMIZE) || (ulStyle & wxICONIZE))
ulStyleFlags |= WS_MINIMIZED;
if (ulStyle & wxMAXIMIZE)
ulStyleFlags |= WS_MAXIMIZED;
//
// Clear the visible flag, we always call show
//
ulStyleFlags &= (unsigned long)~WS_VISIBLE;
m_bIconized = FALSE;
//
// Set the frame control block
//
vFrameCtlData.cb = sizeof(vFrameCtlData);
vFrameCtlData.flCreateFlags = ulCreateFlags;
vFrameCtlData.hmodResources = 0L;
vFrameCtlData.idResources = 0;
//
// Create the frame window: We break ranks with other ports now
// and instead of calling down into the base wxWindow class' OS2Create
// we do all our own stuff here. We will set the needed pieces
// of wxWindow manually, here.
//
hFrame = ::WinCreateStdWindow( hParent
,ulStyleFlags // frame-window style
,&ulCreateFlags // window style
,(PSZ)zWclass // class name
,(PSZ)zTitle // window title
,0L // default client style
,NULLHANDLE // resource in executable file
,0 // resource id
,&hClient // receives client window handle
);
if (!hFrame)
{
vError = ::WinGetLastError(vHabmain);
sError = wxPMErrorToStr(vError);
wxLogError("Error creating frame. Error: %s\n", sError);
return FALSE;
}
//
// wxWindow class' m_hWnd set here and needed associations
//
m_hFrame = hFrame;
m_hWnd = hClient;
wxAssociateWinWithHandle(m_hWnd, this);
wxAssociateWinWithHandle(m_hFrame, this);
m_backgroundColour.Set(wxString("GREY"));
LONG lColor = (LONG)m_backgroundColour.GetPixel();
if (!::WinSetPresParam( m_hWnd
,PP_BACKGROUNDCOLOR
,sizeof(LONG)
,(PVOID)&lColor
))
{
vError = ::WinGetLastError(vHabmain);
sError = wxPMErrorToStr(vError);
wxLogError("Error creating frame. Error: %s\n", sError);
return FALSE;
}
//
// Now need to subclass window. Instead of calling the SubClassWin in wxWindow
// we manually subclass here because we don't want to use the main wxWndProc
// by default
//
m_fnOldWndProc = (WXFARPROC) ::WinSubclassWindow(m_hFrame, (PFNWP)wxFrameMainWndProc);
//
// Now size everything. If adding a menu the client will need to be resized.
//
if (pParent)
{
nY = pParent->GetSize().y - (nY + nHeight);
}
else
{
RECTL vRect;
::WinQueryWindowRect(HWND_DESKTOP, &vRect);
nY = vRect.yTop - (nY + nHeight);
}
if (!::WinSetWindowPos( m_hFrame
,HWND_TOP
,nX
,nY
,nWidth
,nHeight
,SWP_SIZE | SWP_MOVE | SWP_ACTIVATE | SWP_ZORDER
))
{
vError = ::WinGetLastError(vHabmain);
sError = wxPMErrorToStr(vError);
wxLogError("Error sizing frame. Error: %s\n", sError);
return FALSE;
}
return TRUE;
} // end of wxFrame::OS2Create
//
// Default activation behaviour - set the focus for the first child
// subwindow found.
@ -1357,6 +873,11 @@ void wxFrame::IconizeChildFrames(
}
} // end of wxFrame::IconizeChildFrames
WXHICON wxFrame::GetDefaultIcon() const
{
return (WXHICON)(wxSTD_FRAME_ICON ? wxSTD_FRAME_ICON
: wxDEFAULT_FRAME_ICON);
}
// ===========================================================================
// message processing
// ===========================================================================

View File

@ -155,7 +155,14 @@ bool wxGauge::Create(
if (m_windowStyle & wxCLIP_SIBLINGS)
lMsStyle |= 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)))
lMsStyle |= WS_CLIPSIBLINGS;
m_hWnd = (WXHWND)::WinCreateWindow( (HWND)GetHwndOf(pParent) // Parent window handle
,WC_ENTRYFIELD // Window class

View File

@ -142,6 +142,15 @@ bool wxListBox::Create(
//
lStyle |= LS_NOADJUSTPOS;
//
// 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)))
lStyle |= WS_CLIPSIBLINGS;
m_hWnd = (WXHWND)::WinCreateWindow( GetWinHwnd(pParent) // Parent
,WC_LISTBOX // Default Listbox class
,"LISTBOX" // Control's name
@ -170,6 +179,29 @@ bool wxListBox::Create(
Append(asChoices[lUi]);
}
SetFont(pParent->GetFont());
//
// Set standard wxWindows colors for Listbox items and highlighting
//
wxColour vColour;
vColour.Set(wxString("WHITE"));
LONG lColor = (LONG)vColour.GetPixel();
::WinSetPresParam( m_hWnd
,PP_HILITEFOREGROUNDCOLOR
,sizeof(LONG)
,(PVOID)&lColor
);
vColour.Set(wxString("NAVY"));
lColor = (LONG)vColour.GetPixel();
::WinSetPresParam( m_hWnd
,PP_HILITEBACKGROUNDCOLOR
,sizeof(LONG)
,(PVOID)&lColor
);
SetSize( nX
,nY
,nWidth

View File

@ -526,6 +526,7 @@ OS2OBJS = \
..\os2\$D\timer.obj \
..\os2\$D\toolbar.obj \
..\os2\$D\tooltip.obj \
..\os2\$D\toplevel.obj \
..\os2\$D\utils.obj \
..\os2\$D\utilsexc.obj \
..\os2\$D\wave.obj \
@ -610,6 +611,7 @@ OS2LIBOBJS2 = \
timer.obj \
toolbar.obj \
tooltip.obj \
toplevel.obj \
utils.obj \
utilsexc.obj \
wave.obj \
@ -958,6 +960,7 @@ $(OS2LIBOBJS2):
copy ..\os2\$D\timer.obj
copy ..\os2\$D\toolbar.obj
copy ..\os2\$D\tooltip.obj
copy ..\os2\$D\toplevel.obj
copy ..\os2\$D\utils.obj
copy ..\os2\$D\utilsexc.obj
copy ..\os2\$D\wave.obj

View File

@ -294,7 +294,11 @@ bool wxRadioBox::Create(
if (!OS2CreateControl( "STATIC"
,SS_GROUPBOX | WS_GROUP
#if RADIOBTN_PARENT_IS_RADIOBOX
,SS_GROUPBOX | WS_GROUP | WS_CLIPCHILDREN
#else
,SS_GROUPBOX | WS_GROUP | WS_CLIPSIBLINGS
#endif
,rPos
,rSize
,rsTitle
@ -341,11 +345,19 @@ bool wxRadioBox::Create(
,NULL
,NULL
);
lColor = (LONG)vColour.GetPixel();
::WinSetPresParam( hWndBtn
,PP_FOREGROUNDCOLOR
,sizeof(LONG)
,(PVOID)&lColor
);
lColor = (LONG)m_backgroundColour.GetPixel();
::WinSetPresParam( hWndBtn
,PP_BACKGROUNDCOLOR
,sizeof(LONG)
,(PVOID)&lColor
);
if (!hWndBtn)
{
return FALSE;
@ -374,11 +386,19 @@ bool wxRadioBox::Create(
,NULL
);
SetFont(*wxSMALL_FONT);
lColor = (LONG)vColour.GetPixel();
::WinSetPresParam( m_hWnd
,PP_FOREGROUNDCOLOR
,sizeof(LONG)
,(PVOID)&lColor
);
lColor = (LONG)m_backgroundColour.GetPixel();
::WinSetPresParam( m_hWnd
,PP_BACKGROUNDCOLOR
,sizeof(LONG)
,(PVOID)&lColor
);
SetSelection(0);
SetSize( rPos.x
,rPos.y

View File

@ -81,6 +81,15 @@ bool wxRadioButton::Create(
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;
m_hWnd = (WXHWND)::WinCreateWindow ( GetHwndOf(pParent)
,WC_BUTTON
,rsLabel.c_str()

View File

@ -200,6 +200,15 @@ bool wxSlider::Create(
{
lMsStyle |= WS_VISIBLE | SS_TEXT | DT_VCENTER;
//
// 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)))
lMsStyle |= WS_CLIPSIBLINGS;
m_hStaticValue = (WXHWND)::WinCreateWindow( (HWND)GetHwndOf(pParent) // Parent window handle
,WC_STATIC // Window class
,(PSZ)NULL // Initial Text
@ -219,6 +228,15 @@ bool wxSlider::Create(
lWstyle = SS_TEXT|DT_LEFT|WS_VISIBLE;
if (m_windowStyle & wxCLIP_SIBLINGS)
lWstyle |= 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)))
lWstyle |= WS_CLIPSIBLINGS;
m_hStaticMin = (WXHWND)::WinCreateWindow( (HWND)GetHwndOf(pParent) // Parent window handle
,WC_STATIC // Window class
,(PSZ)wxBuffer // Initial Text
@ -263,6 +281,15 @@ bool wxSlider::Create(
else
lMsStyle |= SLS_PRIMARYSCALE2;
//
// 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)))
lMsStyle |= WS_CLIPSIBLINGS;
m_nPageSize = ((nMaxValue - nMinValue)/10);
vSlData.usScale1Increments = m_nPageSize;
vSlData.usScale2Increments = m_nPageSize;
@ -311,6 +338,15 @@ bool wxSlider::Create(
lWstyle = SS_TEXT|DT_LEFT|WS_VISIBLE;
if (m_windowStyle & wxCLIP_SIBLINGS)
lMsStyle |= 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)))
lWstyle |= WS_CLIPSIBLINGS;
m_hStaticMax = (WXHWND)::WinCreateWindow( (HWND)GetHwndOf(pParent) // Parent window handle
,WC_STATIC // Window class
,(PSZ)wxBuffer // Initial Text

View File

@ -102,6 +102,15 @@ bool wxSpinButton::Create(
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);

View File

@ -151,6 +151,15 @@ bool wxSpinCtrl::Create(
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);

View File

@ -66,6 +66,15 @@ bool wxStaticText::Create(
lSstyle |= DT_RIGHT;
else
lSstyle |= DT_LEFT;
//
// 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;
m_hWnd = (WXHWND)::WinCreateWindow( (HWND)GetHwndOf(pParent) // Parent window handle
,WC_STATIC // Window class
,(PSZ)rsLabel.c_str() // Initial Text

View File

@ -117,37 +117,11 @@ bool wxTextCtrl::Create(
return FALSE;
wxPoint vPos = rPos; // The OS/2 position
SWP vSwp;
if (pParent )
{
pParent->AddChild(this);
hParent = GetWinHwnd(pParent);
//
// OS2 uses normal coordinates, no bassackwards Windows ones
//
if (pParent->IsKindOf(CLASSINFO(wxGenericScrolledWindow)) ||
pParent->IsKindOf(CLASSINFO(wxScrolledWindow))
)
{
wxWindow* pGrandParent = NULL;
pGrandParent = pParent->GetParent();
if (pGrandParent)
nTempy = pGrandParent->GetSize().y - (vPos.y + rSize.y);
else
nTempy = pParent->GetSize().y - (vPos.y + rSize.y);
}
else
nTempy = pParent->GetSize().y - (vPos.y + rSize.y);
vPos.y = nTempy;
}
else
{
RECTL vRect;
::WinQueryWindowRect(HWND_DESKTOP, &vRect);
hParent = HWND_DESKTOP;
vPos.y = vRect.yTop - (vPos.y + rSize.y);
}
m_windowStyle = lStyle;
@ -180,10 +154,15 @@ bool wxTextCtrl::Create(
if (m_windowStyle & wxTE_PASSWORD) // hidden input
lSstyle |= ES_UNREADABLE;
}
if ( pParent->IsKindOf(CLASSINFO(wxGenericScrolledWindow)) ||
pParent->IsKindOf(CLASSINFO(wxScrolledWindow))
)
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;
if (m_bIsMLE)
{
m_hWnd = (WXHWND)::WinCreateWindow( (HWND)GetHwndOf(pParent) // Parent window handle
@ -244,6 +223,13 @@ bool wxTextCtrl::Create(
SetValue(rsValue);
}
SetupColours();
//
// If X and/or Y are not zero the difference is the compensation value
// for margins for OS/2 controls.
//
::WinQueryWindowPos(m_hWnd, &vSwp);
SetXComp(vSwp.x);
SetYComp(vSwp.y);
SetSize( vPos.x
,vPos.y
,rSize.x

View File

@ -369,7 +369,6 @@ bool wxWindowOS2::Create(
)
{
HWND hParent = NULLHANDLE;
wxPoint vPos = rPos; // The OS/2 position
ULONG ulCreateFlags = 0;
WXDWORD dwExStyle = 0;
@ -442,23 +441,17 @@ bool wxWindowOS2::Create(
}
//
// Generic OS/2 Windows are created with no owner, no Z Order, no Control data,
// and no presentation parameters
// Generic OS/2 Windows have no Control Data but other classes
// that call OS2Create may have some.
//
OS2Create( hParent
,(PSZ)wxCanvasClassName
OS2Create( (PSZ)wxCanvasClassName
,rName.c_str()
,ulCreateFlags
,vPos.x
,vPos.y
,WidthDefault(rSize.x)
,HeightDefault(rSize.y)
,NULLHANDLE
,NULLHANDLE
,m_windowId
,NULL
,NULL
,rPos
,rSize
,NULL // Control Data
,dwExStyle
,TRUE // Child
);
return(TRUE);
@ -1084,6 +1077,19 @@ void wxWindowOS2::UnsubclassWin()
}
} // end of wxWindowOS2::UnsubclassWin
bool wxCheckWindowWndProc(
WXHWND hWnd
, WXFARPROC fnWndProc
)
{
static char zBuffer[512];
CLASSINFO vCls;
::WinQueryClassName((HWND)hWnd, (LONG)512, (PCH)zBuffer);
::WinQueryClassInfo(wxGetInstance(), (PSZ)zBuffer, &vCls);
return(fnWndProc == (WXFARPROC)vCls.pfnWindowProc);
} // end of WinGuiBase_CheckWindowWndProc
//
// Make a Windows extended style from the given wxWindows window style
//
@ -1416,9 +1422,17 @@ void wxWindowOS2::DoGetSize(
, int* pHeight
) const
{
HWND hWnd = GetHwnd();
HWND hWnd;
RECTL vRect;
if (IsKindOf(CLASSINFO(wxFrame)))
{
wxFrame* pFrame = wxDynamicCast(this, wxFrame);
hWnd = pFrame->GetFrame();
}
else
hWnd = GetHwnd();
::WinQueryWindowRect(hWnd, &vRect);
if (pWidth)
@ -1514,18 +1528,9 @@ void wxWindowOS2::DoGetClientSize(
) const
{
HWND hWnd = GetHwnd();
HWND hWndClient;
RECTL vRect;
if (IsKindOf(CLASSINFO(wxFrame)))
hWndClient = ::WinWindowFromID(GetHwnd(), FID_CLIENT);
else
hWndClient = NULLHANDLE;
if( hWndClient == NULLHANDLE)
::WinQueryWindowRect(GetHwnd(), &vRect);
else
::WinQueryWindowRect(hWndClient, &vRect);
::WinQueryWindowRect(hWnd, &vRect);
if (pWidth)
*pWidth = vRect.xRight;
if (pHeight)
@ -1596,8 +1601,29 @@ void wxWindowOS2::DoSetSize(
GetPosition(&nCurrentX, &nCurrentY);
GetSize(&nCurrentWidth, &nCurrentHeight);
//
// ... and don't do anything (avoiding flicker) if it's already ok
if (nX == nCurrentX && nY == nCurrentY &&
//
//
// Must convert Y coords to test for equality under OS/2
//
int nY2 = nY;
wxWindow* pParent = (wxWindow*)GetParent();
if (pParent)
{
int nOS2Height = GetOS2ParentHeight(pParent);
nY2 = nOS2Height - (nY2 + nHeight);
}
else
{
RECTL vRect;
::WinQueryWindowRect(HWND_DESKTOP, &vRect);
nY2 = vRect.yTop - (nY2 + nHeight);
}
if (nX == nCurrentX && nY2 == nCurrentY &&
nWidth == nCurrentWidth && nHeight == nCurrentHeight)
{
return;
@ -2860,148 +2886,134 @@ bool wxWindowOS2::OS2GetCreateWindowCoords(
} // end of wxWindowOS2::OS2GetCreateWindowCoords
bool wxWindowOS2::OS2Create(
WXHWND hParent
, PSZ zClass
, const wxChar* zTitle
PSZ zClass
, const char* zTitle
, WXDWORD dwStyle
, long lX
, long lY
, long lWidth
, long lHeight
, WXHWND hOwner
, WXHWND WXUNUSED(hZOrder)
, unsigned long ulId
, const wxPoint& rPos
, const wxSize& rSize
, void* pCtlData
, void* pPresParams
, WXDWORD dwExStyle
, bool bIsChild
)
{
ERRORID vError;
wxString sError;
long lX1 = 0L;
long lY1 = 0L;
long lWidth1 = 20L;
long lHeight1 = 20L;
int nControlId = 0;
int nNeedsubclass = 0;
PCSZ pszClass = zClass;
int nX = 0L;
int nY = 0L;
int nWidth = 0L;
int nHeight = 0L;
wxWindow* pParent = GetParent();
HWND hWnd = NULLHANDLE;
HWND hParent;
long lControlId = 0L;
wxWindowCreationHook vHook(this);
wxString sClassName((wxChar*)zClass);
//
// Find parent's size, if it exists, to set up a possible default
// panel size the size of the parent window
//
lX1 = lX;
lY1 = lY;
if (lWidth > -1L)
lWidth1 = lWidth;
if (lHeight > -1L)
lHeight1 = lHeight;
OS2GetCreateWindowCoords( rPos
,rSize
,nX
,nY
,nWidth
,nHeight
);
wxWndHook = this;
//
// check to see if the new window is a standard control
//
if ((ULONG)zClass == (ULONG)WC_BUTTON ||
(ULONG)zClass == (ULONG)WC_COMBOBOX ||
(ULONG)zClass == (ULONG)WC_CONTAINER ||
(ULONG)zClass == (ULONG)WC_ENTRYFIELD ||
(ULONG)zClass == (ULONG)WC_FRAME ||
(ULONG)zClass == (ULONG)WC_LISTBOX ||
(ULONG)zClass == (ULONG)WC_MENU ||
(ULONG)zClass == (ULONG)WC_NOTEBOOK ||
(ULONG)zClass == (ULONG)WC_SCROLLBAR ||
(ULONG)zClass == (ULONG)WC_SPINBUTTON ||
(ULONG)zClass == (ULONG)WC_STATIC ||
(ULONG)zClass == (ULONG)WC_TITLEBAR ||
(ULONG)zClass == (ULONG)WC_VALUESET
)
{
nControlId = ulId;
}
if (GetWindowStyleFlag() & wxPOPUP_WINDOW)
hParent = HWND_DESKTOP;
else
{
// no standard controls
if(wxString (wxT("wxFrameClass")) == wxString(zClass) )
if ((bIsChild || HasFlag(wxFRAME_TOOL_WINDOW)) && pParent )
{
pszClass = WC_FRAME;
nNeedsubclass = 1;
//
// This is either a normal child window or a top level window with
// wxFRAME_TOOL_WINDOW style (see below)
//
hParent = GetHwndOf(pParent);
}
else
{
nControlId = ulId;
if(nControlId < 0)
nControlId = FID_CLIENT;
//
// This is either a window for which no parent was specified (not
// much we can do then) or a frame without wxFRAME_TOOL_WINDOW
// style: we should use NULL parent HWND for it or it would be
// always on top of its parent which is not what we usually want
// (in fact, we only want it for frames with the special
// wxFRAME_TOOL_WINDOW as above)
//
hParent = NULL;
}
}
HWND parent;
if ( GetWindowStyleFlag() & wxPOPUP_WINDOW )
{
// popup windows should have desktop as parent because they shouldn't
// be limited to the parents client area as child windows usually are
parent = HWND_DESKTOP;
}
else if ( hParent )
{
parent = hParent;
}
else
{
// top level window
parent = NULL;
}
//
// We will either have a registered class via string name or a standard PM Class via a long
//
m_hWnd = (WXHWND)::WinCreateWindow(parent, zClass,
(PSZ)zTitle ? zTitle : wxT(""),
dwStyle, lX1, lY1, lWidth, lHeight,
hOwner, HWND_TOP, (ULONG)nControlId,
pCtlData, pPresParams);
if (!m_hWnd)
if (bIsChild)
{
vError = ::WinGetLastError(vHabmain);
sError = wxPMErrorToStr(vError);
wxLogError("Can't create window of class %s!. Error: %s\n", zClass, sError);
return FALSE;
}
m_dwExStyle = dwExStyle;
::WinSetWindowULong(m_hWnd, QWL_USER, (ULONG) this);
wxWndHook = NULL;
#ifdef __WXDEBUG__
wxNode* pNode = wxWinHandleList->Member(this);
if (pNode)
{
HWND hWnd = (HWND)pNode->GetKeyInteger();
if (hWnd != (HWND)m_hWnd)
lControlId = GetId();
if (GetWindowStyleFlag() & wxCLIP_SIBLINGS)
{
wxLogError("A second HWND association is being added for the same window!");
dwStyle |= WS_CLIPSIBLINGS;
}
}
#endif
wxAssociateWinWithHandle((HWND)m_hWnd
,this
);
//
// Now need to subclass window.
// For each class "Foo" we have we also have "FooNR" ("no repaint") class
// which is the same but without CS_[HV]REDRAW class styles so using it
// ensures that the window is not fully repainted on each resize
//
if(!nNeedsubclass)
if (GetWindowStyleFlag() & wxNO_FULL_REPAINT_ON_RESIZE)
{
wxAssociateWinWithHandle((HWND)m_hWnd,this);
sClassName += wxT("NR");
}
//
// If the window being created is a Frame's Statusbar we need to use
// the actual Frame's size, not its client
//
if (pParent)
{
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);
}
else
nY = pParent->GetSize().y - (nY + nHeight);
}
else
{
SubclassWin(GetHWND());
RECTL vRect;
::WinQueryWindowRect(HWND_DESKTOP, &vRect);
nY = vRect.yTop - (nY + nHeight);
}
m_hWnd = (WXHWND)::WinCreateWindow( (HWND)hParent
,(PSZ)sClassName.c_str()
,(PSZ)zTitle ? zTitle : ""
,(ULONG)dwStyle
,(LONG)0L
,(LONG)0L
,(LONG)0L
,(LONG)0L
,NULLHANDLE
,HWND_TOP
,(ULONG)lControlId
,pCtlData
,NULL
);
if (!m_hWnd)
{
vError = ::WinGetLastError(wxGetInstance());
sError = wxPMErrorToStr(vError);
return FALSE;
}
SubclassWin(m_hWnd);
SetFont(wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT));
SetSize( nX
,nY
,nWidth
,nHeight
);
return TRUE;
} // end of wxWindowOS2::OS2Create
} // end of WinGuiBase_Window::OS2Create
// ===========================================================================
// OS2 PM message handlers

View File

@ -4,7 +4,7 @@ DATA MULTIPLE NONSHARED READWRITE LOADONCALL
CODE LOADONCALL
EXPORTS
;From library: F:\DEV\WX2\WXWINDOWS\LIB\WX.lib
;From library: F:\DEV\WX2\WXWINDOWS\LIB\wx.lib
;From object file: dummy.cpp
;PUBDEFs (Symbols available from object file):
wxDummyChar
@ -888,8 +888,29 @@ EXPORTS
CreateButtonSizer__12wxDialogBaseFl
;wxDialogBase::Init()
Init__12wxDialogBaseFv
;wxDialogBase::GetDefaultItem() const
GetDefaultItem__12wxDialogBaseCFv
;wxDialogBase::SetDefaultItem(wxWindow*)
SetDefaultItem__12wxDialogBaseFP8wxWindow
;wxDialogBase::CreateTextSizer(const wxString&)
CreateTextSizer__12wxDialogBaseFRC8wxString
;wxDialogBase::OnFocus(wxFocusEvent&)
OnFocus__12wxDialogBaseFR12wxFocusEvent
;wxDialogBase::sm_eventTableEntries
sm_eventTableEntries__12wxDialogBase
;wxDialogBase::SetFocus()
SetFocus__12wxDialogBaseFv
;wxDialogBase::OnChildFocus(wxChildFocusEvent&)
OnChildFocus__12wxDialogBaseFR17wxChildFocusEvent
__vft12wxDialogBase8wxObject
;wxDialogBase::sm_eventTable
sm_eventTable__12wxDialogBase
;wxDialogBase::OnNavigationKey(wxNavigationKeyEvent&)
OnNavigationKey__12wxDialogBaseFR20wxNavigationKeyEvent
;wxDialogBase::RemoveChild(wxWindowBase*)
RemoveChild__12wxDialogBaseFP12wxWindowBase
;wxDialogBase::GetEventTable() const
GetEventTable__12wxDialogBaseCFv
;From object file: ..\common\dobjcmn.cpp
;PUBDEFs (Symbols available from object file):
;wxDataObjectComposite::GetDataSize(const wxDataFormat&) const
@ -2018,6 +2039,8 @@ EXPORTS
;PUBDEFs (Symbols available from object file):
;wxFileName::Assign(const wxString&,wxPathFormat)
Assign__10wxFileNameFRC8wxString12wxPathFormat
;wxFileName::SetPath(const wxString&,wxPathFormat)
SetPath__10wxFileNameFRC8wxString12wxPathFormat
;wxFileName::Normalize(wxPathNormalize,const wxString&,wxPathFormat)
Normalize__10wxFileNameF15wxPathNormalizeRC8wxString12wxPathFormat
;wxFileName::IsWild(wxPathFormat)
@ -2166,16 +2189,26 @@ EXPORTS
OpenFile__12wxFileSystemFRC8wxString
;From object file: ..\common\fontcmn.cpp
;PUBDEFs (Symbols available from object file):
;wxNativeFontInfo::SetUnderlined(unsigned long)
SetUnderlined__16wxNativeFontInfoFUl
;wxFontBase::GetNativeFontInfo() const
GetNativeFontInfo__10wxFontBaseCFv
;wxNativeFontInfo::GetUnderlined() const
GetUnderlined__16wxNativeFontInfoCFv
;wxFontBase::New(const wxNativeFontInfo&)
New__10wxFontBaseFRC16wxNativeFontInfo
;wxFontBase::New(const wxString&)
New__10wxFontBaseFRC8wxString
;wxNativeFontInfo::FromString(const wxString&)
FromString__16wxNativeFontInfoFRC8wxString
;wxFont::operator=(const wxFont&)
__as__6wxFontFRC6wxFont
;wxNativeFontInfo::SetFamily(wxFontFamily)
SetFamily__16wxNativeFontInfoF12wxFontFamily
;wxFontBase::GetNativeFontInfoDesc() const
GetNativeFontInfoDesc__10wxFontBaseCFv
;wxNativeFontInfo::ToUserString() const
ToUserString__16wxNativeFontInfoCFv
;wxFontBase::GetWeightString() const
GetWeightString__10wxFontBaseCFv
;wxFontBase::GetStyleString() const
@ -2186,19 +2219,47 @@ EXPORTS
SetNativeFontInfo__10wxFontBaseFRC16wxNativeFontInfo
;wxFontBase::SetNativeFontInfoUserDesc(const wxString&)
SetNativeFontInfoUserDesc__10wxFontBaseFRC8wxString
;wxNativeFontInfo::SetStyle(wxFontStyle)
SetStyle__16wxNativeFontInfoF11wxFontStyle
;wxFontBase::ms_encodingDefault
ms_encodingDefault__10wxFontBase
;wxNativeFontInfo::GetPointSize() const
GetPointSize__16wxNativeFontInfoCFv
;wxNativeFontInfo::GetStyle() const
GetStyle__16wxNativeFontInfoCFv
;wxNativeFontInfo::GetFamily() const
GetFamily__16wxNativeFontInfoCFv
;wxNativeFontInfo::GetFaceName() const
GetFaceName__16wxNativeFontInfoCFv
;wxNativeFontInfo::SetEncoding(wxFontEncoding)
SetEncoding__16wxNativeFontInfoF14wxFontEncoding
;wxFontBase::SetNativeFontInfo(const wxString&)
SetNativeFontInfo__10wxFontBaseFRC8wxString
;wxFontBase::operator==(const wxFont&) const
__eq__10wxFontBaseCFRC6wxFont
;wxNativeFontInfo::SetWeight(wxFontWeight)
SetWeight__16wxNativeFontInfoF12wxFontWeight
__vft10wxFontBase8wxObject
;wxFontBase::operator!=(const wxFont&) const
__ne__10wxFontBaseCFRC6wxFont
;wxFontBase::operator==(const wxFont&) const
__eq__10wxFontBaseCFRC6wxFont
;wxNativeFontInfo::SetPointSize(int)
SetPointSize__16wxNativeFontInfoFi
;wxNativeFontInfo::ToString() const
ToString__16wxNativeFontInfoCFv
;wxFontBase::GetFamilyString() const
GetFamilyString__10wxFontBaseCFv
;wxNativeFontInfo::GetEncoding() const
GetEncoding__16wxNativeFontInfoCFv
;wxNativeFontInfo::Init()
Init__16wxNativeFontInfoFv
;wxNativeFontInfo::GetWeight() const
GetWeight__16wxNativeFontInfoCFv
;wxFontBase::New(int,int,int,int,unsigned long,const wxString&,wxFontEncoding)
New__10wxFontBaseFiN31UlRC8wxString14wxFontEncoding
;wxNativeFontInfo::SetFaceName(wxString)
SetFaceName__16wxNativeFontInfoF8wxString
;wxNativeFontInfo::FromUserString(const wxString&)
FromUserString__16wxNativeFontInfoFRC8wxString
;From object file: ..\common\fontmap.cpp
;PUBDEFs (Symbols available from object file):
;wxFontMapper::GetConfig()
@ -5086,6 +5147,8 @@ EXPORTS
Upper__8wxStringCFv
;wxString::IsNumber() const
IsNumber__8wxStringCFv
;wxArrayString::GetStringArray() const
GetStringArray__13wxArrayStringCFv
;wxArrayString::Empty()
Empty__13wxArrayStringFv
;wxArrayString::Copy(const wxArrayString&)
@ -5457,12 +5520,14 @@ EXPORTS
SendIconizeEvent__20wxTopLevelWindowBaseFUl
;wxTopLevelWindowBase::sm_eventTable
sm_eventTable__20wxTopLevelWindowBase
;wxConstructorForwxTopLevelWindow()
wxConstructorForwxTopLevelWindow__Fv
;wxTopLevelWindowBase::DoClientToScreen(int*,int*) const
DoClientToScreen__20wxTopLevelWindowBaseCFPiT1
;wxTopLevelWindowBase::GetEventTable() const
GetEventTable__20wxTopLevelWindowBaseCFv
;wxTopLevelWindowBase::wxTopLevelWindowBase()
__ct__20wxTopLevelWindowBaseFv
;wxTopLevelWindowBase::GetEventTable() const
GetEventTable__20wxTopLevelWindowBaseCFv
;wxTopLevelWindowBase::OnSize(wxSizeEvent&)
OnSize__20wxTopLevelWindowBaseFR11wxSizeEvent
__vft20wxTopLevelWindowBase8wxObject
@ -5474,6 +5539,8 @@ EXPORTS
DoScreenToClient__20wxTopLevelWindowBaseCFPiT1
;wxTopLevelWindowBase::Destroy()
Destroy__20wxTopLevelWindowBaseFv
;wxTopLevelWindow::sm_classwxTopLevelWindow
sm_classwxTopLevelWindow__16wxTopLevelWindow
;From object file: ..\common\treebase.cpp
;PUBDEFs (Symbols available from object file):
wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT
@ -11132,8 +11199,6 @@ EXPORTS
;wxCheckBox::SetValue(unsigned long)
SetValue__10wxCheckBoxFUl
__vft16wxBitmapCheckBox8wxObject
;wxCheckBox::OnCtlColor(unsigned long,unsigned long,unsigned int,unsigned int,void*,void*)
OnCtlColor__10wxCheckBoxFUlT1UiT3PvT5
;wxCheckBox::DoGetBestSize() const
DoGetBestSize__10wxCheckBoxCFv
;wxCheckBox::GetValue() const
@ -11142,8 +11207,6 @@ EXPORTS
Create__16wxBitmapCheckBoxFP8wxWindowiPC8wxBitmapRC7wxPointRC6wxSizelRC11wxValidatorRC8wxString
;wxCheckBox::SetLabel(const wxString&)
SetLabel__10wxCheckBoxFRC8wxString
;wxCheckBox::Command(wxCommandEvent&)
Command__10wxCheckBoxFR14wxCommandEvent
;wxBitmapCheckBox::sm_classwxBitmapCheckBox
sm_classwxBitmapCheckBox__16wxBitmapCheckBox
;From object file: ..\os2\checklst.cpp
@ -11815,10 +11878,6 @@ EXPORTS
SetModal__8wxDialogFUl
;wxDialog::OnCancel(wxCommandEvent&)
OnCancel__8wxDialogFR14wxCommandEvent
;wxDialog::DoGetPosition(int*,int*) const
DoGetPosition__8wxDialogCFPiT1
;wxDialog::IsIconized() const
IsIconized__8wxDialogCFv
;wxDialog::IsModal() const
IsModal__8wxDialogCFv
;wxDialog::Create(wxWindow*,int,const wxString&,const wxPoint&,const wxSize&,long,const wxString&)
@ -11832,8 +11891,6 @@ EXPORTS
OnOK__8wxDialogFR14wxCommandEvent
;wxDialog::OnCloseWindow(wxCloseEvent&)
OnCloseWindow__8wxDialogFR12wxCloseEvent
;wxDialog::DoSetClientSize(int,int)
DoSetClientSize__8wxDialogFiT1
;wxDialog::Init()
Init__8wxDialogFv
;wxDialog::ShowModal()
@ -11847,10 +11904,6 @@ EXPORTS
OnSysColourChanged__8wxDialogFR23wxSysColourChangedEvent
;wxDialog::DoShowModal()
DoShowModal__8wxDialogFv
;wxDialog::Destroy()
Destroy__8wxDialogFv
;wxDialog::Iconize(unsigned long)
Iconize__8wxDialogFUl
;wxDialog::Show(unsigned long)
Show__8wxDialogFUl
;wxDialog::OnApply(wxCommandEvent&)
@ -11865,7 +11918,6 @@ EXPORTS
OS2WindowProc__8wxDialogFUiPvT2
;wxDialog::GetEventTable() const
GetEventTable__8wxDialogCFv
wxModelessWindows
;wxDialog::sm_eventTable
sm_eventTable__8wxDialog
;From object file: ..\os2\dir.cpp
@ -12072,12 +12124,10 @@ EXPORTS
FromString__20wxNativeEncodingInfoFRC8wxString
;From object file: ..\os2\frame.cpp
;PUBDEFs (Symbols available from object file):
;wxFrame::Show(unsigned long)
Show__7wxFrameFUl
;wxFrame::Iconize(unsigned long)
Iconize__7wxFrameFUl
;wxFrame::HandleMenuSelect(unsigned short,unsigned short,unsigned long)
HandleMenuSelect__7wxFrameFUsT1Ul
;wxFrame::SendSizeEvent()
SendSizeEvent__7wxFrameFv
;wxFrame::OS2TranslateMessage(void**)
OS2TranslateMessage__7wxFrameFPPv
;wxFrame::HandlePaint()
@ -12093,14 +12143,8 @@ EXPORTS
HandleSize__7wxFrameFiT1Ui
;wxConstructorForwxFrame()
wxConstructorForwxFrame__Fv
;wxFrame::SetIcon(const wxIcon&)
SetIcon__7wxFrameFRC6wxIcon
;wxFrame::Restore()
Restore__7wxFrameFv
;wxFrame::IsMaximized() const
IsMaximized__7wxFrameCFv
;wxFrame::IsIconized() const
IsIconized__7wxFrameCFv
;wxFrame::Raise()
Raise__7wxFrameFv
;wxFrame::GetClientAreaOrigin() const
GetClientAreaOrigin__7wxFrameCFv
;wxFrame::AttachMenuBar(wxMenuBar*)
@ -12111,28 +12155,20 @@ EXPORTS
OnSysColourChanged__7wxFrameFR23wxSysColourChangedEvent
;wxFrame::ShowFullScreen(unsigned long,long)
ShowFullScreen__7wxFrameFUll
;wxFrame::DoShowWindow(int)
DoShowWindow__7wxFrameFi
;wxFrame::m_bUseNativeStatusBar
m_bUseNativeStatusBar__7wxFrame
;wxFrame::sm_eventTable
sm_eventTable__7wxFrame
;wxFrame::sm_eventTableEntries
sm_eventTableEntries__7wxFrame
;wxFrame::sm_classwxFrame
sm_classwxFrame__7wxFrame
;wxFrame::m_bUseNativeStatusBar
m_bUseNativeStatusBar__7wxFrame
;wxFrame::~wxFrame()
__dt__7wxFrameFv
;wxFrame::GetClient()
GetClient__7wxFrameFv
;wxFrame::OS2Create(int,wxWindow*,const char*,wxWindow*,const char*,int,int,int,int,long)
OS2Create__7wxFrameFiP8wxWindowPCcT2T3N41l
;wxFrame::HandleCommand(unsigned short,unsigned short,unsigned long)
HandleCommand__7wxFrameFUsT1Ul
;wxFrame::DoGetSize(int*,int*) const
DoGetSize__7wxFrameCFPiT1
;wxFrame::DoGetPosition(int*,int*) const
DoGetPosition__7wxFrameCFPiT1
;wxFrame::PositionStatusBar()
PositionStatusBar__7wxFrameFv
;wxFrame::PositionToolBar()
@ -12141,14 +12177,14 @@ EXPORTS
OS2WindowProc__7wxFrameFUiPvT2
;wxFrame::InternalSetMenuBar()
InternalSetMenuBar__7wxFrameFv
;wxFrame::GetDefaultIcon() const
GetDefaultIcon__7wxFrameCFv
;wxFrame::CreateToolBar(long,int,const wxString&)
CreateToolBar__7wxFrameFliRC8wxString
;wxFrame::Maximize(unsigned long)
Maximize__7wxFrameFUl
;wxFrame::SetClient(unsigned long)
SetClient__7wxFrameFUl
;wxFrame::IconizeChildFrames(unsigned long)
IconizeChildFrames__7wxFrameFUl
;wxFrame::SetClient(unsigned long)
SetClient__7wxFrameFUl
;wxFrame::DoGetClientSize(int*,int*) const
DoGetClientSize__7wxFrameCFPiT1
;wxFrame::Init()
@ -12159,8 +12195,6 @@ EXPORTS
GetEventTable__7wxFrameCFv
;wxFrame::DetachMenuBar()
DetachMenuBar__7wxFrameFv
;wxFrame::AlterChildPos()
AlterChildPos__7wxFrameFv
wxFrameMainWndProc
wxFrameWndProc
;wxFrame::SetClient(wxWindow*)
@ -14036,6 +14070,49 @@ EXPORTS
Remove__9wxToolTipFv
;wxToolTip::hwndTT
hwndTT__9wxToolTip
;From object file: ..\os2\toplevel.cpp
;PUBDEFs (Symbols available from object file):
__vft19wxTopLevelWindowOS28wxObject
;wxTopLevelWindowOS2::CreateFrame(const wxString&,const wxPoint&,const wxSize&)
CreateFrame__19wxTopLevelWindowOS2FRC8wxStringRC7wxPointRC6wxSize
;wxTopLevelWindowOS2::~wxTopLevelWindowOS2()
__dt__19wxTopLevelWindowOS2Fv
;wxTopLevelWindowOS2::ShowFullScreen(unsigned long,long)
ShowFullScreen__19wxTopLevelWindowOS2FUll
;wxTopLevelWindowOS2::CreateDialog(unsigned long,const wxString&,const wxPoint&,const wxSize&)
CreateDialog__19wxTopLevelWindowOS2FUlRC8wxStringRC7wxPointRC6wxSize
;wxTopLevelWindowOS2::DoShowWindow(int)
DoShowWindow__19wxTopLevelWindowOS2Fi
;wxTopLevelWindowOS2::Init()
Init__19wxTopLevelWindowOS2Fv
;wxTopLevelWindowOS2::OS2GetCreateWindowFlags(long*) const
OS2GetCreateWindowFlags__19wxTopLevelWindowOS2CFPl
;wxTopLevelWindowOS2::Iconize(unsigned long)
Iconize__19wxTopLevelWindowOS2FUl
;wxTopLevelWindowOS2::DoSetClientSize(int,int)
DoSetClientSize__19wxTopLevelWindowOS2FiT1
;wxTopLevelWindowOS2::AlterChildPos()
AlterChildPos__19wxTopLevelWindowOS2Fv
;wxTopLevelWindowOS2::SetIcon(const wxIcon&)
SetIcon__19wxTopLevelWindowOS2FRC6wxIcon
;wxTopLevelWindowOS2::Restore()
Restore__19wxTopLevelWindowOS2Fv
;wxTopLevelWindowOS2::IsMaximized() const
IsMaximized__19wxTopLevelWindowOS2CFv
;wxTopLevelWindowOS2::Maximize(unsigned long)
Maximize__19wxTopLevelWindowOS2FUl
;wxTopLevelWindowOS2::EnableCloseButton(unsigned long)
EnableCloseButton__19wxTopLevelWindowOS2FUl
;wxTopLevelWindowOS2::DoGetClientSize(int*,int*) const
DoGetClientSize__19wxTopLevelWindowOS2CFPiT1
;wxTopLevelWindowOS2::Create(wxWindow*,int,const wxString&,const wxPoint&,const wxSize&,long,const wxString&)
Create__19wxTopLevelWindowOS2FP8wxWindowiRC8wxStringRC7wxPointRC6wxSizelT3
;wxTopLevelWindowOS2::Show(unsigned long)
Show__19wxTopLevelWindowOS2FUl
;wxTopLevelWindowOS2::IsIconized() const
IsIconized__19wxTopLevelWindowOS2CFv
wxDlgProc
wxModelessWindows
;From object file: ..\os2\utils.cpp
;PUBDEFs (Symbols available from object file):
gs_wxBusyCursorOld
@ -14178,6 +14255,10 @@ EXPORTS
HandleMouseMove__8wxWindowFiT1Ui
;wxWindow::Raise()
Raise__8wxWindowFv
;wxWindowCreationHook::~wxWindowCreationHook()
__dt__20wxWindowCreationHookFv
;wxWindow::Update()
Update__8wxWindowFv
;wxWindow::UnsubclassWin()
UnsubclassWin__8wxWindowFv
;wxWindow::Lower()
@ -14186,6 +14267,8 @@ EXPORTS
HandleMaximize__8wxWindowFv
;wxWindow::HandleDestroy()
HandleDestroy__8wxWindowFv
;wxWindow::Freeze()
Freeze__8wxWindowFv
;wxWindow::DoPopupMenu(wxMenu*,int,int)
DoPopupMenu__8wxWindowFP6wxMenuiT2
;wxWindow::UnpackCommand(void*,void*,unsigned short*,unsigned long*,unsigned short*)
@ -14196,6 +14279,8 @@ EXPORTS
sm_eventTable__8wxWindow
;wxWindow::sm_classwxWindow
sm_classwxWindow__8wxWindow
;wxWindowCreationHook::wxWindowCreationHook(wxWindow*)
__ct__20wxWindowCreationHookFP8wxWindow
;wxWindow::SetScrollPos(int,int,unsigned long)
SetScrollPos__8wxWindowFiT1Ul
;wxCharCodeWXToOS2(int,unsigned long*)
@ -14228,6 +14313,8 @@ EXPORTS
OS2OnMeasureItem__8wxWindowFiPPv
;wxWindow::OS2DestroyWindow()
OS2DestroyWindow__8wxWindowFv
;wxWindow::IsMouseInWindow() const
IsMouseInWindow__8wxWindowCFv
;wxWindow::HandleKeyUp(unsigned long,void*)
HandleKeyUp__8wxWindowFUlPv
;wxWindow::HandleKeyDown(unsigned short,void*)
@ -14241,6 +14328,8 @@ EXPORTS
wxWndHook
;wxWindow::Reparent(wxWindow*)
Reparent__8wxWindowFP8wxWindow
;wxWindow::OS2GetCreateWindowCoords(const wxPoint&,const wxSize&,int&,int&,int&,int&) const
OS2GetCreateWindowCoords__8wxWindowCFRC7wxPointRC6wxSizeRiN33
;wxWindow::Enable(unsigned long)
Enable__8wxWindowFUl
wxWinHandleList
@ -14293,6 +14382,8 @@ EXPORTS
;wxAssociateWinWithHandle(unsigned long,wxWindow*)
wxAssociateWinWithHandle__FUlP8wxWindow
s_currentMsg
;wxWindow::OS2Create(char*,const char*,unsigned long,const wxPoint&,const wxSize&,void*,unsigned long,unsigned long)
OS2Create__8wxWindowFPcPCcUlRC7wxPointRC6wxSizePvN23
;wxWindow::GetOS2ParentHeight(wxWindow*)
GetOS2ParentHeight__8wxWindowFP8wxWindow
;wxWindow::Refresh(unsigned long,const wxRect*)
@ -14340,6 +14431,10 @@ EXPORTS
__dt__8wxWindowFv
;wxGetActiveWindow()
wxGetActiveWindow__Fv
;wxCheckWindowWndProc(unsigned long,void*(*)(unsigned long,unsigned long,void*,void*))
wxCheckWindowWndProc__FUlPFUlT1PvT3_Pv
;wxWindow::Thaw()
Thaw__8wxWindowFv
;wxWindow::OS2WindowProc(unsigned int,void*,void*)
OS2WindowProc__8wxWindowFUiPvT2
;wxWindow::OS2TranslateMessage(void**)
@ -14374,8 +14469,6 @@ EXPORTS
HandleActivate__8wxWindowFiUl
;wxWindow::FindItemByHWND(unsigned long,unsigned long) const
FindItemByHWND__8wxWindowCFUlT1
;wxWindow::OS2Create(unsigned long,char*,const char*,unsigned long,long,long,long,long,unsigned long,unsigned long,unsigned long,void*,void*,unsigned long)
OS2Create__8wxWindowFUlPcPCcT1lN35N31PvT12_T1
;wxWindow::HandleChar(unsigned long,void*,unsigned long)
HandleChar__8wxWindowFUlPvT1
;wxWindow::DoMoveWindow(int,int,int,int)