More framework updates

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6403 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
David Webster
2000-03-02 22:13:38 +00:00
parent 294f6bcbdb
commit 914589c26c
8 changed files with 259 additions and 157 deletions

View File

@@ -196,6 +196,9 @@ WXDLLEXPORT extern wxString wxGetWindowClass(WXHWND hWnd);
// is, for mainly historical reasons, signed)
WXDLLEXPORT extern WXWORD wxGetWindowId(WXHWND hWnd);
// Convert a PM Error code to a string
WXDLLEXPORT extern wxString wxPMErrorToStr(ERRORID vError);
// Does this window style specify any border?
inline bool wxStyleHasBorder(long style)
{

View File

@@ -119,6 +119,16 @@ bool wxApp::Initialize(
HAB vHab
)
{
//
// OS2 has to have an anchorblock
//
vHab = WinInitialize(0);
if (!vHab)
return FALSE;
else
vHabmain = vHab;
// Some people may wish to use this, but
// probably it shouldn't be here by default.
#ifdef __WXDEBUG__
@@ -188,100 +198,110 @@ bool wxApp::RegisterWindowClasses(
)
{
APIRET rc;
ERRORID vError = 0L;
wxString sError;
if ((rc = ::WinRegisterClass( vHab
,wxFrameClassName
,(PFNWP)wxWndProc
,CS_SIZEREDRAW | CS_SYNCPAINT | CS_HITTEST | CS_CLIPCHILDREN | CS_FRAME
,CS_SIZEREDRAW | CS_SYNCPAINT | CS_FRAME
,0
)) != 0)
{
wxLogLastError("RegisterClass(frame)");
vError = ::WinGetLastError(vHab);
sError = wxPMErrorToStr(vError);
wxLogLastError(sError);
return FALSE;
}
if (!::WinRegisterClass( vHab
if ((rc = ::WinRegisterClass( vHab
,wxFrameClassNameNoRedraw
,(PFNWP)wxWndProc
,CS_HITTEST | CS_CLIPCHILDREN | CS_FRAME
,CS_FRAME
,0
))
)) != 0)
{
wxLogLastError("RegisterClass(no redraw frame)");
vError = ::WinGetLastError(vHab);
sError = wxPMErrorToStr(vError);
wxLogLastError(sError);
return FALSE;
}
if (!::WinRegisterClass( vHab
if ((rc = ::WinRegisterClass( vHab
,wxMDIFrameClassName
,(PFNWP)wxWndProc
,CS_SIZEREDRAW | CS_SYNCPAINT | CS_HITTEST | CS_CLIPCHILDREN | CS_FRAME
,CS_SIZEREDRAW | CS_SYNCPAINT | CS_FRAME
,0
))
)) != 0)
{
wxLogLastError("RegisterClass(MDI parent)");
vError = ::WinGetLastError(vHab);
sError = wxPMErrorToStr(vError);
wxLogLastError(sError);
return FALSE;
}
if (!::WinRegisterClass( vHab
if ((rc = ::WinRegisterClass( vHab
,wxMDIFrameClassNameNoRedraw
,(PFNWP)wxWndProc
,CS_HITTEST | CS_CLIPCHILDREN | CS_FRAME
,CS_FRAME
,0
))
)) != 0)
{
wxLogLastError("RegisterClass(no redraw MDI parent)");
vError = ::WinGetLastError(vHab);
sError = wxPMErrorToStr(vError);
wxLogLastError(sError);
return FALSE;
}
if (!::WinRegisterClass( vHab
if ((rc = ::WinRegisterClass( vHab
,wxMDIChildFrameClassName
,(PFNWP)wxWndProc
,CS_MOVENOTIFY | CS_SIZEREDRAW | CS_SYNCPAINT | CS_HITTEST | CS_CLIPSIBLINGS | CS_FRAME
,CS_MOVENOTIFY | CS_SIZEREDRAW | CS_SYNCPAINT | CS_HITTEST | CS_FRAME
,0
))
)) != 0)
{
wxLogLastError("RegisterClass(MDI child)");
vError = ::WinGetLastError(vHab);
sError = wxPMErrorToStr(vError);
wxLogLastError(sError);
return FALSE;
}
if (!::WinRegisterClass( vHab
if ((rc = ::WinRegisterClass( vHab
,wxMDIChildFrameClassNameNoRedraw
,(PFNWP)wxWndProc
,CS_HITTEST | CS_CLIPSIBLINGS | CS_FRAME
,CS_HITTEST | CS_FRAME
,0
))
)) != 0)
{
wxLogLastError("RegisterClass(no redraw MDI child)");
vError = ::WinGetLastError(vHab);
sError = wxPMErrorToStr(vError);
wxLogLastError(sError);
return FALSE;
}
if (!::WinRegisterClass( vHab
if ((rc = ::WinRegisterClass( vHab
,wxPanelClassName
,(PFNWP)wxWndProc
,CS_MOVENOTIFY | CS_SIZEREDRAW | CS_HITTEST | CS_CLIPSIBLINGS | CS_SAVEBITS | CS_SYNCPAINT
,CS_MOVENOTIFY | CS_SIZEREDRAW | CS_HITTEST | CS_SAVEBITS | CS_SYNCPAINT
,0
))
)) != 0)
{
wxLogLastError("RegisterClass(Panel)");
vError = ::WinGetLastError(vHab);
sError = wxPMErrorToStr(vError);
wxLogLastError(sError);
return FALSE;
}
if (!::WinRegisterClass( vHab
if ((rc = ::WinRegisterClass( vHab
,wxCanvasClassName
,(PFNWP)wxWndProc
,CS_MOVENOTIFY | CS_SIZEREDRAW | CS_HITTEST | CS_CLIPSIBLINGS | CS_SAVEBITS | CS_SYNCPAINT
,CS_MOVENOTIFY | CS_SIZEREDRAW | CS_HITTEST | CS_SAVEBITS | CS_SYNCPAINT
,0
))
)) != 0)
{
wxLogLastError("RegisterClass(Canvas)");
vError = ::WinGetLastError(vHab);
sError = wxPMErrorToStr(vError);
wxLogLastError(sError);
return FALSE;
}
return TRUE;
@@ -483,9 +503,17 @@ int wxEntry(
bool wxApp::OnInitGui()
{
vHabmain = WinInitialize(0);
m_hMq = WinCreateMsgQueue(vHabmain, 0);
ERRORID vError;
wxString sError;
m_hMq = WinCreateMsgQueue(vHabmain, 0);
if (!m_hMq)
{
vError = ::WinGetLastError(vHabmain);
sError = wxPMErrorToStr(vError);
wxLogDebug(sError);
return FALSE;
}
return TRUE;
}

View File

@@ -727,21 +727,16 @@ bool wxFrame::OS2Create(
, long ulStyle
)
{
ULONG ulPmFlags = 0;
ULONG ulExtraFlags = 0;
ULONG ulTempFlags = FCF_TITLEBAR |
FCF_SYSMENU |
FCF_MINBUTTON |
FCF_MAXBUTTON |
FCF_SIZEBORDER |
FCF_ICON |
FCF_MENU |
FCF_ACCELTABLE |
FCF_SHELLPOSITION |
FCF_TASKLIST;
ULONG ulPmFlags = 0L;
ULONG ulExtraFlags = 0L;
ULONG ulTempFlags = FCF_STANDARD;
m_hDefaultIcon = (WXHICON) (wxSTD_FRAME_ICON ? wxSTD_FRAME_ICON : wxDEFAULT_FRAME_ICON);
if (ulStyle == wxDEFAULT_FRAME_STYLE)
ulPmFlags = FCF_STANDARD;
else
{
if ((ulStyle & wxCAPTION) == wxCAPTION)
ulPmFlags = FCF_TASKLIST;
else
@@ -788,9 +783,7 @@ bool wxFrame::OS2Create(
if (ulStyle & wxSTAY_ON_TOP)
ulPmFlags |= FCF_SYSMODAL;
if (ulPmFlags & ulTempFlags)
ulPmFlags = FCF_STANDARD;
}
//
// Clear the visible flag, we always call show
//

View File

@@ -68,7 +68,15 @@ wxIcon::wxIcon(
, int nDesiredHeight
)
{
LoadFile( rIconFile
//
// A very poor hack, but we have to have separate icon files from windows
// So we have a modified name where replace the last three characters
// with os2. Also need the extension.
//
wxString sOs2Name = rIconFile.Mid(0, rIconFile.Length() - 3);
sOs2Name += "Os2.ico";
LoadFile( sOs2Name
,lFlags
,nDesiredWidth
,nDesiredHeight

View File

@@ -915,7 +915,7 @@ $(WXDIR)\lib\wxos22.lib: $(OS2LIBOBJS2)
ilib $(LIBFLAGS) $@ @<<
$**;
<<
del *.obj
# del *.obj
$(WXDIR)\lib\wx.lib: \
$D\dummy.obj \
@@ -933,14 +933,14 @@ $(WXDIR)\lib\wx.lib: \
ilib $(LIBFLAGS) $@ @<<
$**;
<<
del $(COMTEMPTGT1)
del $(COMTEMPTGT2)
del $(COMTEMPTGT3)
del $(GENTEMPTGT)
del $(HTMLTEMPTGT)
del $(NONESTEMPTGT)
del $(OS2TEMPTGT1)
del $(OS2TEMPTGT2)
# del $(COMTEMPTGT1)
# del $(COMTEMPTGT2)
# del $(COMTEMPTGT3)
# del $(GENTEMPTGT)
# del $(HTMLTEMPTGT)
# del $(NONESTEMPTGT)
# del $(OS2TEMPTGT1)
# del $(OS2TEMPTGT2)
!else

View File

@@ -180,13 +180,13 @@ void wxMenuItem::Enable(
if (m_isEnabled == bEnable)
return;
if (bEnable)
bOk = ::WinSendMsg( GetHMenuOf(m_parentMenu)
bOk = (bool)::WinSendMsg( GetHMenuOf(m_parentMenu)
,MM_SETITEMATTR
,MPFROM2SHORT(GetRealId(), TRUE)
,MPFROM2SHORT(MIA_DISABLED, MIA_DISABLED)
);
else
bOk = ::WinSendMsg( GetHMenuOf(m_parentMenu)
bOk = (bool)::WinSendMsg( GetHMenuOf(m_parentMenu)
,MM_SETITEMATTR
,MPFROM2SHORT(GetRealId(), TRUE)
,MPFROM2SHORT(MIA_DISABLED, FALSE)
@@ -208,13 +208,13 @@ void wxMenuItem::Check(
if (m_isChecked == bCheck)
return;
if (bCheck)
bOk = ::WinSendMsg( GetHMenuOf(m_parentMenu)
bOk = (bool)::WinSendMsg( GetHMenuOf(m_parentMenu)
,MM_SETITEMATTR
,MPFROM2SHORT(GetRealId(), TRUE)
,MPFROM2SHORT(MIA_CHECKED, MIA_CHECKED)
);
else
bOk = ::WinSendMsg( GetHMenuOf(m_parentMenu)
bOk = (bool)::WinSendMsg( GetHMenuOf(m_parentMenu)
,MM_SETITEMATTR
,MPFROM2SHORT(GetRealId(), TRUE)
,MPFROM2SHORT(MIA_CHECKED, FALSE)

View File

@@ -817,3 +817,62 @@ WXWORD WXDLLEXPORT wxGetWindowId(
return ::WinQueryWindowUShort((HWND)hWnd, QWS_ID);
}
wxString WXDLLEXPORT wxPMErrorToStr(
ERRORID vError
)
{
wxString sError;
//
// Remove the high order byte -- it is useless
//
vError &= 0x0000ffff;
switch(vError)
{
case PMERR_INVALID_HWND:
sError = wxT("Invalid window handle specified");
break;
case PMERR_INVALID_FLAG:
sError = wxT("Invalid flag bit set");
break;
case PMERR_NO_MSG_QUEUE:
sError = wxT("No message queue available");
break;
case PMERR_INVALID_PARM:
sError = wxT("Parameter contained invalid data");
break;
case PMERR_INVALID_PARAMETERS:
sError = wxT("Parameter value is out of range");
break;
case PMERR_PARAMETER_OUT_OF_RANGE:
sError = wxT("Parameter value is out of range");
break;
case PMERR_INVALID_INTEGER_ATOM:
sError = wxT("Not a valid atom");
break;
case PMERR_INVALID_HATOMTBL:
sError = wxT("Atom table handle is invalid");
break;
case PMERR_INVALID_ATOM_NAME:
sError = wxT("Not a valid atom name");
break;
case PMERR_ATOM_NAME_NOT_FOUND:
sError = wxT("Valid name format, but cannot find name in atom table");
break;
default:
sError = wxT("Unknown error");
}
return(sError);
} // end of wxPMErrorToStr

View File

@@ -2327,6 +2327,8 @@ bool wxWindow::OS2Create(
, WXDWORD dwExtendedStyle // Port compatability only
)
{
ERRORID vError;
wxString sError;
int nX1 = CW_USEDEFAULT;
int nY1 = 0;
int nWidth1 = CW_USEDEFAULT;
@@ -2350,6 +2352,8 @@ bool wxWindow::OS2Create(
nWidth1 = vParentRect.xRight - vParentRect.xLeft;
nHeight1 = vParentRect.yTop - vParentRect.yBottom;
}
else
hParent = HWND_DESKTOP;
if (nX > -1)
nX1 = nX;
@@ -2373,7 +2377,7 @@ bool wxWindow::OS2Create(
PDLGTEMPLATE pDlgt;
::DosGetResource(0L, RT_DIALOG, vId, (PPVOID)&pDlgt);
m_hWnd = (WXHWND)::WinCreateDlg( pParent->GetHWND()
m_hWnd = (WXHWND)::WinCreateDlg( hParent
,NULLHANDLE
,(PFNWP)wxDlgProc
,pDlgt
@@ -2381,8 +2385,11 @@ bool wxWindow::OS2Create(
);
if (m_hWnd == 0)
{
wxLogError(_("Can't find dummy dialog template!\n"
"Check resource include path for finding wx.rc."));
vError = ::WinGetLastError(vHabmain);
sError = wxPMErrorToStr(vError);
wxLogError("Can't find dummy dialog template!\n"
"Check resource include path for finding wx.rc.\n"
"Error: %s\n", sError);
return FALSE;
}
@@ -2398,7 +2405,9 @@ bool wxWindow::OS2Create(
,SWP_MOVE | SWP_SIZE | SWP_NOREDRAW
));
{
wxLogLastError(wxT("MoveWindow"));
vError = ::WinGetLastError(vHabmain);
sError = wxPMErrorToStr(vError);
wxLogError("MoveWindow, error: %s\n", sError);
}
}
else
@@ -2447,7 +2456,9 @@ bool wxWindow::OS2Create(
);
if (!m_hWnd)
{
wxLogError("Can't create window of class %s!\n", zWclass);
vError = ::WinGetLastError(vHabmain);
sError = wxPMErrorToStr(vError);
wxLogError("Can't create window of class %s!. Error: %s\n", zWclass, sError);
return FALSE;
}
}