X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e604d44b4b03f1f36998f91311d4e18e8f1b290e..d1dea842a06344bef9500b372463c0d1f94f7701:/src/os2/app.cpp diff --git a/src/os2/app.cpp b/src/os2/app.cpp index ef18d55511..a8ccb45bae 100644 --- a/src/os2/app.cpp +++ b/src/os2/app.cpp @@ -92,6 +92,9 @@ HICON wxDEFAULT_MDIPARENTFRAME_ICON = (HICON) NULL; HBRUSH wxDisableButtonBrush = (HBRUSH) 0; +MRESULT EXPENTRY wxWndProc( HWND hWnd,ULONG message,MPARAM mp1,MPARAM mp2); +MRESULT EXPENTRY wxFrameWndProc( HWND hWnd,ULONG message,MPARAM mp1,MPARAM mp2); + // =========================================================================== // implementation // =========================================================================== @@ -115,6 +118,28 @@ bool wxApp::Initialize( HAB vHab ) { +#if defined(wxUSE_CONSOLEDEBUG) + #if wxUSE_CONSOLEDEBUG +/***********************************************/ +/* Code for using stdout debug */ +/* To use it you mast link app as "Window" - EK*/ +/***********************************************/ + { + PPIB pib; + PTIB tib; + + printf("In console\n"); + + DosGetInfoBlocks(&tib, &pib); +/* Try morphing into a PM application. */ +// if(pib->pib_ultype == 2) /* VIO */ + pib->pib_ultype = 3; + } +/**********************************************/ +/**********************************************/ + #endif //wxUSE_CONSOLEDEBUG +#endif + // // OS2 has to have an anchorblock // @@ -169,6 +194,7 @@ bool wxApp::Initialize( return TRUE; } // end of wxApp::Initialize +const char* CANTREGISTERCLASS = " Can't register Class "; // --------------------------------------------------------------------------- // RegisterWindowClasses // --------------------------------------------------------------------------- @@ -183,8 +209,8 @@ bool wxApp::RegisterWindowClasses( if (!::WinRegisterClass( vHab ,wxFrameClassName - ,(PFNWP)wxWndProc - ,CS_SIZEREDRAW | CS_MOVENOTIFY | CS_SYNCPAINT | CS_FRAME + ,wxFrameWndProc + ,CS_SIZEREDRAW | CS_MOVENOTIFY | CS_SYNCPAINT | CS_CLIPCHILDREN ,sizeof(ULONG) )) { @@ -196,9 +222,9 @@ bool wxApp::RegisterWindowClasses( if (!::WinRegisterClass( vHab ,wxFrameClassNameNoRedraw - ,(PFNWP)wxWndProc - ,0 + ,wxWndProc ,0 + ,sizeof(ULONG) )) { vError = ::WinGetLastError(vHab); @@ -209,9 +235,9 @@ bool wxApp::RegisterWindowClasses( if (!::WinRegisterClass( vHab ,wxMDIFrameClassName - ,(PFNWP)wxWndProc + ,wxWndProc ,CS_SIZEREDRAW | CS_MOVENOTIFY | CS_SYNCPAINT - ,0 + ,sizeof(ULONG) )) { vError = ::WinGetLastError(vHab); @@ -222,9 +248,9 @@ bool wxApp::RegisterWindowClasses( if (!::WinRegisterClass( vHab ,wxMDIFrameClassNameNoRedraw - ,(PFNWP)wxWndProc - ,0 + ,wxWndProc ,0 + ,sizeof(ULONG) )) { vError = ::WinGetLastError(vHab); @@ -235,9 +261,9 @@ bool wxApp::RegisterWindowClasses( if (!::WinRegisterClass( vHab ,wxMDIChildFrameClassName - ,(PFNWP)wxWndProc + ,wxWndProc ,CS_MOVENOTIFY | CS_SIZEREDRAW | CS_SYNCPAINT | CS_HITTEST - ,0 + ,sizeof(ULONG) )) { vError = ::WinGetLastError(vHab); @@ -248,9 +274,9 @@ bool wxApp::RegisterWindowClasses( if (!::WinRegisterClass( vHab ,wxMDIChildFrameClassNameNoRedraw - ,(PFNWP)wxWndProc + ,wxWndProc ,CS_HITTEST - ,0 + ,sizeof(ULONG) )) { vError = ::WinGetLastError(vHab); @@ -261,9 +287,9 @@ bool wxApp::RegisterWindowClasses( if (!::WinRegisterClass( vHab ,wxPanelClassName - ,(PFNWP)wxWndProc + ,wxWndProc ,CS_MOVENOTIFY | CS_SIZEREDRAW | CS_HITTEST | CS_SAVEBITS | CS_SYNCPAINT - ,0 + ,sizeof(ULONG) )) { vError = ::WinGetLastError(vHab); @@ -274,9 +300,9 @@ bool wxApp::RegisterWindowClasses( if (!::WinRegisterClass( vHab ,wxCanvasClassName - ,(PFNWP)wxWndProc + ,wxWndProc ,CS_MOVENOTIFY | CS_SIZEREDRAW | CS_HITTEST | CS_SAVEBITS | CS_SYNCPAINT - ,0 + ,sizeof(ULONG) )) { vError = ::WinGetLastError(vHab); @@ -402,6 +428,9 @@ void wxApp::CleanUp() #endif // wxUSE_LOG } // end of wxApp::CleanUp +//---------------------------------------------------------------------- +// Main wxWindows entry point +//---------------------------------------------------------------------- int wxEntry( int argc , char* argv[] @@ -457,29 +486,43 @@ int wxEntry( if (wxTheApp->OnInit()) { nRetValue = wxTheApp->OnRun(); -// nRetValue = -1; } - } - - wxWindow* pTopWindow = wxTheApp->GetTopWindow(); - - if (pTopWindow) - { - // Forcibly delete the window. - if (pTopWindow->IsKindOf(CLASSINFO(wxFrame)) || - pTopWindow->IsKindOf(CLASSINFO(wxDialog)) ) - { - pTopWindow->Close(TRUE); - wxTheApp->DeletePendingObjects(); - } - else + // Normal exit + wxWindow* pTopWindow = wxTheApp->GetTopWindow(); + if (pTopWindow) { - delete pTopWindow; - wxTheApp->SetTopWindow(NULL); + // Forcibly delete the window. + if (pTopWindow->IsKindOf(CLASSINFO(wxFrame)) || + pTopWindow->IsKindOf(CLASSINFO(wxDialog)) ) + { + pTopWindow->Close(TRUE); + wxTheApp->DeletePendingObjects(); + } + else + { + delete pTopWindow; + wxTheApp->SetTopWindow(NULL); + } } } + else // app initialization failed + { + wxLogLastError(" Gui initialization failed, exitting"); + } +#if wxUSE_CONSOLEDEBUG + printf("wxTheApp->OnExit "); + fflush(stdout); +#endif wxTheApp->OnExit(); +#if wxUSE_CONSOLEDEBUG + printf("wxApp::CleanUp "); + fflush(stdout); +#endif wxApp::CleanUp(); +#if wxUSE_CONSOLEDEBUG + printf("return %i ", nRetValue); + fflush(stdout); +#endif return(nRetValue); } // end of wxEntry @@ -550,7 +593,6 @@ bool wxApp::DoMessage() { BOOL bRc = ::WinGetMsg(vHabmain, &svCurrentMsg, HWND(NULL), 0, 0); -// wxUsleep(1000); if (bRc == 0) { // got WM_QUIT @@ -651,11 +693,11 @@ int wxApp::MainLoop() #if wxUSE_THREADS wxMutexGuiLeaveOrEnter(); #endif // wxUSE_THREADS - while (!Pending() && ProcessIdle()) - { + while (/*Pending() &&*/ ProcessIdle()) + { // wxUsleep(10000); - } - DoMessage(); + } + DoMessage(); } return (int)svCurrentMsg.mp1; } // end of wxApp::MainLoop @@ -749,11 +791,13 @@ bool wxApp::ProcessMessage( if((CHARMSG(pChmsg)->fs & (KC_ALT | KC_CTRL)) && CHARMSG(pChmsg)->chr != 0) CHARMSG(pChmsg)->chr = (USHORT)wxToupper((UCHAR)uSch); - for(pWnd = pWndThis; pWnd; pWnd = pWnd->GetParent() ) - { - if((bRc = pWnd->OS2TranslateMessage(pWxmsg)) == TRUE) - break; - } + + for(pWnd = pWndThis; pWnd; pWnd = pWnd->GetParent() ) + { + if((bRc = pWnd->OS2TranslateMessage(pWxmsg)) == TRUE) + break; + } + if(!bRc) // untranslated, should restore original value CHARMSG(pChmsg)->chr = uSch; } @@ -778,7 +822,7 @@ void wxApp::OnIdle( // // Avoid recursion (via ProcessEvent default case) // - if (sbInOnIdle ) + if (sbInOnIdle) return; sbInOnIdle = TRUE;