]>
git.saurik.com Git - wxWidgets.git/blob - src/msw/helpwin.cpp
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: Help system: WinHelp implementation
4 // Author: Julian Smart
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
12 // For compilers that support precompilation, includes "wx.h".
13 #include "wx/wxprec.h"
25 #include "wx/filefn.h"
26 #include "wx/msw/helpwin.h"
31 #include "wx/msw/private.h"
36 static HWND
GetSuitableHWND(wxWinHelpController
* controller
)
38 if (controller
->GetParentWindow())
39 return (HWND
) controller
->GetParentWindow()->GetHWND();
40 else if (wxTheApp
->GetTopWindow())
41 return (HWND
) wxTheApp
->GetTopWindow()->GetHWND();
43 return GetDesktopWindow();
46 IMPLEMENT_DYNAMIC_CLASS(wxWinHelpController
, wxHelpControllerBase
)
48 bool wxWinHelpController::Initialize(const wxString
& filename
)
50 m_helpFile
= filename
;
54 bool wxWinHelpController::LoadFile(const wxString
& file
)
61 bool wxWinHelpController::DisplayContents(void)
63 if (m_helpFile
.IsEmpty()) return false;
65 wxString str
= GetValidFilename(m_helpFile
);
67 #if defined(__WIN95__)
68 return (WinHelp(GetSuitableHWND(this), (const wxChar
*) str
, HELP_FINDER
, 0L) != 0);
70 return (WinHelp(GetSuitableHWND(this), (const wxChar
*) str
, HELP_CONTENTS
, 0L) != 0);
74 bool wxWinHelpController::DisplaySection(int section
)
77 if (m_helpFile
.IsEmpty()) return false;
79 wxString str
= GetValidFilename(m_helpFile
);
81 return (WinHelp(GetSuitableHWND(this), (const wxChar
*) str
, HELP_CONTEXT
, (DWORD
)section
) != 0);
84 bool wxWinHelpController::DisplayContextPopup(int contextId
)
86 if (m_helpFile
.IsEmpty()) return false;
88 wxString str
= GetValidFilename(m_helpFile
);
90 return (WinHelp(GetSuitableHWND(this), (const wxChar
*) str
, HELP_CONTEXTPOPUP
, (DWORD
) contextId
) != 0);
93 bool wxWinHelpController::DisplayBlock(long block
)
95 DisplaySection(block
);
99 bool wxWinHelpController::KeywordSearch(const wxString
& k
,
100 wxHelpSearchMode
WXUNUSED(mode
))
102 if (m_helpFile
.IsEmpty()) return false;
104 wxString str
= GetValidFilename(m_helpFile
);
106 return (WinHelp(GetSuitableHWND(this), (const wxChar
*) str
, HELP_PARTIALKEY
, (DWORD
)(const wxChar
*) k
) != 0);
109 // Can't close the help window explicitly in WinHelp
110 bool wxWinHelpController::Quit(void)
112 return (WinHelp(GetSuitableHWND(this), 0, HELP_QUIT
, 0L) != 0);
115 // Append extension if necessary.
116 wxString
wxWinHelpController::GetValidFilename(const wxString
& file
) const
118 wxString path
, name
, ext
;
119 wxSplitPath(file
, & path
, & name
, & ext
);
123 fullName
= name
+ wxT(".hlp");
124 else if (path
.Last() == wxT('\\'))
125 fullName
= path
+ name
+ wxT(".hlp");
127 fullName
= path
+ wxT("\\") + name
+ wxT(".hlp");