[WINHLP32]

* Sync with Wine 1.5.26.

svn path=/trunk/; revision=58776
This commit is contained in:
Amine Khaldi 2013-04-18 11:34:29 +00:00
parent 6f32c8afee
commit 39349fee62
10 changed files with 1107 additions and 873 deletions

View file

@ -11,14 +11,11 @@ list(APPEND SOURCE
callback.c
hlpfile.c
macro.c
macro.lex.yy.c
string.c
winhelp.c
lex.yy.c)
add_executable(winhlp32
${SOURCE}
rsrc.rc)
winhelp.c)
add_executable(winhlp32 ${SOURCE} rsrc.rc)
set_module_type(winhlp32 win32gui)
target_link_libraries(winhlp32 wine)
add_importlibs(winhlp32 user32 gdi32 shell32 comctl32 comdlg32 msvcrt kernel32 ntdll)

View file

@ -45,7 +45,7 @@ static HANDLE CALLBACK WHD_Open(LPSTR name, BYTE flags)
case 2: mode = GENERIC_READ; break;
default: WINE_FIXME("Undocumented flags %x\n", flags);
}
return CreateFile(name, mode, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
return CreateFileA(name, mode, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
}

View file

@ -711,7 +711,7 @@ static BOOL HLPFILE_RtfAddText(struct RtfData* rd, const char* str)
}
for (last = p = str; *p; p++)
{
if (*p < 0) /* escape non ASCII chars */
if (*p & 0x80) /* escape non-ASCII chars */
{
static char xx[8];
rlen = sprintf(xx, "\\'%x", *(const BYTE*)p);
@ -901,7 +901,7 @@ static BOOL HLPFILE_RtfAddTransparentBitmap(struct RtfData* rd, const BITMAPINFO
DeleteDC(hdcMem);
/* we create the bitmap on the fly */
hdcEMF = CreateEnhMetaFile(NULL, NULL, NULL, NULL);
hdcEMF = CreateEnhMetaFileW(NULL, NULL, NULL, NULL);
hdcMem = CreateCompatibleDC(hdcEMF);
/* sets to RGB(0,0,0) the transparent bits in final bitmap */
@ -1366,14 +1366,14 @@ static BOOL HLPFILE_BrowseParagraph(HLPFILE_PAGE* page, struct RtfData* rd,
BYTE brdr = *format++;
short w;
if (brdr & 0x01 && !HLPFILE_RtfAddControl(rd, "\\box")) goto done;
if (brdr & 0x02 && !HLPFILE_RtfAddControl(rd, "\\brdrt")) goto done;
if (brdr & 0x04 && !HLPFILE_RtfAddControl(rd, "\\brdrl")) goto done;
if (brdr & 0x08 && !HLPFILE_RtfAddControl(rd, "\\brdrb")) goto done;
if (brdr & 0x10 && !HLPFILE_RtfAddControl(rd, "\\brdrr")) goto done;
if (brdr & 0x20 && !HLPFILE_RtfAddControl(rd, "\\brdrth")) goto done;
if ((brdr & 0x01) && !HLPFILE_RtfAddControl(rd, "\\box")) goto done;
if ((brdr & 0x02) && !HLPFILE_RtfAddControl(rd, "\\brdrt")) goto done;
if ((brdr & 0x04) && !HLPFILE_RtfAddControl(rd, "\\brdrl")) goto done;
if ((brdr & 0x08) && !HLPFILE_RtfAddControl(rd, "\\brdrb")) goto done;
if ((brdr & 0x10) && !HLPFILE_RtfAddControl(rd, "\\brdrr")) goto done;
if ((brdr & 0x20) && !HLPFILE_RtfAddControl(rd, "\\brdrth")) goto done;
if (!(brdr & 0x20) && !HLPFILE_RtfAddControl(rd, "\\brdrs")) goto done;
if (brdr & 0x40 && !HLPFILE_RtfAddControl(rd, "\\brdrdb")) goto done;
if ((brdr & 0x40) && !HLPFILE_RtfAddControl(rd, "\\brdrdb")) goto done;
/* 0x80: unknown */
w = GET_SHORT(format, 0); format += 2;
@ -1526,7 +1526,6 @@ static BOOL HLPFILE_BrowseParagraph(HLPFILE_PAGE* page, struct RtfData* rd,
case 0x88:
{
BYTE type = format[1];
LONG size;
/* FIXME: we don't use 'BYTE pos = (*format - 0x86);' for the image position */
format += 2;
@ -1536,7 +1535,7 @@ static BOOL HLPFILE_BrowseParagraph(HLPFILE_PAGE* page, struct RtfData* rd,
{
case 0x22:
fetch_ushort(&format); /* hot spot */
/* fall thru */
/* fall through */
case 0x03:
switch (GET_SHORT(format, 0))
{
@ -1584,7 +1583,7 @@ static BOOL HLPFILE_BrowseParagraph(HLPFILE_PAGE* page, struct RtfData* rd,
case 0x8C:
if (!HLPFILE_RtfAddControl(rd, "\\_")) goto done;
/* FIXME: it could be that hypen is also in input stream !! */
/* FIXME: it could be that hyphen is also in input stream !! */
format += 1;
rd->char_pos++;
break;
@ -1873,9 +1872,9 @@ static BOOL HLPFILE_ReadFont(HLPFILE* hlpfile)
hlpfile->fonts[i].LogFont.lfEscapement = 0;
hlpfile->fonts[i].LogFont.lfOrientation = 0;
hlpfile->fonts[i].LogFont.lfWeight = (flag & 1) ? 700 : 400;
hlpfile->fonts[i].LogFont.lfItalic = (flag & 2) ? TRUE : FALSE;
hlpfile->fonts[i].LogFont.lfUnderline = (flag & 4) ? TRUE : FALSE;
hlpfile->fonts[i].LogFont.lfStrikeOut = (flag & 8) ? TRUE : FALSE;
hlpfile->fonts[i].LogFont.lfItalic = (flag & 2) != 0;
hlpfile->fonts[i].LogFont.lfUnderline = (flag & 4) != 0;
hlpfile->fonts[i].LogFont.lfStrikeOut = (flag & 8) != 0;
hlpfile->fonts[i].LogFont.lfCharSet = hlpfile->charset;
hlpfile->fonts[i].LogFont.lfOutPrecision = OUT_DEFAULT_PRECIS;
hlpfile->fonts[i].LogFont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
@ -2013,7 +2012,7 @@ static BOOL HLPFILE_SystemCommands(HLPFILE* hlpfile)
hlpfile->lpszTitle = HeapAlloc(GetProcessHeap(), 0, strlen(str) + 1);
if (!hlpfile->lpszTitle) return FALSE;
lstrcpy(hlpfile->lpszTitle, str);
strcpy(hlpfile->lpszTitle, str);
WINE_TRACE("Title: %s\n", hlpfile->lpszTitle);
/* Nothing more to parse */
return TRUE;
@ -2027,7 +2026,7 @@ static BOOL HLPFILE_SystemCommands(HLPFILE* hlpfile)
if (hlpfile->lpszTitle) {WINE_WARN("title\n"); break;}
hlpfile->lpszTitle = HeapAlloc(GetProcessHeap(), 0, strlen(str) + 1);
if (!hlpfile->lpszTitle) return FALSE;
lstrcpy(hlpfile->lpszTitle, str);
strcpy(hlpfile->lpszTitle, str);
WINE_TRACE("Title: %s\n", hlpfile->lpszTitle);
break;
@ -2035,7 +2034,7 @@ static BOOL HLPFILE_SystemCommands(HLPFILE* hlpfile)
if (hlpfile->lpszCopyright) {WINE_WARN("copyright\n"); break;}
hlpfile->lpszCopyright = HeapAlloc(GetProcessHeap(), 0, strlen(str) + 1);
if (!hlpfile->lpszCopyright) return FALSE;
lstrcpy(hlpfile->lpszCopyright, str);
strcpy(hlpfile->lpszCopyright, str);
WINE_TRACE("Copyright: %s\n", hlpfile->lpszCopyright);
break;
@ -2046,10 +2045,10 @@ static BOOL HLPFILE_SystemCommands(HLPFILE* hlpfile)
break;
case 4:
macro = HeapAlloc(GetProcessHeap(), 0, sizeof(HLPFILE_MACRO) + lstrlen(str) + 1);
macro = HeapAlloc(GetProcessHeap(), 0, sizeof(HLPFILE_MACRO) + strlen(str) + 1);
if (!macro) break;
p = (char*)macro + sizeof(HLPFILE_MACRO);
lstrcpy(p, str);
strcpy(p, str);
macro->lpszMacro = p;
macro->next = 0;
for (m = &hlpfile->first_macro; *m; m = &(*m)->next);
@ -2077,9 +2076,9 @@ static BOOL HLPFILE_SystemCommands(HLPFILE* hlpfile)
if (hlpfile->windows)
{
unsigned flags = GET_USHORT(ptr, 4);
HLPFILE_WINDOWINFO* wi = &hlpfile->windows[hlpfile->numWindows - 1];
flags = GET_USHORT(ptr, 4);
if (flags & 0x0001) strcpy(wi->type, &str[2]);
else wi->type[0] = '\0';
if (flags & 0x0002) strcpy(wi->name, &str[12]);
@ -2357,14 +2356,14 @@ static BOOL HLPFILE_Uncompress_Phrases40(HLPFILE* hlpfile)
INT dec_size, cpr_size;
BYTE *buf_idx, *end_idx;
BYTE *buf_phs, *end_phs;
LONG* ptr, mask = 0;
ULONG* ptr, mask = 0;
unsigned int i;
unsigned short bc, n;
if (!HLPFILE_FindSubFile(hlpfile, "|PhrIndex", &buf_idx, &end_idx) ||
!HLPFILE_FindSubFile(hlpfile, "|PhrImage", &buf_phs, &end_phs)) return FALSE;
ptr = (LONG*)(buf_idx + 9 + 28);
ptr = (ULONG*)(buf_idx + 9 + 28);
bc = GET_USHORT(buf_idx, 9 + 24) & 0x0F;
num = hlpfile->num_phrases = GET_USHORT(buf_idx, 9 + 4);
@ -2399,9 +2398,10 @@ static BOOL HLPFILE_Uncompress_Phrases40(HLPFILE* hlpfile)
return FALSE;
}
#define getbit() (ptr += (mask < 0), mask = mask*2 + (mask<=0), (*ptr & mask) != 0)
#define getbit() ((mask <<= 1) ? (*ptr & mask) != 0: (*++ptr & (mask=1)) != 0)
hlpfile->phrases_offsets[0] = 0;
ptr--; /* as we'll first increment ptr because mask is 0 on first getbit() call */
for (i = 0; i < num; i++)
{
for (n = 1; getbit(); n += 1 << bc);
@ -2645,7 +2645,6 @@ static BOOL HLPFILE_DoReadHlpFile(HLPFILE *hlpfile, LPCSTR lpszPath)
if (!HLPFILE_Uncompress_Topic(hlpfile)) return FALSE;
if (!HLPFILE_ReadFont(hlpfile)) return FALSE;
buf = hlpfile->topic_map[0];
old_index = -1;
offs = 0;
do
@ -2733,7 +2732,7 @@ HLPFILE *HLPFILE_ReadHlpFile(LPCSTR lpszPath)
}
hlpfile = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
sizeof(HLPFILE) + lstrlen(lpszPath) + 1);
sizeof(HLPFILE) + strlen(lpszPath) + 1);
if (!hlpfile) return 0;
hlpfile->lpszPath = (char*)hlpfile + sizeof(HLPFILE);

View file

@ -90,7 +90,7 @@ typedef struct
typedef struct
{
LOGFONT LogFont;
LOGFONTA LogFont;
HFONT hFont;
COLORREF color;
} HLPFILE_FONT;

View file

@ -61,7 +61,7 @@ static WINHELP_BUTTON** MACRO_LookupButton(WINHELP_WINDOW* win, LPCSTR na
WINHELP_BUTTON** b;
for (b = &win->first_button; *b; b = &(*b)->next)
if (!lstrcmpi(name, (*b)->lpszID)) break;
if (!lstrcmpiA(name, (*b)->lpszID)) break;
return b;
}
@ -79,7 +79,7 @@ void CALLBACK MACRO_CreateButton(LPCSTR id, LPCSTR name, LPCSTR macro)
WINE_TRACE("(\"%s\", \"%s\", %s)\n", id, name, macro);
size = sizeof(WINHELP_BUTTON) + lstrlen(id) + lstrlen(name) + lstrlen(macro) + 3;
size = sizeof(WINHELP_BUTTON) + strlen(id) + strlen(name) + strlen(macro) + 3;
button = HeapAlloc(GetProcessHeap(), 0, size);
if (!button) return;
@ -89,15 +89,15 @@ void CALLBACK MACRO_CreateButton(LPCSTR id, LPCSTR name, LPCSTR macro)
ptr = (char*)button + sizeof(WINHELP_BUTTON);
lstrcpy(ptr, id);
strcpy(ptr, id);
button->lpszID = ptr;
ptr += lstrlen(id) + 1;
ptr += strlen(id) + 1;
lstrcpy(ptr, name);
strcpy(ptr, name);
button->lpszName = ptr;
ptr += lstrlen(name) + 1;
ptr += strlen(name) + 1;
lstrcpy(ptr, macro);
strcpy(ptr, macro);
button->lpszMacro = ptr;
button->wParam = WH_FIRST_BUTTON;
@ -236,8 +236,8 @@ static void CALLBACK MACRO_ChangeButtonBinding(LPCSTR id, LPCSTR macro)
b = MACRO_LookupButton(win, id);
if (!*b) {WINE_FIXME("Couldn't find button '%s'\n", id); return;}
size = sizeof(WINHELP_BUTTON) + lstrlen(id) +
lstrlen((*b)->lpszName) + lstrlen(macro) + 3;
size = sizeof(WINHELP_BUTTON) + strlen(id) +
strlen((*b)->lpszName) + strlen(macro) + 3;
button = HeapAlloc(GetProcessHeap(), 0, size);
if (!button) return;
@ -248,15 +248,15 @@ static void CALLBACK MACRO_ChangeButtonBinding(LPCSTR id, LPCSTR macro)
ptr = (char*)button + sizeof(WINHELP_BUTTON);
lstrcpy(ptr, id);
strcpy(ptr, id);
button->lpszID = ptr;
ptr += lstrlen(id) + 1;
ptr += strlen(id) + 1;
lstrcpy(ptr, (*b)->lpszName);
strcpy(ptr, (*b)->lpszName);
button->lpszName = ptr;
ptr += lstrlen((*b)->lpszName) + 1;
ptr += strlen((*b)->lpszName) + 1;
lstrcpy(ptr, macro);
strcpy(ptr, macro);
button->lpszMacro = ptr;
*b = button;
@ -291,7 +291,7 @@ static void CALLBACK MACRO_CloseSecondarys(void)
for (win = Globals.win_list; win; win = next)
{
next = win->next;
if (lstrcmpi(win->info->name, "main"))
if (lstrcmpiA(win->info->name, "main"))
WINHELP_ReleaseWindow(win);
}
}
@ -308,7 +308,7 @@ static void CALLBACK MACRO_CloseWindow(LPCSTR lpszWindow)
for (win = Globals.win_list; win; win = next)
{
next = win->next;
if (!lstrcmpi(win->info->name, lpszWindow))
if (!lstrcmpiA(win->info->name, lpszWindow))
WINHELP_ReleaseWindow(win);
}
}
@ -415,7 +415,7 @@ static void CALLBACK MACRO_ExtInsertMenu(LPCSTR str1, LPCSTR str2, LPCSTR str3,
static BOOL CALLBACK MACRO_FileExist(LPCSTR str)
{
WINE_TRACE("(\"%s\")\n", str);
return GetFileAttributes(str) != INVALID_FILE_ATTRIBUTES;
return GetFileAttributesA(str) != INVALID_FILE_ATTRIBUTES;
}
void CALLBACK MACRO_FileOpen(void)
@ -457,7 +457,7 @@ static void CALLBACK MACRO_FocusWindow(LPCSTR lpszWindow)
if (!lpszWindow || !lpszWindow[0]) lpszWindow = "main";
for (win = Globals.win_list; win; win = win->next)
if (!lstrcmpi(win->info->name, lpszWindow))
if (!lstrcmpiA(win->info->name, lpszWindow))
SetFocus(win->hMainWnd);
}
@ -488,7 +488,29 @@ void CALLBACK MACRO_HelpOn(void)
void CALLBACK MACRO_HelpOnTop(void)
{
WINE_FIXME("()\n");
static BOOL on_top = FALSE;
WINHELP_WINDOW *win;
HWND main_wnd = NULL;
HMENU menu;
for (win = Globals.win_list; win; win = win->next)
if (!lstrcmpiA(win->info->name, "main"))
main_wnd = win->hMainWnd;
if (!main_wnd)
{
WINE_ERR("could not find the main window!\n");
return;
}
menu = GetMenu(main_wnd);
on_top = !on_top;
if (on_top) {
CheckMenuItem(menu, MNID_HELP_HELPTOP, MF_BYCOMMAND|MF_CHECKED);
SetWindowPos(main_wnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
} else {
CheckMenuItem(menu, MNID_HELP_HELPTOP, MF_BYCOMMAND|MF_UNCHECKED);
SetWindowPos(main_wnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
}
}
void CALLBACK MACRO_History(void)
@ -497,7 +519,7 @@ void CALLBACK MACRO_History(void)
if (Globals.active_win && !Globals.active_win->hHistoryWnd)
{
HWND hWnd = CreateWindow(HISTORY_WIN_CLASS_NAME, "History", WS_OVERLAPPEDWINDOW,
HWND hWnd = CreateWindowA(HISTORY_WIN_CLASS_NAME, "History", WS_OVERLAPPEDWINDOW,
0, 0, 0, 0, 0, 0, Globals.hInstance, Globals.active_win);
ShowWindow(hWnd, SW_NORMAL);
}
@ -553,11 +575,11 @@ void CALLBACK MACRO_JumpContext(LPCSTR lpszPath, LPCSTR lpszWindow, LONG context
HLPFILE* hlpfile;
WINE_TRACE("(\"%s\", \"%s\", %d)\n", lpszPath, lpszWindow, context);
hlpfile = WINHELP_LookupHelpFile(lpszPath);
/* Some madness: what user calls 'context', hlpfile calls 'map' */
WINHELP_OpenHelpWindow(HLPFILE_PageByMap, hlpfile, context,
WINHELP_GetWindowInfo(hlpfile, lpszWindow),
SW_NORMAL);
if ((hlpfile = WINHELP_LookupHelpFile(lpszPath)))
/* Some madness: what user calls 'context', hlpfile calls 'map' */
WINHELP_OpenHelpWindow(HLPFILE_PageByMap, hlpfile, context,
WINHELP_GetWindowInfo(hlpfile, lpszWindow),
SW_NORMAL);
}
void CALLBACK MACRO_JumpHash(LPCSTR lpszPath, LPCSTR lpszWindow, LONG lHash)
@ -569,9 +591,10 @@ void CALLBACK MACRO_JumpHash(LPCSTR lpszPath, LPCSTR lpszWindow, LONG lHash)
hlpfile = MACRO_CurrentWindow()->page->file;
else
hlpfile = WINHELP_LookupHelpFile(lpszPath);
WINHELP_OpenHelpWindow(HLPFILE_PageByHash, hlpfile, lHash,
WINHELP_GetWindowInfo(hlpfile, lpszWindow),
SW_NORMAL);
if (hlpfile)
WINHELP_OpenHelpWindow(HLPFILE_PageByHash, hlpfile, lHash,
WINHELP_GetWindowInfo(hlpfile, lpszWindow),
SW_NORMAL);
}
static void CALLBACK MACRO_JumpHelpOn(void)
@ -691,7 +714,7 @@ static void CALLBACK MACRO_Prev(void)
void CALLBACK MACRO_Print(void)
{
PRINTDLG printer;
PRINTDLGW printer;
WINE_TRACE("()\n");
@ -715,7 +738,7 @@ void CALLBACK MACRO_Print(void)
printer.hPrintTemplate = 0;
printer.hSetupTemplate = 0;
if (PrintDlgA(&printer)) {
if (PrintDlgW(&printer)) {
WINE_FIXME("Print()\n");
}
}
@ -742,7 +765,7 @@ static void CALLBACK MACRO_RegisterRoutine(LPCSTR dll_name, LPCSTR proc, LPCSTR
}
if (!dll)
{
HANDLE hLib = LoadLibrary(dll_name);
HANDLE hLib = LoadLibraryA(dll_name);
/* FIXME: the library will not be unloaded until exit of program
* We don't send the DW_TERM message
@ -1006,6 +1029,32 @@ int MACRO_Lookup(const char* name, struct lexret* lr)
return ret;
if (MACRO_Loaded && (ret = MACRO_DoLookUp(MACRO_Loaded, name, lr, MACRO_NumLoaded)) != EMPTY)
return ret;
if (!strcmp(name, "hwndApp"))
{
WINHELP_WINDOW* win;
lr->integer = 0;
for (win = Globals.win_list; win; win = win->next)
{
if (!strcmp(win->info->name, "main"))
{
lr->integer = (LONG_PTR)win->hMainWnd;
break;
}
}
return INTEGER;
}
if (!strcmp(name, "hwndContext"))
{
lr->integer = Globals.active_win ?
(LONG_PTR)Globals.active_win->hMainWnd : 0;
return INTEGER;
}
if (!strcmp(name, "qchPath") || !strcmp(name, "qError") || !strcmp(name, "lTopicNo") ||
!strcmp(name, "hfs") || !strcmp(name, "coForeground") || !strcmp(name, "coBackground"))
{
WINE_FIXME("keyword %s not substituted in macro parsing\n", name);
return EMPTY;
}
lr->string = name;
return IDENTIFIER;

View file

@ -20,17 +20,14 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
%}
%option noinput nounput interactive 8bit
%option noinput nounput never-interactive 8bit
%x quote
%{
#include "config.h"
#include <assert.h>
#include <stdarg.h>
#ifndef HAVE_UNISTD_H
#define YY_NO_UNISTD_H
#endif
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"

View file

@ -58,15 +58,15 @@ WINHELP_GLOBALS Globals = {3, NULL, TRUE, NULL, NULL, NULL, NULL, NULL, {{{NULL,
*/
static void WINHELP_InitFonts(HWND hWnd)
{
WINHELP_WINDOW *win = (WINHELP_WINDOW*) GetWindowLongPtr(hWnd, 0);
LOGFONT logfontlist[] = {
{-10, 0, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 32, "Helv"},
{-12, 0, 0, 0, 700, 0, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 32, "Helv"},
{-12, 0, 0, 0, 700, 0, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 32, "Helv"},
{-12, 0, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 32, "Helv"},
{-12, 0, 0, 0, 700, 0, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 32, "Helv"},
{-10, 0, 0, 0, 700, 0, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 32, "Helv"},
{ -8, 0, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 32, "Helv"}};
WINHELP_WINDOW *win = (WINHELP_WINDOW*) GetWindowLongPtrW(hWnd, 0);
LOGFONTW logfontlist[] = {
{-10, 0, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 32, {'H','e','l','v',0}},
{-12, 0, 0, 0, 700, 0, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 32, {'H','e','l','v',0}},
{-12, 0, 0, 0, 700, 0, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 32, {'H','e','l','v',0}},
{-12, 0, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 32, {'H','e','l','v',0}},
{-12, 0, 0, 0, 700, 0, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 32, {'H','e','l','v',0}},
{-10, 0, 0, 0, 700, 0, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 32, {'H','e','l','v',0}},
{ -8, 0, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 32, {'H','e','l','v',0}}};
#define FONTS_LEN (sizeof(logfontlist)/sizeof(*logfontlist))
static HFONT fonts[FONTS_LEN];
@ -81,7 +81,7 @@ static void WINHELP_InitFonts(HWND hWnd)
for (i = 0; i < FONTS_LEN; i++)
{
fonts[i] = CreateFontIndirect(&logfontlist[i]);
fonts[i] = CreateFontIndirectW(&logfontlist[i]);
}
init = 1;
@ -104,12 +104,13 @@ static DWORD CALLBACK WINHELP_RtfStreamIn(DWORD_PTR cookie, BYTE* buff,
static void WINHELP_SetupText(HWND hTextWnd, WINHELP_WINDOW* win, ULONG relative)
{
static const WCHAR emptyW[1];
/* At first clear area - needed by EM_POSFROMCHAR/EM_SETSCROLLPOS */
SendMessage(hTextWnd, WM_SETTEXT, 0, (LPARAM)"");
SendMessage(hTextWnd, WM_SETREDRAW, FALSE, 0);
SendMessage(hTextWnd, EM_SETBKGNDCOLOR, 0, (LPARAM)win->info->sr_color);
SendMessageW(hTextWnd, WM_SETTEXT, 0, (LPARAM)emptyW);
SendMessageW(hTextWnd, WM_SETREDRAW, FALSE, 0);
SendMessageW(hTextWnd, EM_SETBKGNDCOLOR, 0, (LPARAM)win->info->sr_color);
/* set word-wrap to window size (undocumented) */
SendMessage(hTextWnd, EM_SETTARGETDEVICE, 0, 0);
SendMessageW(hTextWnd, EM_SETTARGETDEVICE, 0, 0);
if (win->page)
{
struct RtfData rd;
@ -131,11 +132,11 @@ static void WINHELP_SetupText(HWND hTextWnd, WINHELP_WINDOW* win, ULONG relative
}
/* FIXME: else leaking potentially the rd.first_link chain */
HeapFree(GetProcessHeap(), 0, rd.data);
SendMessage(hTextWnd, EM_POSFROMCHAR, (WPARAM)&ptl, cp ? cp - 1 : 0);
SendMessageW(hTextWnd, EM_POSFROMCHAR, (WPARAM)&ptl, cp ? cp - 1 : 0);
pt.x = 0; pt.y = ptl.y;
SendMessage(hTextWnd, EM_SETSCROLLPOS, 0, (LPARAM)&pt);
SendMessageW(hTextWnd, EM_SETSCROLLPOS, 0, (LPARAM)&pt);
}
SendMessage(hTextWnd, WM_SETREDRAW, TRUE, 0);
SendMessageW(hTextWnd, WM_SETREDRAW, TRUE, 0);
RedrawWindow(hTextWnd, NULL, NULL, RDW_FRAME|RDW_INVALIDATE);
}
@ -145,28 +146,28 @@ static void WINHELP_SetupText(HWND hTextWnd, WINHELP_WINDOW* win, ULONG relative
*/
BOOL WINHELP_GetOpenFileName(LPSTR lpszFile, int len)
{
OPENFILENAME openfilename;
OPENFILENAMEA openfilename;
CHAR szDir[MAX_PATH];
CHAR szzFilter[2 * MAX_STRING_LEN + 100];
LPSTR p = szzFilter;
WINE_TRACE("()\n");
LoadString(Globals.hInstance, STID_HELP_FILES_HLP, p, MAX_STRING_LEN);
LoadStringA(Globals.hInstance, STID_HELP_FILES_HLP, p, MAX_STRING_LEN);
p += strlen(p) + 1;
lstrcpy(p, "*.hlp");
strcpy(p, "*.hlp");
p += strlen(p) + 1;
LoadString(Globals.hInstance, STID_ALL_FILES, p, MAX_STRING_LEN);
LoadStringA(Globals.hInstance, STID_ALL_FILES, p, MAX_STRING_LEN);
p += strlen(p) + 1;
lstrcpy(p, "*.*");
strcpy(p, "*.*");
p += strlen(p) + 1;
*p = '\0';
GetCurrentDirectory(sizeof(szDir), szDir);
GetCurrentDirectoryA(sizeof(szDir), szDir);
lpszFile[0]='\0';
openfilename.lStructSize = sizeof(OPENFILENAME);
openfilename.lStructSize = sizeof(openfilename);
openfilename.hwndOwner = (Globals.active_win ? Globals.active_win->hMainWnd : 0);
openfilename.hInstance = Globals.hInstance;
openfilename.lpstrFilter = szzFilter;
@ -187,7 +188,7 @@ BOOL WINHELP_GetOpenFileName(LPSTR lpszFile, int len)
openfilename.lpfnHook = 0;
openfilename.lpTemplateName = 0;
return GetOpenFileName(&openfilename);
return GetOpenFileNameA(&openfilename);
}
/***********************************************************************
@ -199,10 +200,10 @@ static INT WINHELP_MessageBoxIDS_s(UINT ids_text, LPCSTR str, UINT ids_title, WO
CHAR text[MAX_STRING_LEN];
CHAR newtext[MAX_STRING_LEN + MAX_PATH];
LoadString(Globals.hInstance, ids_text, text, sizeof(text));
wsprintf(newtext, text, str);
LoadStringA(Globals.hInstance, ids_text, text, sizeof(text));
wsprintfA(newtext, text, str);
return MessageBox(0, newtext, MAKEINTRESOURCE(ids_title), type);
return MessageBoxA(0, newtext, MAKEINTRESOURCEA(ids_title), type);
}
/***********************************************************************
@ -230,8 +231,8 @@ HLPFILE* WINHELP_LookupHelpFile(LPCSTR lpszFile)
/*
* FIXME: Should we swap conditions?
*/
if (!SearchPath(NULL, lpszFile, ".hlp", MAX_PATH, szFullName, NULL) &&
!SearchPath(szAddPath, lpszFile, ".hlp", MAX_PATH, szFullName, NULL))
if (!SearchPathA(NULL, lpszFile, ".hlp", MAX_PATH, szFullName, NULL) &&
!SearchPathA(szAddPath, lpszFile, ".hlp", MAX_PATH, szFullName, NULL))
{
if (WINHELP_MessageBoxIDS_s(STID_FILE_NOT_FOUND_s, lpszFile, STID_WHERROR,
MB_YESNO|MB_ICONQUESTION) != IDYES)
@ -261,7 +262,7 @@ HLPFILE_WINDOWINFO* WINHELP_GetWindowInfo(HLPFILE* hlpfile, LPCSTR name)
if (hlpfile)
for (i = 0; i < hlpfile->numWindows; i++)
if (!lstrcmpi(hlpfile->windows[i].name, name))
if (!lstrcmpiA(hlpfile->windows[i].name, name))
return &hlpfile->windows[i];
if (strcmp(name, "main") != 0)
@ -277,12 +278,12 @@ HLPFILE_WINDOWINFO* WINHELP_GetWindowInfo(HLPFILE* hlpfile, LPCSTR name)
if (hlpfile && hlpfile->lpszTitle[0])
{
char tmp[128];
LoadString(Globals.hInstance, STID_WINE_HELP, tmp, sizeof(tmp));
LoadStringA(Globals.hInstance, STID_WINE_HELP, tmp, sizeof(tmp));
snprintf(mwi.caption, sizeof(mwi.caption), "%s %s - %s",
hlpfile->lpszTitle, tmp, hlpfile->lpszPath);
}
else
LoadString(Globals.hInstance, STID_WINE_HELP, mwi.caption, sizeof(mwi.caption));
LoadStringA(Globals.hInstance, STID_WINE_HELP, mwi.caption, sizeof(mwi.caption));
mwi.origin.x = mwi.origin.y = mwi.size.cx = mwi.size.cy = CW_USEDEFAULT;
mwi.style = SW_SHOW;
mwi.win_style = WS_OVERLAPPEDWINDOW;
@ -551,7 +552,7 @@ static void WINHELP_DeleteWindow(WINHELP_WINDOW* win)
break;
}
}
bExit = (Globals.wVersion >= 4 && !lstrcmpi(win->info->name, "main"));
bExit = (Globals.wVersion >= 4 && !lstrcmpiA(win->info->name, "main"));
if (Globals.active_win == win)
{
@ -564,8 +565,7 @@ static void WINHELP_DeleteWindow(WINHELP_WINDOW* win)
Globals.active_popup = NULL;
hTextWnd = GetDlgItem(win->hMainWnd, CTL_ID_TEXT);
SetWindowLongPtr(hTextWnd, GWLP_WNDPROC,
(LONG_PTR)win->origRicheditWndProc);
SetWindowLongPtrA(hTextWnd, GWLP_WNDPROC, (LONG_PTR)win->origRicheditWndProc);
WINHELP_DeleteButtons(win);
@ -671,7 +671,7 @@ static HLPFILE_LINK* WINHELP_FindLink(WINHELP_WINDOW* win, LPARAM pos)
static LRESULT CALLBACK WINHELP_RicheditWndProc(HWND hWnd, UINT msg,
WPARAM wParam, LPARAM lParam)
{
WINHELP_WINDOW *win = (WINHELP_WINDOW*) GetWindowLongPtr(GetParent(hWnd), 0);
WINHELP_WINDOW *win = (WINHELP_WINDOW*) GetWindowLongPtrW(GetParent(hWnd), 0);
DWORD messagePos;
POINT pt;
switch(msg)
@ -703,14 +703,14 @@ BOOL WINHELP_CreateHelpWindow(WINHELP_WNDPAGE* wpage, int nCmdShow, BOOL remembe
HICON hIcon;
HWND hTextWnd = NULL;
bPrimary = !lstrcmpi(wpage->wininfo->name, "main");
bPrimary = !lstrcmpiA(wpage->wininfo->name, "main");
bPopup = !bPrimary && (wpage->wininfo->win_style & WS_POPUP);
if (!bPopup)
{
for (win = Globals.win_list; win; win = win->next)
{
if (!lstrcmpi(win->info->name, wpage->wininfo->name))
if (!lstrcmpiA(win->info->name, wpage->wininfo->name))
{
if (win->page == wpage->page && win->info == wpage->wininfo)
{
@ -722,7 +722,7 @@ BOOL WINHELP_CreateHelpWindow(WINHELP_WNDPAGE* wpage, int nCmdShow, BOOL remembe
}
WINHELP_DeleteButtons(win);
bReUsed = TRUE;
SetWindowText(win->hMainWnd, WINHELP_GetCaption(wpage));
SetWindowTextA(win->hMainWnd, WINHELP_GetCaption(wpage));
if (win->info != wpage->wininfo)
{
POINT pt = {0, 0};
@ -793,43 +793,43 @@ BOOL WINHELP_CreateHelpWindow(WINHELP_WNDPAGE* wpage, int nCmdShow, BOOL remembe
{
CHAR buffer[MAX_STRING_LEN];
LoadString(Globals.hInstance, STID_CONTENTS, buffer, sizeof(buffer));
LoadStringA(Globals.hInstance, STID_CONTENTS, buffer, sizeof(buffer));
MACRO_CreateButton("BTN_CONTENTS", buffer, "Contents()");
LoadString(Globals.hInstance, STID_INDEX, buffer, sizeof(buffer));
LoadStringA(Globals.hInstance, STID_INDEX, buffer, sizeof(buffer));
MACRO_CreateButton("BTN_INDEX", buffer, "Finder()");
LoadString(Globals.hInstance, STID_BACK, buffer, sizeof(buffer));
LoadStringA(Globals.hInstance, STID_BACK, buffer, sizeof(buffer));
MACRO_CreateButton("BTN_BACK", buffer, "Back()");
if (win->back.index <= 1) MACRO_DisableButton("BTN_BACK");
}
if (!bReUsed)
{
win->hMainWnd = CreateWindowEx((bPopup) ? WS_EX_TOOLWINDOW : 0, MAIN_WIN_CLASS_NAME,
win->hMainWnd = CreateWindowExA((bPopup) ? WS_EX_TOOLWINDOW : 0, MAIN_WIN_CLASS_NAME,
WINHELP_GetCaption(wpage),
bPrimary ? WS_OVERLAPPEDWINDOW : wpage->wininfo->win_style,
wpage->wininfo->origin.x, wpage->wininfo->origin.y,
wpage->wininfo->size.cx, wpage->wininfo->size.cy,
bPopup ? Globals.active_win->hMainWnd : NULL,
bPrimary ? LoadMenu(Globals.hInstance, MAKEINTRESOURCE(MAIN_MENU)) : 0,
bPrimary ? LoadMenuW(Globals.hInstance, MAKEINTRESOURCEW(MAIN_MENU)) : 0,
Globals.hInstance, win);
if (!bPopup)
/* Create button box and text Window */
CreateWindow(BUTTON_BOX_WIN_CLASS_NAME, "", WS_CHILD | WS_VISIBLE,
CreateWindowA(BUTTON_BOX_WIN_CLASS_NAME, "", WS_CHILD | WS_VISIBLE,
0, 0, 0, 0, win->hMainWnd, (HMENU)CTL_ID_BUTTON, Globals.hInstance, NULL);
hTextWnd = CreateWindow(RICHEDIT_CLASS, NULL,
hTextWnd = CreateWindowA(RICHEDIT_CLASS20A, NULL,
ES_MULTILINE | ES_READONLY | WS_CHILD | WS_HSCROLL | WS_VSCROLL | WS_VISIBLE,
0, 0, 0, 0, win->hMainWnd, (HMENU)CTL_ID_TEXT, Globals.hInstance, NULL);
SendMessage(hTextWnd, EM_SETEVENTMASK, 0,
SendMessage(hTextWnd, EM_GETEVENTMASK, 0, 0) | ENM_MOUSEEVENTS);
win->origRicheditWndProc = (WNDPROC)SetWindowLongPtr(hTextWnd, GWLP_WNDPROC,
SendMessageW(hTextWnd, EM_SETEVENTMASK, 0,
SendMessageW(hTextWnd, EM_GETEVENTMASK, 0, 0) | ENM_MOUSEEVENTS);
win->origRicheditWndProc = (WNDPROC)SetWindowLongPtrA(hTextWnd, GWLP_WNDPROC,
(LONG_PTR)WINHELP_RicheditWndProc);
}
hIcon = (wpage->page) ? wpage->page->file->hIcon : NULL;
if (!hIcon) hIcon = LoadImage(Globals.hInstance, MAKEINTRESOURCE(IDI_WINHELP), IMAGE_ICON,
if (!hIcon) hIcon = LoadImageW(Globals.hInstance, MAKEINTRESOURCEW(IDI_WINHELP), IMAGE_ICON,
GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED);
SendMessage(win->hMainWnd, WM_SETICON, ICON_SMALL, (DWORD_PTR)hIcon);
SendMessageW(win->hMainWnd, WM_SETICON, ICON_SMALL, (DWORD_PTR)hIcon);
/* Initialize file specific pushbuttons */
if (!(wpage->wininfo->win_style & WS_POPUP) && wpage->page)
@ -846,22 +846,22 @@ BOOL WINHELP_CreateHelpWindow(WINHELP_WNDPAGE* wpage, int nCmdShow, BOOL remembe
*/
for (win = Globals.win_list; win; win = win->next)
{
if (!lstrcmpi(win->info->name, wpage->wininfo->name)) break;
if (!lstrcmpiA(win->info->name, wpage->wininfo->name)) break;
}
if (!win || !WINHELP_ReleaseWindow(win)) return TRUE;
if (bPopup)
{
DWORD mask = SendMessage(hTextWnd, EM_GETEVENTMASK, 0, 0);
DWORD mask = SendMessageW(hTextWnd, EM_GETEVENTMASK, 0, 0);
win->font_scale = Globals.active_win->font_scale;
WINHELP_SetupText(hTextWnd, win, wpage->relative);
/* we need the window to be shown for richedit to compute the size */
ShowWindow(win->hMainWnd, nCmdShow);
SendMessage(hTextWnd, EM_SETEVENTMASK, 0, mask | ENM_REQUESTRESIZE);
SendMessage(hTextWnd, EM_REQUESTRESIZE, 0, 0);
SendMessage(hTextWnd, EM_SETEVENTMASK, 0, mask);
SendMessageW(hTextWnd, EM_SETEVENTMASK, 0, mask | ENM_REQUESTRESIZE);
SendMessageW(hTextWnd, EM_REQUESTRESIZE, 0, 0);
SendMessageW(hTextWnd, EM_SETEVENTMASK, 0, mask);
}
else
{
@ -1009,11 +1009,11 @@ static LRESULT CALLBACK WINHELP_ButtonWndProc(HWND hWnd, UINT msg, WPARAM wParam
case VK_PRIOR:
case VK_NEXT:
case VK_ESCAPE:
return SendMessage(GetParent(hWnd), msg, wParam, lParam);
return SendMessageA(GetParent(hWnd), msg, wParam, lParam);
}
}
return CallWindowProc(Globals.button_proc, hWnd, msg, wParam, lParam);
return CallWindowProcA(Globals.button_proc, hWnd, msg, wParam, lParam);
}
/***********************************************************************
@ -1034,7 +1034,7 @@ static LRESULT CALLBACK WINHELP_ButtonBoxWndProc(HWND hWnd, UINT msg, WPARAM wPa
{
case WM_WINDOWPOSCHANGING:
winpos = (WINDOWPOS*) lParam;
win = (WINHELP_WINDOW*) GetWindowLongPtr(GetParent(hWnd), 0);
win = (WINHELP_WINDOW*) GetWindowLongPtrW(GetParent(hWnd), 0);
/* Update buttons */
button_size.cx = 0;
@ -1045,7 +1045,7 @@ static LRESULT CALLBACK WINHELP_ButtonBoxWndProc(HWND hWnd, UINT msg, WPARAM wPa
SIZE textsize;
if (!button->hWnd)
{
button->hWnd = CreateWindow(STRING_BUTTON, button->lpszName,
button->hWnd = CreateWindowA(STRING_BUTTON, button->lpszName,
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
0, 0, 0, 0,
hWnd, (HMENU) button->wParam,
@ -1055,21 +1055,20 @@ static LRESULT CALLBACK WINHELP_ButtonBoxWndProc(HWND hWnd, UINT msg, WPARAM wPa
if (Globals.button_proc == NULL)
{
NONCLIENTMETRICSW ncm;
Globals.button_proc = (WNDPROC) GetWindowLongPtr(button->hWnd, GWLP_WNDPROC);
Globals.button_proc = (WNDPROC) GetWindowLongPtrA(button->hWnd, GWLP_WNDPROC);
ncm.cbSize = sizeof(NONCLIENTMETRICSW);
SystemParametersInfoW(SPI_GETNONCLIENTMETRICS,
sizeof(NONCLIENTMETRICSW), &ncm, 0);
Globals.hButtonFont = CreateFontIndirectW(&ncm.lfMenuFont);
}
SetWindowLongPtr(button->hWnd, GWLP_WNDPROC, (LONG_PTR) WINHELP_ButtonWndProc);
SetWindowLongPtrA(button->hWnd, GWLP_WNDPROC, (LONG_PTR) WINHELP_ButtonWndProc);
if (Globals.hButtonFont)
SendMessage(button->hWnd, WM_SETFONT, (WPARAM)Globals.hButtonFont, TRUE);
SendMessageW(button->hWnd, WM_SETFONT, (WPARAM)Globals.hButtonFont, TRUE);
}
}
hDc = GetDC(button->hWnd);
GetTextExtentPoint(hDc, button->lpszName,
lstrlen(button->lpszName), &textsize);
GetTextExtentPointA(hDc, button->lpszName, strlen(button->lpszName), &textsize);
ReleaseDC(button->hWnd, hDc);
button_size.cx = max(button_size.cx, textsize.cx + BUTTON_CX);
@ -1091,7 +1090,7 @@ static LRESULT CALLBACK WINHELP_ButtonBoxWndProc(HWND hWnd, UINT msg, WPARAM wPa
break;
case WM_COMMAND:
SendMessage(GetParent(hWnd), msg, wParam, lParam);
SendMessageW(GetParent(hWnd), msg, wParam, lParam);
break;
case WM_KEYDOWN:
@ -1102,12 +1101,12 @@ static LRESULT CALLBACK WINHELP_ButtonBoxWndProc(HWND hWnd, UINT msg, WPARAM wPa
case VK_PRIOR:
case VK_NEXT:
case VK_ESCAPE:
return SendMessage(GetParent(hWnd), msg, wParam, lParam);
return SendMessageA(GetParent(hWnd), msg, wParam, lParam);
}
break;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
return DefWindowProcA(hWnd, msg, wParam, lParam);
}
/******************************************************************
@ -1120,26 +1119,26 @@ static LRESULT CALLBACK WINHELP_HistoryWndProc(HWND hWnd, UINT msg, WPARAM wPara
WINHELP_WINDOW* win;
PAINTSTRUCT ps;
HDC hDc;
TEXTMETRIC tm;
TEXTMETRICW tm;
unsigned int i;
RECT r;
switch (msg)
{
case WM_NCCREATE:
win = (WINHELP_WINDOW*)((LPCREATESTRUCT)lParam)->lpCreateParams;
SetWindowLongPtr(hWnd, 0, (ULONG_PTR)win);
win = (WINHELP_WINDOW*)((LPCREATESTRUCTA)lParam)->lpCreateParams;
SetWindowLongPtrW(hWnd, 0, (ULONG_PTR)win);
win->hHistoryWnd = hWnd;
break;
case WM_CREATE:
win = (WINHELP_WINDOW*) GetWindowLongPtr(hWnd, 0);
win = (WINHELP_WINDOW*) GetWindowLongPtrW(hWnd, 0);
hDc = GetDC(hWnd);
GetTextMetrics(hDc, &tm);
GetTextMetricsW(hDc, &tm);
GetWindowRect(hWnd, &r);
r.right = r.left + 30 * tm.tmAveCharWidth;
r.bottom = r.top + (sizeof(Globals.history.set) / sizeof(Globals.history.set[0])) * tm.tmHeight;
AdjustWindowRect(&r, GetWindowLong(hWnd, GWL_STYLE), FALSE);
AdjustWindowRect(&r, GetWindowLongW(hWnd, GWL_STYLE), FALSE);
if (r.left < 0) {r.right -= r.left; r.left = 0;}
if (r.top < 0) {r.bottom -= r.top; r.top = 0;}
@ -1147,9 +1146,9 @@ static LRESULT CALLBACK WINHELP_HistoryWndProc(HWND hWnd, UINT msg, WPARAM wPara
ReleaseDC(hWnd, hDc);
break;
case WM_LBUTTONDOWN:
win = (WINHELP_WINDOW*) GetWindowLongPtr(hWnd, 0);
win = (WINHELP_WINDOW*) GetWindowLongPtrW(hWnd, 0);
hDc = GetDC(hWnd);
GetTextMetrics(hDc, &tm);
GetTextMetricsW(hDc, &tm);
i = HIWORD(lParam) / tm.tmHeight;
if (i < Globals.history.index)
WINHELP_CreateHelpWindow(&Globals.history.set[i], SW_SHOW, TRUE);
@ -1157,14 +1156,14 @@ static LRESULT CALLBACK WINHELP_HistoryWndProc(HWND hWnd, UINT msg, WPARAM wPara
break;
case WM_PAINT:
hDc = BeginPaint(hWnd, &ps);
win = (WINHELP_WINDOW*) GetWindowLongPtr(hWnd, 0);
GetTextMetrics(hDc, &tm);
win = (WINHELP_WINDOW*) GetWindowLongPtrW(hWnd, 0);
GetTextMetricsW(hDc, &tm);
for (i = 0; i < Globals.history.index; i++)
{
if (Globals.history.set[i].page->file == Globals.active_win->page->file)
{
TextOut(hDc, 0, i * tm.tmHeight,
TextOutA(hDc, 0, i * tm.tmHeight,
Globals.history.set[i].page->lpszTitle,
strlen(Globals.history.set[i].page->lpszTitle));
}
@ -1183,20 +1182,19 @@ static LRESULT CALLBACK WINHELP_HistoryWndProc(HWND hWnd, UINT msg, WPARAM wPara
if (len > sizeof(buffer)) len = sizeof(buffer);
memcpy(buffer, ptr1, len);
if (len < sizeof(buffer)) buffer[len++] = ':';
strncpy(&buffer[len], Globals.history.set[i].page->lpszTitle, sizeof(buffer) - len);
buffer[sizeof(buffer) - 1] = '\0';
TextOut(hDc, 0, i * tm.tmHeight, buffer, strlen(buffer));
lstrcpynA(&buffer[len], Globals.history.set[i].page->lpszTitle, sizeof(buffer) - len);
TextOutA(hDc, 0, i * tm.tmHeight, buffer, strlen(buffer));
}
}
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
win = (WINHELP_WINDOW*) GetWindowLongPtr(hWnd, 0);
win = (WINHELP_WINDOW*) GetWindowLongPtrW(hWnd, 0);
if (hWnd == win->hHistoryWnd)
win->hHistoryWnd = 0;
break;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
return DefWindowProcA(hWnd, msg, wParam, lParam);
}
/**************************************************************************
@ -1211,9 +1209,9 @@ static void cb_KWBTree(void *p, void **next, void *cookie)
int count;
WINE_TRACE("Adding '%s' to search list\n", (char *)p);
SendMessage(hListWnd, LB_INSERTSTRING, -1, (LPARAM)p);
count = SendMessage(hListWnd, LB_GETCOUNT, 0, 0);
SendMessage(hListWnd, LB_SETITEMDATA, count-1, (LPARAM)p);
SendMessageA(hListWnd, LB_INSERTSTRING, -1, (LPARAM)p);
count = SendMessageW(hListWnd, LB_GETCOUNT, 0, 0);
SendMessageW(hListWnd, LB_SETITEMDATA, count-1, (LPARAM)p);
*next = (char*)p + strlen((char*)p) + 7;
}
@ -1236,7 +1234,7 @@ static INT_PTR CALLBACK WINHELP_IndexDlgProc(HWND hWnd, UINT msg, WPARAM wParam,
switch (msg)
{
case WM_INITDIALOG:
id = (struct index_data*)((PROPSHEETPAGE*)lParam)->lParam;
id = (struct index_data*)((PROPSHEETPAGEA*)lParam)->lParam;
HLPFILE_BPTreeEnum(id->hlpfile->kwbtree, cb_KWBTree,
GetDlgItem(hWnd, IDC_INDEXLIST));
id->jump = FALSE;
@ -1247,7 +1245,7 @@ static INT_PTR CALLBACK WINHELP_IndexDlgProc(HWND hWnd, UINT msg, WPARAM wParam,
{
case LBN_DBLCLK:
if (LOWORD(wParam) == IDC_INDEXLIST)
SendMessage(GetParent(hWnd), PSM_PRESSBUTTON, PSBTN_OK, 0);
SendMessageW(GetParent(hWnd), PSM_PRESSBUTTON, PSBTN_OK, 0);
break;
}
break;
@ -1255,31 +1253,30 @@ static INT_PTR CALLBACK WINHELP_IndexDlgProc(HWND hWnd, UINT msg, WPARAM wParam,
switch (((NMHDR*)lParam)->code)
{
case PSN_APPLY:
sel = SendDlgItemMessage(hWnd, IDC_INDEXLIST, LB_GETCURSEL, 0, 0);
sel = SendDlgItemMessageW(hWnd, IDC_INDEXLIST, LB_GETCURSEL, 0, 0);
if (sel != LB_ERR)
{
BYTE *p;
int count;
p = (BYTE*)SendDlgItemMessage(hWnd, IDC_INDEXLIST,
LB_GETITEMDATA, sel, 0);
p = (BYTE*)SendDlgItemMessageW(hWnd, IDC_INDEXLIST, LB_GETITEMDATA, sel, 0);
count = *(short*)((char *)p + strlen((char *)p) + 1);
if (count > 1)
{
MessageBox(hWnd, "count > 1 not supported yet", "Error", MB_OK | MB_ICONSTOP);
SetWindowLongPtr(hWnd, DWLP_MSGRESULT, PSNRET_INVALID);
MessageBoxA(hWnd, "count > 1 not supported yet", "Error", MB_OK | MB_ICONSTOP);
SetWindowLongPtrW(hWnd, DWLP_MSGRESULT, PSNRET_INVALID);
return TRUE;
}
id->offset = *(ULONG*)((char *)p + strlen((char *)p) + 3);
id->offset = *(long*)(id->hlpfile->kwdata + id->offset + 9);
if (id->offset == 0xFFFFFFFF)
{
MessageBox(hWnd, "macro keywords not supported yet", "Error", MB_OK | MB_ICONSTOP);
SetWindowLongPtr(hWnd, DWLP_MSGRESULT, PSNRET_INVALID);
MessageBoxA(hWnd, "macro keywords not supported yet", "Error", MB_OK | MB_ICONSTOP);
SetWindowLongPtrW(hWnd, DWLP_MSGRESULT, PSNRET_INVALID);
return TRUE;
}
id->jump = TRUE;
SetWindowLongPtr(hWnd, DWLP_MSGRESULT, PSNRET_NOERROR);
SetWindowLongPtrW(hWnd, DWLP_MSGRESULT, PSNRET_NOERROR);
}
return TRUE;
default:
@ -1306,7 +1303,7 @@ static INT_PTR CALLBACK WINHELP_SearchDlgProc(HWND hWnd, UINT msg, WPARAM wParam
switch (((NMHDR*)lParam)->code)
{
case PSN_APPLY:
SetWindowLongPtr(hWnd, DWLP_MSGRESULT, PSNRET_NOERROR);
SetWindowLongPtrW(hWnd, DWLP_MSGRESULT, PSNRET_NOERROR);
return TRUE;
default:
return FALSE;
@ -1334,20 +1331,20 @@ static LRESULT CALLBACK WINHELP_MainWndProc(HWND hWnd, UINT msg, WPARAM wParam,
switch (msg)
{
case WM_NCCREATE:
win = (WINHELP_WINDOW*) ((LPCREATESTRUCT) lParam)->lpCreateParams;
SetWindowLongPtr(hWnd, 0, (ULONG_PTR) win);
win = (WINHELP_WINDOW*) ((LPCREATESTRUCTA) lParam)->lpCreateParams;
SetWindowLongPtrW(hWnd, 0, (ULONG_PTR) win);
if (!win->page && Globals.isBook)
PostMessage(hWnd, WM_COMMAND, MNID_FILE_OPEN, 0);
PostMessageW(hWnd, WM_COMMAND, MNID_FILE_OPEN, 0);
win->hMainWnd = hWnd;
break;
case WM_WINDOWPOSCHANGED:
WINHELP_LayoutMainWindow((WINHELP_WINDOW*) GetWindowLongPtr(hWnd, 0));
WINHELP_LayoutMainWindow((WINHELP_WINDOW*) GetWindowLongPtrW(hWnd, 0));
break;
case WM_COMMAND:
win = (WINHELP_WINDOW*) GetWindowLongPtr(hWnd, 0);
switch (wParam)
win = (WINHELP_WINDOW*) GetWindowLongPtrW(hWnd, 0);
switch (LOWORD(wParam))
{
/* Menu FILE */
case MNID_FILE_OPEN: MACRO_FileOpen(); break;
@ -1357,7 +1354,7 @@ static LRESULT CALLBACK WINHELP_MainWndProc(HWND hWnd, UINT msg, WPARAM wParam,
/* Menu EDIT */
case MNID_EDIT_COPYDLG:
SendMessage(GetDlgItem(hWnd, CTL_ID_TEXT), WM_COPY, 0, 0);
SendDlgItemMessageW(hWnd, CTL_ID_TEXT, WM_COPY, 0, 0);
break;
case MNID_EDIT_ANNOTATE:MACRO_Annotate(); break;
@ -1376,7 +1373,7 @@ static LRESULT CALLBACK WINHELP_MainWndProc(HWND hWnd, UINT msg, WPARAM wParam,
case MNID_OPTS_HISTORY: MACRO_History(); break;
case MNID_OPTS_FONTS_SMALL:
case MNID_CTXT_FONTS_SMALL:
win = (WINHELP_WINDOW*) GetWindowLongPtr(hWnd, 0);
win = (WINHELP_WINDOW*) GetWindowLongPtrW(hWnd, 0);
if (win->font_scale != 0)
{
win->font_scale = 0;
@ -1385,7 +1382,7 @@ static LRESULT CALLBACK WINHELP_MainWndProc(HWND hWnd, UINT msg, WPARAM wParam,
break;
case MNID_OPTS_FONTS_NORMAL:
case MNID_CTXT_FONTS_NORMAL:
win = (WINHELP_WINDOW*) GetWindowLongPtr(hWnd, 0);
win = (WINHELP_WINDOW*) GetWindowLongPtrW(hWnd, 0);
if (win->font_scale != 1)
{
win->font_scale = 1;
@ -1394,22 +1391,13 @@ static LRESULT CALLBACK WINHELP_MainWndProc(HWND hWnd, UINT msg, WPARAM wParam,
break;
case MNID_OPTS_FONTS_LARGE:
case MNID_CTXT_FONTS_LARGE:
win = (WINHELP_WINDOW*) GetWindowLongPtr(hWnd, 0);
win = (WINHELP_WINDOW*) GetWindowLongPtrW(hWnd, 0);
if (win->font_scale != 2)
{
win->font_scale = 2;
WINHELP_SetupText(GetDlgItem(hWnd, CTL_ID_TEXT), win, 0 /* FIXME */);
}
break;
case MNID_OPTS_HELP_DEFAULT:
case MNID_OPTS_HELP_VISIBLE:
case MNID_OPTS_HELP_NONVISIBLE:
case MNID_OPTS_SYSTEM_COLORS:
case MNID_CTXT_HELP_DEFAULT:
case MNID_CTXT_HELP_VISIBLE:
case MNID_CTXT_HELP_NONVISIBLE:
case MNID_CTXT_SYSTEM_COLORS:
/* FIXME: NIY */
default:
/* Buttons */
@ -1418,8 +1406,8 @@ static LRESULT CALLBACK WINHELP_MainWndProc(HWND hWnd, UINT msg, WPARAM wParam,
if (button)
MACRO_ExecuteMacro(win, button->lpszMacro);
else if (!HIWORD(wParam))
MessageBox(0, MAKEINTRESOURCE(STID_NOT_IMPLEMENTED),
MAKEINTRESOURCE(STID_WHERROR), MB_OK);
MessageBoxW(0, MAKEINTRESOURCEW(STID_NOT_IMPLEMENTED),
MAKEINTRESOURCEW(STID_WHERROR), MB_OK);
break;
}
break;
@ -1432,28 +1420,28 @@ static LRESULT CALLBACK WINHELP_MainWndProc(HWND hWnd, UINT msg, WPARAM wParam,
case WM_CHAR:
if (wParam == 3)
{
SendMessage(GetDlgItem(hWnd, CTL_ID_TEXT), WM_COPY, 0, 0);
SendDlgItemMessageW(hWnd, CTL_ID_TEXT, WM_COPY, 0, 0);
return 0;
}
break;
case WM_KEYDOWN:
win = (WINHELP_WINDOW*) GetWindowLongPtr(hWnd, 0);
win = (WINHELP_WINDOW*) GetWindowLongPtrW(hWnd, 0);
hTextWnd = GetDlgItem(win->hMainWnd, CTL_ID_TEXT);
switch (wParam)
{
case VK_UP:
SendMessage(hTextWnd, EM_SCROLL, SB_LINEUP, 0);
SendMessageW(hTextWnd, EM_SCROLL, SB_LINEUP, 0);
return 0;
case VK_DOWN:
SendMessage(hTextWnd, EM_SCROLL, SB_LINEDOWN, 0);
SendMessageW(hTextWnd, EM_SCROLL, SB_LINEDOWN, 0);
return 0;
case VK_PRIOR:
SendMessage(hTextWnd, EM_SCROLL, SB_PAGEUP, 0);
SendMessageW(hTextWnd, EM_SCROLL, SB_PAGEUP, 0);
return 0;
case VK_NEXT:
SendMessage(hTextWnd, EM_SCROLL, SB_PAGEDOWN, 0);
SendMessageW(hTextWnd, EM_SCROLL, SB_PAGEDOWN, 0);
return 0;
case VK_ESCAPE:
MACRO_Exit();
@ -1475,15 +1463,15 @@ static LRESULT CALLBACK WINHELP_MainWndProc(HWND hWnd, UINT msg, WPARAM wParam,
{
case WM_KEYUP:
if (msgf->wParam == VK_ESCAPE)
WINHELP_ReleaseWindow((WINHELP_WINDOW*)GetWindowLongPtr(hWnd, 0));
WINHELP_ReleaseWindow((WINHELP_WINDOW*)GetWindowLongPtrW(hWnd, 0));
break;
case WM_RBUTTONDOWN:
{
HMENU hMenu;
POINT pt;
win = (WINHELP_WINDOW*) GetWindowLongPtr(hWnd, 0);
hMenu = LoadMenu(Globals.hInstance, (LPSTR)CONTEXT_MENU);
win = (WINHELP_WINDOW*) GetWindowLongPtrW(hWnd, 0);
hMenu = LoadMenuW(Globals.hInstance, MAKEINTRESOURCEW(CONTEXT_MENU));
switch (win->font_scale)
{
case 0:
@ -1492,6 +1480,7 @@ static LRESULT CALLBACK WINHELP_MainWndProc(HWND hWnd, UINT msg, WPARAM wParam,
break;
default:
WINE_FIXME("Unsupported %d\n", win->font_scale);
/* fall through */
case 1:
CheckMenuItem(hMenu, MNID_CTXT_FONTS_NORMAL,
MF_BYCOMMAND|MF_CHECKED);
@ -1510,7 +1499,7 @@ static LRESULT CALLBACK WINHELP_MainWndProc(HWND hWnd, UINT msg, WPARAM wParam,
}
break;
default:
return WINHELP_HandleTextMouse((WINHELP_WINDOW*)GetWindowLongPtr(hWnd, 0),
return WINHELP_HandleTextMouse((WINHELP_WINDOW*)GetWindowLongPtrW(hWnd, 0),
msgf->msg, msgf->lParam);
}
}
@ -1518,8 +1507,8 @@ static LRESULT CALLBACK WINHELP_MainWndProc(HWND hWnd, UINT msg, WPARAM wParam,
case EN_REQUESTRESIZE:
rc = ((REQRESIZE*)lParam)->rc;
win = (WINHELP_WINDOW*) GetWindowLongPtr(hWnd, 0);
AdjustWindowRect(&rc, GetWindowLong(win->hMainWnd, GWL_STYLE),
win = (WINHELP_WINDOW*) GetWindowLongPtrW(hWnd, 0);
AdjustWindowRect(&rc, GetWindowLongW(win->hMainWnd, GWL_STYLE),
FALSE);
SetWindowPos(win->hMainWnd, HWND_TOP, 0, 0,
rc.right - rc.left, rc.bottom - rc.top,
@ -1531,7 +1520,7 @@ static LRESULT CALLBACK WINHELP_MainWndProc(HWND hWnd, UINT msg, WPARAM wParam,
break;
case WM_INITMENUPOPUP:
win = (WINHELP_WINDOW*) GetWindowLongPtr(hWnd, 0);
win = (WINHELP_WINDOW*) GetWindowLongPtrW(hWnd, 0);
CheckMenuItem((HMENU)wParam, MNID_OPTS_FONTS_SMALL,
MF_BYCOMMAND | (win->font_scale == 0) ? MF_CHECKED : 0);
CheckMenuItem((HMENU)wParam, MNID_OPTS_FONTS_NORMAL,
@ -1540,11 +1529,11 @@ static LRESULT CALLBACK WINHELP_MainWndProc(HWND hWnd, UINT msg, WPARAM wParam,
MF_BYCOMMAND | (win->font_scale == 2) ? MF_CHECKED : 0);
break;
case WM_DESTROY:
win = (WINHELP_WINDOW*) GetWindowLongPtr(hWnd, 0);
win = (WINHELP_WINDOW*) GetWindowLongPtrW(hWnd, 0);
WINHELP_DeleteWindow(win);
break;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
return DefWindowProcA(hWnd, msg, wParam, lParam);
}
/**************************************************************************
@ -1556,8 +1545,8 @@ static LRESULT CALLBACK WINHELP_MainWndProc(HWND hWnd, UINT msg, WPARAM wParam,
BOOL WINHELP_CreateIndexWindow(BOOL is_search)
{
HPROPSHEETPAGE psPage[3];
PROPSHEETPAGE psp;
PROPSHEETHEADER psHead;
PROPSHEETPAGEA psp;
PROPSHEETHEADERA psHead;
struct index_data id;
char buf[256];
@ -1580,20 +1569,20 @@ BOOL WINHELP_CreateIndexWindow(BOOL is_search)
psp.dwFlags = 0;
psp.hInstance = Globals.hInstance;
psp.u.pszTemplate = MAKEINTRESOURCE(IDD_INDEX);
psp.u.pszTemplate = MAKEINTRESOURCEA(IDD_INDEX);
psp.lParam = (LPARAM)&id;
psp.pfnDlgProc = WINHELP_IndexDlgProc;
psPage[0] = CreatePropertySheetPage(&psp);
psPage[0] = CreatePropertySheetPageA(&psp);
psp.u.pszTemplate = MAKEINTRESOURCE(IDD_SEARCH);
psp.u.pszTemplate = MAKEINTRESOURCEA(IDD_SEARCH);
psp.lParam = (LPARAM)&id;
psp.pfnDlgProc = WINHELP_SearchDlgProc;
psPage[1] = CreatePropertySheetPage(&psp);
psPage[1] = CreatePropertySheetPageA(&psp);
memset(&psHead, 0, sizeof(psHead));
psHead.dwSize = sizeof(psHead);
LoadString(Globals.hInstance, STID_PSH_INDEX, buf, sizeof(buf));
LoadStringA(Globals.hInstance, STID_PSH_INDEX, buf, sizeof(buf));
strcat(buf, Globals.active_win->info->caption);
psHead.pszCaption = buf;
@ -1603,7 +1592,7 @@ BOOL WINHELP_CreateIndexWindow(BOOL is_search)
psHead.u3.phpage = psPage;
psHead.dwFlags = PSH_NOAPPLYNOW;
PropertySheet(&psHead);
PropertySheetA(&psHead);
if (id.jump)
{
WINE_TRACE("got %d as an offset\n", id.offset);
@ -1619,7 +1608,7 @@ BOOL WINHELP_CreateIndexWindow(BOOL is_search)
*/
static BOOL WINHELP_RegisterWinClasses(void)
{
WNDCLASSEX class_main, class_button_box, class_history;
WNDCLASSEXA class_main, class_button_box, class_history;
class_main.cbSize = sizeof(class_main);
class_main.style = CS_HREDRAW | CS_VREDRAW;
@ -1627,12 +1616,12 @@ static BOOL WINHELP_RegisterWinClasses(void)
class_main.cbClsExtra = 0;
class_main.cbWndExtra = sizeof(WINHELP_WINDOW *);
class_main.hInstance = Globals.hInstance;
class_main.hIcon = LoadIcon(Globals.hInstance, MAKEINTRESOURCE(IDI_WINHELP));
class_main.hCursor = LoadCursor(0, IDC_ARROW);
class_main.hIcon = LoadIconW(Globals.hInstance, MAKEINTRESOURCEW(IDI_WINHELP));
class_main.hCursor = LoadCursorW(0, (LPWSTR)IDC_ARROW);
class_main.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
class_main.lpszMenuName = 0;
class_main.lpszClassName = MAIN_WIN_CLASS_NAME;
class_main.hIconSm = LoadImage(Globals.hInstance, MAKEINTRESOURCE(IDI_WINHELP), IMAGE_ICON,
class_main.hIconSm = LoadImageW(Globals.hInstance, MAKEINTRESOURCEW(IDI_WINHELP), IMAGE_ICON,
GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON),
LR_SHARED);
@ -1646,9 +1635,9 @@ static BOOL WINHELP_RegisterWinClasses(void)
class_history.lpfnWndProc = WINHELP_HistoryWndProc;
class_history.lpszClassName = HISTORY_WIN_CLASS_NAME;
return (RegisterClassEx(&class_main) &&
RegisterClassEx(&class_button_box) &&
RegisterClassEx(&class_history));
return (RegisterClassExA(&class_main) &&
RegisterClassExA(&class_button_box) &&
RegisterClassExA(&class_history));
}
/***********************************************************************
@ -1663,12 +1652,13 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE prev, LPSTR cmdline, int show)
static CHAR default_wndname[] = "main";
LPSTR wndname = default_wndname;
WINHELP_DLL* dll;
HACCEL hAccel;
Globals.hInstance = hInstance;
if (LoadLibrary("riched20.dll") == NULL)
return MessageBox(0, MAKEINTRESOURCE(STID_NO_RICHEDIT),
MAKEINTRESOURCE(STID_WHERROR), MB_OK);
if (LoadLibraryA("riched20.dll") == NULL)
return MessageBoxW(0, MAKEINTRESOURCEW(STID_NO_RICHEDIT),
MAKEINTRESOURCEW(STID_WHERROR), MB_OK);
/* Get options */
while (*cmdline && (*cmdline == ' ' || *cmdline == '-'))
@ -1734,10 +1724,15 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE prev, LPSTR cmdline, int show)
WINHELP_GetWindowInfo(hlpfile, wndname), show);
/* Message loop */
while ((Globals.win_list || Globals.active_popup) && GetMessage(&msg, 0, 0, 0))
hAccel = LoadAcceleratorsW(hInstance, MAKEINTRESOURCEW(MAIN_ACCEL));
while ((Globals.win_list || Globals.active_popup) && GetMessageW(&msg, 0, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
HWND hWnd = Globals.active_win ? Globals.active_win->hMainWnd : NULL;
if (!TranslateAcceleratorW(hWnd, hAccel, &msg))
{
TranslateMessage(&msg);
DispatchMessageW(&msg);
}
}
for (dll = Globals.dlls; dll; dll = dll->next)
{

View file

@ -36,6 +36,7 @@
#define MAIN_MENU 0xF000
#define CONTEXT_MENU 0xF001
#define MAIN_ACCEL 0xF002
#define STID_WINE_HELP 0x120
#define STID_WHERROR 0x121

View file

@ -215,7 +215,7 @@ reactos/base/applications/iexplore # Autosync
reactos/base/applications/notepad # Forked at Wine-20041201
reactos/base/applications/reg # Autosync
reactos/base/applications/regedit # Out of sync
reactos/base/applications/winhlp32 # Autosync
reactos/base/applications/winhlp32 # Synced to Wine-1.5.26
reactos/base/applications/wordpad # Autosync
reactos/base/services/rpcss # Synced to Wine-20081105
reactos/base/system/expand # Autosync