1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
// For licensing and usage information, read docs/winui_license.txt
//****************************************************************************
/***************************************************************************
help.c
Help wrapper code.
***************************************************************************/
// standard windows headers
#include <windows.h>
// MAME/MAMEUI headers
#include "help.h"
typedef HWND (WINAPI *HtmlHelpProc)(HWND hwndCaller, LPCSTR pszFile, UINT uCommand, DWORD_PTR dwData);
/***************************************************************************
Internal structures
***************************************************************************/
/***************************************************************************
function prototypes
***************************************************************************/
static void Help_Load(void);
/***************************************************************************
External function prototypes
***************************************************************************/
/***************************************************************************
External variables
***************************************************************************/
/***************************************************************************
Internal variables
***************************************************************************/
static HtmlHelpProc g_pHtmlHelp;
static HMODULE g_hHelpLib;
static DWORD g_dwCookie = 0;
/**************************************************************************
External functions
***************************************************************************/
int HelpInit(void)
{
g_pHtmlHelp = NULL;
g_hHelpLib = NULL;
g_dwCookie = 0;
HelpFunction(NULL, NULL, HH_INITIALIZE, (DWORD_PTR)&g_dwCookie);
return 0;
}
void HelpExit(void)
{
HelpFunction(NULL, NULL, HH_CLOSE_ALL, 0);
HelpFunction(NULL, NULL, HH_UNINITIALIZE, (DWORD_PTR)&g_dwCookie);
g_dwCookie = 0;
g_pHtmlHelp = NULL;
if (g_hHelpLib)
{
FreeLibrary(g_hHelpLib);
g_hHelpLib = NULL;
}
}
HWND HelpFunction(HWND hwndCaller, LPCSTR pszFile, UINT uCommand, DWORD_PTR dwData)
{
if (g_pHtmlHelp == NULL)
Help_Load();
if (g_pHtmlHelp)
return g_pHtmlHelp(hwndCaller, pszFile, uCommand, dwData);
else
return NULL;
}
/***************************************************************************
Internal functions
***************************************************************************/
static void Help_Load(void)
{
g_hHelpLib = LoadLibrary(TEXT("hhctrl.ocx"));
if (g_hHelpLib)
{
FARPROC pProc = NULL;
pProc = GetProcAddress(g_hHelpLib, "HtmlHelpA");
if (pProc)
{
g_pHtmlHelp = (HtmlHelpProc)pProc;
}
else
{
FreeLibrary(g_hHelpLib);
g_hHelpLib = NULL;
}
}
}
|