]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/app.cpp
Added chapter on collection and container classes to contents
[wxWidgets.git] / src / os2 / app.cpp
index 392bb8489d87c0669100da3f98cf273dfd370878..4aa19bee52c443a650aeae6dd1c5558aecd74ac8 100644 (file)
@@ -63,7 +63,6 @@
 // ---------------------------------------------------------------------------
 
 extern wxChar*                      wxBuffer;
-extern wxChar*                      wxOsVersion;
 extern wxList*                      wxWinHandleList;
 extern wxList WXDLLEXPORT           wxPendingDelete;
 extern wxCursor*                    g_globalCursor;
@@ -93,12 +92,6 @@ HICON wxDEFAULT_MDIPARENTFRAME_ICON  = (HICON) NULL;
 
 HBRUSH wxDisableButtonBrush = (HBRUSH) 0;
 
-MRESULT EXPENTRY wxWndProc( HWND
-                           ,ULONG
-                           ,MPARAM
-                           ,MPARAM
-                          );
-
 // ===========================================================================
 // implementation
 // ===========================================================================
@@ -142,10 +135,6 @@ bool wxApp::Initialize(
 
     wxClassInfo::InitializeClasses();
 
-#if wxUSE_RESOURCES
-    wxGetResource(wxT("wxWindows"), wxT("OsVersion"), &wxOsVersion);
-#endif
-
 #if wxUSE_THREADS
     wxPendingEventsLocker = new wxCriticalSection;
 #endif
@@ -195,7 +184,7 @@ bool wxApp::RegisterWindowClasses(
     if (!::WinRegisterClass( vHab
                             ,wxFrameClassName
                             ,(PFNWP)wxWndProc
-                            ,CS_SIZEREDRAW | CS_SYNCPAINT
+                            ,CS_SIZEREDRAW | CS_MOVENOTIFY | CS_SYNCPAINT
                             ,sizeof(ULONG)
                            ))
     {
@@ -221,7 +210,7 @@ bool wxApp::RegisterWindowClasses(
     if (!::WinRegisterClass( vHab
                             ,wxMDIFrameClassName
                             ,(PFNWP)wxWndProc
-                            ,CS_SIZEREDRAW | CS_SYNCPAINT
+                            ,CS_SIZEREDRAW | CS_MOVENOTIFY | CS_SYNCPAINT
                             ,0
                            ))
     {
@@ -386,6 +375,10 @@ void wxApp::CleanUp()
 
     wxClassInfo::CleanUpClasses();
 
+    // Delete Message queue
+    if (wxTheApp->m_hMq)
+        ::WinDestroyMsgQueue(wxTheApp->m_hMq);
+
     delete wxTheApp;
     wxTheApp = NULL;
 
@@ -522,6 +515,7 @@ wxApp::wxApp()
     m_nPrintMode = wxPRINT_WINDOWS;
     m_exitOnFrameDelete = TRUE;
     m_bAuto3D = TRUE;
+    m_hMq = 0;
 } // end of wxApp::wxApp
 
 wxApp::~wxApp()
@@ -554,8 +548,9 @@ bool wxApp::Initialized()
 //
 bool wxApp::DoMessage()
 {
-    BOOL                            bRc = ::WinGetMsg(vHabmain, &m_vMsg, HWND(NULL), 0, 0);
+    BOOL                            bRc = ::WinGetMsg(vHabmain, &svCurrentMsg, HWND(NULL), 0, 0);
 
+//    wxUsleep(1000);
     if (bRc == 0)
     {
         // got WM_QUIT
@@ -624,7 +619,7 @@ bool wxApp::DoMessage()
 #endif // wxUSE_THREADS
 
         // Process the message
-        if (!ProcessMessage((WXMSG *)&svCurrentMsg) )
+        if (!ProcessMessage((WXMSG *)&svCurrentMsg))
         {
             ::WinDispatchMsg(vHabmain, (PQMSG)&svCurrentMsg);
         }
@@ -658,6 +653,7 @@ int wxApp::MainLoop()
 #endif // wxUSE_THREADS
         while (!Pending() && ProcessIdle())
         {
+//            wxUsleep(10000);
         }
         DoMessage();
     }
@@ -702,8 +698,8 @@ bool wxApp::ProcessMessage(
   WXMSG*                            pWxmsg
 )
 {
-    QMSG*                           vMsg = (PQMSG)pWxmsg;
-    HWND                            hWnd = vMsg->hwnd;
+    QMSG*                           pMsg = (PQMSG)pWxmsg;
+    HWND                            hWnd = pMsg->hwnd;
     wxWindow*                       pWndThis = wxFindWinFromHandle((WXHWND)hWnd);
     wxWindow*                       pWnd;
 
@@ -712,7 +708,7 @@ bool wxApp::ProcessMessage(
     // We must relay WM_MOUSEMOVE events to the tooltip ctrl if we want it to
     // popup the tooltip bubbles
     //
-    if (pWndThis && (vMsg->msg == WM_MOUSEMOVE))
+    if (pWndThis && (pMsg->msg == WM_MOUSEMOVE))
     {
         wxToolTip*                  pToolTip = pWndThis->GetToolTip();
         if (pToolTip)
@@ -733,6 +729,18 @@ bool wxApp::ProcessMessage(
         pWndThis = wxFindWinFromHandle((WXHWND)hWnd);
     }
 
+    //
+    // Try translations first; find the youngest window with
+    // a translation table.
+    //
+#if 0
+    for (pWnd = pWndThis; pWnd; pWnd = pWnd->GetParent() )
+    {
+        if (pMsg->msg == WM_CHAR)
+            if (pWnd->OS2TranslateMessage(pWxmsg))
+                return TRUE;
+    }
+#endif
     //
     // Anyone for a non-translation message? Try youngest descendants first.
     //