// 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)
{
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__
)
{
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
- ,wxFrameClassNameNoRedraw
- ,(PFNWP)wxWndProc
- ,CS_HITTEST | CS_CLIPCHILDREN | CS_FRAME
- ,0
- ))
+ if ((rc = ::WinRegisterClass( vHab
+ ,wxFrameClassNameNoRedraw
+ ,(PFNWP)wxWndProc
+ ,CS_FRAME
+ ,0
+ )) != 0)
{
- wxLogLastError("RegisterClass(no redraw frame)");
-
+ vError = ::WinGetLastError(vHab);
+ sError = wxPMErrorToStr(vError);
+ wxLogLastError(sError);
return FALSE;
}
- if (!::WinRegisterClass( vHab
- ,wxMDIFrameClassName
- ,(PFNWP)wxWndProc
- ,CS_SIZEREDRAW | CS_SYNCPAINT | CS_HITTEST | CS_CLIPCHILDREN | CS_FRAME
- ,0
- ))
+ if ((rc = ::WinRegisterClass( vHab
+ ,wxMDIFrameClassName
+ ,(PFNWP)wxWndProc
+ ,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
- ,wxMDIFrameClassNameNoRedraw
- ,(PFNWP)wxWndProc
- ,CS_HITTEST | CS_CLIPCHILDREN | CS_FRAME
- ,0
- ))
+ if ((rc = ::WinRegisterClass( vHab
+ ,wxMDIFrameClassNameNoRedraw
+ ,(PFNWP)wxWndProc
+ ,CS_FRAME
+ ,0
+ )) != 0)
{
- wxLogLastError("RegisterClass(no redraw MDI parent)");
-
+ vError = ::WinGetLastError(vHab);
+ sError = wxPMErrorToStr(vError);
+ wxLogLastError(sError);
return FALSE;
}
- if (!::WinRegisterClass( vHab
- ,wxMDIChildFrameClassName
- ,(PFNWP)wxWndProc
- ,CS_MOVENOTIFY | CS_SIZEREDRAW | CS_SYNCPAINT | CS_HITTEST | CS_CLIPSIBLINGS | CS_FRAME
- ,0
- ))
+ if ((rc = ::WinRegisterClass( vHab
+ ,wxMDIChildFrameClassName
+ ,(PFNWP)wxWndProc
+ ,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
- ,wxMDIChildFrameClassNameNoRedraw
- ,(PFNWP)wxWndProc
- ,CS_HITTEST | CS_CLIPSIBLINGS | CS_FRAME
- ,0
- ))
+ if ((rc = ::WinRegisterClass( vHab
+ ,wxMDIChildFrameClassNameNoRedraw
+ ,(PFNWP)wxWndProc
+ ,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
- ,wxPanelClassName
- ,(PFNWP)wxWndProc
- ,CS_MOVENOTIFY | CS_SIZEREDRAW | CS_HITTEST | CS_CLIPSIBLINGS | CS_SAVEBITS | CS_SYNCPAINT
- ,0
- ))
+ if ((rc = ::WinRegisterClass( vHab
+ ,wxPanelClassName
+ ,(PFNWP)wxWndProc
+ ,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
- ,wxCanvasClassName
- ,(PFNWP)wxWndProc
- ,CS_MOVENOTIFY | CS_SIZEREDRAW | CS_HITTEST | CS_CLIPSIBLINGS | CS_SAVEBITS | CS_SYNCPAINT
- ,0
- ))
+ if ((rc = ::WinRegisterClass( vHab
+ ,wxCanvasClassName
+ ,(PFNWP)wxWndProc
+ ,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;
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;
}
, 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 & wxCAPTION) == wxCAPTION)
- ulPmFlags = FCF_TASKLIST;
+ if (ulStyle == wxDEFAULT_FRAME_STYLE)
+ ulPmFlags = FCF_STANDARD;
else
- ulPmFlags = FCF_NOMOVEWITHOWNER;
-
- if (ulStyle & wxMINIMIZE_BOX)
- ulPmFlags |= FCF_MINBUTTON;
- if (ulStyle & wxMAXIMIZE_BOX)
- ulPmFlags |= FCF_MAXBUTTON;
- if (ulStyle & wxTHICK_FRAME)
- ulPmFlags |= FCF_DLGBORDER;
- if (ulStyle & wxSYSTEM_MENU)
- ulPmFlags |= FCF_SYSMENU;
- if ((ulStyle & wxMINIMIZE) || (ulStyle & wxICONIZE))
- ulPmFlags |= WS_MINIMIZED;
- if (ulStyle & wxMAXIMIZE)
- ulPmFlags |= WS_MAXIMIZED;
- if (ulStyle & wxCAPTION)
- ulPmFlags |= FCF_TASKLIST;
- if (ulStyle & wxCLIP_CHILDREN)
{
- // Invalid for frame windows under PM
- }
+ if ((ulStyle & wxCAPTION) == wxCAPTION)
+ ulPmFlags = FCF_TASKLIST;
+ else
+ ulPmFlags = FCF_NOMOVEWITHOWNER;
+
+ if (ulStyle & wxMINIMIZE_BOX)
+ ulPmFlags |= FCF_MINBUTTON;
+ if (ulStyle & wxMAXIMIZE_BOX)
+ ulPmFlags |= FCF_MAXBUTTON;
+ if (ulStyle & wxTHICK_FRAME)
+ ulPmFlags |= FCF_DLGBORDER;
+ if (ulStyle & wxSYSTEM_MENU)
+ ulPmFlags |= FCF_SYSMENU;
+ if ((ulStyle & wxMINIMIZE) || (ulStyle & wxICONIZE))
+ ulPmFlags |= WS_MINIMIZED;
+ if (ulStyle & wxMAXIMIZE)
+ ulPmFlags |= WS_MAXIMIZED;
+ if (ulStyle & wxCAPTION)
+ ulPmFlags |= FCF_TASKLIST;
+ if (ulStyle & wxCLIP_CHILDREN)
+ {
+ // Invalid for frame windows under PM
+ }
- //
- // Keep this in wxFrame because it saves recoding this function
- // in wxTinyFrame
- //
+ //
+ // Keep this in wxFrame because it saves recoding this function
+ // in wxTinyFrame
+ //
#if wxUSE_ITSY_BITSY
- if (ulStyle & wxTINY_CAPTION_VERT)
- ulExtraFlags |= kVertCaption;
- if (ulStyle & wxTINY_CAPTION_HORIZ)
- ulExtraFlags |= kHorzCaption;
+ if (ulStyle & wxTINY_CAPTION_VERT)
+ ulExtraFlags |= kVertCaption;
+ if (ulStyle & wxTINY_CAPTION_HORIZ)
+ ulExtraFlags |= kHorzCaption;
#else
- if (ulStyle & wxTINY_CAPTION_VERT)
- ulPmFlags |= FCF_TASKLIST;
- if (ulStyle & wxTINY_CAPTION_HORIZ)
- ulPmFlags |= FCF_TASKLIST;
+ if (ulStyle & wxTINY_CAPTION_VERT)
+ ulPmFlags |= FCF_TASKLIST;
+ if (ulStyle & wxTINY_CAPTION_HORIZ)
+ ulPmFlags |= FCF_TASKLIST;
#endif
- if ((ulStyle & wxTHICK_FRAME) == 0)
- ulPmFlags |= FCF_BORDER;
- if (ulStyle & wxFRAME_TOOL_WINDOW)
- ulExtraFlags = kFrameToolWindow;
+ if ((ulStyle & wxTHICK_FRAME) == 0)
+ ulPmFlags |= FCF_BORDER;
+ if (ulStyle & wxFRAME_TOOL_WINDOW)
+ ulExtraFlags = kFrameToolWindow;
- if (ulStyle & wxSTAY_ON_TOP)
- ulPmFlags |= FCF_SYSMODAL;
-
- if (ulPmFlags & ulTempFlags)
- ulPmFlags = FCF_STANDARD;
+ if (ulStyle & wxSTAY_ON_TOP)
+ ulPmFlags |= FCF_SYSMODAL;
+ }
//
// Clear the visible flag, we always call show
//
, 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
ilib $(LIBFLAGS) $@ @<<
$**;
<<
- del *.obj
+# del *.obj
$(WXDIR)\lib\wx.lib: \
$D\dummy.obj \
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
if (m_isEnabled == bEnable)
return;
if (bEnable)
- bOk = ::WinSendMsg( GetHMenuOf(m_parentMenu)
- ,MM_SETITEMATTR
- ,MPFROM2SHORT(GetRealId(), TRUE)
- ,MPFROM2SHORT(MIA_DISABLED, MIA_DISABLED)
- );
+ bOk = (bool)::WinSendMsg( GetHMenuOf(m_parentMenu)
+ ,MM_SETITEMATTR
+ ,MPFROM2SHORT(GetRealId(), TRUE)
+ ,MPFROM2SHORT(MIA_DISABLED, MIA_DISABLED)
+ );
else
- bOk = ::WinSendMsg( GetHMenuOf(m_parentMenu)
- ,MM_SETITEMATTR
- ,MPFROM2SHORT(GetRealId(), TRUE)
- ,MPFROM2SHORT(MIA_DISABLED, FALSE)
- );
+ bOk = (bool)::WinSendMsg( GetHMenuOf(m_parentMenu)
+ ,MM_SETITEMATTR
+ ,MPFROM2SHORT(GetRealId(), TRUE)
+ ,MPFROM2SHORT(MIA_DISABLED, FALSE)
+ );
if (!bOk)
{
wxLogLastError("EnableMenuItem");
if (m_isChecked == bCheck)
return;
if (bCheck)
- bOk = ::WinSendMsg( GetHMenuOf(m_parentMenu)
- ,MM_SETITEMATTR
- ,MPFROM2SHORT(GetRealId(), TRUE)
- ,MPFROM2SHORT(MIA_CHECKED, MIA_CHECKED)
- );
+ bOk = (bool)::WinSendMsg( GetHMenuOf(m_parentMenu)
+ ,MM_SETITEMATTR
+ ,MPFROM2SHORT(GetRealId(), TRUE)
+ ,MPFROM2SHORT(MIA_CHECKED, MIA_CHECKED)
+ );
else
- bOk = ::WinSendMsg( GetHMenuOf(m_parentMenu)
- ,MM_SETITEMATTR
- ,MPFROM2SHORT(GetRealId(), TRUE)
- ,MPFROM2SHORT(MIA_CHECKED, FALSE)
- );
+ bOk = (bool)::WinSendMsg( GetHMenuOf(m_parentMenu)
+ ,MM_SETITEMATTR
+ ,MPFROM2SHORT(GetRealId(), TRUE)
+ ,MPFROM2SHORT(MIA_CHECKED, FALSE)
+ );
if (!bOk)
{
wxLogLastError("EnableMenuItem");
USHORT uId = GetRealId();
MENUITEM vItem;
USHORT uFlagsOld;
-
+
if (!::WinSendMsg( hMenu
,MM_QUERYITEM
,MPFROM2SHORT(uId, TRUE)
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
+
+
, WXDWORD dwExtendedStyle // Port compatability only
)
{
+ ERRORID vError;
+ wxString sError;
int nX1 = CW_USEDEFAULT;
int nY1 = 0;
int nWidth1 = CW_USEDEFAULT;
nWidth1 = vParentRect.xRight - vParentRect.xLeft;
nHeight1 = vParentRect.yTop - vParentRect.yBottom;
}
+ else
+ hParent = HWND_DESKTOP;
if (nX > -1)
nX1 = nX;
PDLGTEMPLATE pDlgt;
::DosGetResource(0L, RT_DIALOG, vId, (PPVOID)&pDlgt);
- m_hWnd = (WXHWND)::WinCreateDlg( pParent->GetHWND()
+ m_hWnd = (WXHWND)::WinCreateDlg( hParent
,NULLHANDLE
,(PFNWP)wxDlgProc
,pDlgt
);
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;
}
,SWP_MOVE | SWP_SIZE | SWP_NOREDRAW
));
{
- wxLogLastError(wxT("MoveWindow"));
+ vError = ::WinGetLastError(vHabmain);
+ sError = wxPMErrorToStr(vError);
+ wxLogError("MoveWindow, error: %s\n", sError);
}
}
else
);
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;
}
}