X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2bda0e173844e8e0f8acf4e8ad8b5c26e5c6fe5d..34636400a0018eba4a1f63dda18cf32e944b959e:/src/msw/helpwin.cpp diff --git a/src/msw/helpwin.cpp b/src/msw/helpwin.cpp index 07d27cdf58..eb74f4960c 100644 --- a/src/msw/helpwin.cpp +++ b/src/msw/helpwin.cpp @@ -26,10 +26,10 @@ #include "wx/msw/helpwin.h" -#if USE_HELP +#if wxUSE_HELP #include -#ifdef __WINDOWS__ +#ifdef __WXMSW__ #include #endif @@ -54,7 +54,7 @@ wxWinHelpController::~wxWinHelpController(void) { } -bool wxWinHelpController::Initialize(const wxString& filename, int server) +bool wxWinHelpController::Initialize(const wxString& filename) { m_helpFile = filename; return TRUE; @@ -70,17 +70,17 @@ bool wxWinHelpController::DisplayContents(void) { if (m_helpFile == "") return FALSE; - char buf[_MAXPATHLEN]; - strcpy(buf, (const char*) m_helpFile); - size_t len = strlen(buf); - if (!(buf[len-1] == 'p' && buf[len-2] == 'l' && buf[len-3] == 'h' && buf[len-4] == '.')) - strcat(buf, ".hlp"); + wxString str = m_helpFile; + size_t len = str.Length(); + if (!(str[(size_t)(len-1)] == 'p' && str[(size_t)(len-2)] == 'l' && str[(size_t)(len-3)] == 'h' && str[(size_t)(len-4)] == '.')) + str += ".hlp"; + if (wxTheApp->GetTopWindow()) { #if defined(__WIN95__) - WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), buf, HELP_FINDER, 0L); + WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), (const char*) str, HELP_FINDER, 0L); #else - WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), buf, HELP_CONTENTS, 0L); + WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), (const char*) str, HELP_CONTENTS, 0L); #endif return TRUE; } @@ -89,23 +89,35 @@ bool wxWinHelpController::DisplayContents(void) bool wxWinHelpController::DisplaySection(int section) { - // No WinHelp equivalent for this - return FALSE; + // Use context number + if (m_helpFile == "") return FALSE; + + wxString str = m_helpFile; + size_t len = str.Length(); + if (!(str[(size_t)(len-1)] == 'p' && str[(size_t)(len-2)] == 'l' && str[(size_t)(len-3)] == 'h' && str[(size_t)(len-4)] == '.')) + str += ".hlp"; + + if (wxTheApp->GetTopWindow()) + { + WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), (const char*) str, HELP_CONTEXT, (DWORD)section); + return TRUE; + } + return FALSE; } bool wxWinHelpController::DisplayBlock(long block) { // Use context number -- a very rough equivalent to block id! - if (!m_helpFile) return FALSE; + if (m_helpFile == "") return FALSE; + + wxString str = m_helpFile; + size_t len = str.Length(); + if (!(str[(size_t)(len-1)] == 'p' && str[(size_t)(len-2)] == 'l' && str[(size_t)(len-3)] == 'h' && str[(size_t)(len-4)] == '.')) + str += ".hlp"; - char buf[_MAXPATHLEN]; - strcpy(buf, m_helpFile); - size_t len = strlen(buf); - if (!(buf[len-1] == 'p' && buf[len-2] == 'l' && buf[len-3] == 'h' && buf[len-4] == '.')) - strcat(buf, ".hlp"); if (wxTheApp->GetTopWindow()) { - WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), buf, HELP_CONTEXT, (DWORD)block); + WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), (const char*) str, HELP_CONTEXT, (DWORD)block); return TRUE; } return FALSE; @@ -115,14 +127,14 @@ bool wxWinHelpController::KeywordSearch(const wxString& k) { if (m_helpFile == "") return FALSE; - char buf[_MAXPATHLEN]; - strcpy(buf, m_helpFile); - size_t len = strlen(buf); - if (!(buf[len-1] == 'p' && buf[len-2] == 'l' && buf[len-3] == 'h' && buf[len-4] == '.')) - strcat(buf, ".hlp"); + wxString str = m_helpFile; + size_t len = str.Length(); + if (!(str[(size_t)(len-1)] == 'p' && str[(size_t)(len-2)] == 'l' && str[(size_t)(len-3)] == 'h' && str[(size_t)(len-4)] == '.')) + str += ".hlp"; + if (wxTheApp->GetTopWindow()) { - WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), buf, HELP_PARTIALKEY, (DWORD)(const char*) k); + WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), (const char*) str, HELP_PARTIALKEY, (DWORD)(const char*) k); return TRUE; } return FALSE; @@ -131,7 +143,13 @@ bool wxWinHelpController::KeywordSearch(const wxString& k) // Can't close the help window explicitly in WinHelp bool wxWinHelpController::Quit(void) { - return TRUE; + if (wxTheApp->GetTopWindow()) + { + WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), 0, HELP_QUIT, 0L); + return TRUE; + } + else + return FALSE; } // Don't get notified of WinHelp quitting @@ -139,4 +157,4 @@ void wxWinHelpController::OnQuit(void) { } -#endif // USE_HELP +#endif // wxUSE_HELP