]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/helpwin.cpp
1. fixed wxStaticBox background erasing (or, rather, restored the old bug)
[wxWidgets.git] / src / msw / helpwin.cpp
index 07d27cdf58e4a4657b0d47061c8fc0f66adbcc43..1a376ba5a6dfb7d5725ceca98b86adfb84e80e6a 100644 (file)
 
 #include "wx/msw/helpwin.h"
 
-#if USE_HELP
+#if wxUSE_HELP
 #include <time.h>
 
-#ifdef __WINDOWS__
-#include <wx/msw/private.h>
+#ifdef __WXMSW__
+#include "wx/msw/private.h"
 #endif
 
 #include <string.h>
@@ -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;
@@ -68,19 +68,19 @@ bool wxWinHelpController::LoadFile(const wxString& file)
 
 bool wxWinHelpController::DisplayContents(void)
 {
-    if (m_helpFile == "") return FALSE;
+    if (m_helpFile == wxT("")) return FALSE;
+
+    wxString str = m_helpFile;
+    size_t len = str.Length();
+    if (!(str[(size_t)(len-1)] == wxT('p') && str[(size_t)(len-2)] == wxT('l') && str[(size_t)(len-3)] == wxT('h') && str[(size_t)(len-4)] == wxT('.')))
+      str += wxT(".hlp");
 
-    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");
     if (wxTheApp->GetTopWindow())
     {
 #if defined(__WIN95__)
-      WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), buf, HELP_FINDER, 0L);
+      WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), (const wxChar*) str, HELP_FINDER, 0L);
 #else
-      WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), buf, HELP_CONTENTS, 0L);
+      WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), (const wxChar*) 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 == wxT("")) return FALSE;
+
+    wxString str = m_helpFile;
+    size_t len = str.Length();
+    if (!(str[(size_t)(len-1)] == wxT('p') && str[(size_t)(len-2)] == wxT('l') && str[(size_t)(len-3)] == wxT('h') && str[(size_t)(len-4)] == wxT('.')))
+      str += wxT(".hlp");
+
+    if (wxTheApp->GetTopWindow())
+       {
+      WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), (const wxChar*) 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 == wxT("")) 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 += wxT(".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 wxChar*) str, HELP_CONTEXT, (DWORD)block);
       return TRUE;
        }
     return FALSE;
@@ -113,16 +125,16 @@ bool wxWinHelpController::DisplayBlock(long block)
 
 bool wxWinHelpController::KeywordSearch(const wxString& k)
 {
-    if (m_helpFile == "") return FALSE;
+    if (m_helpFile == wxT("")) return FALSE;
+
+    wxString str = m_helpFile;
+    size_t len = str.Length();
+    if (!(str[(size_t)(len-1)] == wxT('p') && str[(size_t)(len-2)] == wxT('l') && str[(size_t)(len-3)] == wxT('h') && str[(size_t)(len-4)] == wxT('.')))
+      str += wxT(".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_PARTIALKEY, (DWORD)(const char*) k);
+      WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), (const wxChar*) str, HELP_PARTIALKEY, (DWORD)(const wxChar*) 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