git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1325 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
149 lines
3.3 KiB
C++
149 lines
3.3 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: helpwin.cpp
|
|
// Purpose: Help system: WinHelp implementation
|
|
// Author: Julian Smart
|
|
// Modified by:
|
|
// Created: 04/01/98
|
|
// RCS-ID: $Id$
|
|
// Copyright: (c) Julian Smart and Markus Holzem
|
|
// Licence: wxWindows license
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifdef __GNUG__
|
|
#pragma implementation "helpwin.h"
|
|
#endif
|
|
|
|
// For compilers that support precompilation, includes "wx.h".
|
|
#include "wx/wxprec.h"
|
|
|
|
#ifdef __BORLANDC__
|
|
#pragma hdrstop
|
|
#endif
|
|
|
|
#ifndef WX_PRECOMP
|
|
#include "wx/defs.h"
|
|
#endif
|
|
|
|
#include "wx/msw/helpwin.h"
|
|
|
|
#if wxUSE_HELP
|
|
#include <time.h>
|
|
|
|
#ifdef __WXMSW__
|
|
#include <wx/msw/private.h>
|
|
#endif
|
|
|
|
#include <string.h>
|
|
|
|
// MAX path length
|
|
#define _MAXPATHLEN 500
|
|
|
|
// MAX length of Help descriptor
|
|
#define _MAX_HELP_LEN 500
|
|
|
|
#if !USE_SHARED_LIBRARY
|
|
IMPLEMENT_DYNAMIC_CLASS(wxWinHelpController, wxHelpControllerBase)
|
|
#endif
|
|
|
|
wxWinHelpController::wxWinHelpController(void)
|
|
{
|
|
m_helpFile = "";
|
|
}
|
|
|
|
wxWinHelpController::~wxWinHelpController(void)
|
|
{
|
|
}
|
|
|
|
bool wxWinHelpController::Initialize(const wxString& filename)
|
|
{
|
|
m_helpFile = filename;
|
|
return TRUE;
|
|
}
|
|
|
|
bool wxWinHelpController::LoadFile(const wxString& file)
|
|
{
|
|
m_helpFile = file;
|
|
return TRUE;
|
|
}
|
|
|
|
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");
|
|
if (wxTheApp->GetTopWindow())
|
|
{
|
|
#if defined(__WIN95__)
|
|
WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), buf, HELP_FINDER, 0L);
|
|
#else
|
|
WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), buf, HELP_CONTENTS, 0L);
|
|
#endif
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
bool wxWinHelpController::DisplaySection(int section)
|
|
{
|
|
// No WinHelp equivalent for this
|
|
return FALSE;
|
|
}
|
|
|
|
bool wxWinHelpController::DisplayBlock(long block)
|
|
{
|
|
// Use context number -- a very rough equivalent to block id!
|
|
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");
|
|
if (wxTheApp->GetTopWindow())
|
|
{
|
|
WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), buf, HELP_CONTEXT, (DWORD)block);
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
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");
|
|
if (wxTheApp->GetTopWindow())
|
|
{
|
|
WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), buf, HELP_PARTIALKEY, (DWORD)(const char*) k);
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
// Can't close the help window explicitly in WinHelp
|
|
bool wxWinHelpController::Quit(void)
|
|
{
|
|
if (wxTheApp->GetTopWindow())
|
|
{
|
|
WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), 0, HELP_QUIT, 0L);
|
|
return TRUE;
|
|
}
|
|
else
|
|
return FALSE;
|
|
}
|
|
|
|
// Don't get notified of WinHelp quitting
|
|
void wxWinHelpController::OnQuit(void)
|
|
{
|
|
}
|
|
|
|
#endif // wxUSE_HELP
|