Files
wxWidgets/src/msw/helpwin.cpp
Julian Smart 655719367a Use old licence name
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27408 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-05-23 20:53:33 +00:00

134 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
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#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
#if wxUSE_HELP
#include "wx/filefn.h"
#include "wx/msw/helpwin.h"
#include <time.h>
#ifdef __WXMSW__
#include "wx/msw/private.h"
#endif
#include <string.h>
static HWND GetSuitableHWND()
{
if (wxTheApp->GetTopWindow())
return (HWND) wxTheApp->GetTopWindow()->GetHWND();
else
return GetDesktopWindow();
}
IMPLEMENT_DYNAMIC_CLASS(wxWinHelpController, wxHelpControllerBase)
bool wxWinHelpController::Initialize(const wxString& filename)
{
m_helpFile = filename;
return TRUE;
}
bool wxWinHelpController::LoadFile(const wxString& file)
{
if (!file.IsEmpty())
m_helpFile = file;
return TRUE;
}
bool wxWinHelpController::DisplayContents(void)
{
if (m_helpFile.IsEmpty()) return FALSE;
wxString str = GetValidFilename(m_helpFile);
#if defined(__WIN95__)
return (WinHelp(GetSuitableHWND(), (const wxChar*) str, HELP_FINDER, 0L) != 0);
#else
return (WinHelp(GetSuitableHWND(), (const wxChar*) str, HELP_CONTENTS, 0L) != 0);
#endif
}
bool wxWinHelpController::DisplaySection(int section)
{
// Use context number
if (m_helpFile.IsEmpty()) return FALSE;
wxString str = GetValidFilename(m_helpFile);
return (WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), (const wxChar*) str, HELP_CONTEXT, (DWORD)section) != 0);
}
bool wxWinHelpController::DisplayContextPopup(int contextId)
{
if (m_helpFile.IsEmpty()) return FALSE;
wxString str = GetValidFilename(m_helpFile);
return (WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), (const wxChar*) str, HELP_CONTEXTPOPUP, (DWORD) contextId) != 0);
}
bool wxWinHelpController::DisplayBlock(long block)
{
DisplaySection(block);
return TRUE;
}
bool wxWinHelpController::KeywordSearch(const wxString& k,
wxHelpSearchMode WXUNUSED(mode))
{
if (m_helpFile.IsEmpty()) return FALSE;
wxString str = GetValidFilename(m_helpFile);
return (WinHelp(GetSuitableHWND(), (const wxChar*) str, HELP_PARTIALKEY, (DWORD)(const wxChar*) k) != 0);
}
// Can't close the help window explicitly in WinHelp
bool wxWinHelpController::Quit(void)
{
return (WinHelp(GetSuitableHWND(), 0, HELP_QUIT, 0L) != 0);
}
// Append extension if necessary.
wxString wxWinHelpController::GetValidFilename(const wxString& file) const
{
wxString path, name, ext;
wxSplitPath(file, & path, & name, & ext);
wxString fullName;
if (path.IsEmpty())
fullName = name + wxT(".hlp");
else if (path.Last() == wxT('\\'))
fullName = path + name + wxT(".hlp");
else
fullName = path + wxT("\\") + name + wxT(".hlp");
return fullName;
}
#endif // wxUSE_HELP