]> git.saurik.com Git - wxWidgets.git/blame - src/msw/helpwin.cpp
Hopefully fixed library names generated by wx-config for OS/2's PM port.
[wxWidgets.git] / src / msw / helpwin.cpp
CommitLineData
2bda0e17
KB
1/////////////////////////////////////////////////////////////////////////////
2// Name: helpwin.cpp
3// Purpose: Help system: WinHelp implementation
4// Author: Julian Smart
5// Modified by:
6// Created: 04/01/98
7// RCS-ID: $Id$
6c9a19aa 8// Copyright: (c) Julian Smart
59af881e 9// Licence: wxWindows licence
2bda0e17
KB
10/////////////////////////////////////////////////////////////////////////////
11
14f355c2 12#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
2bda0e17
KB
13#pragma implementation "helpwin.h"
14#endif
15
16// For compilers that support precompilation, includes "wx.h".
17#include "wx/wxprec.h"
18
19#ifdef __BORLANDC__
20#pragma hdrstop
21#endif
22
23#ifndef WX_PRECOMP
24#include "wx/defs.h"
25#endif
26
f6bcfd97
BP
27#if wxUSE_HELP
28
29#include "wx/filefn.h"
2bda0e17
KB
30#include "wx/msw/helpwin.h"
31
2bda0e17
KB
32#include <time.h>
33
2049ba38 34#ifdef __WXMSW__
3096bd2f 35#include "wx/msw/private.h"
2bda0e17
KB
36#endif
37
38#include <string.h>
39
f6bcfd97 40static HWND GetSuitableHWND()
2bda0e17 41{
f6bcfd97
BP
42 if (wxTheApp->GetTopWindow())
43 return (HWND) wxTheApp->GetTopWindow()->GetHWND();
44 else
45 return GetDesktopWindow();
2bda0e17
KB
46}
47
f6bcfd97 48IMPLEMENT_DYNAMIC_CLASS(wxWinHelpController, wxHelpControllerBase)
2bda0e17 49
38009d39 50bool wxWinHelpController::Initialize(const wxString& filename)
2bda0e17 51{
f6bcfd97 52 m_helpFile = filename;
59af881e 53 return true;
2bda0e17
KB
54}
55
56bool wxWinHelpController::LoadFile(const wxString& file)
57{
f6bcfd97
BP
58 if (!file.IsEmpty())
59 m_helpFile = file;
59af881e 60 return true;
2bda0e17
KB
61}
62
63bool wxWinHelpController::DisplayContents(void)
64{
59af881e
WS
65 if (m_helpFile.IsEmpty()) return false;
66
f6bcfd97 67 wxString str = GetValidFilename(m_helpFile);
59af881e 68
2bda0e17 69#if defined(__WIN95__)
5100cabf 70 return (WinHelp(GetSuitableHWND(), (const wxChar*) str, HELP_FINDER, 0L) != 0);
2bda0e17 71#else
5100cabf 72 return (WinHelp(GetSuitableHWND(), (const wxChar*) str, HELP_CONTENTS, 0L) != 0);
2bda0e17 73#endif
2bda0e17
KB
74}
75
76bool wxWinHelpController::DisplaySection(int section)
77{
33b64e6f 78 // Use context number
59af881e
WS
79 if (m_helpFile.IsEmpty()) return false;
80
f6bcfd97 81 wxString str = GetValidFilename(m_helpFile);
33b64e6f 82
5100cabf
JS
83 return (WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), (const wxChar*) str, HELP_CONTEXT, (DWORD)section) != 0);
84}
85
86bool wxWinHelpController::DisplayContextPopup(int contextId)
87{
59af881e
WS
88 if (m_helpFile.IsEmpty()) return false;
89
5100cabf
JS
90 wxString str = GetValidFilename(m_helpFile);
91
92 return (WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), (const wxChar*) str, HELP_CONTEXTPOPUP, (DWORD) contextId) != 0);
2bda0e17
KB
93}
94
95bool wxWinHelpController::DisplayBlock(long block)
96{
f6bcfd97 97 DisplaySection(block);
59af881e 98 return true;
2bda0e17
KB
99}
100
69b5cec2
VS
101bool wxWinHelpController::KeywordSearch(const wxString& k,
102 wxHelpSearchMode WXUNUSED(mode))
2bda0e17 103{
59af881e
WS
104 if (m_helpFile.IsEmpty()) return false;
105
f6bcfd97 106 wxString str = GetValidFilename(m_helpFile);
59af881e 107
5100cabf 108 return (WinHelp(GetSuitableHWND(), (const wxChar*) str, HELP_PARTIALKEY, (DWORD)(const wxChar*) k) != 0);
2bda0e17
KB
109}
110
111// Can't close the help window explicitly in WinHelp
112bool wxWinHelpController::Quit(void)
113{
5100cabf 114 return (WinHelp(GetSuitableHWND(), 0, HELP_QUIT, 0L) != 0);
2bda0e17
KB
115}
116
f6bcfd97
BP
117// Append extension if necessary.
118wxString wxWinHelpController::GetValidFilename(const wxString& file) const
2bda0e17 119{
f6bcfd97
BP
120 wxString path, name, ext;
121 wxSplitPath(file, & path, & name, & ext);
122
123 wxString fullName;
124 if (path.IsEmpty())
125 fullName = name + wxT(".hlp");
126 else if (path.Last() == wxT('\\'))
127 fullName = path + name + wxT(".hlp");
128 else
129 fullName = path + wxT("\\") + name + wxT(".hlp");
130 return fullName;
2bda0e17
KB
131}
132
47d67540 133#endif // wxUSE_HELP