X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ad81651f00edc6f489d9b6a0839d316a964fd521..f49676ee8c0ed60d99582cc0b5f23ff7a7d5b970:/src/msw/app.cpp?ds=sidebyside diff --git a/src/msw/app.cpp b/src/msw/app.cpp index c83a623b80..1be88f6a6e 100644 --- a/src/msw/app.cpp +++ b/src/msw/app.cpp @@ -67,6 +67,10 @@ #include "wx/resource.h" #endif +#if wxUSE_TOOLTIPS + #include "wx/tooltip.h" +#endif // wxUSE_TOOLTIPS + // OLE is used for drag-and-drop, clipboard, OLE Automation... #ifndef wxUSE_NORLANDER_HEADERS #if defined(__GNUWIN32__) || defined(__SC__) || defined(__SALFORDC__) @@ -128,18 +132,16 @@ extern wxCursor *g_globalCursor; MSG s_currentMsg; wxApp *wxTheApp = NULL; -// FIXME why not const? and not static? - // NB: all "NoRedraw" classes must have the same names as the "normal" classes // with NR suffix - wxWindow::MSWCreate() supposes this -wxChar wxFrameClassName[] = wxT("wxFrameClass"); -wxChar wxFrameClassNameNoRedraw[] = wxT("wxFrameClassNR"); -wxChar wxMDIFrameClassName[] = wxT("wxMDIFrameClass"); -wxChar wxMDIFrameClassNameNoRedraw[] = wxT("wxMDIFrameClassNR"); -wxChar wxMDIChildFrameClassName[] = wxT("wxMDIChildFrameClass"); -wxChar wxMDIChildFrameClassNameNoRedraw[] = wxT("wxMDIChildFrameClassNR"); -wxChar wxPanelClassName[] = wxT("wxPanelClass"); -wxChar wxCanvasClassName[] = wxT("wxCanvasClass"); +const wxChar *wxFrameClassName = wxT("wxFrameClass"); +const wxChar *wxFrameClassNameNoRedraw = wxT("wxFrameClassNR"); +const wxChar *wxMDIFrameClassName = wxT("wxMDIFrameClass"); +const wxChar *wxMDIFrameClassNameNoRedraw = wxT("wxMDIFrameClassNR"); +const wxChar *wxMDIChildFrameClassName = wxT("wxMDIChildFrameClass"); +const wxChar *wxMDIChildFrameClassNameNoRedraw = wxT("wxMDIChildFrameClassNR"); +const wxChar *wxPanelClassName = wxT("wxPanelClass"); +const wxChar *wxCanvasClassName = wxT("wxCanvasClass"); HICON wxSTD_FRAME_ICON = (HICON) NULL; HICON wxSTD_MDICHILDFRAME_ICON = (HICON) NULL; @@ -153,12 +155,6 @@ HBRUSH wxDisableButtonBrush = (HBRUSH) 0; LRESULT WXDLLEXPORT APIENTRY wxWndProc(HWND, UINT, WPARAM, LPARAM); -#if wxUSE_RICHEDIT - // the handle to richedit DLL and the version of the DLL loaded - static HINSTANCE gs_hRichEdit = (HINSTANCE)NULL; - static int gs_verRichEdit = -1; -#endif - // =========================================================================== // implementation // =========================================================================== @@ -526,11 +522,6 @@ void wxApp::CleanUp() wxSetKeyboardHook(FALSE); -#if wxUSE_RICHEDIT - if (gs_hRichEdit != (HINSTANCE) NULL) - FreeLibrary(gs_hRichEdit); -#endif - #if wxUSE_PENWINDOWS wxCleanUpPenWin(); #endif @@ -972,19 +963,24 @@ bool wxApp::ProcessMessage(WXMSG *wxmsg) { MSG *msg = (MSG *)wxmsg; HWND hWnd = msg->hwnd; - wxWindow *wndThis = wxFindWinFromHandle((WXHWND)hWnd), *wnd; + wxWindow *wndThis = wxGetWindowFromHWND((WXHWND)hWnd); - // for some composite controls (like a combobox), wndThis might be NULL - // because the subcontrol is not a wxWindow, but only the control itself - // is - try to catch this case - while ( hWnd && !wndThis ) +#if wxUSE_TOOLTIPS + // we must relay WM_MOUSEMOVE events to the tooltip ctrl if we want it to + // popup the tooltip bubbles + if ( wndThis && (msg->message == WM_MOUSEMOVE) ) { - hWnd = ::GetParent(hWnd); - wndThis = wxFindWinFromHandle((WXHWND)hWnd); + wxToolTip *tt = wndThis->GetToolTip(); + if ( tt ) + { + tt->RelayEvent(wxmsg); + } } +#endif // wxUSE_TOOLTIPS // Try translations first; find the youngest window with // a translation table. + wxWindow *wnd; for ( wnd = wndThis; wnd; wnd = wnd->GetParent() ) { if ( wnd->MSWTranslateMessage(wxmsg) ) @@ -1113,52 +1109,6 @@ void wxApp::OnQueryEndSession(wxCloseEvent& event) } } -#if wxUSE_RICHEDIT - -/* static */ -bool wxApp::InitRichEdit(int version) -{ - wxCHECK_MSG( version >= 1 && version <= 3, FALSE, - _T("incorrect richedit control version requested") ); - - if ( version <= gs_verRichEdit ) - { - // we've already got this or better - return TRUE; - } - - if ( gs_hRichEdit ) - { - ::FreeLibrary(gs_hRichEdit); - } - - // always try load riched20.dll first - like this we won't have to reload - // it later if we're first asked for RE 1 and then for RE 2 or 3 - wxString dllname = _T("riched20.dll"); - gs_hRichEdit = ::LoadLibrary(dllname); - if ( !gs_hRichEdit && (version == 1) ) - { - // fall back to RE 1 - dllname = _T("riched32.dll"); - gs_hRichEdit = ::LoadLibrary(dllname); - } - - if ( !gs_hRichEdit ) - { - wxLogSysError(_("Could not load Rich Edit DLL '%s'"), dllname.c_str()); - - gs_verRichEdit = -1; - - return FALSE; - } - - gs_verRichEdit = version; - - return TRUE; -} - -#endif // wxUSE_RICHEDIT - /* static */ int wxApp::GetComCtl32Version() { @@ -1211,7 +1161,11 @@ int wxApp::GetComCtl32Version() FARPROC theProc = ::GetProcAddress ( hModuleComCtl32, +#if defined(__BORLANDC__) && (__BORLANDC__ <= 0x520) + "InitCommonControlsEx" +#else _T("InitCommonControlsEx") +#endif ); if ( !theProc ) @@ -1226,7 +1180,11 @@ int wxApp::GetComCtl32Version() theProc = ::GetProcAddress ( hModuleComCtl32, +#if defined(__BORLANDC__) && (__BORLANDC__ <= 0x520) + "InitializeFlatSB" +#else _T("InitializeFlatSB") +#endif ); if ( !theProc ) { @@ -1321,6 +1279,6 @@ wxApp::GetStdIcon(int which) const // For some reason, with MSVC++ 1.5, WinMain isn't linked in properly // if in a separate file. So include it here to ensure it's linked. -#if (defined(__VISUALC__) && !defined(__WIN32__)) || (defined(__GNUWIN32__) && !defined(__TWIN32__)) +#if (defined(__VISUALC__) && !defined(__WIN32__)) || (defined(__GNUWIN32__) && !defined(__TWIN32__) && !defined(WXMAKINGDLL)) #include "main.cpp" #endif