From 3295e23873ab52d5be80c52b8647909546936ae2 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 9 Mar 2002 21:55:39 +0000 Subject: [PATCH] don't include wx/wx.h unnecessarily git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14526 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/msw/helpbest.h | 50 +++++++---------- include/wx/msw/helpchm.h | 27 +++++---- src/msw/helpchm.cpp | 113 +++++++++++++++++++++++++++----------- 3 files changed, 114 insertions(+), 76 deletions(-) diff --git a/include/wx/msw/helpbest.h b/include/wx/msw/helpbest.h index cc3e41bcb0..3709a6ab63 100644 --- a/include/wx/msw/helpbest.h +++ b/include/wx/msw/helpbest.h @@ -6,7 +6,7 @@ // Created: 02/04/2001 // RCS-ID: $Id$ // Copyright: (c) Mattia Barbon -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_HELPBEST_H_ @@ -16,97 +16,85 @@ #pragma interface "helpbest.h" #endif -#include "wx/wx.h" - #if wxUSE_HELP && wxUSE_MS_HTML_HELP && defined(__WIN95__) && wxUSE_WXHTML_HELP #include "wx/helpbase.h" class WXDLLEXPORT wxBestHelpController: public wxHelpControllerBase { - DECLARE_DYNAMIC_CLASS(wxBestHelpController) - public: - wxBestHelpController():m_helpControllerType( wxUseNone ), - m_helpController( 0 ) {} - ~wxBestHelpController() { delete m_helpController; } - + wxBestHelpController() + : m_helpControllerType( wxUseNone ), + m_helpController( NULL ) + { + } + + virtual ~wxBestHelpController() { delete m_helpController; } + // Must call this to set the filename virtual bool Initialize(const wxString& file); - + // If file is "", reloads file given in Initialize virtual bool LoadFile(const wxString& file = wxEmptyString) { - wxASSERT( m_helpController ); return m_helpController->LoadFile( GetValidFilename( file ) ); } virtual bool DisplayContents() { - wxASSERT( m_helpController ); return m_helpController->DisplayContents(); } virtual bool DisplaySection(int sectionNo) { - wxASSERT( m_helpController ); return m_helpController->DisplaySection( sectionNo ); } virtual bool DisplaySection(const wxString& section) { - wxASSERT( m_helpController ); return m_helpController->DisplaySection( section ); } virtual bool DisplayBlock(long blockNo) { - wxASSERT( m_helpController ); return m_helpController->DisplayBlock( blockNo ); } virtual bool DisplayContextPopup(int contextId) { - wxASSERT( m_helpController ); return m_helpController->DisplayContextPopup( contextId ); } virtual bool DisplayTextPopup(const wxString& text, const wxPoint& pos) { - wxASSERT( m_helpController ); return m_helpController->DisplayTextPopup( text, pos ); } virtual bool KeywordSearch(const wxString& k) { - wxASSERT( m_helpController ); return m_helpController->KeywordSearch( k ); } virtual bool Quit() { - wxASSERT( m_helpController ); return m_helpController->Quit(); } - /// Allows one to override the default settings for the help frame. + // Allows one to override the default settings for the help frame. virtual void SetFrameParameters(const wxString& title, - const wxSize& size, - const wxPoint& pos = wxDefaultPosition, - bool newFrameEachTime = FALSE) + const wxSize& size, + const wxPoint& pos = wxDefaultPosition, + bool newFrameEachTime = FALSE) { - wxASSERT( m_helpController ); m_helpController->SetFrameParameters( title, size, pos, newFrameEachTime ); } - /// Obtains the latest settings used by the help frame and the help - /// frame. + // Obtains the latest settings used by the help frame and the help frame. virtual wxFrame *GetFrameParameters(wxSize *size = NULL, - wxPoint *pos = NULL, - bool *newFrameEachTime = NULL) + wxPoint *pos = NULL, + bool *newFrameEachTime = NULL) { - wxASSERT( m_helpController ); return m_helpController->GetFrameParameters( size, pos, newFrameEachTime ); } @@ -114,12 +102,14 @@ public: protected: // Append/change extension if necessary. wxString GetValidFilename(const wxString& file) const; - + protected: enum HelpControllerType { wxUseNone, wxUseHtmlHelp, wxUseChmHelp }; HelpControllerType m_helpControllerType; wxHelpControllerBase* m_helpController; + + DECLARE_DYNAMIC_CLASS(wxBestHelpController) }; #endif // wxUSE_HELP && wxUSE_MS_HTML_HELP && defined(__WIN95__) && wxUSE_WXHTML_HELP diff --git a/include/wx/msw/helpchm.h b/include/wx/msw/helpchm.h index 4a172009be..776902520c 100644 --- a/include/wx/msw/helpchm.h +++ b/include/wx/msw/helpchm.h @@ -16,23 +16,19 @@ #pragma interface "helpchm.h" #endif -#include "wx/wx.h" - -#if wxUSE_HELP +#if wxUSE_MS_HTML_HELP #include "wx/helpbase.h" -class WXDLLEXPORT wxCHMHelpController: public wxHelpControllerBase +class WXDLLEXPORT wxCHMHelpController : public wxHelpControllerBase { - DECLARE_CLASS(wxCHMHelpController) - public: - wxCHMHelpController() {} - ~wxCHMHelpController() {} - + wxCHMHelpController() { } + virtual ~wxCHMHelpController(); + // Must call this to set the filename virtual bool Initialize(const wxString& file); - + // If file is "", reloads file given in Initialize virtual bool LoadFile(const wxString& file = wxEmptyString); virtual bool DisplayContents(); @@ -44,16 +40,19 @@ public: virtual bool KeywordSearch(const wxString& k); virtual bool Quit(); - inline wxString GetHelpFile() const { return m_helpFile; } - + wxString GetHelpFile() const { return m_helpFile; } + protected: // Append extension if necessary. wxString GetValidFilename(const wxString& file) const; - + protected: wxString m_helpFile; + + DECLARE_CLASS(wxCHMHelpController) }; -#endif // wxUSE_HELP +#endif // wxUSE_MS_HTML_HELP + #endif // _WX_HELPCHM_H_ diff --git a/src/msw/helpchm.cpp b/src/msw/helpchm.cpp index 4a6148671f..88dff23aab 100644 --- a/src/msw/helpchm.cpp +++ b/src/msw/helpchm.cpp @@ -10,73 +10,117 @@ ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ -#pragma implementation "helpchm.h" + #pragma implementation "helpchm.h" #endif // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" #ifdef __BORLANDC__ -#pragma hdrstop + #pragma hdrstop #endif -#ifndef WX_PRECOMP -#include "wx/defs.h" -#endif +#if wxUSE_HELP && wxUSE_MS_HTML_HELP && defined(__WIN95__) #include "wx/filefn.h" - -#if wxUSE_HELP && wxUSE_MS_HTML_HELP && defined(__WIN95__) #include "wx/msw/helpchm.h" #include "wx/dynlib.h" -#ifndef WX_PRECOMP -#include -#endif - -// This is found in the HTML Help Workshop installation, -// along with htmlhelp.lib. -#include - -#include - -#ifdef __WXMSW__ #include "wx/msw/private.h" -#endif -#include +// instead of including htmlhelp.h, duplicate the things from it we need here +enum +{ + HH_DISPLAY_TOPIC, + HH_DISPLAY_TOC, + HH_DISPLAY_INDEX, + HH_DISPLAY_SEARCH, + HH_SET_WIN_TYPE, + HH_GET_WIN_TYPE, + HH_GET_WIN_HANDLE, + HH_ENUM_INFO_TYPE, + HH_SET_INFO_TYPE, + HH_SYNC, + HH_RESERVED1, + HH_RESERVED2, + HH_RESERVED3, + HH_KEYWORD_LOOKUP, + HH_DISPLAY_TEXT_POPUP, + HH_HELP_CONTEXT, + HH_TP_HELP_CONTEXTMENU, + HH_TP_HELP_WM_HELP, + HH_CLOSE_ALL, + HH_ALINK_LOOKUP, + HH_GET_LAST_ERROR, + HH_ENUM_CATEGORY, + HH_ENUM_CATEGORY_IT, + HH_RESET_IT_FILTER, + HH_SET_INCLUSIVE_FILTER, + HH_SET_EXCLUSIVE_FILTER +}; + +struct HH_POPUP +{ + int cbStruct; + HINSTANCE hinst; + UINT idString; + LPCTSTR pszText; + POINT pt; + COLORREF clrForeground; + COLORREF clrBackground; + RECT rcMargins; + LPCTSTR pszFont; +}; + +struct HH_AKLINK +{ + int cbStruct; + BOOL fReserved; + LPCTSTR pszKeywords; + LPCTSTR pszUrl; + LPCTSTR pszMsgText; + LPCTSTR pszMsgTitle; + LPCTSTR pszWindow; + BOOL fIndexOnFail; +}; + +// ---------------------------------------------------------------------------- // utility functions to manage the loading/unloading // of hhctrl.ocx +// ---------------------------------------------------------------------------- + #ifndef UNICODE -typedef HWND ( WINAPI * HTMLHELP )( HWND, LPCSTR, UINT, DWORD ); -#define HTMLHELP_NAME "HtmlHelpA" -#else -typedef HWND ( WINAPI * HTMLHELP )( HWND, LPCWSTR, UINT, DWORD ); -#define HTMLHELP_NAME "HtmlHelpW" + typedef HWND ( WINAPI * HTMLHELP )( HWND, LPCSTR, UINT, DWORD ); + #define HTMLHELP_NAME "HtmlHelpA" +#else // ANSI + typedef HWND ( WINAPI * HTMLHELP )( HWND, LPCWSTR, UINT, DWORD ); + #define HTMLHELP_NAME "HtmlHelpW" #endif + // dll symbol handle static HTMLHELP gs_htmlHelp = 0; +static wxPluginLibrary *gs_libHtmlHelp = NULL; static bool LoadHtmlHelpLibrary() { - wxPluginLibrary *lib = wxPluginManager::LoadLibrary( _T("HHCTRL.OCX"), wxDL_DEFAULT | wxDL_VERBATIM ); + gs_libHtmlHelp = wxPluginManager::LoadLibrary( _T("HHCTRL.OCX"), wxDL_DEFAULT | wxDL_VERBATIM ); - if( !lib->IsLoaded() ) + if( !gs_libHtmlHelp ) { wxLogError(_("MS HTML Help functions are unavailable because the MS HTML Help library is not installed on this machine. Please install it.")); return FALSE; } else { - gs_htmlHelp = (HTMLHELP)lib->GetSymbol( HTMLHELP_NAME ); + gs_htmlHelp = (HTMLHELP)gs_libHtmlHelp->GetSymbol( HTMLHELP_NAME ); if( !gs_htmlHelp ) { wxLogError(_("Failed to initialize MS HTML Help.")); - lib->UnrefLib(); + gs_libHtmlHelp->UnrefLib(); return FALSE ; } } @@ -89,6 +133,8 @@ static void UnloadHtmlHelpLibrary() if( gs_htmlHelp ) { wxPluginManager::UnloadLibrary( _T("HHCTRL.OCX") ); + gs_libHtmlHelp->UnrefLib(); + gs_htmlHelp = 0; } } @@ -126,7 +172,7 @@ bool wxCHMHelpController::DisplayContents() wxString str = GetValidFilename(m_helpFile); - gs_htmlHelp(GetSuitableHWND(), (const wxChar*) str, HH_HELP_FINDER, 0L); + gs_htmlHelp(GetSuitableHWND(), (const wxChar*) str, HH_DISPLAY_TOPIC, 0L); return TRUE; } @@ -228,7 +274,6 @@ bool wxCHMHelpController::KeywordSearch(const wxString& k) bool wxCHMHelpController::Quit() { gs_htmlHelp(GetSuitableHWND(), 0, HH_CLOSE_ALL, 0L); - UnloadHtmlHelpLibrary(); return TRUE; } @@ -249,6 +294,10 @@ wxString wxCHMHelpController::GetValidFilename(const wxString& file) const return fullName; } +wxCHMHelpController::~wxCHMHelpController() +{ + UnloadHtmlHelpLibrary(); +} + #endif // wxUSE_HELP -// vi:sts=4:sw=4:et -- 2.45.2