From 1285c2f9e9c029427fd7cce5dbfa3372daf01394 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Mon, 6 May 1996 16:06:24 +0000 Subject: [PATCH] Release 960506 Mon May 6 12:56:26 1996 Alexandre Julliard * [DEVELOPERS-HINTS] Added paragraph on naming conventions for Win16/Win32/Winelib. * [controls/menu.c] Create a default system menu that is the same for all windows instead of making a copy every time. * [include/wintypes.h] Added WINELIB_NAME and DECL_WINELIB_TYPE macros. Added xx16 and xx32 definitions for most types. General clean-up. * [memory/global.c] [memory/local.c] [*/*] Renamed Global and Local heap functions to xxx16. Added all xxx32 versions of the same functions. * [memory/selector.c] Mask out lower bits of selector in FreeSelector(). * [misc/lstr.c] Fixed wvsprintf(). * [windows/class.c] Changed the class structure to make Win32 support easier. * [windows/defwnd.c] Added handling of WM_INITMENUPOPUP for system menu to gray out invalid options. * [windows/winpos.c] Bug fix: the WINDOSPOS structure pointer in WM_NCCALCSIZE must be a SEGPTR. Sun May 5 03:51:26 1996 Huw D. M. Davies * [memory/local.c] Implementation of moveable and (rudimentary) support for discardable local memory, plus several bug fixes. Sat May 4 18:33:35 1996 Marcus Meissner * [include/windows.h] [windows/win.c] [if1632/user.spec] FindWindowEx() implemented (someone reported it was missing for FrameMaker 4.1). * [if1632/kernel32.spec] [if1632/user32.spec] [win32/memory.c] [win32/resource.c] Misc small stubs/small functions which bring win95 binaries further down the road. (IsBadCodePtr, LocalReAlloc,GetCursorPos) Small fix in WIN32_LoadAcceleratorsA. Fri May 3 19:43:12 1996 Frans van Dorsselaer * [controls/edit.c] [controls/EDIT.TODO] Changed / fixed some types and typecasts. Fixed the scrollbar reset after WM_SETHANDLE / WM_SETTEXT. Added heap initialization in WM_CREATE. Fri May 3 19:30:02 1996 Greg Kreider * [controls/combo.c] [controls/listbox.c] Pass WM_[HV]SCROLL to listbox, but not combo. Don't try to redraw non-existant scroll bars (changes dwStyle flags). Combo box gets border. Combo box includes button (otherwise button won't trigger dropdown). Proper border around RectButton. Check size consistancy of combo, listbox, and button after resizing or before painting. These routines still aren't completely correct. Localize size checks in separate routines. Listboxes are white. Thu May 2 19:21:23 1996 Albrecht Kleine * [controls/combo.c][include/commdlg.h][include/commdlg.c] [resources/sysres_De.rc][resources/sysres_En.rc] Introduced ChooseFont dialog, but needed some patches in handling of comboboxes with edit controls. Tue Apr 30 00:33:27 1996 Ulrich Schmid * [programs/winhelp/*] Added a help viewer and a simple `.hlp' to `.sgml' converter. Mon Apr 29 14:17:57 1996 Tristan Tarrant * [resources/sysres_*.rc] [misc/shell.c] Modified size of "About" dialog boxes. Sat Apr 27 18:10:11 Martin von Loewis * [if1632/Makefile.in][loader/builtin.c] crtdll.spec, ntdll.spec, wsock32.spec: new files. * [loader/pe_image.c] Fix error message if import by ordinal failed. --- ANNOUNCE | 20 +- ChangeLog | 98 ++++ DEVELOPERS-HINTS | 61 ++- Makefile.in | 3 + configure | 2 + configure.in | 1 + controls/EDIT.TODO | 2 + controls/combo.c | 214 +++++++-- controls/edit.c | 269 ++++++----- controls/listbox.c | 31 +- controls/menu.c | 52 +- controls/scroll.c | 2 +- controls/static.c | 4 +- controls/widgets.c | 6 +- debugger/hash.c | 2 +- etc/commdlg-ordinals | 26 - etc/ddeml-ordinals | 38 -- etc/gdi-ordinals | 283 ----------- etc/kernel-ordinals | 233 --------- etc/lzexpand-ordinals | 12 - etc/mmsystem-ordinals | 136 ------ etc/netapi20-ordinals | 146 ------ etc/olecli-ordinals | 178 ------- etc/olesvr-ordinals | 23 - etc/shell-ordinals | 26 - etc/toolhelp-ordinals | 35 -- etc/user-ordinals | 413 ---------------- etc/win87em-ordinals | 5 - files/drive.c | 10 +- files/file.c | 36 +- if1632/Makefile.in | 5 +- if1632/crtdll.spec | 530 ++++++++++++++++++++ if1632/gdi.spec | 2 +- if1632/kernel.spec | 40 +- if1632/kernel32.spec | 42 +- if1632/ntdll.spec | 954 ++++++++++++++++++++++++++++++++++++ if1632/relay32.c | 15 +- if1632/shell32.spec | 2 +- if1632/user.spec | 14 +- if1632/user32.spec | 6 +- if1632/wsock32.spec | 80 +++ include/advapi32.h | 2 +- include/caption.h | 17 - include/class.h | 25 +- include/commdlg.h | 34 +- include/driver.h | 13 +- include/except.h | 18 +- include/gdi.h | 22 +- include/global.h | 56 +-- include/ldt.h | 23 +- include/listbox.h | 2 +- include/local.h | 21 +- include/menu.h | 9 +- include/mmsystem.h | 294 +++++------- include/nonclient.h | 4 +- include/ole.h | 128 ++--- include/stackframe.h | 6 +- include/struct32.h | 2 - include/task.h | 2 +- include/toolhelp.h | 11 +- include/user.h | 15 +- include/ver.h | 16 +- include/winbase.h | 49 +- include/wincon.h | 190 +++----- include/windows.h | 249 +++++----- include/winpos.h | 2 +- include/winsock.h | 119 ++--- include/wintypes.h | 360 ++++++++++---- include/winuser.h | 52 +- library/heap.c | 18 +- library/miscstubs.c | 6 +- library/winmain.c | 2 +- libtest/hello.c | 6 +- libtest/hello3.c | 6 +- libtest/hello4.c | 11 +- libtest/new.c | 11 +- libtest/rolex.c | 4 +- loader/builtin.c | 12 +- loader/main.c | 9 +- loader/module.c | 81 ++-- loader/ne_image.c | 8 +- loader/ne_resource.c | 6 +- loader/pe_image.c | 42 +- loader/resource.c | 14 +- loader/task.c | 112 ++--- memory/atom.c | 1 + memory/global.c | 243 ++++++---- memory/local.c | 596 +++++++++++++++++------ memory/selector.c | 5 +- misc/clipboard.c | 17 +- misc/comm.c | 8 +- misc/commdlg.c | 538 +++++++++++++++++++-- misc/compobj.c | 10 +- misc/driver.c | 26 +- misc/exec.c | 6 +- misc/lstr.c | 130 ++++- misc/main.c | 4 +- misc/network.c | 4 +- misc/ole2.c | 4 +- misc/ole2disp.c | 4 +- misc/ole2nls.c | 10 +- misc/olecli.c | 13 +- misc/olesvr.c | 24 +- misc/registry.c | 186 +++---- misc/shell.c | 30 +- misc/sound.c | 2 +- misc/user.c | 4 +- misc/winsocket.c | 26 +- miscemu/dosmem.c | 2 +- miscemu/dpmi.c | 2 +- miscemu/int21.c | 20 +- multimedia/audio.c | 16 +- multimedia/mcistring.c | 2 +- multimedia/midi.c | 2 +- multimedia/mmsystem.c | 146 +++--- objects/brush.c | 18 +- objects/cursoricon.c | 40 +- objects/dc.c | 4 +- objects/font.c | 6 +- objects/gdiobj.c | 31 ++ objects/metafile.c | 154 +++--- objects/oembitmap.c | 6 +- objects/region.c | 2 +- objects/text.c | 10 +- programs/Makefile.in | 5 +- programs/progman/Makefile.in | 18 + programs/winhelp/ChangeLog | 7 + programs/winhelp/De.rc | 48 ++ programs/winhelp/En.rc | 48 ++ programs/winhelp/Makefile.in | 63 +++ programs/winhelp/Xx.rc | 80 +++ programs/winhelp/hlp2sgml.c | 333 +++++++++++++ programs/winhelp/hlpfile.c | 989 ++++++++++++++++++++++++++++++++++++++ programs/winhelp/hlpfile.h | 90 ++++ programs/winhelp/macro.c | 555 +++++++++++++++++++++ programs/winhelp/macro.h | 108 +++++ programs/winhelp/macro.lex.l | 235 +++++++++ programs/winhelp/macro.yacc.y | 170 +++++++ programs/winhelp/string.c | 25 + programs/winhelp/winhelp.c | 1069 +++++++++++++++++++++++++++++++++++++++++ programs/winhelp/winhelp.h | 156 ++++++ resources/TODO | 20 + resources/sysres_Cz.rc | 8 +- resources/sysres_Da.rc | 8 +- resources/sysres_De.rc | 35 +- resources/sysres_En.rc | 35 +- resources/sysres_Eo.rc | 8 +- resources/sysres_Es.rc | 8 +- resources/sysres_Fi.rc | 8 +- resources/sysres_Fr.rc | 8 +- resources/sysres_It.rc | 8 +- resources/sysres_Ko.rc | 8 +- resources/sysres_No.rc | 8 +- tools/build.c | 13 +- win32/advapi.c | 2 +- win32/cursoricon32.c | 6 +- win32/environment.c | 2 +- win32/except.c | 4 +- win32/file.c | 12 +- win32/init.c | 2 +- win32/memory.c | 9 + win32/param32.c | 4 +- win32/process.c | 31 +- win32/resource.c | 22 +- win32/thread.c | 12 +- win32/user32.c | 99 ++-- windows/Makefile.in | 1 - windows/class.c | 240 ++++++--- windows/dce.c | 4 +- windows/defdlg.c | 4 +- windows/defwnd.c | 43 +- windows/dialog.c | 48 +- windows/event.c | 6 +- windows/graphics.c | 10 +- windows/hook.c | 10 +- windows/keyboard.c | 4 +- windows/mdi.c | 6 +- windows/message.c | 6 +- windows/nonclient.c | 27 +- windows/painting.c | 7 +- windows/queue.c | 46 +- windows/syscolor.c | 2 +- windows/utility.c | 440 ----------------- windows/win.c | 103 ++-- windows/winpos.c | 4 +- 185 files changed, 9455 insertions(+), 4433 deletions(-) delete mode 100644 etc/commdlg-ordinals delete mode 100644 etc/ddeml-ordinals delete mode 100644 etc/gdi-ordinals delete mode 100644 etc/kernel-ordinals delete mode 100644 etc/lzexpand-ordinals delete mode 100644 etc/mmsystem-ordinals delete mode 100644 etc/netapi20-ordinals delete mode 100644 etc/olecli-ordinals delete mode 100644 etc/olesvr-ordinals delete mode 100644 etc/shell-ordinals delete mode 100644 etc/toolhelp-ordinals delete mode 100644 etc/user-ordinals delete mode 100644 etc/win87em-ordinals create mode 100644 if1632/crtdll.spec create mode 100644 if1632/ntdll.spec create mode 100644 if1632/wsock32.spec delete mode 100644 include/caption.h rewrite include/global.h (67%) create mode 100644 programs/winhelp/ChangeLog create mode 100644 programs/winhelp/De.rc create mode 100644 programs/winhelp/En.rc create mode 100644 programs/winhelp/Makefile.in create mode 100644 programs/winhelp/Xx.rc create mode 100644 programs/winhelp/hlp2sgml.c create mode 100644 programs/winhelp/hlpfile.c create mode 100644 programs/winhelp/hlpfile.h create mode 100644 programs/winhelp/macro.c create mode 100644 programs/winhelp/macro.h create mode 100644 programs/winhelp/macro.lex.l create mode 100644 programs/winhelp/macro.yacc.y create mode 100644 programs/winhelp/string.c create mode 100644 programs/winhelp/winhelp.c create mode 100644 programs/winhelp/winhelp.h delete mode 100644 windows/utility.c diff --git a/ANNOUNCE b/ANNOUNCE index 90ff09da218..a90e0dbf4b0 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -1,14 +1,14 @@ -This is release 960428 of Wine the MS Windows emulator. This is still a +This is release 960506 of Wine the MS Windows emulator. This is still a developer's only release. There are many bugs and many unimplemented API features. Most applications still do not work. Patches should be submitted to "julliard@lrc.epfl.ch". Please don't forget to include a ChangeLog entry. -WHAT'S NEW with Wine-960428: (see ChangeLog for details) - - Preliminary support for VER.DLL. - - Suuport for Korean [Ko] language. - - More Win32 functions. +WHAT'S NEW with Wine-960506: (see ChangeLog for details) + - Moveable and discardable blocks in local heap. + - Comboboxes improvements. + - Winhelp clone using Winelib. - Lots of bug fixes. See the README file in the distribution for installation instructions. @@ -17,10 +17,10 @@ Because of lags created by using mirror, this message may reach you before the release is available at the ftp sites. The sources will be available from the following locations: - sunsite.unc.edu:/pub/Linux/ALPHA/wine/development/Wine-960428.tar.gz - tsx-11.mit.edu:/pub/linux/ALPHA/Wine/development/Wine-960428.tar.gz - ftp.infomagic.com:/pub/mirrors/linux/wine/development/Wine-960428.tar.gz - aris.com:/pub/linux/ALPHA/Wine/development/Wine-960428.tar.gz + sunsite.unc.edu:/pub/Linux/ALPHA/wine/development/Wine-960506.tar.gz + tsx-11.mit.edu:/pub/linux/ALPHA/Wine/development/Wine-960506.tar.gz + ftp.infomagic.com:/pub/mirrors/linux/wine/development/Wine-960506.tar.gz + aris.com:/pub/linux/ALPHA/Wine/development/Wine-960506.tar.gz It should also be available from any site that mirrors tsx-11 or sunsite. @@ -30,8 +30,6 @@ included in the new release. If you want to get the new releases faster, you can subscribe to the wine-patches mailing list by sending a mail containing 'subscribe wine-patches your_address' to majordomo@tiger.informatik.hu-berlin.de. -To avoid overloading the mail host, please subscribe only if you -really intend to test the new releases as soon as they're out. Wine is available thanks to the work of Bob Amstadt, Dag Asheim, Martin Ayotte, Ross Biro, Uwe Bonnes, Erik Bos, Fons Botman, John Brezak, diff --git a/ChangeLog b/ChangeLog index de174669b5f..e8b06ea8d93 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,102 @@ ---------------------------------------------------------------------- +Mon May 6 12:56:26 1996 Alexandre Julliard + + * [DEVELOPERS-HINTS] + Added paragraph on naming conventions for Win16/Win32/Winelib. + + * [controls/menu.c] + Create a default system menu that is the same for all windows + instead of making a copy every time. + + * [include/wintypes.h] + Added WINELIB_NAME and DECL_WINELIB_TYPE macros. + Added xx16 and xx32 definitions for most types. General clean-up. + + * [memory/global.c] [memory/local.c] [*/*] + Renamed Global and Local heap functions to xxx16. Added all xxx32 + versions of the same functions. + + * [memory/selector.c] + Mask out lower bits of selector in FreeSelector(). + + * [misc/lstr.c] + Fixed wvsprintf(). + + * [windows/class.c] + Changed the class structure to make Win32 support easier. + + * [windows/defwnd.c] + Added handling of WM_INITMENUPOPUP for system menu to gray out + invalid options. + + * [windows/winpos.c] + Bug fix: the WINDOSPOS structure pointer in WM_NCCALCSIZE must be + a SEGPTR. + +Sun May 5 03:51:26 1996 Huw D. M. Davies + + * [memory/local.c] + Implementation of moveable and (rudimentary) support for + discardable local memory, plus several bug fixes. + +Sat May 4 18:33:35 1996 Marcus Meissner + + * [include/windows.h] [windows/win.c] [if1632/user.spec] + FindWindowEx() implemented (someone reported it was missing + for FrameMaker 4.1). + + * [if1632/kernel32.spec] [if1632/user32.spec] [win32/memory.c] + [win32/resource.c] + Misc small stubs/small functions which bring win95 binaries + further down the road. (IsBadCodePtr, LocalReAlloc,GetCursorPos) + Small fix in WIN32_LoadAcceleratorsA. + +Fri May 3 19:43:12 1996 Frans van Dorsselaer + + * [controls/edit.c] [controls/EDIT.TODO] + Changed / fixed some types and typecasts. + Fixed the scrollbar reset after WM_SETHANDLE / WM_SETTEXT. + Added heap initialization in WM_CREATE. + +Fri May 3 19:30:02 1996 Greg Kreider + + * [controls/combo.c] [controls/listbox.c] + Pass WM_[HV]SCROLL to listbox, but not combo. + Don't try to redraw non-existant scroll bars (changes dwStyle flags). + Combo box gets border. + Combo box includes button (otherwise button won't trigger dropdown). + Proper border around RectButton. + Check size consistancy of combo, listbox, and button after resizing + or before painting. These routines still aren't completely correct. + Localize size checks in separate routines. + Listboxes are white. + +Thu May 2 19:21:23 1996 Albrecht Kleine + + * [controls/combo.c][include/commdlg.h][include/commdlg.c] + [resources/sysres_De.rc][resources/sysres_En.rc] + Introduced ChooseFont dialog, but needed some patches in + handling of comboboxes with edit controls. + +Tue Apr 30 00:33:27 1996 Ulrich Schmid + + * [programs/winhelp/*] + Added a help viewer and a simple `.hlp' to `.sgml' converter. + +Mon Apr 29 14:17:57 1996 Tristan Tarrant + + * [resources/sysres_*.rc] [misc/shell.c] + Modified size of "About" dialog boxes. + +Sat Apr 27 18:10:11 Martin von Loewis + + * [if1632/Makefile.in][loader/builtin.c] + crtdll.spec, ntdll.spec, wsock32.spec: new files. + + * [loader/pe_image.c] + Fix error message if import by ordinal failed. + +---------------------------------------------------------------------- Sun Apr 28 14:32:43 1996 Alexandre Julliard * [Makefile.in] diff --git a/DEVELOPERS-HINTS b/DEVELOPERS-HINTS index a661276eddf..8025e6fe60e 100644 --- a/DEVELOPERS-HINTS +++ b/DEVELOPERS-HINTS @@ -1,7 +1,8 @@ This is intended to be a document to help new developers get started. Existing developers should feel free to add their comments. -MEMORY AND SEGMENTS: +MEMORY AND SEGMENTS +=================== NE (Win16) executables consist of multiple segments. The Wine loader loads each segment into a unique location in the Wine processes memory @@ -41,7 +42,59 @@ pointers, instead of something like 'LPSTR' or 'char *'. As SEGPTR is defined as a DWORD, you'll get a compilation warning if you mistakenly use it as a regular 32-bit pointer. -API ENTRY POINTS: + +NAMING CONVENTIONS FOR API FUNCTIONS AND TYPES +============================================== + +In order to support both Win16 and Win32 APIs within the same source +code, as well as share the include files between the emulator and the +library, the following convention must be used in naming all API +functions and types. If the Windows API uses the name 'xxx', the Wine +code must use: + + - 'xxx16' for the 16-bit version, + - 'xxx32' for the 32-bit version when no ASCII/Unicode strings are + involved, + - 'xxx32A' for the 32-bit version with ASCII strings, + - 'xxx32W' for the 32-bit version with Unicode strings. + +You should then use the macros WINELIB_NAME[_AW](xxx) or +DECL_WINELIB_TYPE[_AW](xxx) (defined in include/wintypes.h) to define +the correct 'xxx' function or type for Winelib. When compiling the +emulator, 'xxx' is _not_ defined, meaning that you must always specify +explicitly whether you want the 16-bit or 32-bit version. + +Note: if 'xxx' is the same in Win16 and Win32, you can simply use the +same name as Windows. + +Examples: + +typedef short INT16; +typedef int INT32; +DECL_WINELIB_TYPE(INT); + +typedef struct { /* Win32 ASCII data structure */ } WNDCLASS32A; +typedef struct { /* Win32 Unicode data structure */ } WNDCLASS32W; +typedef struct { /* Win16 data structure */ } WNDCLASS16; +DECL_WINELIB_TYPE_AW(WNDCLASS); + +ATOM RegisterClass16( WNDCLASS16 * ); +ATOM RegisterClass32A( WNDCLASS32A * ); +ATOM RegisterClass32W( WNDCLASS32W * ); +#define RegisterClass WINELIB_NAME_AW(RegisterClass) + +The Winelib user can then say: + + INT i; + WNDCLASS wc = { ... }; + RegisterClass( &wc ); + +and this will use the correct declaration depending on the definition +of the symbols WINELIB16, WINELIB32 and UNICODE. + + +API ENTRY POINTS +================ Because Win16 programs use a 16-bit stack and because they can only call 16:16 addressed functions, all API entry points must be at low @@ -57,7 +110,9 @@ files contain tables used by relay.c to translate arguments and transfer control to the proper handler. The format of the *.spec files is documented in the file "tools/build-spec.txt". -DEBUG MESSAGES: + +DEBUG MESSAGES +============== To display a message only during debugging, you normally write something like this: diff --git a/Makefile.in b/Makefile.in index c333861c666..f8f62056eb9 100644 --- a/Makefile.in +++ b/Makefile.in @@ -125,6 +125,9 @@ install_libwine.so.1.0: dummy $(ALLSUBDIRS): dummy @cd $@; $(SUBMAKE) +install_programs: dummy + @cd programs; $(SUBMAKE) install + depend: for i in $(ALLSUBDIRS); do (cd $$i; $(MAKE) depend); done diff --git a/configure b/configure index 361565bf7f7..69670930565 100755 --- a/configure +++ b/configure @@ -2049,6 +2049,7 @@ multimedia/Makefile objects/Makefile programs/Makefile programs/progman/Makefile +programs/winhelp/Makefile rc/Makefile resources/Makefile tools/Makefile @@ -2123,6 +2124,7 @@ multimedia/Makefile objects/Makefile programs/Makefile programs/progman/Makefile +programs/winhelp/Makefile rc/Makefile resources/Makefile tools/Makefile diff --git a/configure.in b/configure.in index ad74c7307cb..55a417cf891 100644 --- a/configure.in +++ b/configure.in @@ -99,6 +99,7 @@ multimedia/Makefile objects/Makefile programs/Makefile programs/progman/Makefile +programs/winhelp/Makefile rc/Makefile resources/Makefile tools/Makefile diff --git a/controls/EDIT.TODO b/controls/EDIT.TODO index 99b42706a6c..7bacadff0c0 100644 --- a/controls/EDIT.TODO +++ b/controls/EDIT.TODO @@ -98,6 +98,8 @@ D) Known bugs. - The clipboard is broken. Whenever things go wrong with cut/copy/paste, it is probably the clipboard that messes up things, not edit.c. +- Turning on WordWrap with Notepad leaves part of the horizontal + scrollbar visible (problem with WM_ERASEBKGND ???). I am still very actively changing things. Especially I am working diff --git a/controls/combo.c b/controls/combo.c index 5a616ce2374..d2dc819559f 100644 --- a/controls/combo.c +++ b/controls/combo.c @@ -8,6 +8,7 @@ #include #include +#include #include #include @@ -32,9 +33,24 @@ * I hope no programs rely on the implementation of combos. */ + /* + * May 2nd: I added 3 "work arounds" (#1,#2,#3) to make combos + * with EDIT work. (We need that for ChooseFont dialog.) + * Perhaps we have to rewrite something more. + * I have prepared some more stuff, but it doesn't + * contain here, because it's not ready ;-) + * + * If you're writing on combo.c, please mail to me. + * + * Albrecht Kleine + */ + #define CBLMM_EDGE 4 /* distance inside box which is same as moving mouse outside box, to trigger scrolling of CBL */ +static BOOL CBCheckSize(HWND hwnd); +static BOOL CBLCheckSize(HWND hwnd); + static HBITMAP hComboBit = 0; static WORD CBitHeight, CBitWidth; @@ -70,14 +86,17 @@ int CreateComboStruct(HWND hwnd, LONG style) lphc->hWndLBox = 0; lphc->dwState = 0; lphc->LastSel = -1; - lphc->dwStyle = style; + lphc->dwStyle = style; lphc->DropDownVisible = FALSE; return TRUE; } void ComboUpdateWindow(HWND hwnd, LPHEADLIST lphl, LPHEADCOMBO lphc, BOOL repaint) { - SetScrollRange(lphc->hWndLBox, SB_VERT, 0, ListMaxFirstVisible(lphl), TRUE); + WND *wndPtr = WIN_FindWndPtr(hwnd); + + if (wndPtr->dwStyle & WS_VSCROLL) + SetScrollRange(lphc->hWndLBox,SB_VERT,0,ListMaxFirstVisible(lphl),TRUE); if (repaint && lphl->bRedrawFlag) { InvalidateRect(hwnd, NULL, TRUE); } @@ -93,7 +112,7 @@ static LRESULT CBNCCreate(HWND hwnd, WPARAM wParam, LPARAM lParam) if (!hComboBit) COMBO_Init(); createStruct = (CREATESTRUCT *)PTR_SEG_TO_LIN(lParam); - createStruct->style &= ~(WS_VSCROLL | WS_HSCROLL); + createStruct->style |= WS_BORDER; SetWindowLong(hwnd, GWL_STYLE, createStruct->style); dprintf_combo(stddeb,"ComboBox WM_NCCREATE!\n"); @@ -111,10 +130,12 @@ static LRESULT CBCreate(HWND hwnd, WPARAM wParam, LPARAM lParam) LONG style = 0; LONG cstyle = GetWindowLong(hwnd,GWL_STYLE); RECT rect,lboxrect; + WND* wndPtr = WIN_FindWndPtr(hwnd); char className[] = "COMBOLBOX"; /* Hack so that class names are > 0x10000 */ char editName[] = "EDIT"; /* translate combo into listbox styles */ + cstyle |= WS_BORDER; if (cstyle & CBS_OWNERDRAWFIXED) style |= LBS_OWNERDRAWFIXED; if (cstyle & CBS_OWNERDRAWVARIABLE) style |= LBS_OWNERDRAWVARIABLE; if (cstyle & CBS_SORT) style |= LBS_SORT; @@ -122,19 +143,22 @@ static LRESULT CBCreate(HWND hwnd, WPARAM wParam, LPARAM lParam) style |= LBS_NOTIFY; CreateListBoxStruct(hwnd, ODT_COMBOBOX, style, GetParent(hwnd)); CreateComboStruct(hwnd,cstyle); + lphl = ComboGetListHeader(hwnd); lphc = ComboGetStorageHeader(hwnd); GetClientRect(hwnd,&rect); GetWindowRect(hwnd,&lboxrect); + /* FIXME: combos with edit controls are broken. */ switch(cstyle & 3) { case CBS_SIMPLE: /* edit control, list always visible */ dprintf_combo(stddeb,"CBS_SIMPLE\n"); SetRectEmpty(&lphc->RectButton); + lboxrect=rect; /* work around #1 */ lphc->LBoxTop = lphl->StdItemHeight; - lphc->hWndEdit = CreateWindow(MAKE_SEGPTR(editName), (SEGPTR)0, - WS_CHILD | WS_CLIPCHILDREN | WS_VISIBLE | SS_LEFT, + lphc->hWndEdit = CreateWindow16(MAKE_SEGPTR(editName), (SEGPTR)0, + WS_CHILD | WS_CLIPCHILDREN | WS_VISIBLE | SS_LEFT | WS_BORDER, 0, 0, rect.right, lphl->StdItemHeight, hwnd, (HMENU)1, WIN_GetWindowInstance(hwnd), 0L); break; @@ -147,7 +171,7 @@ static LRESULT CBCreate(HWND hwnd, WPARAM wParam, LPARAM lParam) SetWindowPos(hwnd, 0, 0, 0, rect.right - rect.left + 2*SYSMETRICS_CXBORDER, lphl->StdItemHeight + 2*SYSMETRICS_CYBORDER, SWP_NOMOVE | SWP_NOZORDER); - lphc->hWndEdit = CreateWindow(MAKE_SEGPTR(editName), (SEGPTR)0, + lphc->hWndEdit = CreateWindow16(MAKE_SEGPTR(editName), (SEGPTR)0, WS_CHILD | WS_CLIPCHILDREN | WS_VISIBLE | SS_LEFT, 0, 0, lphc->RectButton.left, lphl->StdItemHeight, hwnd, (HMENU)1, WIN_GetWindowInstance(hwnd), 0L); @@ -158,8 +182,9 @@ static LRESULT CBCreate(HWND hwnd, WPARAM wParam, LPARAM lParam) lphc->RectButton.left = lphc->RectButton.right - 6 - CBitWidth; lphc->RectButton.bottom = lphc->RectButton.top + lphl->StdItemHeight; lphc->LBoxTop = lphl->StdItemHeight; - SetWindowPos(hwnd, 0, 0, 0, rect.right - rect.left + 2*SYSMETRICS_CXBORDER, - lphl->StdItemHeight + 2*SYSMETRICS_CYBORDER, + + SetWindowPos(hwnd, 0, 0, 0, rect.right, + lphl->StdItemHeight + 2*SYSMETRICS_CYBORDER, SWP_NOMOVE | SWP_NOZORDER); break; } @@ -167,16 +192,45 @@ static LRESULT CBCreate(HWND hwnd, WPARAM wParam, LPARAM lParam) /* FIXME: WinSight says these should be CHILD windows with the TOPMOST flag * set. Wine doesn't support TOPMOST, and simply setting the WS_CHILD * flag doesn't work. */ - lphc->hWndLBox = CreateWindow(MAKE_SEGPTR(className), (SEGPTR)0, - WS_POPUP | WS_BORDER | WS_VSCROLL, + if ((cstyle & 3)==CBS_SIMPLE) /* work around #2 */ + { + lphc->hWndLBox = CreateWindow16(MAKE_SEGPTR(className), (SEGPTR)0, + WS_BORDER | WS_CHILD | WS_VISIBLE | + ((cstyle & WS_HSCROLL)? WS_HSCROLL : 0) | + ((cstyle & WS_VSCROLL)? WS_VSCROLL : 0), + lboxrect.left +8 , lboxrect.top, + lboxrect.right - lboxrect.left - 8, + lboxrect.bottom - lboxrect.top, + hwnd,0, WIN_GetWindowInstance(hwnd), + (SEGPTR)hwnd ); + } + else + { + lphc->hWndLBox = CreateWindow16(MAKE_SEGPTR(className), (SEGPTR)0, + WS_POPUP | WS_BORDER | + ((cstyle & WS_HSCROLL)? WS_HSCROLL : 0) | + ((cstyle & WS_VSCROLL)? WS_VSCROLL : 0), lboxrect.left, lboxrect.top, lboxrect.right - lboxrect.left, lboxrect.bottom - lboxrect.top, 0, 0, WIN_GetWindowInstance(hwnd), (SEGPTR)hwnd ); - ShowWindow(lphc->hWndLBox, SW_HIDE); - dprintf_combo(stddeb,"Combo Creation LBox=%04x\n", lphc->hWndLBox); - return 0; + ShowWindow(lphc->hWndLBox, SW_HIDE); + } + wndPtr->dwStyle &= ~(WS_VSCROLL | WS_HSCROLL); + + dprintf_combo( stddeb, "Combo Creation hwnd=%04x LBox=%04x\n", + hwnd, lphc->hWndLBox); + dprintf_combo( stddeb, " lbox %d,%d-%d,%d button %d,%d-%d,%d\n", + lboxrect.left, lboxrect.top, lboxrect.right, lboxrect.bottom, + lphc->RectButton.left, lphc->RectButton.top, + lphc->RectButton.right, lphc->RectButton.bottom ); + dprintf_combo( stddeb, " client %d,%d-%d,%d window %d,%d-%d,%d\n", + wndPtr->rectClient.left, wndPtr->rectClient.top, + wndPtr->rectClient.right, wndPtr->rectClient.bottom, + wndPtr->rectWindow.left, wndPtr->rectWindow.top, + wndPtr->rectWindow.right, wndPtr->rectWindow.bottom ); + return 0; } /*********************************************************************** @@ -205,14 +259,12 @@ static LRESULT CBPaint(HWND hwnd, WPARAM wParam, LPARAM lParam) HFONT hOldFont; HDC hdc; RECT rect; - int height; hdc = BeginPaint(hwnd, &ps); - - if (hComboBit != 0) { + if (hComboBit != 0 && !IsRectEmpty(&lphc->RectButton)) { /* work around #3 */ GRAPH_DrawReliefRect(hdc, &lphc->RectButton, 2, 2, FALSE); GRAPH_DrawBitmap(hdc, hComboBit, - lphc->RectButton.left + 3,lphc->RectButton.top + 2, + lphc->RectButton.left + 2,lphc->RectButton.top + 2, 0, 0, CBitWidth, CBitHeight ); } if (!IsWindowVisible(hwnd) || !lphl->bRedrawFlag @@ -234,12 +286,12 @@ static LRESULT CBPaint(HWND hwnd, WPARAM wParam, LPARAM lParam) if (hBrush == 0) hBrush = GetStockObject(WHITE_BRUSH); GetClientRect(hwnd, &rect); + + CBCheckSize(hwnd); rect.right -= (lphc->RectButton.right - lphc->RectButton.left); lpls = ListBoxGetItem(lphl,lphl->ItemFocused); if (lpls != NULL) { - height = lpls->mis.itemHeight; - rect.bottom = rect.top + height; FillRect(hdc, &rect, hBrush); ListBoxDrawItem (hwnd, lphl, hdc, lpls, &rect, ODA_DRAWENTIRE, 0); if (GetFocus() == hwnd) @@ -389,7 +441,6 @@ static LRESULT CBInsertString(HWND hwnd, WPARAM wParam, LPARAM lParam) wRet = ListBoxInsertString(lphl, wParam, (LPSTR)PTR_SEG_TO_LIN(lParam)); else wRet = ListBoxInsertString(lphl, wParam, (LPSTR)lParam); - ComboUpdateWindow(hwnd, lphl, lphc, TRUE); return wRet; } @@ -593,6 +644,59 @@ static LRESULT CBShowDropDown(HWND hwnd, WPARAM wParam, LPARAM lParam) /*********************************************************************** + * CBCheckSize + */ +static BOOL CBCheckSize(HWND hwnd) +{ + LPHEADCOMBO lphc = ComboGetStorageHeader(hwnd); + LPHEADLIST lphl = ComboGetListHeader(hwnd); + LONG cstyle = GetWindowLong(hwnd,GWL_STYLE); + RECT cRect,wRect; + + /* TODO - The size of combo's and their listboxes is still broken */ + + if (lphc->hWndLBox == 0) return FALSE; + + GetClientRect(hwnd,&cRect); + GetWindowRect(hwnd,&wRect); + + dprintf_vxd(stddeb,"CBCheckSize: cRect %d,%d-%d,%d wRect %d,%d-%d,%d\n", + cRect.left,cRect.top,cRect.right,cRect.bottom, + wRect.left,wRect.top,wRect.right,wRect.bottom); + + if ((cRect.bottom - cRect.top) > + (lphl->StdItemHeight + 2*SYSMETRICS_CYBORDER)) { + SetWindowPos(hwnd, 0, 0, 0, + cRect.right-cRect.left, + lphl->StdItemHeight+2*SYSMETRICS_CYBORDER, + SWP_NOMOVE | SWP_NOZORDER | SWP_NOREDRAW | SWP_NOACTIVATE ); + GetClientRect(hwnd,&cRect); + GetWindowRect(hwnd,&wRect); + } + + switch (cstyle & 3) { + case CBS_SIMPLE: + break; + case CBS_DROPDOWN: + case CBS_DROPDOWNLIST: + lphc->RectButton.right = cRect.right; + lphc->RectButton.left = cRect.right - 2*SYSMETRICS_CXBORDER - 4 + - CBitWidth; + lphc->RectButton.top = cRect.top; + lphc->RectButton.bottom = cRect.bottom; + break; + default: + fprintf(stderr,"CBCheckSize: style %lx not recognized!\n",cstyle); + return FALSE; + } + + CBLCheckSize(hwnd); + + return TRUE; +} + + +/*********************************************************************** * ComboWndProc */ LRESULT ComboBoxWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) @@ -610,6 +714,7 @@ LRESULT ComboBoxWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) case WM_LBUTTONDOWN: return CBLButtonDown(hwnd, wParam, lParam); case WM_SETFOCUS: return CBSetFocus(hwnd, wParam, lParam); case WM_KILLFOCUS: return CBKillFocus(hwnd, wParam, lParam); + case WM_SIZE: return CBCheckSize(hwnd); case CB_RESETCONTENT: return CBResetContent(hwnd, wParam, lParam); case CB_DIR: return CBDir(hwnd, wParam, lParam); case CB_ADDSTRING: return CBAddString(hwnd, wParam, lParam); @@ -736,6 +841,7 @@ static LRESULT CBLPaint( HWND hwnd, WPARAM wParam, LPARAM lParam ) PAINTSTRUCT ps; HBRUSH hBrush; HFONT hOldFont; + WND * wndPtr = WIN_FindWndPtr(hwnd); HWND combohwnd = CLBoxGetCombo(hwnd); HDC hdc; RECT rect; @@ -750,17 +856,12 @@ static LRESULT CBLPaint( HWND hwnd, WPARAM wParam, LPARAM lParam ) } hOldFont = SelectObject(hdc, lphl->hFont); -#ifdef WINELIB32 - hBrush = SendMessage(lphl->hParent, WM_CTLCOLORLISTBOX, hdc, hwnd); -#else - hBrush = SendMessage(lphl->hParent, WM_CTLCOLOR, hdc, - MAKELONG(hwnd, CTLCOLOR_LISTBOX)); -#endif - - if (hBrush == 0) hBrush = GetStockObject(WHITE_BRUSH); + /* listboxes should be white */ + hBrush = GetStockObject(WHITE_BRUSH); GetClientRect(hwnd, &rect); FillRect(hdc, &rect, hBrush); + CBLCheckSize(hwnd); lpls = lphl->lpFirst; @@ -797,7 +898,10 @@ static LRESULT CBLPaint( HWND hwnd, WPARAM wParam, LPARAM lParam ) lpls = lpls->lpNext; } - SetScrollRange(hwnd, SB_VERT, 0, ListMaxFirstVisible(lphl), TRUE); + + if (wndPtr->dwStyle & WS_VSCROLL) + SetScrollRange(hwnd, SB_VERT, 0, ListMaxFirstVisible(lphl), TRUE); + SelectObject(hdc,hOldFont); EndPaint( hwnd, &ps ); return 0; @@ -967,6 +1071,57 @@ static LRESULT CBLVScroll( HWND hwnd, WPARAM wParam, LPARAM lParam ) return 0; } + +/*********************************************************************** + * CBLCheckSize + */ +static BOOL CBLCheckSize(HWND hwnd) +{ + LPHEADCOMBO lphc = ComboGetStorageHeader(hwnd); + LPHEADLIST lphl = ComboGetListHeader(hwnd); + LPLISTSTRUCT lpls; + HWND hWndLBox; + RECT cRect,wRect,lRect,lwRect; + int totheight; + char className[80]; + + GetClassName(hwnd,className,80); + fflush(stddeb); + if (strncmp(className,"COMBOBOX",8)) return FALSE; + if ((hWndLBox = lphc->hWndLBox) == 0) return FALSE; + dprintf_vxd(stddeb,"CBLCheckSize headers hw %04x lb %04x name %s\n", + hwnd,hWndLBox,className); + + GetClientRect(hwnd,&cRect); + GetWindowRect(hwnd,&wRect); + GetClientRect(hWndLBox,&lRect); + GetWindowRect(hWndLBox,&lwRect); + + dprintf_vxd(stddeb,"CBLCheckSize: init cRect %d,%d-%d,%d wRect %d,%d-%d,%d\n", + cRect.left,cRect.top,cRect.right,cRect.bottom, + wRect.left,wRect.top,wRect.right,wRect.bottom); + dprintf_vxd(stddeb," lRect %d,%d-%d,%d lwRect %d,%d-%d,%d\n", + lRect.left,lRect.top,lRect.right,lRect.bottom, + lwRect.left,lwRect.top,lwRect.right,lwRect.bottom); + fflush(stddeb); + + totheight = 0; + for (lpls=lphl->lpFirst; lpls != NULL; lpls=lpls->lpNext) + totheight += lpls->mis.itemHeight; + + /* TODO: This isn't really what windows does */ + if (lRect.bottom-lRect.top < 3*lphl->StdItemHeight) { + dprintf_vxd(stddeb," Changing; totHeight %d StdItemHght %d\n", + totheight,lphl->StdItemHeight); + SetWindowPos(hWndLBox, 0, lRect.left, lRect.top, + lwRect.right-lwRect.left, totheight+2*SYSMETRICS_CYBORDER, + SWP_NOMOVE | SWP_NOZORDER | SWP_NOREDRAW | SWP_NOACTIVATE ); + } + + return TRUE; +} + + /*********************************************************************** * ComboLBoxWndProc */ @@ -984,6 +1139,7 @@ LRESULT ComboLBoxWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) case WM_LBUTTONUP: return CBLLButtonUp(hwnd, wParam, lParam); case WM_MOUSEMOVE: return CBLMouseMove(hwnd, wParam, lParam); case WM_VSCROLL: return CBLVScroll(hwnd, wParam, lParam); + case WM_SIZE: return CBLCheckSize(hwnd); } return DefWindowProc(hwnd, message, wParam, lParam); } diff --git a/controls/edit.c b/controls/edit.c index 296365c69cb..d55c9548200 100644 --- a/controls/edit.c +++ b/controls/edit.c @@ -48,7 +48,7 @@ typedef struct { typedef struct { UINT TextWidth; /* width of the widest line in pixels */ - HLOCAL hBuf; + HLOCAL16 hBuf; char *text; HFONT hFont; LINEDEF *LineDefs; @@ -64,7 +64,7 @@ typedef struct UINT SelStart; /* offset of selection start, == SelEnd if no selection */ UINT SelEnd; /* offset of selection end == current caret position */ UINT NumTabStops; - LPINT TabStops; + LPINT16 TabStops; EDITWORDBREAKPROC WordBreakProc; char PasswordChar; } EDITSTATE; @@ -858,7 +858,7 @@ static void EDIT_InvalidateText(WND *wndPtr, UINT start, UINT end) RECT rcWnd; RECT rcLine; RECT rcUpdate; - UINT line; + UINT l; if (end == start ) return; @@ -894,10 +894,10 @@ static void EDIT_InvalidateText(WND *wndPtr, UINT start, UINT end) &rcLine); if (IntersectRect(&rcUpdate, &rcWnd, &rcLine)) InvalidateRect(wndPtr->hwndSelf, &rcUpdate, FALSE); - for (line = sl + 1 ; line < el ; line++) { - EDIT_GetLineRect(wndPtr, line, 0, + for (l = sl + 1 ; l < el ; l++) { + EDIT_GetLineRect(wndPtr, l, 0, (UINT)EDIT_EM_LineLength(wndPtr, - (UINT)EDIT_EM_LineIndex(wndPtr, line, 0L), 0L), + (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L), 0L), &rcLine); if (IntersectRect(&rcUpdate, &rcWnd, &rcLine)) InvalidateRect(wndPtr->hwndSelf, &rcUpdate, FALSE); @@ -1262,7 +1262,7 @@ static UINT EDIT_PaintText(WND *wndPtr, HDC hdc, INT x, INT y, UINT line, UINT c UINT ret; char *text; UINT li; - INT xoff; + UINT xoff; if (!count) return 0; @@ -1318,7 +1318,7 @@ static LRESULT EDIT_ReplaceSel(WND *wndPtr, WPARAM wParam, LPARAM lParam) { const char *str = (char *)lParam; int strl = strlen(str); - int tl = EDIT_WM_GetTextLength(wndPtr, 0, 0L); + UINT tl = (UINT)EDIT_WM_GetTextLength(wndPtr, 0, 0L); UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); int i; @@ -1365,24 +1365,24 @@ static LRESULT EDIT_ReplaceSel(WND *wndPtr, WPARAM wParam, LPARAM lParam) static void EDIT_ScrollIntoView(WND *wndPtr) { UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); - int l = EDIT_EM_LineFromChar(wndPtr, e, 0L); - int lineindex = EDIT_EM_LineIndex(wndPtr, l, 0L); - int firstvis = (int)EDIT_EM_GetFirstVisibleLine(wndPtr, 0, 0L); - int vislinecount = EDIT_GetVisibleLineCount(wndPtr); - int wndwidth = EDIT_GetWndWidth(wndPtr); - int charwidth = EDIT_GetAveCharWidth(wndPtr); - int x = EDIT_WndXFromCol(wndPtr, l, e - lineindex); + UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L); + UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L); + UINT fv = (UINT)EDIT_EM_GetFirstVisibleLine(wndPtr, 0, 0L); + UINT vlc = EDIT_GetVisibleLineCount(wndPtr); + UINT ww = EDIT_GetWndWidth(wndPtr); + UINT cw = EDIT_GetAveCharWidth(wndPtr); + INT x = EDIT_WndXFromCol(wndPtr, l, e - li); int dy = 0; int dx = 0; - if (l >= firstvis + vislinecount) - dy = l - vislinecount + 1 - firstvis; - if (l < firstvis) - dy = l - firstvis; + if (l >= fv + vlc) + dy = l - vlc + 1 - fv; + if (l < fv) + dy = l - fv; if (x < 0) - dx = x - wndwidth / HSCROLL_FRACTION / charwidth * charwidth; - if (x > wndwidth) - dx = x - (HSCROLL_FRACTION - 1) * wndwidth / HSCROLL_FRACTION / charwidth * charwidth; + dx = x - ww / HSCROLL_FRACTION / cw * cw; + if (x > ww) + dx = x - (HSCROLL_FRACTION - 1) * ww / HSCROLL_FRACTION / cw * cw; if (dy || dx) { EDIT_EM_LineScroll(wndPtr, 0, MAKELPARAM(dy, dx)); if (dy) @@ -1404,24 +1404,24 @@ static INT EDIT_WndXFromCol(WND *wndPtr, UINT line, UINT col) { EDITSTATE *es = EDITSTATEPTR(wndPtr); char *text = EDIT_GetPointer(wndPtr); - int ret; + INT ret; HDC hdc; HFONT hFont; HFONT oldFont = 0; - int linecount = (int)EDIT_EM_GetLineCount(wndPtr, 0, 0L); - int lineindex = EDIT_EM_LineIndex(wndPtr, line, 0L); - int linelength = EDIT_EM_LineLength(wndPtr, lineindex, 0L); - int xoffset = EDIT_GetXOffset(wndPtr); + UINT lc = (UINT)EDIT_EM_GetLineCount(wndPtr, 0, 0L); + UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, line, 0L); + UINT ll = (UINT)EDIT_EM_LineLength(wndPtr, li, 0L); + UINT xoff = EDIT_GetXOffset(wndPtr); hdc = GetDC(wndPtr->hwndSelf); hFont = (HFONT)EDIT_WM_GetFont(wndPtr, 0, 0L); if (hFont) oldFont = SelectObject(hdc, hFont); - line = MAX(0, MIN(line, linecount - 1)); - col = MAX(0, MIN(col, linelength)); + line = MAX(0, MIN(line, lc - 1)); + col = MIN(col, ll); ret = LOWORD(GetTabbedTextExtent(hdc, - text + lineindex, col, - es->NumTabStops, es->TabStops)) - xoffset; + text + li, col, + es->NumTabStops, es->TabStops)) - xoff; if (hFont) SelectObject(hdc, oldFont); ReleaseDC(wndPtr->hwndSelf, hdc); @@ -1438,10 +1438,10 @@ static INT EDIT_WndXFromCol(WND *wndPtr, UINT line, UINT col) */ static INT EDIT_WndYFromLine(WND *wndPtr, UINT line) { - int firstvis = (int)EDIT_EM_GetFirstVisibleLine(wndPtr, 0, 0L); - int lineheight = EDIT_GetLineHeight(wndPtr); + UINT fv = (UINT)EDIT_EM_GetFirstVisibleLine(wndPtr, 0, 0L); + UINT lh = EDIT_GetLineHeight(wndPtr); - return (line - firstvis) * lineheight; + return (line - fv) * lh; } @@ -1458,7 +1458,7 @@ static INT EDIT_WndYFromLine(WND *wndPtr, UINT line) */ static INT EDIT_WordBreakProc(char *s, INT index, INT count, INT action) { - int ret = 0; + INT ret = 0; dprintf_edit(stddeb, "edit: EDIT_WordBreakProc: s=%p, index=%d" ", count=%d, action=%d\n", s, index, count, action); @@ -1582,17 +1582,17 @@ static LRESULT EDIT_EM_GetLine(WND *wndPtr, WPARAM wParam, LPARAM lParam) char *src; char *dst; UINT len; - int i; - int linecount = (int)EDIT_EM_GetLineCount(wndPtr, 0, 0L); + UINT i; + UINT lc = (UINT)EDIT_EM_GetLineCount(wndPtr, 0, 0L); if (!IsMultiLine(wndPtr)) wParam = 0; - if ((UINT)wParam >= linecount) + if ((UINT)wParam >= lc) return 0L; text = EDIT_GetPointer(wndPtr); - src = text + EDIT_EM_LineIndex(wndPtr, wParam, 0L); + src = text + (UINT)EDIT_EM_LineIndex(wndPtr, wParam, 0L); dst = (char *)PTR_SEG_TO_LIN(lParam); - len = MIN(*(WORD *)dst, EDIT_EM_LineLength(wndPtr, wParam, 0L)); + len = MIN(*(WORD *)dst, (UINT)EDIT_EM_LineLength(wndPtr, wParam, 0L)); for (i = 0 ; i < len ; i++) { *dst = *src; src++; @@ -1669,7 +1669,7 @@ static LRESULT EDIT_EM_GetSel(WND *wndPtr, WPARAM wParam, LPARAM lParam) * * EM_GETTHUMB * - * undocumented: is this right ? + * FIXME: undocumented: is this right ? * */ static LRESULT EDIT_EM_GetThumb(WND *wndPtr, WPARAM wParam, LPARAM lParam) @@ -1723,14 +1723,14 @@ static LRESULT EDIT_EM_LimitText(WND *wndPtr, WPARAM wParam, LPARAM lParam) */ static LRESULT EDIT_EM_LineFromChar(WND *wndPtr, WPARAM wParam, LPARAM lParam) { - int l; + UINT l; if (!IsMultiLine(wndPtr)) return 0L; if ((INT)wParam == -1) wParam = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); - l = (int)EDIT_EM_GetLineCount(wndPtr, 0, 0L) - 1; - while (EDIT_EM_LineIndex(wndPtr, l, 0L) > (UINT)wParam) + l = (UINT)EDIT_EM_GetLineCount(wndPtr, 0, 0L) - 1; + while ((UINT)EDIT_EM_LineIndex(wndPtr, l, 0L) > (UINT)wParam) l--; return (LRESULT)l; } @@ -1745,16 +1745,17 @@ static LRESULT EDIT_EM_LineIndex(WND *wndPtr, WPARAM wParam, LPARAM lParam) { EDITSTATE *es = EDITSTATEPTR(wndPtr); UINT e; - int l; + UINT l; + UINT lc = (UINT)EDIT_EM_GetLineCount(wndPtr, 0, 0L); if ((INT)wParam == -1) { e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); - l = (int)EDIT_EM_GetLineCount(wndPtr, 0, 0L) - 1; + l = lc - 1; while (es->LineDefs[l].offset > e) l--; return (LRESULT)es->LineDefs[l].offset; } - if ((UINT)wParam >= es->LineCount) + if ((UINT)wParam >= lc) return -1L; return (LRESULT)es->LineDefs[(UINT)wParam].offset; } @@ -1768,21 +1769,21 @@ static LRESULT EDIT_EM_LineIndex(WND *wndPtr, WPARAM wParam, LPARAM lParam) static LRESULT EDIT_EM_LineLength(WND *wndPtr, WPARAM wParam, LPARAM lParam) { EDITSTATE *es = EDITSTATEPTR(wndPtr); - UINT selstart; - UINT selend; - int startline; - int endline; + UINT s; + UINT e; + UINT sl; + UINT el; if (!IsMultiLine(wndPtr)) return (LRESULT)es->LineDefs[0].length; if ((INT)wParam == -1) { - selstart = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); - selend = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); - startline = EDIT_EM_LineFromChar(wndPtr, selstart, 0L); - endline = EDIT_EM_LineFromChar(wndPtr, selend, 0L); - return (LRESULT)(selstart - es->LineDefs[startline].offset + - es->LineDefs[endline].offset + - es->LineDefs[endline].length - selend); + s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); + e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); + sl = (UINT)EDIT_EM_LineFromChar(wndPtr, s, 0L); + el = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L); + return (LRESULT)(s - es->LineDefs[sl].offset + + es->LineDefs[el].offset + + es->LineDefs[el].length - e); } return (LRESULT)es->LineDefs[(UINT)EDIT_EM_LineFromChar(wndPtr, wParam, 0L)].length; } @@ -1796,28 +1797,24 @@ static LRESULT EDIT_EM_LineLength(WND *wndPtr, WPARAM wParam, LPARAM lParam) static LRESULT EDIT_EM_LineScroll(WND *wndPtr, WPARAM wParam, LPARAM lParam) { EDITSTATE *es = EDITSTATEPTR(wndPtr); - int linecount = (int)EDIT_EM_GetLineCount(wndPtr, 0, 0L); - int firstvis = (int)EDIT_EM_GetFirstVisibleLine(wndPtr, 0, 0L); - int newfirstvis = firstvis + (INT)LOWORD(lParam); - int xoffset = EDIT_GetXOffset(wndPtr); - int newxoffset = xoffset + (INT)HIWORD(lParam); - int textwidth = EDIT_GetTextWidth(wndPtr); - int dx; - int dy; + UINT lc = (UINT)EDIT_EM_GetLineCount(wndPtr, 0, 0L); + UINT fv = (UINT)EDIT_EM_GetFirstVisibleLine(wndPtr, 0, 0L); + UINT nfv = MAX(0, fv + (INT)LOWORD(lParam)); + UINT xoff = EDIT_GetXOffset(wndPtr); + UINT nxoff = MAX(0, xoff + (INT)HIWORD(lParam)); + UINT tw = EDIT_GetTextWidth(wndPtr); + INT dx; + INT dy; POINT pos; HRGN hRgn; - if (newfirstvis < 0) - newfirstvis = 0; - if (newfirstvis >= linecount) - newfirstvis = linecount - 1; - - if (newxoffset < 0) - newxoffset = 0; - if (newxoffset >= textwidth) - newxoffset = textwidth; - dx = xoffset - newxoffset; - dy = EDIT_WndYFromLine(wndPtr, firstvis) - EDIT_WndYFromLine(wndPtr, newfirstvis); + if (nfv >= lc) + nfv = lc - 1; + + if (nxoff >= tw) + nxoff = tw; + dx = xoff - nxoff; + dy = EDIT_WndYFromLine(wndPtr, fv) - EDIT_WndYFromLine(wndPtr, nfv); if (dx || dy) { if (wndPtr->hwndSelf == GetFocus()) HideCaret(wndPtr->hwndSelf); @@ -1830,8 +1827,8 @@ static LRESULT EDIT_EM_LineScroll(WND *wndPtr, WPARAM wParam, LPARAM lParam) DeleteObject(hRgn); ScrollWindow(wndPtr->hwndSelf, dx, dy, NULL, NULL); } - es->FirstVisibleLine = newfirstvis; - es->XOffset = newxoffset; + es->FirstVisibleLine = nfv; + es->XOffset = nxoff; if (IsVScrollBar(wndPtr)) SetScrollPos(wndPtr->hwndSelf, SB_VERT, EDIT_WM_VScroll(wndPtr, EM_GETTHUMB, 0L), TRUE); @@ -1888,7 +1885,7 @@ static LRESULT EDIT_EM_SetHandle(WND *wndPtr, WPARAM wParam, LPARAM lParam) /* * old buffer is freed by caller */ - es->hBuf = (HLOCAL)wParam; + es->hBuf = (HLOCAL16)wParam; es->BufSize = LOCAL_Size(wndPtr->hInstance, es->hBuf) - 1; es->LineCount = 0; es->FirstVisibleLine = 0; @@ -1898,6 +1895,7 @@ static LRESULT EDIT_EM_SetHandle(WND *wndPtr, WPARAM wParam, LPARAM lParam) EDIT_BuildLineDefs(wndPtr); if (EDIT_GetRedraw(wndPtr)) InvalidateRect(wndPtr->hwndSelf, NULL, TRUE); + EDIT_ScrollIntoView(wndPtr); } return 0L; } @@ -1982,9 +1980,9 @@ static LRESULT EDIT_EM_SetSel(WND *wndPtr, WPARAM wParam, LPARAM lParam) UINT ne = HIWORD(lParam); UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); - int el; - int elineindex; - int tl = EDIT_WM_GetTextLength(wndPtr, 0, 0L); + UINT el; + UINT eli; + UINT tl = (UINT)EDIT_WM_GetTextLength(wndPtr, 0, 0L); if ((INT)ns == -1) { ns = e; @@ -1997,9 +1995,9 @@ static LRESULT EDIT_EM_SetSel(WND *wndPtr, WPARAM wParam, LPARAM lParam) es->SelStart = ns; es->SelEnd = ne; if (wndPtr->hwndSelf == GetFocus()) { - el = EDIT_EM_LineFromChar(wndPtr, ne, 0L); - elineindex = EDIT_EM_LineIndex(wndPtr, el, 0L); - SetCaretPos(EDIT_WndXFromCol(wndPtr, el, ne - elineindex), + el = (UINT)EDIT_EM_LineFromChar(wndPtr, ne, 0L); + eli = (UINT)EDIT_EM_LineIndex(wndPtr, el, 0L); + SetCaretPos(EDIT_WndXFromCol(wndPtr, el, ne - eli), EDIT_WndYFromLine(wndPtr, el)); } if (!wParam) @@ -2038,9 +2036,9 @@ static LRESULT EDIT_EM_SetTabStops(WND *wndPtr, WPARAM wParam, LPARAM lParam) if (!wParam) es->TabStops = NULL; else { - es->TabStops = (LPINT)xmalloc(wParam * sizeof(unsigned short)); - memcpy(es->TabStops, (LPINT)PTR_SEG_TO_LIN(lParam), - (UINT)wParam * sizeof(INT)); + es->TabStops = (LPINT16)xmalloc(wParam * sizeof(INT16)); + memcpy(es->TabStops, (LPINT16)PTR_SEG_TO_LIN(lParam), + (UINT)wParam * sizeof(INT16)); } return 1L; } @@ -2158,14 +2156,14 @@ static LRESULT EDIT_WM_Copy(WND *wndPtr, WPARAM wParam, LPARAM lParam) if (e == s) return -1L; ORDER_UINT(s, e); - hdst = GlobalAlloc(GMEM_MOVEABLE, (DWORD)(e - s + 1)); - dst = GlobalLock(hdst); + hdst = GlobalAlloc16(GMEM_MOVEABLE, (DWORD)(e - s + 1)); + dst = GlobalLock16(hdst); text = EDIT_GetPointer(wndPtr); src = text + s; for (i = 0 ; i < e - s ; i++) *dst++ = *src++; *dst = '\0'; - GlobalUnlock(hdst); + GlobalUnlock16(hdst); OpenClipboard(wndPtr->hwndSelf); EmptyClipboard(); SetClipboardData(CF_TEXT, hdst); @@ -2208,8 +2206,15 @@ static LRESULT EDIT_WM_Create(WND *wndPtr, WPARAM wParam, LPARAM lParam) es->BufLimit = BUFLIMIT_SINGLE; es->PasswordChar = (cs->style & ES_PASSWORD) ? '*' : '\0'; } + if (!LOCAL_HeapSize(wndPtr->hInstance)) { + if (!LocalInit(wndPtr->hInstance, 0, GlobalSize(wndPtr->hInstance))) { + fprintf(stderr, "edit: WM_CREATE: could not initialize local heap\n"); + return -1L; + } + dprintf_edit(stddeb, "edit: WM_CREATE: local heap initialized\n"); + } if (!(es->hBuf = LOCAL_Alloc(wndPtr->hInstance, LMEM_MOVEABLE, es->BufSize + 1))) { - fprintf(stderr, "edit: WM_CREATE: unable to heap buffer, please report !\n"); + fprintf(stderr, "edit: WM_CREATE: unable to allocate buffer\n"); return -1L; } es->BufSize = LOCAL_Size(wndPtr->hInstance, es->hBuf) - 1; @@ -2348,11 +2353,9 @@ static LRESULT EDIT_WM_GetText(WND *wndPtr, WPARAM wParam, LPARAM lParam) */ static LRESULT EDIT_WM_GetTextLength(WND *wndPtr, WPARAM wParam, LPARAM lParam) { - LRESULT ret; char *text = EDIT_GetPointer(wndPtr); - ret = (LRESULT)strlen(text); - return ret; + return (LRESULT)strlen(text); } @@ -2365,43 +2368,43 @@ static LRESULT EDIT_WM_GetTextLength(WND *wndPtr, WPARAM wParam, LPARAM lParam) */ static LRESULT EDIT_WM_HScroll(WND *wndPtr, WPARAM wParam, LPARAM lParam) { - int wndwidth = EDIT_GetWndWidth(wndPtr); - int textwidth = EDIT_GetTextWidth(wndPtr); - int charwidth = EDIT_GetAveCharWidth(wndPtr); - int xoffset = EDIT_GetXOffset(wndPtr); - int dx = 0; + UINT ww = EDIT_GetWndWidth(wndPtr); + UINT tw = EDIT_GetTextWidth(wndPtr); + UINT cw = EDIT_GetAveCharWidth(wndPtr); + UINT xoff = EDIT_GetXOffset(wndPtr); + INT dx = 0; BOOL not = TRUE; LRESULT ret = 0L; switch (wParam) { case SB_LINELEFT: - dx = -charwidth; + dx = -cw; break; case SB_LINERIGHT: - dx = charwidth; + dx = cw; break; case SB_PAGELEFT: - dx = -wndwidth / HSCROLL_FRACTION / charwidth * charwidth; + dx = -ww / HSCROLL_FRACTION / cw * cw; break; case SB_PAGERIGHT: - dx = wndwidth / HSCROLL_FRACTION / charwidth * charwidth; + dx = ww / HSCROLL_FRACTION / cw * cw; break; case SB_LEFT: - dx = -xoffset; + dx = -xoff; break; case SB_RIGHT: - dx = textwidth - xoffset; + dx = tw - xoff; break; case SB_THUMBTRACK: /* * not = FALSE; */ case SB_THUMBPOSITION: - dx = LOWORD(lParam) * textwidth / 100 - xoffset; + dx = LOWORD(lParam) * tw / 100 - xoff; break; /* The next two are undocumented ! */ case EM_GETTHUMB: - ret = textwidth ? MAKELONG(xoffset * 100 / textwidth, 0) : 0; + ret = tw ? MAKELONG(xoff * 100 / tw, 0) : 0; break; case EM_LINESCROLL: dx = LOWORD(lParam); @@ -2539,11 +2542,11 @@ static LRESULT EDIT_WM_KillFocus(WND *wndPtr, WPARAM wParam, LPARAM lParam) */ static LRESULT EDIT_WM_LButtonDblClk(WND *wndPtr, WPARAM wParam, LPARAM lParam) { - int s; + UINT s; UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); - UINT l = EDIT_EM_LineFromChar(wndPtr, e, 0L); - int li = EDIT_EM_LineIndex(wndPtr, l, 0L); - int ll = EDIT_EM_LineLength(wndPtr, e, 0L); + UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L); + UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L); + UINT ll = (UINT)EDIT_EM_LineLength(wndPtr, e, 0L); char *text = EDIT_GetPointer(wndPtr); s = li + EDIT_CallWordBreakProc(wndPtr, text + li, e - li, ll, WB_LEFT); @@ -2575,7 +2578,7 @@ static LRESULT EDIT_WM_LButtonDown(WND *wndPtr, WPARAM wParam, LPARAM lParam) l = MIN(fv + vlc - 1, MAX(fv, l)); x = MIN(EDIT_GetWndWidth(wndPtr), MAX(0, x)); c = EDIT_ColFromWndX(wndPtr, l, x); - li = EDIT_EM_LineIndex(wndPtr, l, 0L); + li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L); e = li + c; if (GetKeyState(VK_SHIFT) & 0x8000) s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); @@ -2625,7 +2628,7 @@ static LRESULT EDIT_WM_MouseMove(WND *wndPtr, WPARAM wParam, LPARAM lParam) x = MIN(EDIT_GetWndWidth(wndPtr), MAX(0, x)); c = EDIT_ColFromWndX(wndPtr, l, x); s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); - li = EDIT_EM_LineIndex(wndPtr, l, 0L); + li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L); EDIT_EM_SetSel(wndPtr, 1, MAKELPARAM(s, li + c)); } return 0L; @@ -2639,10 +2642,11 @@ static LRESULT EDIT_WM_MouseMove(WND *wndPtr, WPARAM wParam, LPARAM lParam) */ static LRESULT EDIT_WM_Paint(WND *wndPtr, WPARAM wParam, LPARAM lParam) { - EDITSTATE *es = EDITSTATEPTR(wndPtr); PAINTSTRUCT ps; - int i; - int firstvis = (int)EDIT_EM_GetFirstVisibleLine(wndPtr, 0, 0L); + UINT i; + UINT fv = (UINT)EDIT_EM_GetFirstVisibleLine(wndPtr, 0, 0L); + UINT vlc = EDIT_GetVisibleLineCount(wndPtr); + UINT lc = (UINT)EDIT_EM_GetLineCount(wndPtr, 0, 0L); HDC hdc; HFONT hFont; HFONT oldFont = 0; @@ -2663,7 +2667,7 @@ static LRESULT EDIT_WM_Paint(WND *wndPtr, WPARAM wParam, LPARAM lParam) if (!IsWindowEnabled(wndPtr->hwndSelf)) SetTextColor(hdc, GetSysColor(COLOR_GRAYTEXT)); GetClipBox(hdc, &rcRgn); - for (i = firstvis ; i <= MIN(firstvis + EDIT_GetVisibleLineCount(wndPtr), firstvis + es->LineCount - 1) ; i++ ) { + for (i = fv ; i <= MIN(fv + vlc, fv + lc - 1) ; i++ ) { EDIT_GetLineRect(wndPtr, i, 0, -1, &rcLine); if (IntersectRect(&rc, &rcRgn, &rcLine)) EDIT_PaintLine(wndPtr, hdc, i, rev); @@ -2687,9 +2691,9 @@ static LRESULT EDIT_WM_Paste(WND *wndPtr, WPARAM wParam, LPARAM lParam) OpenClipboard(wndPtr->hwndSelf); if ((hsrc = GetClipboardData(CF_TEXT))) { - src = (char *)GlobalLock(hsrc); + src = (char *)GlobalLock16(hsrc); EDIT_ReplaceSel(wndPtr, 0, (LPARAM)src); - GlobalUnlock(hsrc); + GlobalUnlock16(hsrc); } CloseClipboard(); return -1L; @@ -2749,7 +2753,7 @@ static LRESULT EDIT_WM_SetFont(WND *wndPtr, WPARAM wParam, LPARAM lParam) if (es->hFont) oldFont = SelectObject(hdc, es->hFont); GetTextMetrics(hdc, &tm); - es->LineHeight = HIWORD(GetTextExtent(hdc, "", 0)); + es->LineHeight = HIWORD(GetTextExtent(hdc, "X", 1)); es->AveCharWidth = tm.tmAveCharWidth; if (es->hFont) SelectObject(hdc, oldFont); @@ -2794,6 +2798,7 @@ static LRESULT EDIT_WM_SetText(WND *wndPtr, WPARAM wParam, LPARAM lParam) EDIT_EM_ReplaceSel(wndPtr, 0, lParam); EDIT_EM_EmptyUndoBuffer(wndPtr, 0, 0L); EDIT_EM_SetModify(wndPtr, TRUE, 0L); + EDIT_ScrollIntoView(wndPtr); return 0L; } @@ -2825,10 +2830,10 @@ static LRESULT EDIT_WM_Size(WND *wndPtr, WPARAM wParam, LPARAM lParam) */ static LRESULT EDIT_WM_VScroll(WND *wndPtr, WPARAM wParam, LPARAM lParam) { - int linecount = (int)EDIT_EM_GetLineCount(wndPtr, 0, 0L); - int firstvis = (int)EDIT_EM_GetFirstVisibleLine(wndPtr, 0, 0L); - int vislinecount = EDIT_GetVisibleLineCount(wndPtr); - int dy = 0; + UINT lc = (UINT)EDIT_EM_GetLineCount(wndPtr, 0, 0L); + UINT fv = (UINT)EDIT_EM_GetFirstVisibleLine(wndPtr, 0, 0L); + UINT vlc = EDIT_GetVisibleLineCount(wndPtr); + INT dy = 0; BOOL not = TRUE; LRESULT ret = 0L; @@ -2840,27 +2845,27 @@ static LRESULT EDIT_WM_VScroll(WND *wndPtr, WPARAM wParam, LPARAM lParam) dy = 1; break; case SB_PAGEUP: - dy = -vislinecount; + dy = -vlc; break; case SB_PAGEDOWN: - dy = vislinecount; + dy = vlc; break; case SB_TOP: - dy = -firstvis; + dy = -fv; break; case SB_BOTTOM: - dy = linecount - 1 - firstvis; + dy = lc - 1 - fv; break; case SB_THUMBTRACK: /* * not = FALSE; */ case SB_THUMBPOSITION: - dy = LOWORD(lParam) * (linecount - 1) / 100 - firstvis; + dy = LOWORD(lParam) * (lc - 1) / 100 - fv; break; /* The next two are undocumented ! */ case EM_GETTHUMB: - ret = (linecount > 1) ? MAKELONG(firstvis * 100 / (linecount - 1), 0) : 0L; + ret = (lc > 1) ? MAKELONG(fv * 100 / (lc - 1), 0) : 0L; break; case EM_LINESCROLL: dy = LOWORD(lParam); diff --git a/controls/listbox.c b/controls/listbox.c index dbec947a578..b6d31c05f02 100644 --- a/controls/listbox.c +++ b/controls/listbox.c @@ -130,14 +130,9 @@ void CreateListBoxStruct(HWND hwnd, WORD CtlType, LONG styles, HWND parent) lphl->hDrawItemStruct = 0; } -#if 0 - HeapHandle = GlobalAlloc(GMEM_FIXED, LIST_HEAP_SIZE); - HeapBase = GlobalLock(HeapHandle); - HEAP_Init(&lphl->Heap, HeapBase, LIST_HEAP_SIZE); -#endif /* WINELIBS list boxes do not operate on local heaps */ #ifndef WINELIB - lphl->HeapSel = GlobalAlloc(GMEM_FIXED,LIST_HEAP_SIZE); + lphl->HeapSel = GlobalAlloc16(GMEM_FIXED,LIST_HEAP_SIZE); LocalInit( lphl->HeapSel, 0, LIST_HEAP_SIZE-1); #else lphl->HeapSel = 0; @@ -150,7 +145,7 @@ void DestroyListBoxStruct(LPHEADLIST lphl) USER_HEAP_FREE(lphl->hDrawItemStruct); /* XXX need to free lphl->Heap */ - GlobalFree(lphl->HeapSel); + GlobalFree16(lphl->HeapSel); free(lphl); } @@ -184,11 +179,14 @@ int ListMaxFirstVisible(LPHEADLIST lphl) void ListBoxUpdateWindow(HWND hwnd, LPHEADLIST lphl, BOOL repaint) { - SetScrollRange(hwnd, SB_VERT, 0, ListMaxFirstVisible(lphl), TRUE); - if (lphl->ItemsPerColumn != 0) { + WND *wndPtr = WIN_FindWndPtr(hwnd); + + if (wndPtr->dwStyle & WS_VSCROLL) + SetScrollRange(hwnd, SB_VERT, 0, ListMaxFirstVisible(lphl), TRUE); + if ((wndPtr->dwStyle & WS_HSCROLL) && (lphl->ItemsPerColumn != 0)) SetScrollRange(hwnd, SB_HORZ, 1, lphl->ItemsVisible / lphl->ItemsPerColumn + 1, TRUE); - } + if (repaint && lphl->bRedrawFlag) { InvalidateRect(hwnd, NULL, TRUE); } @@ -328,7 +326,8 @@ void ListBoxAskMeasure(LPHEADLIST lphl, LPLISTSTRUCT lpls) SendMessage(lphl->hParent, WM_MEASUREITEM, 0, (LPARAM)USER_HEAP_SEG_ADDR(hTemp)); if (lphl->dwStyle & LBS_OWNERDRAWFIXED) { - lphl->StdItemHeight = lpmeasure->itemHeight; + if (lpmeasure->itemHeight > lphl->StdItemHeight) + lphl->StdItemHeight = lpmeasure->itemHeight; lpls->mis.itemHeight = lpmeasure->itemHeight; } @@ -356,6 +355,7 @@ LPLISTSTRUCT ListBoxCreateItem(LPHEADLIST lphl, int id) } + int ListBoxInsertString(LPHEADLIST lphl, UINT uIndex, LPCSTR newstr) { LPLISTSTRUCT *lppls, lplsnew, lpls; @@ -393,7 +393,7 @@ int ListBoxInsertString(LPHEADLIST lphl, UINT uIndex, LPCSTR newstr) hStr = LIST_HEAP_ALLOC(lphl, LMEM_MOVEABLE, strlen(newstr) + 1); str = (LPSTR)LIST_HEAP_ADDR(lphl, hStr); if (str == NULL) return LB_ERRSPACE; - strcpy(str, newstr); + strcpy(str, newstr); lplsnew->itemText = str; /* I'm not so sure about the next one */ lplsnew->mis.itemData = 0; @@ -783,8 +783,10 @@ static LONG LBCreate(HWND hwnd, WORD wParam, LONG lParam) GetClientRect(hwnd,&rect); lphl->ColumnsWidth = rect.right - rect.left; - SetScrollRange(hwnd, SB_VERT, 0, ListMaxFirstVisible(lphl), TRUE); - SetScrollRange(hwnd, SB_HORZ, 1, 1, TRUE); + if (dwStyle & WS_VSCROLL) + SetScrollRange(hwnd, SB_VERT, 0, ListMaxFirstVisible(lphl), TRUE); + if (dwStyle & WS_HSCROLL) + SetScrollRange(hwnd, SB_HORZ, 1, 1, TRUE); return 0; } @@ -1307,7 +1309,6 @@ static LONG LBPaint(HWND hwnd, WORD wParam, LONG lParam) RECT rect, paintRect, scratchRect; int i, top, height, maxwidth, ipc; - top = 0; if (!IsWindowVisible(hwnd) || !lphl->bRedrawFlag) { diff --git a/controls/menu.c b/controls/menu.c index eecb57597cb..20f4e06d85c 100644 --- a/controls/menu.c +++ b/controls/menu.c @@ -62,9 +62,12 @@ static BOOL fEndMenuCalled = FALSE; ((DWORD)MAKELONG( (WORD)(item)->hText, (item)->xTab )) extern void NC_DrawSysButton(HWND hwnd, HDC hdc, BOOL down); /* nonclient.c */ +static HMENU MENU_CopySysMenu(void); static HBITMAP hStdCheck = 0; static HBITMAP hStdMnArrow = 0; +static HMENU MENU_DefSysMenu = 0; /* Default system menu */ + /* we _can_ use global popup window because there's no way 2 menues can * be tracked at the same time. @@ -95,11 +98,27 @@ BOOL MENU_Init() arrow_bitmap_width = bm.bmWidth; arrow_bitmap_height = bm.bmHeight; + if (!(MENU_DefSysMenu = MENU_CopySysMenu())) + { + fprintf( stderr, "Unable to create default system menu\n" ); + return FALSE; + } return TRUE; } /*********************************************************************** + * MENU_GetDefSysMenu + * + * Return the default system menu. + */ +HMENU MENU_GetDefSysMenu(void) +{ + return MENU_DefSysMenu; +} + + +/*********************************************************************** * MENU_HasSysMenu * * Check whether the window owning the menu bar has a system menu. @@ -124,7 +143,7 @@ static HMENU MENU_CopySysMenu(void) POPUPMENU *menu; if (!(handle = SYSRES_LoadResource( SYSRES_MENU_SYSMENU ))) return 0; - hMenu = LoadMenuIndirect( WIN16_GlobalLock( handle ) ); + hMenu = LoadMenuIndirect( WIN16_GlobalLock16( handle ) ); SYSRES_FreeResource( handle ); if (!hMenu) { @@ -246,7 +265,7 @@ static UINT MENU_FindItemByKey( HWND hwndOwner, HMENU hmenu, UINT key ) int i; LONG menuchar; - if (!IsMenu( hmenu )) hmenu = GetSystemMenu( hwndOwner, FALSE); + if (!IsMenu( hmenu )) hmenu = WIN_FindWndPtr(hwndOwner)->hSysMenu; if (!hmenu) return -1; menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hmenu ); @@ -692,7 +711,7 @@ BOOL MENU_SwitchTPWndTo( HTASK hTask) { /* This is supposed to be called when popup is hidden */ - TDB* task = (TDB*)GlobalLock(hTask); + TDB* task = (TDB*)GlobalLock16(hTask); if( !task ) return 0; @@ -730,7 +749,7 @@ static BOOL MENU_ShowPopup(HWND hwndOwner, HMENU hmenu, UINT id, int x, int y) if (!pTopPWnd) { - pTopPWnd = WIN_FindWndPtr(CreateWindow( POPUPMENU_CLASS_ATOM, (SEGPTR)0, + pTopPWnd = WIN_FindWndPtr(CreateWindow16( POPUPMENU_CLASS_ATOM, (SEGPTR)0, WS_POPUP | WS_BORDER, x, y, menu->Width + 2*SYSMETRICS_CXBORDER, menu->Height + 2*SYSMETRICS_CYBORDER, @@ -742,7 +761,7 @@ static BOOL MENU_ShowPopup(HWND hwndOwner, HMENU hmenu, UINT id, int x, int y) if( uSubPWndLevel ) { /* create new window for the submenu */ - HWND hWnd = CreateWindow( POPUPMENU_CLASS_ATOM, (SEGPTR)0, + HWND hWnd = CreateWindow16( POPUPMENU_CLASS_ATOM, (SEGPTR)0, WS_POPUP | WS_BORDER, x, y, menu->Width + 2*SYSMETRICS_CXBORDER, menu->Height + 2*SYSMETRICS_CYBORDER, @@ -818,12 +837,12 @@ static void MENU_SelectItem( HWND hwndOwner, HMENU hmenu, UINT wIndex ) #ifdef WINELIB32 /* FIX: LostInfo */ SendMessage( hwndOwner, WM_MENUSELECT, - MAKEWPARAM( (DWORD)GetSystemMenu( lppop->hWnd, FALSE ), + MAKEWPARAM( WIN_FindWndPtr(lppop->hWnd)->hSysMenu, lppop->wFlags | MF_MOUSESELECT ), (LPARAM)hmenu ); #else SendMessage( hwndOwner, WM_MENUSELECT, - GetSystemMenu( lppop->hWnd, FALSE ), + WIN_FindWndPtr(lppop->hWnd)->hSysMenu, MAKELONG( lppop->wFlags | MF_MOUSESELECT, hmenu ) ); #endif } @@ -1111,7 +1130,7 @@ static HMENU MENU_GetSubPopup( HMENU hmenu ) menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hmenu ); if (menu->FocusedItem == NO_SELECTED_ITEM) return 0; else if (menu->FocusedItem == SYSMENU_SELECTED) - return GetSystemMenu( menu->hWnd, FALSE ); + return WIN_FindWndPtr(menu->hWnd)->hSysMenu; item = ((MENUITEM *)USER_HEAP_LIN_ADDR(menu->hItems)) + menu->FocusedItem; if (!(item->item_flags & MF_POPUP) || !(item->item_flags & MF_MOUSESELECT)) @@ -1135,7 +1154,7 @@ static void MENU_HideSubPopups( HWND hwndOwner, HMENU hmenu ) if (menu->FocusedItem == NO_SELECTED_ITEM) return; if (menu->FocusedItem == SYSMENU_SELECTED) { - hsubmenu = GetSystemMenu( menu->hWnd, FALSE ); + hsubmenu = WIN_FindWndPtr(menu->hWnd)->hSysMenu; } else { @@ -1345,7 +1364,7 @@ static BOOL MENU_ButtonUp( HWND hwndOwner, HMENU hmenu, HMENU *hmenuCurrent, { if (!MENU_IsInSysMenu( menu, pt )) return FALSE; id = SYSMENU_SELECTED; - hsubmenu = GetSystemMenu( menu->hWnd, FALSE ); + hsubmenu = WIN_FindWndPtr(menu->hWnd)->hSysMenu; } if (menu->FocusedItem != id) return FALSE; @@ -1498,7 +1517,7 @@ static BOOL MENU_TrackMenu( HMENU hmenu, UINT wFlags, int x, int y, HWND hwnd, LPRECT lprect ) { MSG *msg; - HLOCAL hMsg; + HLOCAL16 hMsg; POPUPMENU *menu; HMENU hmenuCurrent = hmenu; BOOL fClosed = FALSE, fRemove; @@ -2219,7 +2238,10 @@ BOOL DestroyMenu(HMENU hMenu) { LPPOPUPMENU lppop; dprintf_menu(stddeb,"DestroyMenu (%04x) !\n", hMenu); + if (hMenu == 0) return FALSE; + /* Silently ignore attempts to destroy default system menu */ + if (hMenu == MENU_DefSysMenu) return TRUE; lppop = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu); if (!lppop || (lppop->wMagic != MENU_MAGIC)) return FALSE; lppop->wMagic = 0; /* Mark it as destroyed */ @@ -2252,6 +2274,11 @@ HMENU GetSystemMenu(HWND hWnd, BOOL bRevert) WND *wndPtr = WIN_FindWndPtr( hWnd ); if (!wndPtr) return 0; + if (!wndPtr->hSysMenu || (wndPtr->hSysMenu == MENU_DefSysMenu)) + { + wndPtr->hSysMenu = MENU_CopySysMenu(); + return wndPtr->hSysMenu; + } if (!bRevert) return wndPtr->hSysMenu; if (wndPtr->hSysMenu) DestroyMenu(wndPtr->hSysMenu); wndPtr->hSysMenu = MENU_CopySysMenu(); @@ -2267,7 +2294,8 @@ BOOL SetSystemMenu( HWND hwnd, HMENU hMenu ) WND *wndPtr; if (!(wndPtr = WIN_FindWndPtr(hwnd))) return FALSE; - if (wndPtr->hSysMenu) DestroyMenu( wndPtr->hSysMenu ); + if (wndPtr->hSysMenu && (wndPtr->hSysMenu != MENU_DefSysMenu)) + DestroyMenu( wndPtr->hSysMenu ); wndPtr->hSysMenu = hMenu; return TRUE; } diff --git a/controls/scroll.c b/controls/scroll.c index 27323a6507b..e0e7617efa4 100644 --- a/controls/scroll.c +++ b/controls/scroll.c @@ -956,7 +956,7 @@ DWORD SCROLL_SetNCSbState(WND* wndPtr, int vMin, int vMax, int vPos, /************************************************************************* * GetScrollRange (USER.65) */ -void GetScrollRange(HWND hwnd, int nBar, LPINT lpMin, LPINT lpMax) +void GetScrollRange(HWND hwnd, int nBar, LPINT16 lpMin, LPINT16 lpMax) { SCROLLINFO *infoPtr; diff --git a/controls/static.c b/controls/static.c index 9f470b5c215..9b88116db89 100644 --- a/controls/static.c +++ b/controls/static.c @@ -58,10 +58,10 @@ static HICON STATIC_SetIcon( WND *wndPtr, HICON hicon ) infoPtr->hIcon = hicon; if (hicon) { - CURSORICONINFO *info = (CURSORICONINFO *) GlobalLock( hicon ); + CURSORICONINFO *info = (CURSORICONINFO *) GlobalLock16( hicon ); SetWindowPos( wndPtr->hwndSelf, 0, 0, 0, info->nWidth, info->nHeight, SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOZORDER ); - GlobalUnlock( hicon ); + GlobalUnlock16( hicon ); } return prevIcon; } diff --git a/controls/widgets.c b/controls/widgets.c index e541835192b..1f737bc7c59 100644 --- a/controls/widgets.c +++ b/controls/widgets.c @@ -15,7 +15,7 @@ #include "module.h" #include "stackframe.h" -static WNDCLASS WIDGETS_BuiltinClasses[] = +static WNDCLASS16 WIDGETS_BuiltinClasses[] = { { CS_GLOBALCLASS | CS_DBLCLKS | CS_VREDRAW | CS_HREDRAW | CS_PARENTDC, (WNDPROC)"ButtonWndProc", 0, sizeof(BUTTONINFO), @@ -61,7 +61,7 @@ BOOL WIDGETS_Init(void) { int i; char name[20]; - WNDCLASS *class = WIDGETS_BuiltinClasses; + WNDCLASS16 *class = WIDGETS_BuiltinClasses; for (i = 0; i < NB_BUILTIN_CLASSES; i++, class++) { @@ -69,7 +69,7 @@ BOOL WIDGETS_Init(void) class->lpszClassName = MAKE_SEGPTR(name); class->hCursor = LoadCursor( 0, IDC_ARROW ); class->lpfnWndProc = MODULE_GetWndProcEntry16( (char *)class->lpfnWndProc ); - if (!RegisterClass( class )) return FALSE; + if (!RegisterClass16( class )) return FALSE; } return TRUE; } diff --git a/debugger/hash.c b/debugger/hash.c index daeda4a282c..c0e6e28984f 100644 --- a/debugger/hash.c +++ b/debugger/hash.c @@ -241,7 +241,7 @@ void DEBUG_LoadEntryPoints(void) /* Now search the non-resident names table */ if (!pModule->nrname_handle) continue; /* No non-resident table */ - cpnt = (char *)GlobalLock( pModule->nrname_handle ); + cpnt = (char *)GlobalLock16( pModule->nrname_handle ); while (*cpnt) { cpnt += *cpnt + 1 + sizeof(WORD); diff --git a/etc/commdlg-ordinals b/etc/commdlg-ordinals deleted file mode 100644 index b4c9e2a17e5..00000000000 --- a/etc/commdlg-ordinals +++ /dev/null @@ -1,26 +0,0 @@ - 1 2 0c17 GETOPENFILENAME exported, shared data - 2 2 0c48 GETSAVEFILENAME exported, shared data - 5 1 0ea1 CHOOSECOLOR exported, shared data - 6 2 42a3 FILEOPENDLGPROC exported, shared data - 7 2 446a FILESAVEDLGPROC exported, shared data - 8 1 0197 COLORDLGPROC exported, shared data - 9 6 0000 LOADALTERBITMAP exported, shared data - 11 5 0000 FINDTEXT exported, shared data - 12 5 019c REPLACETEXT exported, shared data - 13 5 036d FINDTEXTDLGPROC exported, shared data - 14 5 0582 REPLACETEXTDLGPROC exported, shared data - 15 4 0000 CHOOSEFONT exported, shared data - 16 4 02b0 FORMATCHARDLGPROC exported, shared data - 18 4 184e FONTSTYLEENUMPROC exported, shared data - 19 4 1096 FONTFAMILYENUMPROC exported, shared data - 20 3 0c94 PRINTDLG exported, shared data - 21 3 371f PRINTDLGPROC exported, shared data - 22 3 307a PRINTSETUPDLGPROC exported, shared data - 23 3 0000 EDITINTEGERONLY exported, shared data - 25 1 1b46 WANTARROWS exported, shared data - 26 6 01e7 COMMDLGEXTENDEDERROR exported, shared data - 27 2 0c79 GETFILETITLE exported, shared data - 28 6 01ad WEP exported, shared data - 29 2 10a5 DWLBSUBCLASS exported, shared data - 30 3 0056 DWUPARROWHACK exported, shared data - 31 2 100f DWOKSUBCLASS exported, shared data diff --git a/etc/ddeml-ordinals b/etc/ddeml-ordinals deleted file mode 100644 index e4588c5db37..00000000000 --- a/etc/ddeml-ordinals +++ /dev/null @@ -1,38 +0,0 @@ - 1 2 002c WEP exported, shared data - 2 1 0010 DDEINITIALIZE exported, shared data - 3 1 03ae DDEUNINITIALIZE exported, shared data - 4 1 068a DDECONNECTLIST exported, shared data - 5 1 0948 DDEQUERYNEXTSERVER exported, shared data - 6 1 0a46 DDEDISCONNECTLIST exported, shared data - 7 1 0aac DDECONNECT exported, shared data - 8 1 0b4a DDEDISCONNECT exported, shared data - 9 1 0dac DDEQUERYCONVINFO exported, shared data - 10 1 1020 DDESETUSERHANDLE exported, shared data - 11 1 1204 DDECLIENTTRANSACTION exported, shared data - 12 1 1bf0 DDEABANDONTRANSACTION exported, shared data - 13 1 1118 DDEPOSTADVISE exported, shared data - 14 1 14e8 DDECREATEDATAHANDLE exported, shared data - 15 1 1598 DDEADDDATA exported, shared data - 16 1 17a8 DDEGETDATA exported, shared data - 17 1 188a DDEACCESSDATA exported, shared data - 18 1 1916 DDEUNACCESSDATA exported, shared data - 19 1 1946 DDEFREEDATAHANDLE exported, shared data - 20 1 14a8 DDEGETLASTERROR exported, shared data - 21 1 19a4 DDECREATESTRINGHANDLE exported, shared data - 22 1 1a40 DDEFREESTRINGHANDLE exported, shared data - 23 1 1b14 DDEQUERYSTRING exported, shared data - 24 1 1aac DDEKEEPSTRINGHANDLE exported, shared data - 26 1 1d98 DDEENABLECALLBACK exported, shared data - 27 1 1ed4 DDENAMESERVICE exported, shared data - 28 1 4614 CLIENTWNDPROC exported, shared data - 29 1 523a SERVERWNDPROC exported, shared data - 30 1 5480 SUBFRAMEWNDPROC exported, shared data - 31 1 5558 DMGWNDPROC exported, shared data - 32 1 5758 CONVLISTWNDPROC exported, shared data - 33 1 35f2 MONITORWNDPROC exported, shared data - 34 1 2fb0 DDESENDHOOKPROC exported, shared data - 35 1 309e DDEPOSTHOOKPROC exported, shared data - 36 1 1bb0 DDECMPSTRINGHANDLES exported, shared data - 37 1 0be0 DDERECONNECT exported, shared data - 38 1 6b8a INITENUM exported, shared data - 39 1 036a TERMDLGPROC exported, shared data diff --git a/etc/gdi-ordinals b/etc/gdi-ordinals deleted file mode 100644 index 55fcf490d87..00000000000 --- a/etc/gdi-ordinals +++ /dev/null @@ -1,283 +0,0 @@ - 1 1 4e0c SETBKCOLOR exported, shared data - 2 1 4e22 SETBKMODE exported - 3 1 4b46 SETMAPMODE exported, shared data - 4 1 4e6b SETROP2 exported - 5 1 5218 SETRELABS exported - 6 1 4eb9 SETPOLYFILLMODE exported - 7 1 4e92 SETSTRETCHBLTMODE exported - 8 1 4a00 SETTEXTCHARACTEREXTRA exported, shared data - 9 1 4df8 SETTEXTCOLOR exported, shared data - 10 1 49ec SETTEXTJUSTIFICATION exported, shared data - 11 1 4ee0 SETWINDOWORG exported, shared data - 12 4 06c8 SETWINDOWEXT exported - 13 1 4f14 SETVIEWPORTORG exported, shared data - 14 4 06fc SETVIEWPORTEXT exported - 15 1 4b12 OFFSETWINDOWORG exported - 16 4 0764 SCALEWINDOWEXT exported - 17 1 4ade OFFSETVIEWPORTORG exported - 18 4 0730 SCALEVIEWPORTEXT exported - 19 21 0e96 LINETO exported, shared data - 20 21 0eaa MOVETO exported, shared data - 21 1 4c50 EXCLUDECLIPRECT exported - 22 1 4c84 INTERSECTCLIPRECT exported - 23 9 1030 ARC exported, shared data - 24 9 101c ELLIPSE exported, shared data - 25 15 08fc FLOODFILL exported, shared data - 26 9 1044 PIE exported, shared data - 27 25 0000 RECTANGLE exported, shared data - 28 9 106c ROUNDRECT exported, shared data - 29 1 4c14 PATBLT exported, shared data - 30 1 48cb SAVEDC exported, shared data - 31 23 0383 SETPIXEL exported, shared data - 32 1 4d3a OFFSETCLIPRGN exported, shared data - 33 1 4f95 TEXTOUT exported, shared data - 34 1 4bfa BITBLT exported, shared data - 35 1 4be0 STRETCHBLT exported, shared data - 36 24 0000 POLYGON exported, shared data - 37 21 0ede POLYLINE exported, shared data - 38 7 06d1 ESCAPE exported, shared data - 39 1 48b7 RESTOREDC exported, shared data - 40 26 0000 FILLRGN exported, shared data - 41 26 003a FRAMERGN exported, shared data - 42 1 4dbd INVERTRGN exported, shared data - 43 26 0020 PAINTRGN exported, shared data - 44 1 4c98 SELECTCLIPRGN exported, shared data - 45 1 4dd7 SELECTOBJECT exported, shared data - 46 1 79f4 __GP exported, shared data - 47 1 4d4e COMBINERGN exported, shared data - 48 1 4929 CREATEBITMAP exported, shared data - 49 1 4943 CREATEBITMAPINDIRECT exported, shared data - 50 4 05d7 CREATEBRUSHINDIRECT exported, shared data - 51 4 05f1 CREATECOMPATIBLEBITMAP exported - 52 1 47c4 CREATECOMPATIBLEDC exported, shared data - 53 1 480a CREATEDC exported - 54 9 020e CREATEELLIPTICRGN exported, shared data - 55 9 0f99 CREATEELLIPTICRGNINDIRECT exported, shared data - 56 3 1589 CREATEFONT exported, shared data - 57 3 15b1 CREATEFONTINDIRECT exported, shared data - 58 4 05a7 CREATEHATCHBRUSH exported, shared data - 59 1 1ec0 WEP exported, shared data - 60 4 05c3 CREATEPATTERNBRUSH exported, shared data - 61 1 48f3 CREATEPEN exported, shared data - 62 1 490f CREATEPENINDIRECT exported, shared data - 63 9 0fb3 CREATEPOLYGONRGN exported, shared data - 64 1 59cd CREATERECTRGN exported, shared data - 65 1 4cb2 CREATERECTRGNINDIRECT exported, shared data - 66 4 017a CREATESOLIDBRUSH exported, shared data - 67 1 4a14 DPTOLP exported - 68 1 4897 DELETEDC exported, shared data - 69 1 48df DELETEOBJECT exported, shared data - 70 5 05a7 ENUMFONTS exported, shared data - 71 4 0678 ENUMOBJECTS exported, shared data - 72 1 4ccc EQUALRGN exported, shared data - 73 1 16a5 EXCLUDEVISRECT exported - 74 1 4a76 GETBITMAPBITS exported - 75 1 515d GETBKCOLOR exported, shared data - 76 1 5142 GETBKMODE exported - 77 1 4c64 GETCLIPBOX exported, shared data - 78 1 5157 GETCURRENTPOSITION exported - 79 1 5154 GETDCORG exported - 80 1 4a96 GETDEVICECAPS exported, shared data - 81 1 513f GETMAPMODE exported - 82 4 06a8 GETOBJECT exported, shared data - 83 23 036f GETPIXEL exported, shared data - 84 1 5139 GETPOLYFILLMODE exported - 85 1 5133 GETROP2 exported - 86 1 5145 GETRELABS exported - 87 1 4a5a GETSTOCKOBJECT exported, shared data - 88 1 513c GETSTRETCHBLTMODE exported - 89 16 0c63 GETTEXTCHARACTEREXTRA exported, shared data - 90 1 5160 GETTEXTCOLOR exported, shared data - 91 1 4b8d GETTEXTEXTENT exported, shared data - 92 3 166a GETTEXTFACE exported, shared data - 93 3 169a GETTEXTMETRICS exported, shared data - 94 1 5151 GETVIEWPORTEXT exported - 95 1 514b GETVIEWPORTORG exported - 96 1 514e GETWINDOWEXT exported - 97 1 5148 GETWINDOWORG exported - 98 1 16a2 INTERSECTVISRECT exported - 99 1 4a37 LPTODP exported -100 23 039b LINEDDA exported, shared data -101 1 4d26 OFFSETRGN exported, shared data -102 1 2929 OFFSETVISRGN exported, shared data -103 1 4da9 PTVISIBLE exported, shared data -104 1 4d06 RECTVISIBLE exported, shared data -105 1 1635 SELECTVISRGN exported, shared data -106 1 4aaa SETBITMAPBITS exported -117 1 1118 SETDCORG exported, shared data -119 2 0e25 ADDFONTRESOURCE exported, shared data -121 1 2067 DEATH exported, shared data -122 1 208e RESURRECTION exported, shared data -123 19 1603 PLAYMETAFILE exported, shared data -124 19 1624 GETMETAFILE exported, shared data -125 20 248b CREATEMETAFILE exported, shared data -126 20 24a5 CLOSEMETAFILE exported, shared data -127 19 15ef DELETEMETAFILE exported, shared data -128 1 41b0 MULDIV exported, shared data -129 1 076c SAVEVISRGN exported, shared data -130 1 07b2 RESTOREVISRGN exported, shared data -131 1 200a INQUIREVISRGN exported, shared data -132 7 073d SETENVIRONMENT exported, shared data -133 7 0707 GETENVIRONMENT exported, shared data -134 1 4b6d GETRGNBOX exported, shared data -135 15 087f SCANLR exported, shared data -136 6 0507 REMOVEFONTRESOURCE exported, shared data -148 1 4c28 SETBRUSHORG exported, shared data -149 1 515a GETBRUSHORG exported -150 1 4c3c UNREALIZEOBJECT exported, shared data -151 20 246b COPYMETAFILE exported, shared data -153 1 47d8 CREATEIC exported -154 1 4aca GETNEARESTCOLOR exported, shared data -155 7 052d QUERYABORT exported, shared data -156 4 0605 CREATEDISCARDABLEBITMAP exported -159 20 24b9 GETMETAFILEBITS exported, shared data -160 20 24cd SETMETAFILEBITS exported, shared data -161 1 4d95 PTINREGION exported, shared data -162 1 49b8 GETBITMAPDIMENSION exported, shared data -163 1 4984 SETBITMAPDIMENSION exported, shared data -169 1 4352 ISDCDIRTY exported, shared data -170 1 439b SETDCSTATUS exported, shared data -172 1 4d81 SETRECTRGN exported, shared data -173 1 5130 GETCLIPRGN exported, shared data -175 19 166a ENUMMETAFILE exported, shared data -176 19 163e PLAYMETAFILERECORD exported, shared data -179 1 0601 GETDCSTATE exported, shared data -180 1 0615 SETDCSTATE exported, shared data -181 1 4ce6 RECTINREGION exported, shared data -190 31 04ec SETDCHOOK exported, shared data -191 31 04b5 GETDCHOOK exported, shared data -192 1 76b0 SETHOOKFLAGS exported, shared data -193 31 0526 SETBOUNDSRECT exported, shared data -194 1 76e4 GETBOUNDSRECT exported, shared data -195 1 1ac6 SELECTBITMAP exported, shared data -196 20 24e1 SETMETAFILEBITSBETTER exported, shared data -201 13 014a DMBITBLT exported -202 13 014f DMCOLORINFO exported -206 13 0163 DMENUMDFONTS exported -207 13 0169 DMENUMOBJ exported -208 13 0159 DMOUTPUT exported -209 13 0154 DMPIXEL exported -210 13 015e DMREALIZEOBJECT exported -211 13 00df DMSTRBLT exported, shared data -212 13 016e DMSCANLR exported -213 13 0171 BRUTE exported, shared data -214 13 0000 DMEXTTEXTOUT exported, shared data -215 13 0130 DMGETCHARWIDTH exported, shared data -216 13 0136 DMSTRETCHBLT exported, shared data -217 13 013b DMDIBBITS exported, shared data -218 13 0140 DMSTRETCHDIBITS exported, shared data -219 13 0145 DMSETDIBTODEV exported, shared data -220 13 024d DMTRANSPOSE exported, shared data -230 27 0000 CREATEPQ exported -231 27 00fb MINPQ exported -232 27 00fe EXTRACTPQ exported -233 27 0045 INSERTPQ exported -234 27 01dc SIZEPQ exported -235 27 01cb DELETEPQ exported -240 28 01c3 OPENJOB exported, shared data -241 28 08eb WRITESPOOL exported, shared data -242 28 0e82 WRITEDIALOG exported, shared data -243 28 1292 CLOSEJOB exported, shared data -244 28 13e0 DELETEJOB exported, shared data -245 28 1802 GETSPOOLJOB exported, shared data -246 28 06a1 STARTSPOOLPAGE exported, shared data -247 28 1112 ENDSPOOLPAGE exported, shared data -248 28 18e4 QUERYJOB exported, shared data -250 28 0000 COPY exported, shared data -253 28 0ff3 DELETESPOOLPAGE exported, shared data -254 28 156f SPOOLFILE exported, shared data -300 5 093c ENGINEENUMERATEFONT exported, shared data -301 6 0560 ENGINEDELETEFONT exported, shared data -302 3 2b2d ENGINEREALIZEFONT exported, shared data -303 3 2c8a ENGINEGETCHARWIDTH exported, shared data -304 5 0993 ENGINESETFONTCONTEXT exported, shared data -305 7 09e9 ENGINEGETGLYPHBMP exported, shared data -306 7 1184 ENGINEMAKEFONTDIR exported, shared data -307 7 083d GETCHARABCWIDTHS exported, shared data -308 7 0876 GETOUTLINETEXTMETRICS exported, shared data -309 7 0795 GETGLYPHOUTLINE exported, shared data -310 7 0763 CREATESCALABLEFONTRESOURCE exported, shared data -311 7 07fc GETFONTDATA exported, shared data -312 7 0d8a CONVERTOUTLINEFONTFILE exported, shared data -313 7 0d36 GETRASTERIZERCAPS exported, shared data -314 1 669a ENGINEEXTTEXTOUT exported, shared data -330 5 05d7 ENUMFONTFAMILIES exported, shared data -332 7 0896 GETKERNINGPAIRS exported, shared data -345 1 5136 GETTEXTALIGN exported, shared data -346 1 4e49 SETTEXTALIGN exported, shared data -348 9 1058 CHORD exported, shared data -349 3 163f SETMAPPERFLAGS exported, shared data -350 3 15cb GETCHARWIDTH exported, shared data -351 1 4f48 EXTTEXTOUT exported, shared data -352 1 0a2e GETPHYSICALFONTHANDLE exported, shared data -353 3 160b GETASPECTRATIOFILTER exported, shared data -354 1 1fdf SHRINKGDIHEAP exported, shared data -355 48 02ef FTRAPPING0 exported, shared data -360 22 0023 CREATEPALETTE exported, shared data -361 22 0271 GDISELECTPALETTE exported, shared data -362 22 1088 GDIREALIZEPALETTE exported, shared data -363 22 0050 GETPALETTEENTRIES exported, shared data -364 22 00d2 SETPALETTEENTRIES exported, shared data -365 22 101d REALIZEDEFAULTPALETTE exported, shared data -366 22 0109 UPDATECOLORS exported, shared data -367 22 0000 ANIMATEPALETTE exported, shared data -368 22 00be RESIZEPALETTE exported, shared data -370 22 0073 GETNEARESTPALETTEINDEX exported, shared data -372 15 0910 EXTFLOODFILL exported, shared data -373 22 00f5 SETSYSTEMPALETTEUSE exported, shared data -374 22 00aa GETSYSTEMPALETTEUSE exported, shared data -375 22 0087 GETSYSTEMPALETTEENTRIES exported, shared data -376 31 009c RESETDC exported, shared data -377 31 0045 STARTDOC exported, shared data -378 31 002e ENDDOC exported, shared data -379 31 0068 STARTPAGE exported, shared data -380 31 0017 ENDPAGE exported, shared data -381 31 007c SETABORTPROC exported, shared data -382 31 0000 ABORTDOC exported, shared data -400 1 420e FASTWINDOWFRAME exported, shared data -401 2 0403 GDIMOVEBITMAP exported, shared data -403 2 042a GDIINIT2 exported, shared data -405 2 012e FINALGDIINIT exported, shared data -407 1 0ec1 CREATEUSERBITMAP exported -409 4 0200 CREATEUSERDISCARDABLEBITMAP exported -410 19 1490 ISVALIDMETAFILE exported, shared data -411 1 511a GETCURLOGFONT exported, shared data -412 22 0b0c ISDCCURRENTPALETTE exported, shared data -439 11 0202 STRETCHDIBITS exported, shared data -440 11 0000 SETDIBITS exported, shared data -441 11 0196 GETDIBITS exported, shared data -442 11 006c CREATEDIBITMAP exported, shared data -443 11 010a SETDIBITSTODEVICE exported, shared data -444 9 01be CREATEROUNDRECTRGN exported, shared data -445 4 0619 CREATEDIBPATTERNBRUSH exported, shared data -449 11 1015 DEVICECOLORMATCH exported, shared data -450 24 0023 POLYPOLYGON exported, shared data -451 9 0fe3 CREATEPOLYPOLYGONRGN exported, shared data -452 21 19a0 GDISEEGDIDO exported, shared data -460 1 7690 GDITASKTERMINATION exported, shared data -461 1 76a2 SETOBJECTOWNER exported, shared data -462 1 1ec6 ISGDIOBJECT exported, shared data -463 1 0e68 MAKEOBJECTPRIVATE exported, shared data -464 19 1862 FIXUPBOGUSPUBLISHERMETAFILE exported, shared data -465 1 29b7 RECTVISIBLE_EHH exported, shared data -466 1 2aab RECTINREGION_EHH exported, shared data -467 1 56a3 UNICODETOANSI exported, shared data -468 1 49cc GETBITMAPDIMENSIONEX exported, shared data -469 1 5eb5 GETBRUSHORGEX exported -470 1 5ed8 GETCURRENTPOSITIONEX exported -471 1 4bb4 GETTEXTEXTENTPOINT exported, shared data -472 1 5f27 GETVIEWPORTEXTEX exported -473 1 5f4a GETVIEWPORTORGEX exported -474 1 5f6d GETWINDOWEXTEX exported -475 1 5f90 GETWINDOWORGEX exported -476 1 4af2 OFFSETVIEWPORTORGEX exported -477 1 4b26 OFFSETWINDOWORGEX exported -478 1 4998 SETBITMAPDIMENSIONEX exported, shared data -479 4 0710 SETVIEWPORTEXTEX exported -480 1 4f28 SETVIEWPORTORGEX exported, shared data -481 4 06dc SETWINDOWEXTEX exported -482 1 4ef4 SETWINDOWORGEX exported, shared data -483 21 0ebe MOVETOEX exported, shared data -484 4 0744 SCALEVIEWPORTEXTEX exported -485 4 0778 SCALEWINDOWEXTEX exported -486 3 161f GETASPECTRATIOFILTEREX exported, shared data diff --git a/etc/kernel-ordinals b/etc/kernel-ordinals deleted file mode 100644 index f3ad91d7431..00000000000 --- a/etc/kernel-ordinals +++ /dev/null @@ -1,233 +0,0 @@ - 1 1 93ce FATALEXIT exported, shared data - 2 1 9d6f EXITKERNEL exported - 3 3 07c6 GETVERSION exported - 4 2 28b7 LOCALINIT exported - 5 1 0543 LOCALALLOC exported - 6 1 0587 LOCALREALLOC exported - 7 1 055f LOCALFREE exported - 8 1 0573 LOCALLOCK exported - 9 1 05bd LOCALUNLOCK exported - 10 1 05a9 LOCALSIZE exported - 11 1 8d6a LOCALHANDLE exported - 12 1 05d1 LOCALFLAGS exported - 13 1 8d85 LOCALCOMPACT exported - 14 2 0278 LOCALNOTIFY exported - 15 1 022b GLOBALALLOC exported - 16 1 028c GLOBALREALLOC exported - 17 1 0247 GLOBALFREE exported - 18 1 0278 GLOBALLOCK exported - 19 1 02cb GLOBALUNLOCK exported - 20 1 02b7 GLOBALSIZE exported - 21 1 0264 GLOBALHANDLE exported - 22 1 02e8 GLOBALFLAGS exported - 23 1 03b3 LOCKSEGMENT exported - 24 1 03c7 UNLOCKSEGMENT exported - 25 1 1105 GLOBALCOMPACT exported - 26 1 0e39 GLOBALFREEALL exported - 28 1 1190 GLOBALMASTERHANDLE exported - 29 1 7d21 YIELD exported - 30 1 7ca8 WAITEVENT exported - 31 1 7d92 POSTEVENT exported - 32 1 7df0 SETPRIORITY exported - 33 1 81e5 LOCKCURRENTTASK exported - 34 1 7de3 SETTASKQUEUE exported - 35 1 7d9d GETTASKQUEUE exported - 36 1 842c GETCURRENTTASK exported - 37 3 024e GETCURRENTPDB exported - 38 1 7dc5 SETTASKSIGNALPROC exported - 41 1 9c8e ENABLEDOS exported - 42 1 9c8f DISABLEDOS exported - 45 2 0244 LOADMODULE exported - 46 2 0176 FREEMODULE exported - 47 2 01bb GETMODULEHANDLE exported - 48 2 01d2 GETMODULEUSAGE exported - 49 2 01e6 GETMODULEFILENAME exported - 50 2 019e GETPROCADDRESS exported - 51 3 00a8 MAKEPROCINSTANCE exported - 52 3 00c5 FREEPROCINSTANCE exported - 53 1 4927 CALLPROCINSTANCE exported - 54 2 0219 GETINSTANCEDATA exported - 55 3 08ee CATCH exported - 56 3 0928 THROW exported - 57 1 0663 GETPROFILEINT exported, shared data - 58 1 0689 GETPROFILESTRING exported, shared data - 59 1 0763 WRITEPROFILESTRING exported, shared data - 60 3 0008 FINDRESOURCE exported - 61 1 0126 LOADRESOURCE exported - 62 1 018b LOCKRESOURCE exported - 63 1 0177 FREERESOURCE exported - 64 1 0140 ACCESSRESOURCE exported - 65 1 019f SIZEOFRESOURCE exported - 66 1 015d ALLOCRESOURCE exported - 67 3 002e SETRESOURCEHANDLER exported - 68 3 041a INITATOMTABLE exported - 69 1 4942 FINDATOM exported - 70 1 493f ADDATOM exported - 71 1 01b9 DELETEATOM exported - 72 1 01cd GETATOMNAME exported - 73 1 01fd GETATOMHANDLE exported - 74 1 05e5 OPENFILE exported - 75 3 04be OPENPATHNAME exported - 76 3 04b6 DELETEPATHNAME exported - 77 1 83cd RESERVED1 exported - 78 1 83ca RESERVED2 exported - 79 1 83c4 RESERVED3 exported - 80 1 83c7 RESERVED4 exported - 81 1 046e _LCLOSE exported - 82 1 04e6 _LREAD exported - 83 1 048d _LCREAT exported - 84 1 04b8 _LLSEEK exported - 85 1 0443 _LOPEN exported - 86 1 0516 _LWRITE exported - 87 1 838e RESERVED5 exported - 88 1 836f LSTRCPY exported - 89 1 837f LSTRCAT exported - 90 1 82f6 LSTRLEN exported - 91 2 268d INITTASK exported - 92 3 0508 GETTEMPDRIVE exported - 93 1 48fa GETCODEHANDLE exported - 94 3 03ce DEFINEHANDLETABLE exported - 95 2 022d LOADLIBRARY exported - 96 2 018a FREELIBRARY exported - 97 3 00dc GETTEMPFILENAME exported - 98 1 5c17 GETLASTDISKCHANGE exported - 99 1 0bc5 GETLPERRMODE exported -100 2 2ab7 VALIDATECODESEGMENTS exported -101 1 1d92 NOHOOKDOSCALL exported -102 1 1d98 DOS3CALL exported -103 1 9e19 NETBIOSCALL exported -104 1 03db GETCODEINFO exported -105 3 07d9 GETEXEVERSION exported -106 1 2ede SETSWAPAREASIZE exported -107 3 0132 SETERRORMODE exported -108 1 11c6 SWITCHSTACKTO exported -109 1 123c SWITCHSTACKBACK exported -110 1 7bac PATCHCODEHANDLE exported -111 1 02fc GLOBALWIRE exported -112 1 0310 GLOBALUNWIRE exported -113 254 0003 __AHSHIFT exported -114 254 0008 __AHINCR exported -115 1 999b OUTPUTDEBUGSTRING exported -116 2 2797 INITLIB exported -117 1 7d3e OLDYIELD exported -118 1 7da7 GETTASKQUEUEDS exported -119 1 7db5 GETTASKQUEUEES exported -120 1 72d4 UNDEFDYNLINK exported -121 1 8db0 LOCALSHRINK exported -122 1 81ff ISTASKLOCKED exported -123 1 4638 KBDRST exported -124 1 9c90 ENABLEKERNEL exported -125 1 9c91 DISABLEKERNEL exported -126 1 2ea7 MEMORYFREED exported -127 1 06d7 GETPRIVATEPROFILEINT exported, shared data -128 1 0709 GETPRIVATEPROFILESTRING exported, shared data -129 1 0795 WRITEPRIVATEPROFILESTRING exported, shared data -130 3 0888 FILECDR exported -131 3 08ce GETDOSENVIRONMENT exported -132 3 07ab GETWINFLAGS exported -133 1 4e78 GETEXEPTR exported -134 3 0054 GETWINDOWSDIRECTORY exported -135 3 007e GETSYSTEMDIRECTORY exported -136 3 0675 GETDRIVETYPE exported -137 1 0211 FATALAPPEXIT exported -138 2 1e4d GETHEAPSPACES exported -139 1 612c DOSIGNAL exported -140 3 068c SETSIGHANDLER exported -141 1 8014 INITTASK1 exported -150 1 7cff DIRECTEDYIELD exported -151 3 07e6 WINOLDAPCALL exported -152 3 08e2 GETNUMTASKS exported -154 1 034c GLOBALNOTIFY exported -155 1 119f GETTASKDS exported -156 1 4632 LIMITEMSPAGES exported -157 1 4639 GETCURPID exported -158 1 7e3e ISWINOLDAPTASK exported -159 1 0ec5 GLOBALHANDLENORIP exported -160 1 a940 EMSCOPY exported -161 2 29c9 LOCALCOUNTFREE exported -162 2 2a01 LOCALHEAPSIZE exported -163 1 0338 GLOBALLRUOLDEST exported -164 1 0324 GLOBALLRUNEWEST exported -165 1 9e0c A20PROC exported -166 2 028f WINEXEC exported -167 1 4f02 GETEXPWINVER exported -168 1 84b8 DIRECTRESALLOC exported -169 1 0404 GETFREESPACE exported -170 1 00d0 ALLOCCSTODSALIAS exported -171 1 00e4 ALLOCDSTOCSALIAS exported -172 1 21fb ALLOCALIAS exported -173 254 f000 __ROMBIOS exported -174 254 a000 __A000H exported -175 1 1d9e ALLOCSELECTOR exported -176 1 00f8 FREESELECTOR exported -177 1 010c PRESTOCHANGOSELECTOR exported -178 254 0001 __WINFLAGS exported -179 254 d000 __D000H exported -180 1 26b9 LONGPTRADD exported -181 254 b000 __B000H exported -182 254 b800 __B800H exported -183 254 0000 __0000H exported -184 1 139a GLOBALDOSALLOC exported -185 1 13d4 GLOBALDOSFREE exported -186 1 2252 GETSELECTORBASE exported -187 1 2725 SETSELECTORBASE exported -188 1 2755 GETSELECTORLIMIT exported -189 1 276d SETSELECTORLIMIT exported -190 254 e000 __E000H exported -191 1 0363 GLOBALPAGELOCK exported -192 1 0377 GLOBALPAGEUNLOCK exported -193 254 0040 __0040H exported -194 254 f000 __F000H exported -195 254 c000 __C000H exported -196 1 279b SELECTORACCESSRIGHTS exported -197 1 038b GLOBALFIX exported -198 1 039f GLOBALUNFIX exported -199 1 0647 SETHANDLECOUNT exported -200 1 3e4e VALIDATEFREESPACES exported -201 1 9ada REPLACEINST exported -202 3 081d REGISTERPTRACE exported -203 1 946e DEBUGBREAK exported -204 3 014e SWAPRECORDING exported -205 1 97e0 CVWBREAK exported -206 1 1df5 ALLOCSELECTORARRAY exported -207 1 8425 ISDBCSLEADBYTE exported -310 2 2a0c LOCALHANDLEDELTA exported -311 1 9eaf GETSETKERNELDOSPROC exported -314 1 9835 DEBUGDEFINESEGMENT exported -315 1 708b WRITEOUTPROFILES exported, shared data -316 1 127e GETFREEMEMINFO exported -318 1 9ecf FATALEXITHOOK exported -319 1 52fc FLUSHCACHEDFILEHANDLE exported -320 1 7e50 ISTASK exported -323 2 1e9b ISROMMODULE exported -324 1 94cf LOGERROR exported, shared data -325 1 94f2 LOGPARAMERROR exported, shared data -326 2 1ea0 ISROMFILE exported -327 1 949b K327 exported -328 1 94ce _DEBUGOUTPUT exported -329 1 94c5 K329 exported -332 4 0218 THHOOK exported -334 1 4b62 ISBADREADPTR exported -335 1 4b83 ISBADWRITEPTR exported -336 1 4c28 ISBADCODEPTR exported -337 1 4c4e ISBADSTRINGPTR exported -338 1 4c72 HASGPHANDLER exported -339 1 a70e DIAGQUERY exported -340 1 a71d DIAGOUTPUT exported -341 3 084c TOOLHELPHOOK exported -342 1 a820 __GP exported, shared data -343 2 0689 REGISTERWINOLDAPHOOK exported -344 2 06f3 GETWINOLDAPHOOKS exported -345 1 4d39 ISSHAREDSELECTOR exported -346 1 4ba5 ISBADHUGEREADPTR exported -347 1 4be5 ISBADHUGEWRITEPTR exported -348 1 4d5c HMEMCPY exported -349 1 4dec _HREAD exported -350 1 4df1 _HWRITE exported -351 1 5e92 BUNNY_351 exported -353 1 831f LSTRCPYN exported -354 1 9eeb GETAPPCOMPATFLAGS exported -355 1 9f2a GETWINDEBUGINFO exported, shared data -356 1 9f36 SETWINDEBUGINFO exported, shared data -403 1 29f1 K403 exported -404 1 29ae K404 exported diff --git a/etc/lzexpand-ordinals b/etc/lzexpand-ordinals deleted file mode 100644 index 803da9589df..00000000000 --- a/etc/lzexpand-ordinals +++ /dev/null @@ -1,12 +0,0 @@ - 1 4 015c LZCOPY exported, shared data - 2 2 0262 LZOPENFILE exported, shared data - 3 2 0000 LZINIT exported, shared data - 4 2 02ee LZSEEK exported, shared data - 5 2 03d6 LZREAD exported, shared data - 6 2 06f0 LZCLOSE exported, shared data - 7 4 0000 LZSTART exported, shared data - 8 4 013a COPYLZFILE exported, shared data - 9 4 00a6 LZDONE exported, shared data - 10 2 01bc GETEXPANDEDNAME exported, shared data - 11 3 0000 WEP exported, shared data - 12 11 035e ___EXPORTEDSTUB exported, shared data diff --git a/etc/mmsystem-ordinals b/etc/mmsystem-ordinals deleted file mode 100644 index 6f0a2682042..00000000000 --- a/etc/mmsystem-ordinals +++ /dev/null @@ -1,136 +0,0 @@ - 1 2 0014 WEP exported, shared data - 2 4 0000 SNDPLAYSOUND exported, shared data - 5 2 02b0 MMSYSTEMGETVERSION exported, shared data - 6 4 0028 DRIVERPROC exported, shared data - 30 1 030a OUTPUTDEBUGSTR exported, shared data - 31 1 03ab DRIVERCALLBACK exported, shared data - 32 1 0312 STACKENTER exported, shared data - 33 1 0370 STACKLEAVE exported, shared data - 34 2 0484 MMDRVINSTALL exported, shared data -101 8 005d JOYGETNUMDEVS exported, shared data -102 8 001a JOYGETDEVCAPS exported, shared data -103 8 0073 JOYGETPOS exported, shared data -104 8 00b5 JOYGETTHRESHOLD exported, shared data -105 8 00ec JOYRELEASECAPTURE exported, shared data -106 8 013e JOYSETCAPTURE exported, shared data -107 8 021d JOYSETTHRESHOLD exported, shared data -109 8 0251 JOYSETCALIBRATION exported, shared data -1100 4 057e DRVOPEN exported, shared data -1101 4 0583 DRVCLOSE exported, shared data -1102 4 058d DRVSENDMESSAGE exported, shared data -1103 4 0588 DRVGETMODULEHANDLE exported, shared data -1104 4 0592 DRVDEFDRIVERPROC exported, shared data -1210 7 02a5 MMIOOPEN exported, shared data -1211 7 0457 MMIOCLOSE exported, shared data -1212 7 04b4 MMIOREAD exported, shared data -1213 7 062b MMIOWRITE exported, shared data -1214 7 07e9 MMIOSEEK exported, shared data -1215 7 0929 MMIOGETINFO exported, shared data -1216 7 0996 MMIOSETINFO exported, shared data -1217 7 0a68 MMIOSETBUFFER exported, shared data -1218 7 0cd8 MMIOFLUSH exported, shared data -1219 7 0da7 MMIOADVANCE exported, shared data -1220 7 0ed3 MMIOSTRINGTOFOURCC exported, shared data -1221 7 0f6e MMIOINSTALLIOPROC exported, shared data -1222 7 1073 MMIOSENDMESSAGE exported, shared data -1223 7 1360 MMIODESCEND exported, shared data -1224 7 1562 MMIOASCEND exported, shared data -1225 7 16a5 MMIOCREATECHUNK exported, shared data -1226 7 01d2 MMIORENAME exported, shared data -201 6 015f MIDIOUTGETNUMDEVS exported, shared data -202 6 016a MIDIOUTGETDEVCAPS exported, shared data -203 6 0266 MIDIOUTGETERRORTEXT exported, shared data -204 6 02a7 MIDIOUTOPEN exported, shared data -205 6 03c4 MIDIOUTCLOSE exported, shared data -206 6 0410 MIDIOUTPREPAREHEADER exported, shared data -207 6 0485 MIDIOUTUNPREPAREHEADER exported, shared data -208 1 0121 MIDIOUTSHORTMSG exported, shared data -209 1 0156 MIDIOUTLONGMSG exported, shared data -210 1 01b4 MIDIOUTRESET exported, shared data -211 6 01b6 MIDIOUTGETVOLUME exported, shared data -212 6 01f7 MIDIOUTSETVOLUME exported, shared data -213 6 04ff MIDIOUTCACHEPATCHES exported, shared data -214 6 0571 MIDIOUTCACHEDRUMPATCHES exported, shared data -215 6 0a5c MIDIOUTGETID exported, shared data -216 1 00eb MIDIOUTMESSAGE exported, shared data -301 6 05e3 MIDIINGETNUMDEVS exported, shared data -302 6 0625 MIDIINGETDEVCAPS exported, shared data -303 6 0671 MIDIINGETERRORTEXT exported, shared data -304 6 06b2 MIDIINOPEN exported, shared data -305 6 07cf MIDIINCLOSE exported, shared data -306 6 081b MIDIINPREPAREHEADER exported, shared data -307 6 0890 MIDIINUNPREPAREHEADER exported, shared data -308 6 090a MIDIINADDBUFFER exported, shared data -309 6 0976 MIDIINSTART exported, shared data -310 6 09aa MIDIINSTOP exported, shared data -311 6 09de MIDIINRESET exported, shared data -312 6 0a12 MIDIINGETID exported, shared data -313 6 05ee MIDIINMESSAGE exported, shared data -350 8 0531 AUXGETNUMDEVS exported, shared data -351 8 053c AUXGETDEVCAPS exported, shared data -352 8 0582 AUXGETVOLUME exported, shared data -353 8 05bd AUXSETVOLUME exported, shared data -354 8 04df AUXOUTMESSAGE exported, shared data -401 3 0866 WAVEOUTGETNUMDEVS exported, shared data -402 3 08a6 WAVEOUTGETDEVCAPS exported, shared data -403 3 09a2 WAVEOUTGETERRORTEXT exported, shared data -404 3 09e3 WAVEOUTOPEN exported, shared data -405 3 0b81 WAVEOUTCLOSE exported, shared data -406 3 0bc8 WAVEOUTPREPAREHEADER exported, shared data -407 3 0c54 WAVEOUTUNPREPAREHEADER exported, shared data -408 3 0cdd WAVEOUTWRITE exported, shared data -409 3 0d4a WAVEOUTPAUSE exported, shared data -410 3 0d7c WAVEOUTRESTART exported, shared data -411 3 0dae WAVEOUTRESET exported, shared data -412 3 0e12 WAVEOUTGETPOSITION exported, shared data -413 3 0e62 WAVEOUTGETPITCH exported, shared data -414 3 0eb0 WAVEOUTSETPITCH exported, shared data -415 3 08f2 WAVEOUTGETVOLUME exported, shared data -416 3 0933 WAVEOUTSETVOLUME exported, shared data -417 3 0ee4 WAVEOUTGETPLAYBACKRATE exported, shared data -418 3 0f32 WAVEOUTSETPLAYBACKRATE exported, shared data -419 3 0de0 WAVEOUTBREAKLOOP exported, shared data -420 3 14bf WAVEOUTGETID exported, shared data -421 3 0871 WAVEOUTMESSAGE exported, shared data -501 3 0f66 WAVEINGETNUMDEVS exported, shared data -502 3 0fa6 WAVEINGETDEVCAPS exported, shared data -503 3 0ff2 WAVEINGETERRORTEXT exported, shared data -504 3 1033 WAVEINOPEN exported, shared data -505 3 11d1 WAVEINCLOSE exported, shared data -506 3 1218 WAVEINPREPAREHEADER exported, shared data -507 3 129c WAVEINUNPREPAREHEADER exported, shared data -508 3 1325 WAVEINADDBUFFER exported, shared data -509 3 138f WAVEINSTART exported, shared data -510 3 13c1 WAVEINSTOP exported, shared data -511 3 13f3 WAVEINRESET exported, shared data -512 3 1425 WAVEINGETPOSITION exported, shared data -513 3 1475 WAVEINGETID exported, shared data -514 3 0f71 WAVEINMESSAGE exported, shared data -601 1 0000 TIMEGETSYSTEMTIME exported, shared data -602 1 0029 TIMESETEVENT exported, shared data -603 1 0292 TIMEKILLEVENT exported, shared data -604 8 0000 TIMEGETDEVCAPS exported, shared data -605 1 0288 TIMEBEGINPERIOD exported, shared data -606 1 028d TIMEENDPERIOD exported, shared data -607 1 029a TIMEGETTIME exported, shared data -701 5 04af MCISENDCOMMAND exported, shared data -702 5 1258 MCISENDSTRING exported, shared data -703 5 1588 MCIGETDEVICEID exported, shared data -704 5 3994 MCIPARSECOMMAND exported, shared data -705 5 2d4c MCILOADCOMMANDRESOURCE exported, shared data -706 5 136f MCIGETERRORSTRING exported, shared data -707 5 2a1d MCISETDRIVERDATA exported, shared data -708 5 29d3 MCIGETDRIVERDATA exported, shared data -710 5 2a6f MCIDRIVERYIELD exported, shared data -711 1 0275 MCIDRIVERNOTIFY exported, shared data -712 5 1293 MCIEXECUTE exported, shared data -713 5 2fb9 MCIFREECOMMANDRESOURCE exported, shared data -714 5 2acd MCISETYIELDPROC exported, shared data -715 5 1454 MCIGETDEVICEIDFROMELEMENTID exported, shared data -716 5 2b3c MCIGETYIELDPROC exported, shared data -717 5 15a5 MCIGETCREATORTASK exported, shared data -900 4 05fa MMTASKCREATE exported, shared data -902 4 05be MMTASKBLOCK exported, shared data -903 1 0264 MMTASKSIGNAL exported, shared data -904 4 05b9 MMGETCURRENTTASK exported, shared data -905 4 0598 MMTASKYIELD exported, shared data diff --git a/etc/netapi20-ordinals b/etc/netapi20-ordinals deleted file mode 100644 index 3666511fe40..00000000000 --- a/etc/netapi20-ordinals +++ /dev/null @@ -1,146 +0,0 @@ - 1 3 0000 NETACCESSADD exported, shared data - 2 3 0128 NETACCESSDEL exported, shared data - 3 3 01ea NETACCESSENUM exported, shared data - 4 3 0318 NETACCESSGETINFO exported, shared data - 5 3 042a NETACCESSSETINFO exported, shared data - 6 4 0030 NETALERTRAISE exported, shared data - 7 4 0000 NETALERTSTART exported, shared data - 8 4 0018 NETALERTSTOP exported, shared data - 9 10 00f4 NETAUDITCLEAR exported, shared data - 10 10 024a NETAUDITOPEN exported, shared data - 11 10 0000 NETAUDITWRITE exported, shared data - 12 3 0110 NETACCESSCHECK exported, shared data - 13 12 0000 NETBIOSCLOSE exported, shared data - 14 12 0018 NETBIOSENUM exported, shared data - 15 12 0030 NETBIOSGETINFO exported, shared data - 16 12 0048 NETBIOSOPEN exported, shared data - 17 12 0060 NETBIOSSUBMIT exported, shared data - 18 7 0000 NETCHARDEVCONTROL exported, shared data - 19 7 0056 NETCHARDEVENUM exported, shared data - 20 7 00f2 NETCHARDEVGETINFO exported, shared data - 21 7 016e NETCHARDEVQENUM exported, shared data - 22 7 043c NETCHARDEVQGETINFO exported, shared data - 23 7 04b2 NETCHARDEVQPURGE exported, shared data - 24 7 0562 NETCHARDEVQSETINFO exported, shared data - 25 6 0330 NETCONFIGGET exported, shared data - 26 6 0150 NETCONFIGGETALL exported, shared data - 27 18 0000 NETCONNECTIONENUM exported, shared data - 28 1 00a8 WEP exported, shared data - 29 10 0030 NETERRORLOGCLEAR exported, shared data - 30 10 01c0 NETERRORLOGOPEN exported, shared data - 31 10 0018 NETERRORLOGWRITE exported, shared data - 32 18 0256 NETFILECLOSE exported, shared data - 33 18 044a NETFILEENUM exported, shared data - 34 18 0516 NETFILEGETINFO exported, shared data - 35 3 05f8 NETGROUPADD exported, shared data - 36 3 067e NETGROUPADDUSER exported, shared data - 37 3 06dc NETGROUPDEL exported, shared data - 38 3 073a NETGROUPDELUSER exported, shared data - 39 3 0798 NETGROUPENUM exported, shared data - 40 3 0894 NETGROUPGETUSERS exported, shared data - 43 11 01cc NETMESSAGELOGFILEGET exported, shared data - 44 11 0338 NETMESSAGELOGFILESET exported, shared data - 45 11 0718 NETMESSAGENAMEADD exported, shared data - 46 11 0844 NETMESSAGENAMEDEL exported, shared data - 47 11 096c NETMESSAGENAMEENUM exported, shared data - 48 11 0d2a NETMESSAGENAMEFWD exported, shared data - 49 11 0b00 NETMESSAGENAMEGETINFO exported, shared data - 50 11 0d7a NETMESSAGENAMEUNFWD exported, shared data - 51 13 0000 NETPROFILELOAD exported, shared data - 52 13 037e NETPROFILESAVE exported, shared data - 53 18 0b98 NETSERVERADMINCOMMAND exported, shared data - 54 18 00b8 NETSERVERDISKENUM exported, shared data - 55 18 0c62 NETSERVERGETINFO exported, shared data - 56 18 0cf2 NETSERVERSETINFO exported, shared data - 57 19 0134 NETSERVICECONTROL exported, shared data - 58 19 02f0 NETSERVICEENUM exported, shared data - 59 19 044a NETSERVICEINSTALL exported, shared data - 60 19 011c NETSERVICESTATUS exported, shared data - 61 18 0676 NETSESSIONDEL exported, shared data - 62 18 05c4 NETSESSIONENUM exported, shared data - 63 18 06dc NETSESSIONGETINFO exported, shared data - 64 18 0798 NETSHAREADD exported, shared data - 65 18 0968 NETSHARECHECK exported, shared data - 66 18 082a NETSHAREDEL exported, shared data - 67 18 09d6 NETSHAREENUM exported, shared data - 68 18 0ab6 NETSHAREGETINFO exported, shared data - 69 18 08a2 NETSHARESETINFO exported, shared data - 70 18 0d88 NETSTATISTICSCLEAR exported, shared data - 71 18 0de0 NETSTATISTICSGET exported, shared data - 72 16 06f2 NETREMOTETOD exported, shared data - 73 21 0000 NETUSEADD exported, shared data - 74 21 032a NETUSEDEL exported, shared data - 75 21 0502 NETUSEENUM exported, shared data - 76 21 0664 NETUSEGETINFO exported, shared data - 77 3 0ab8 NETUSERADD exported, shared data - 78 3 0c26 NETUSERDEL exported, shared data - 79 3 0c84 NETUSERENUM exported, shared data - 80 3 0f9a NETUSERGETGROUPS exported, shared data - 81 3 0ef4 NETUSERGETINFO exported, shared data - 82 3 1132 NETUSERPASSWORDSET exported, shared data - 83 3 0d2c NETUSERSETINFO exported, shared data - 84 9 0858 NETWKSTAGETINFO exported, shared data - 85 9 0a22 NETWKSTASETINFO exported, shared data - 86 9 0000 NETWKSTASETUID exported, shared data - 91 16 0380 NETREMOTEMOVE exported, shared data - 92 16 0000 NETREMOTECOPY exported, shared data - 93 16 0368 NETREMOTEEXEC exported, shared data -105 3 1570 NETUSERVALIDATE exported, shared data -116 19 0000 NETSERVICEGETINFO exported, shared data -117 7 050a NETCHARDEVQPURGESELF exported, shared data -172 3 0506 NETACCESSGETUSERPERMS exported, shared data -174 7 0226 NETHANDLEGETINFO exported, shared data -175 7 0326 NETHANDLESETINFO exported, shared data -176 3 0974 NETGROUPSETUSERS exported, shared data -177 3 0816 NETGROUPGETINFO exported, shared data -178 3 08fe NETGROUPSETINFO exported, shared data -179 3 1404 NETUSERSETGROUPS exported, shared data -182 3 1588 NETUSERVALIDATE2 exported, shared data -184 3 1004 NETUSERMODALSGET exported, shared data -185 3 10a2 NETUSERMODALSSET exported, shared data -186 3 0d14 NETUSERINIT exported, shared data -189 26 0000 NETGETDCNAME exported, shared data -196 6 01e0 NETCONFIGGET2 exported, shared data -197 6 0000 NETCONFIGGETALL2 exported, shared data -198 18 0e5e NETSTATISTICSGET2 exported, shared data -199 10 02f4 NETERRORLOGREAD exported, shared data -200 10 04b2 NETAUDITREAD exported, shared data -201 18 02ae NETFILEENUM2 exported, shared data -259 17 0000 NETUSERRESTRICT exported, shared data -266 26 06dc NETLOGONENUM exported, shared data -277 9 027c NETWKSTASETUID2 exported, shared data -280 18 0f9e NETFILEGETINFO2 exported, shared data -282 18 0f40 NETFILECLOSE2 exported, shared data -299 25 0b34 I_NETPATHTYPE exported, shared data -300 25 0000 I_NETPATHCANONICALIZE exported, shared data -301 25 0932 I_NETPATHCOMPARE exported, shared data -302 25 1afe I_NETNAMEVALIDATE exported, shared data -303 25 173e I_NETNAMECANONICALIZE exported, shared data -304 25 196e I_NETNAMECOMPARE exported, shared data -305 25 1cee I_NETLISTCANONICALIZE exported, shared data -306 25 22c2 I_NETLISTTRAVERSE exported, shared data -501 8 0000 DOSDELETEMAILSLOT exported, shared data -502 8 0072 DOSMAILSLOTINFO exported, shared data -503 8 00ec DOSMAKEMAILSLOT exported, shared data -504 8 0320 DOSPEEKMAILSLOT exported, shared data -523 8 0454 DOSREADMAILSLOT exported, shared data -524 8 058a DOSWRITEMAILSLOT exported, shared data -525 11 0000 NETMESSAGEBUFFERSEND exported, shared data -526 11 0e1e NETMESSAGEFILESEND exported, shared data -527 5 0000 NETSERVERENUM exported, shared data -528 5 013a NETSERVERENUM2 exported, shared data -529 20 0000 NETSPECIALSMB exported, shared data -530 2 0010 DOSMAKENMPIPE exported, shared data -531 2 004c DOSCONNECTNMPIPE exported, shared data -532 2 002e DOSDISCONNECTNMPIPE exported, shared data -533 2 006a DOSSETNMPHANDSTATE exported, shared data -534 2 010a DOSWAITNMPIPE exported, shared data -535 2 01d2 DOSTRANSACTNMPIPE exported, shared data -536 2 02e5 DOSQNMPHANDSTATE exported, shared data -537 2 0388 DOSQNMPIPEINFO exported, shared data -538 2 044d DOSPEEKNMPIPE exported, shared data -539 2 057d DOSCALLNMPIPE exported, shared data -540 2 06cf DOSRAWREADNMPIPE exported, shared data -541 2 07b6 DOSRAWWRITENMPIPE exported, shared data -542 2 0b4f DOSREADASYNCNMPIPE exported, shared data -543 2 0d73 DOSWRITEASYNCNMPIPE exported, shared data diff --git a/etc/olecli-ordinals b/etc/olecli-ordinals deleted file mode 100644 index 2438fa11225..00000000000 --- a/etc/olecli-ordinals +++ /dev/null @@ -1,178 +0,0 @@ - 1 1 0000 WEP exported, shared data - 2 3 004e OLEDELETE exported, shared data - 3 3 00c6 OLESAVETOSTREAM exported, shared data - 4 3 0122 OLELOADFROMSTREAM exported, shared data - 6 3 0400 OLECLONE exported, shared data - 7 3 04ec OLECOPYFROMLINK exported, shared data - 8 3 0606 OLEEQUAL exported, shared data - 9 3 0674 OLEQUERYLINKFROMCLIP exported, shared data - 10 3 06a0 OLEQUERYCREATEFROMCLIP exported, shared data - 11 3 06cc OLECREATELINKFROMCLIP exported, shared data - 12 3 08a2 OLECREATEFROMCLIP exported, shared data - 13 3 0b52 OLECOPYTOCLIPBOARD exported, shared data - 14 3 1d48 OLEQUERYTYPE exported, shared data - 15 3 0b8e OLESETHOSTNAMES exported, shared data - 16 3 0c04 OLESETTARGETDEVICE exported, shared data - 17 3 0c84 OLESETBOUNDS exported, shared data - 18 3 0ce0 OLEQUERYBOUNDS exported, shared data - 19 3 0da0 OLEDRAW exported, shared data - 20 3 0e24 OLEQUERYOPEN exported, shared data - 21 3 0e60 OLEACTIVATE exported, shared data - 22 3 0eea OLEUPDATE exported, shared data - 23 3 0f26 OLERECONNECT exported, shared data - 24 3 0f62 OLEGETLINKUPDATEOPTIONS exported, shared data - 25 3 0fbe OLESETLINKUPDATEOPTIONS exported, shared data - 26 3 0ffc OLEENUMFORMATS exported, shared data - 27 3 0eae OLECLOSE exported, shared data - 28 3 107e OLEGETDATA exported, shared data - 29 3 10dc OLESETDATA exported, shared data - 30 3 0010 OLEQUERYPROTOCOL exported, shared data - 31 3 111e OLEQUERYOUTOFDATE exported, shared data - 32 3 115a OLEOBJECTCONVERT exported, shared data - 33 3 121a OLECREATEFROMTEMPLATE exported, shared data - 34 3 13b4 OLECREATE exported, shared data - 35 3 1ba6 OLEQUERYRELEASESTATUS exported, shared data - 36 3 1c04 OLEQUERYRELEASEERROR exported, shared data - 37 3 1c40 OLEQUERYRELEASEMETHOD exported, shared data - 38 3 16fa OLECREATEFROMFILE exported, shared data - 39 3 190a OLECREATELINKFROMFILE exported, shared data - 40 3 008a OLERELEASE exported, shared data - 41 2 093e OLEREGISTERCLIENTDOC exported, shared data - 42 2 0a9e OLEREVOKECLIENTDOC exported, shared data - 43 2 0bb6 OLERENAMECLIENTDOC exported, shared data - 44 2 0c8e OLEREVERTCLIENTDOC exported, shared data - 45 2 0cc8 OLESAVEDCLIENTDOC exported, shared data - 46 3 1c7c OLERENAME exported, shared data - 47 2 0cf6 OLEENUMOBJECTS exported, shared data - 48 3 1d00 OLEQUERYNAME exported, shared data - 49 3 0c42 OLESETCOLORSCHEME exported, shared data - 50 3 1034 OLEREQUESTDATA exported, shared data - 54 4 0000 OLELOCKSERVER exported, shared data - 55 4 025a OLEUNLOCKSERVER exported, shared data - 56 3 0d3c OLEQUERYSIZE exported, shared data - 57 3 1cbe OLEEXECUTE exported, shared data - 58 3 152e OLECREATEINVISIBLE exported, shared data - 59 3 1da4 OLEQUERYCLIENTVERSION exported, shared data - 60 3 46d4 OLEISDCMETA exported, shared data -100 4 0c28 DOCWNDPROC exported, shared data -101 4 0d2c SRVRWNDPROC exported, shared data -102 14 0838 MFCALLBACKFUNC exported, shared data -110 5 0000 DEFLOADFROMSTREAM exported, shared data -111 5 00fe DEFCREATEFROMCLIP exported, shared data -112 5 0180 DEFCREATELINKFROMCLIP exported, shared data -113 5 01be DEFCREATEFROMTEMPLATE exported, shared data -114 5 01fe DEFCREATE exported, shared data -115 5 023e DEFCREATEFROMFILE exported, shared data -116 5 028e DEFCREATELINKFROMFILE exported, shared data -117 5 02e0 DEFCREATEINVISIBLE exported, shared data -200 4 04e0 LERELEASE exported, shared data -201 4 1e52 LESHOW exported, shared data -202 3 2508 LEGETDATA exported, shared data -203 4 3a54 LESETDATA exported, shared data -204 4 37ee LESETHOSTNAMES exported, shared data -205 4 386e LESETTARGETDEVICE exported, shared data -206 4 3922 LESETBOUNDS exported, shared data -207 3 27be LESAVETOSTREAM exported, shared data -208 3 1fde LECLONE exported, shared data -209 4 052a LECOPYFROMLINK exported, shared data -210 6 0134 LEEQUAL exported, shared data -211 3 227a LECOPY exported, shared data -212 3 2e00 LEQUERYTYPE exported, shared data -213 3 2370 LEQUERYBOUNDS exported, shared data -214 3 23fc LEDRAW exported, shared data -215 4 2108 LEQUERYOPEN exported, shared data -216 4 219a LEACTIVATE exported, shared data -218 4 2200 LEUPDATE exported, shared data -219 4 2cb4 LERECONNECT exported, shared data -220 3 2454 LEENUMFORMAT exported, shared data -221 6 00c8 LEQUERYPROTOCOL exported, shared data -222 3 2638 LEQUERYOUTOFDATE exported, shared data -223 6 01c2 LEOBJECTCONVERT exported, shared data -224 4 07fa LECHANGEDATA exported, shared data -225 4 2c16 LECLOSE exported, shared data -226 3 2e72 LEGETUPDATEOPTIONS exported, shared data -227 4 337a LESETUPDATEOPTIONS exported, shared data -228 4 4a44 LEEXECUTE exported, shared data -229 6 0000 LEOBJECTLONG exported, shared data -230 4 322c LECREATEINVISIBLE exported, shared data -300 9 0000 MFRELEASE exported, shared data -301 9 0258 MFGETDATA exported, shared data -302 3 42f2 MFSAVETOSTREAM exported, shared data -303 9 0082 MFCLONE exported, shared data -304 9 0174 MFEQUAL exported, shared data -305 9 01f0 MFCOPY exported, shared data -307 3 446a MFQUERYBOUNDS exported, shared data -308 14 05cc MFDRAW exported, shared data -309 9 0234 MFENUMFORMAT exported, shared data -310 9 0302 MFCHANGEDATA exported, shared data -400 11 0000 BMRELEASE exported, shared data -401 11 0254 BMGETDATA exported, shared data -402 3 4b92 BMSAVETOSTREAM exported, shared data -403 11 006e BMCLONE exported, shared data -404 11 00e4 BMEQUAL exported, shared data -405 3 4c8c BMCOPY exported, shared data -407 3 4ce0 BMQUERYBOUNDS exported, shared data -408 14 0000 BMDRAW exported, shared data -409 11 0230 BMENUMFORMAT exported, shared data -410 3 5004 BMCHANGEDATA exported, shared data -500 12 0000 DIBRELEASE exported, shared data -501 12 01ea DIBGETDATA exported, shared data -502 3 536c DIBSAVETOSTREAM exported, shared data -503 12 006e DIBCLONE exported, shared data -504 12 00e4 DIBEQUAL exported, shared data -505 12 011c DIBCOPY exported, shared data -507 12 016c DIBQUERYBOUNDS exported, shared data -508 14 02f2 DIBDRAW exported, shared data -509 12 01c6 DIBENUMFORMAT exported, shared data -510 12 028a DIBCHANGEDATA exported, shared data -600 10 0000 GENRELEASE exported, shared data -601 10 049e GENGETDATA exported, shared data -602 10 0438 GENSETDATA exported, shared data -603 3 4750 GENSAVETOSTREAM exported, shared data -604 10 0082 GENCLONE exported, shared data -605 10 012e GENEQUAL exported, shared data -606 10 0164 GENCOPY exported, shared data -608 3 4b60 GENQUERYBOUNDS exported, shared data -609 14 05b2 GENDRAW exported, shared data -610 10 04e0 GENENUMFORMAT exported, shared data -611 10 0222 GENCHANGEDATA exported, shared data -701 13 0034 ERRSHOW exported, shared data -702 13 0186 ERRSETDATA exported, shared data -703 13 0082 ERRSETHOSTNAMES exported, shared data -704 13 009c ERRSETTARGETDEVICE exported, shared data -705 13 00d0 ERRSETBOUNDS exported, shared data -706 13 0068 ERRCOPYFROMLINK exported, shared data -707 13 00ea ERRQUERYOPEN exported, shared data -708 13 0104 ERRACTIVATE exported, shared data -709 13 0138 ERRCLOSE exported, shared data -710 13 0152 ERRUPDATE exported, shared data -711 13 016c ERRRECONNECT exported, shared data -712 13 0222 ERRQUERYPROTOCOL exported, shared data -713 13 01ba ERRQUERYOUTOFDATE exported, shared data -714 13 01d4 ERROBJECTCONVERT exported, shared data -715 13 01ee ERRGETUPDATEOPTIONS exported, shared data -716 13 0208 ERRSETUPDATEOPTIONS exported, shared data -717 13 0256 ERREXECUTE exported, shared data -718 13 0270 ERROBJECTLONG exported, shared data -800 7 0000 PBLOADFROMSTREAM exported, shared data -801 7 00ac PBCREATEFROMCLIP exported, shared data -802 7 017a PBCREATELINKFROMCLIP exported, shared data -803 7 0212 PBCREATEFROMTEMPLATE exported, shared data -804 7 02a8 PBCREATE exported, shared data -805 7 06f4 PBDRAW exported, shared data -806 7 0626 PBQUERYBOUNDS exported, shared data -807 7 0818 PBCOPYTOCLIPBOARD exported, shared data -808 7 033e PBCREATEFROMFILE exported, shared data -809 7 03e0 PBCREATELINKFROMFILE exported, shared data -810 7 0768 PBENUMFORMATS exported, shared data -811 7 07a8 PBGETDATA exported, shared data -812 7 0492 PBCREATEINVISIBLE exported, shared data -910 3 3e50 OBJQUERYNAME exported, shared data -911 3 3f06 OBJRENAME exported, shared data -912 3 410e OBJQUERYTYPE exported, shared data -913 3 4154 OBJQUERYSIZE exported, shared data -950 8 0456 CONNECTDLGPROC exported, shared data -951 8 0000 SETNETNAME exported, shared data -952 8 011a CHECKNETDRIVE exported, shared data -953 8 025c SETNEXTNETDRIVE exported, shared data -954 8 0696 GETTASKVISIBLEWINDOW exported, shared data diff --git a/etc/olesvr-ordinals b/etc/olesvr-ordinals deleted file mode 100644 index 02deb6bc406..00000000000 --- a/etc/olesvr-ordinals +++ /dev/null @@ -1,23 +0,0 @@ - 1 1 0000 WEP exported, shared data - 2 3 036e OLEREGISTERSERVER exported, shared data - 3 3 05f0 OLEREVOKESERVER exported, shared data - 4 3 3d46 OLEBLOCKSERVER exported, shared data - 5 3 3d92 OLEUNBLOCKSERVER exported, shared data - 6 3 1108 OLEREGISTERSERVERDOC exported, shared data - 7 3 12dc OLEREVOKESERVERDOC exported, shared data - 8 3 13a2 OLERENAMESERVERDOC exported, shared data - 9 3 1528 OLEREVERTSERVERDOC exported, shared data - 10 3 14ba OLESAVEDSERVERDOC exported, shared data - 11 3 2140 OLEREVOKEOBJECT exported, shared data - 12 3 0354 OLEQUERYSERVERVERSION exported, shared data - 21 3 07a2 SRVRWNDPROC exported, shared data - 22 3 1728 DOCWNDPROC exported, shared data - 23 3 23b2 ITEMWNDPROC exported, shared data - 24 3 2d3c SENDDATAMSG exported, shared data - 25 3 22ac FINDITEMWND exported, shared data - 26 3 2a5c ITEMCALLBACK exported, shared data - 27 3 0752 TERMINATECLIENTS exported, shared data - 28 3 1554 TERMINATEDOCCLIENTS exported, shared data - 29 3 222e DELETECLIENTINFO exported, shared data - 30 3 2cbc SENDRENAMEMSG exported, shared data - 31 3 2c5e ENUMFORTERMINATE exported, shared data diff --git a/etc/shell-ordinals b/etc/shell-ordinals deleted file mode 100644 index aa26138013f..00000000000 --- a/etc/shell-ordinals +++ /dev/null @@ -1,26 +0,0 @@ - 1 2 15cc REGOPENKEY exported, shared data - 2 2 15fa REGCREATEKEY exported, shared data - 3 2 1670 REGCLOSEKEY exported, shared data - 4 2 1628 REGDELETEKEY exported, shared data - 5 2 16f4 REGSETVALUE exported, shared data - 6 2 168e REGQUERYVALUE exported, shared data - 7 2 14dc REGENUMKEY exported, shared data - 8 7 0000 WEP exported, shared data - 9 6 0052 DRAGACCEPTFILES exported, shared data - 11 6 0094 DRAGQUERYFILE exported, shared data - 12 6 0142 DRAGFINISH exported, shared data - 13 6 0000 DRAGQUERYPOINT exported, shared data - 20 4 110a SHELLEXECUTE exported, shared data - 21 4 1154 FINDEXECUTABLE exported, shared data - 22 9 0000 SHELLABOUT exported, shared data - 32 9 0829 WCI exported, shared data - 33 9 0136 ABOUTDLGPROC exported, shared data - 34 10 021a EXTRACTICON exported, shared data - 36 10 08dc EXTRACTASSOCIATEDICON exported, shared data - 37 5 00ae DOENVIRONMENTSUBST exported, shared data - 38 5 0000 FINDENVIRONMENTSTRING exported, shared data - 39 10 026e INTERNALEXTRACTICON exported, shared data -100 4 0550 HERETHARBETYGARS exported, shared data -101 8 010e FINDEXEDLGPROC exported, shared data -102 4 128c REGISTERSHELLHOOK exported, shared data -103 4 11ca SHELLHOOKPROC exported, shared data diff --git a/etc/toolhelp-ordinals b/etc/toolhelp-ordinals deleted file mode 100644 index 2118519faca..00000000000 --- a/etc/toolhelp-ordinals +++ /dev/null @@ -1,35 +0,0 @@ - 1 1 018a WEP exported, shared data - 50 1 057b GLOBALHANDLETOSEL exported, shared data - 51 1 0318 GLOBALFIRST exported, shared data - 52 1 0399 GLOBALNEXT exported, shared data - 53 1 02a2 GLOBALINFO exported, shared data - 54 1 0417 GLOBALENTRYHANDLE exported, shared data - 55 1 04a9 GLOBALENTRYMODULE exported, shared data - 56 1 090e LOCALINFO exported, shared data - 57 1 095e LOCALFIRST exported, shared data - 58 1 09e9 LOCALNEXT exported, shared data - 59 1 0a90 MODULEFIRST exported, shared data - 60 1 0ad9 MODULENEXT exported, shared data - 61 1 0b15 MODULEFINDNAME exported, shared data - 62 1 0b8c MODULEFINDHANDLE exported, shared data - 63 1 0caa TASKFIRST exported, shared data - 64 1 0ced TASKNEXT exported, shared data - 65 1 0d2e TASKFINDHANDLE exported, shared data - 66 1 0f1c STACKTRACEFIRST exported, shared data - 67 1 0f67 STACKTRACECSIPFIRST exported, shared data - 68 1 0fca STACKTRACENEXT exported, shared data - 69 1 28b0 CLASSFIRST exported, shared data - 70 1 2925 CLASSNEXT exported, shared data - 71 1 11ce SYSTEMHEAPINFO exported, shared data - 72 1 13f4 MEMMANINFO exported, shared data - 73 1 1b72 NOTIFYREGISTER exported, shared data - 74 1 1c29 NOTIFYUNREGISTER exported, shared data - 75 1 2060 INTERRUPTREGISTER exported, shared data - 76 1 2111 INTERRUPTUNREGISTER exported, shared data - 77 1 26ea TERMINATEAPP exported, shared data - 78 1 29c4 MEMORYREAD exported, shared data - 79 1 2b6c MEMORYWRITE exported, shared data - 80 1 2dae TIMERCOUNT exported, shared data - 81 1 0d68 TASKSETCSIP exported, shared data - 82 1 0d97 TASKGETCSIP exported, shared data - 83 1 0dc0 TASKSWITCH exported, shared data diff --git a/etc/user-ordinals b/etc/user-ordinals deleted file mode 100644 index 6df81baac63..00000000000 --- a/etc/user-ordinals +++ /dev/null @@ -1,413 +0,0 @@ - 1 1 ab5d MESSAGEBOX exported, shared data - 2 3 0059 OLDEXITWINDOWS exported, shared data - 3 5 0165 ENABLEOEMLAYER exported, shared data - 4 5 01a2 DISABLEOEMLAYER exported, shared data - 5 5 03a2 INITAPP exported, shared data - 6 1 81d4 POSTQUITMESSAGE exported, shared data - 7 5 0303 EXITWINDOWS exported, shared data - 8 3 0232 WEP exported, shared data - 10 1 a8e8 SETTIMER exported, shared data - 11 1 744c BEAR11 exported, shared data - 12 1 a905 KILLTIMER exported, shared data - 13 1 729f GETTICKCOUNT exported, shared data - 14 1 7439 GETTIMERRESOLUTION exported - 15 1 729f GETCURRENTTIME exported, shared data - 16 1 abc5 CLIPCURSOR exported, shared data - 17 1 abab GETCURSORPOS exported, shared data - 18 1 a8d4 SETCAPTURE exported, shared data - 19 1 28bd RELEASECAPTURE exported, shared data - 20 1 8161 SETDOUBLECLICKTIME exported, shared data - 21 1 8171 GETDOUBLECLICKTIME exported, shared data - 22 1 a875 SETFOCUS exported, shared data - 23 1 8183 GETFOCUS exported, shared data - 24 13 24e7 REMOVEPROP exported, shared data - 25 1 1c95 GETPROP exported, shared data - 26 13 24ca SETPROP exported, shared data - 27 13 2504 ENUMPROPS exported, shared data - 28 1 1874 CLIENTTOSCREEN exported, shared data - 29 1 189e SCREENTOCLIENT exported, shared data - 30 1 713c WINDOWFROMPOINT exported, shared data - 31 1 192d ISICONIC exported, shared data - 32 1 1825 GETWINDOWRECT exported, shared data - 33 1 1828 GETCLIENTRECT exported, shared data - 34 1 a919 ENABLEWINDOW exported, shared data - 35 1 1912 ISWINDOWENABLED exported, shared data - 36 1 ab25 GETWINDOWTEXT exported, shared data - 37 1 ab05 SETWINDOWTEXT exported, shared data - 38 1 ab49 GETWINDOWTEXTLENGTH exported, shared data - 39 1 a971 BEGINPAINT exported, shared data - 40 1 a991 ENDPAINT exported, shared data - 41 8 0f1b CREATEWINDOW exported, shared data - 42 14 103e SHOWWINDOW exported, shared data - 43 14 1088 CLOSEWINDOW exported, shared data - 44 14 1074 OPENICON exported, shared data - 45 7 1836 BRINGWINDOWTOTOP exported, shared data - 46 2 0dde GETPARENT exported, shared data - 47 1 1802 ISWINDOW exported, shared data - 48 1 1bd3 ISCHILD exported, shared data - 49 1 1c28 ISWINDOWVISIBLE exported, shared data - 50 6 1f72 FINDWINDOW exported, shared data - 51 1 1a6c BEAR51 exported, shared data - 52 14 03f0 ANYPOPUP exported, shared data - 53 8 0faa DESTROYWINDOW exported, shared data - 54 1 ad20 ENUMWINDOWS exported, shared data - 55 1 ad03 ENUMCHILDWINDOWS exported, shared data - 56 7 17a6 MOVEWINDOW exported, shared data - 57 8 0e7c REGISTERCLASS exported, shared data - 58 8 0eeb GETCLASSNAME exported, shared data - 59 1 a949 SETACTIVEWINDOW exported, shared data - 60 1 818d GETACTIVEWINDOW exported, shared data - 61 13 23dd SCROLLWINDOW exported, shared data - 62 18 1a00 SETSCROLLPOS exported, shared data - 63 18 1a22 GETSCROLLPOS exported, shared data - 64 18 1a44 SETSCROLLRANGE exported, shared data - 65 18 1a66 GETSCROLLRANGE exported, shared data - 66 1 a60b GETDC exported, shared data - 67 1 a5f7 GETWINDOWDC exported, shared data - 68 1 a61f RELEASEDC exported, shared data - 69 1 ab97 SETCURSOR exported, shared data - 70 1 822c SETCURSORPOS exported, shared data - 71 1 150c SHOWCURSOR exported, shared data - 72 1 1d3d SETRECT exported, shared data - 73 1 1d64 SETRECTEMPTY exported, shared data - 74 1 1d7d COPYRECT exported, shared data - 75 1 1d9a ISRECTEMPTY exported, shared data - 76 1 1dc0 PTINRECT exported, shared data - 77 1 1df4 OFFSETRECT exported, shared data - 78 1 1e19 INFLATERECT exported, shared data - 79 1 1e3e INTERSECTRECT exported, shared data - 80 1 1ea6 UNIONRECT exported, shared data - 81 1 ac40 FILLRECT exported, shared data - 82 1 acd0 INVERTRECT exported, shared data - 83 1 ac88 FRAMERECT exported, shared data - 84 13 239c DRAWICON exported, shared data - 85 6 1e91 DRAWTEXT exported, shared data - 86 13 0229 BEAR86 exported, shared data - 87 25 263b DIALOGBOX exported, shared data - 88 25 26e5 ENDDIALOG exported, shared data - 89 24 09ce CREATEDIALOG exported, shared data - 90 25 2804 ISDIALOGMESSAGE exported, shared data - 91 25 26f9 GETDLGITEM exported, shared data - 92 25 2741 SETDLGITEMTEXT exported, shared data - 93 25 2761 GETDLGITEMTEXT exported, shared data - 94 25 270d SETDLGITEMINT exported, shared data - 95 25 2721 GETDLGITEMINT exported, shared data - 96 25 2789 CHECKRADIOBUTTON exported, shared data - 97 25 2775 CHECKDLGBUTTON exported, shared data - 98 25 279d ISDLGBUTTONCHECKED exported, shared data - 99 37 0fdf DLGDIRSELECT exported, shared data -100 37 0fb1 DLGDIRLIST exported, shared data -101 25 27b1 SENDDLGITEMMESSAGE exported, shared data -102 2 0cd2 ADJUSTWINDOWRECT exported, shared data -103 25 2853 MAPDIALOGRECT exported, shared data -104 1 1bab MESSAGEBEEP exported, shared data -105 6 1f5e FLASHWINDOW exported, shared data -106 1 4f46 GETKEYSTATE exported, shared data -107 1 a7fc DEFWINDOWPROC exported, shared data -108 1 a68f GETMESSAGE exported, shared data -109 1 a744 PEEKMESSAGE exported, shared data -110 1 a7b7 POSTMESSAGE exported, shared data -111 1 a786 SENDMESSAGE exported, shared data -112 1 3dc4 WAITMESSAGE exported, shared data -113 1 a6b2 TRANSLATEMESSAGE exported, shared data -114 1 a6fb DISPATCHMESSAGE exported, shared data -115 1 3c37 REPLYMESSAGE exported, shared data -116 1 a7e8 POSTAPPMESSAGE exported, shared data -118 1 8214 REGISTERWINDOWMESSAGE exported, shared data -119 1 81ae GETMESSAGEPOS exported, shared data -120 1 81a1 GETMESSAGETIME exported, shared data -121 1 ad68 SETWINDOWSHOOK exported, shared data -122 1 a827 CALLWINDOWPROC exported, shared data -123 1 a85b CALLMSGFILTER exported, shared data -124 1 a95d UPDATEWINDOW exported, shared data -125 1 aa27 INVALIDATERECT exported, shared data -126 1 aa67 INVALIDATERGN exported, shared data -127 1 aa47 VALIDATERECT exported, shared data -128 1 aa93 VALIDATERGN exported, shared data -129 2 0d8e GETCLASSWORD exported, shared data -130 2 0da2 SETCLASSWORD exported, shared data -131 2 0db6 GETCLASSLONG exported, shared data -132 2 0dca SETCLASSLONG exported, shared data -133 2 0d06 GETWINDOWWORD exported, shared data -134 2 0d1a SETWINDOWWORD exported, shared data -135 2 0d3a GETWINDOWLONG exported, shared data -136 2 0d4e SETWINDOWLONG exported, shared data -137 39 0710 OPENCLIPBOARD exported, shared data -138 39 0643 CLOSECLIPBOARD exported, shared data -139 39 0261 EMPTYCLIPBOARD exported, shared data -140 39 00ee GETCLIPBOARDOWNER exported, shared data -141 39 02f4 SETCLIPBOARDDATA exported, shared data -142 39 0425 GETCLIPBOARDDATA exported, shared data -143 39 0075 COUNTCLIPBOARDFORMATS exported, shared data -144 39 06bb ENUMCLIPBOARDFORMATS exported, shared data -145 1 8214 REGISTERCLIPBOARDFORMAT exported, shared data -146 39 0752 GETCLIPBOARDFORMATNAME exported, shared data -147 39 0724 SETCLIPBOARDVIEWER exported, shared data -148 39 00f9 GETCLIPBOARDVIEWER exported, shared data -149 39 0738 CHANGECLIPBOARDCHAIN exported, shared data -150 9 1076 LOADMENU exported, shared data -151 9 0806 CREATEMENU exported, shared data -152 9 118e DESTROYMENU exported, shared data -153 9 10db CHANGEMENU exported, shared data -154 9 11a2 CHECKMENUITEM exported, shared data -155 9 11c7 ENABLEMENUITEM exported, shared data -156 9 1160 GETSYSTEMMENU exported, shared data -157 9 10ad GETMENU exported, shared data -158 9 10c1 SETMENU exported, shared data -159 9 11ec GETSUBMENU exported, shared data -160 10 30c3 DRAWMENUBAR exported, shared data -161 9 10fd GETMENUSTRING exported, shared data -162 19 0b49 HILITEMENUITEM exported, shared data -163 13 2521 CREATECARET exported, shared data -164 13 0bfa DESTROYCARET exported, shared data -165 13 0db8 SETCARETPOS exported, shared data -166 13 254f HIDECARET exported, shared data -167 13 2563 SHOWCARET exported, shared data -168 3 24fd SETCARETBLINKTIME exported, shared data -169 13 0d8f GETCARETBLINKTIME exported, shared data -170 4 04c0 ARRANGEICONICWINDOWS exported, shared data -171 2 0e3c WINHELP exported, shared data -172 23 0ceb SWITCHTOTHISWINDOW exported, shared data -173 12 169b LOADCURSOR exported, shared data -174 12 1712 LOADICON exported, shared data -175 12 167e LOADBITMAP exported, shared data -176 12 17af LOADSTRING exported, shared data -177 12 1661 LOADACCELERATORS exported, shared data -178 19 0af4 TRANSLATEACCELERATOR exported, shared data -179 1 a92d GETSYSTEMMETRICS exported, shared data -180 1 8135 GETSYSCOLOR exported, shared data -181 41 186f SETSYSCOLORS exported, shared data -182 1 74f4 BEAR182 exported, shared data -183 13 0d9a GETCARETPOS exported, shared data -184 1 490e QUERYSENDMESSAGE exported, shared data -185 10 30d7 GRAYSTRING exported, shared data -186 1 1cee SWAPMOUSEBUTTON exported -187 9 00fe ENDMENU exported, shared data -188 1 a772 SETSYSMODALWINDOW exported, shared data -189 1 19d4 GETSYSMODALWINDOW exported, shared data -190 1 a9b1 GETUPDATERECT exported, shared data -191 1 abf9 CHILDWINDOWFROMPOINT exported, shared data -192 1 3dba INSENDMESSAGE exported, shared data -193 39 0030 ISCLIPBOARDFORMATAVAILABLE exported, shared data -194 37 104d DLGDIRSELECTCOMBOBOX exported, shared data -195 37 101f DLGDIRLISTCOMBOBOX exported, shared data -196 6 1f1d TABBEDTEXTOUT exported, shared data -197 6 1edc GETTABBEDTEXTEXTENT exported, shared data -198 15 0875 CASCADECHILDWINDOWS exported, shared data -199 15 0956 TILECHILDWINDOWS exported, shared data -200 40 09d9 OPENCOMM exported, shared data -201 40 09f6 SETCOMMSTATE exported, shared data -202 40 0a13 GETCOMMSTATE exported, shared data -203 40 0acd GETCOMMERROR exported, shared data -204 40 0a3d READCOMM exported, shared data -205 40 0a85 WRITECOMM exported, shared data -206 40 0b1d TRANSMITCOMMCHAR exported, shared data -207 40 0aaf CLOSECOMM exported, shared data -208 40 0b3b SETCOMMEVENTMASK exported, shared data -209 40 0b64 GETCOMMEVENTMASK exported, shared data -210 40 0b8d SETCOMMBREAK exported, shared data -211 40 0bab CLEARCOMMBREAK exported, shared data -212 40 0a67 UNGETCOMMCHAR exported, shared data -213 40 0af4 BUILDCOMMDCB exported, shared data -214 40 0be7 ESCAPECOMMFUNCTION exported, shared data -215 40 0bc9 FLUSHCOMM exported, shared data -216 41 181e USERSEEUSERDO exported, shared data -217 9 0163 LOOKUPMENUHANDLE exported, shared data -218 25 2667 DIALOGBOXINDIRECT exported, shared data -219 24 09fa CREATEDIALOGINDIRECT exported, shared data -220 9 1093 LOADMENUINDIRECT exported, shared data -221 13 2409 SCROLLDC exported, shared data -222 1 a889 GETKEYBOARDSTATE exported, shared data -223 1 a8a3 SETKEYBOARDSTATE exported, shared data -224 1 ad54 GETWINDOWTASK exported, shared data -225 1 ad37 ENUMTASKWINDOWS exported, shared data -226 1 4983 LOCKINPUT exported, shared data -227 19 0ac0 GETNEXTDLGGROUPITEM exported, shared data -228 19 0ada GETNEXTDLGTABITEM exported, shared data -229 2 0df2 GETTOPWINDOW exported, shared data -230 2 08f2 GETNEXTWINDOW exported, shared data -231 1 4afb GETSYSTEMDEBUGSTATE exported, shared data -232 7 17ba SETWINDOWPOS exported, shared data -233 14 109c SETPARENT exported, shared data -234 1 ad9a UNHOOKWINDOWSHOOK exported, shared data -235 1 adc4 DEFHOOKPROC exported, shared data -236 1 8197 GETCAPTURE exported, shared data -237 1 a9d1 GETUPDATERGN exported, shared data -238 1 a9fa EXCLUDEUPDATERGN exported, shared data -239 25 2690 DIALOGBOXPARAM exported, shared data -240 25 26bc DIALOGBOXINDIRECTPARAM exported, shared data -241 24 0a29 CREATEDIALOGPARAM exported, shared data -242 24 0a55 CREATEDIALOGINDIRECTPARAM exported, shared data -243 25 0aa3 GETDIALOGBASEUNITS exported, shared data -244 1 2094 EQUALRECT exported, shared data -245 40 0c06 ENABLECOMMNOTIFICATION exported, shared data -246 5 05de EXITWINDOWSEXEC exported, shared data -247 1 14ca GETCURSOR exported, shared data -248 39 0600 GETOPENCLIPBOARDWINDOW exported, shared data -249 1 4f59 GETASYNCKEYSTATE exported, shared data -250 9 113b GETMENUSTATE exported, shared data -251 2 0e5c SENDDRIVERMESSAGE exported, shared data -252 41 18cb OPENDRIVER exported, shared data -253 41 18f1 CLOSEDRIVER exported, shared data -254 41 1905 GETDRIVERMODULEHANDLE exported, shared data -255 2 0e70 DEFDRIVERPROC exported, shared data -256 2 0eaf GETDRIVERINFO exported, shared data -257 2 0e84 GETNEXTDRIVER exported, shared data -258 1 18c8 MAPWINDOWPOINTS exported, shared data -259 7 00b5 BEGINDEFERWINDOWPOS exported, shared data -260 7 17eb DEFERWINDOWPOS exported, shared data -261 7 1822 ENDDEFERWINDOWPOS exported, shared data -262 2 0e1a GETWINDOW exported, shared data -263 9 1217 GETMENUITEMCOUNT exported, shared data -264 9 1200 GETMENUITEMID exported, shared data -265 14 1060 SHOWOWNEDPOPUPS exported, shared data -266 1 56b0 SETMESSAGEQUEUE exported, shared data -267 18 1aa0 SHOWSCROLLBAR exported, shared data -268 1 21cd GLOBALADDATOM exported, shared data -269 1 2236 GLOBALDELETEATOM exported, shared data -270 1 2251 GLOBALFINDATOM exported, shared data -271 1 226f GLOBALGETATOMNAME exported, shared data -272 1 1930 ISZOOMED exported, shared data -273 41 1716 CONTROLPANELINFO exported, shared data -274 23 0d8e GETNEXTQUEUEWINDOW exported, shared data -275 1 77a7 REPAINTSCREEN exported, shared data -276 1 6eea LOCKMYTASK exported, shared data -277 25 27c5 GETDLGCTRLID exported, shared data -278 1 19ca GETDESKTOPHWND exported, shared data -279 41 0a51 OLDSETDESKPATTERN exported, shared data -280 9 1174 SETSYSTEMMENU exported, shared data -282 6 1f95 SELECTPALETTE exported, shared data -283 6 1fd1 REALIZEPALETTE exported, shared data -284 41 1740 GETFREESYSTEMRESOURCES exported, shared data -285 41 1736 BEAR285 exported, shared data -286 1 19ca GETDESKTOPWINDOW exported, shared data -287 2 0e06 GETLASTACTIVEPOPUP exported, shared data -288 1 81bb GETMESSAGEEXTRAINFO exported, shared data -289 1 4b59 KEYBD_EVENT exported, shared data -290 1 aabf REDRAWWINDOW exported, shared data -291 1 adde SETWINDOWSHOOKEX exported, shared data -292 1 ae14 UNHOOKWINDOWSHOOKEX exported, shared data -293 1 ae35 CALLNEXTHOOKEX exported, shared data -294 13 23c9 LOCKWINDOWUPDATE exported, shared data -299 1 507a MOUSE_EVENT exported, shared data -301 26 0000 BOZOSLIVEHERE exported, shared data -306 10 1587 BEAR306 exported, shared data -308 25 27d9 DEFDLGPROC exported, shared data -309 1 abdf GETCLIPCURSOR exported, shared data -314 1 09bc SIGNALPROC exported, shared data -319 13 246c SCROLLWINDOWEX exported, shared data -320 1 9325 SYSERRORBOX exported, shared data -321 1 a8bd SETEVENTHOOK exported, shared data -322 41 0e6e WINOLDAPPHACKOMATIC exported, shared data -323 1 244f GETMESSAGE2 exported, shared data -324 1 7766 FILLWINDOW exported, shared data -325 1 76eb PAINTRECT exported, shared data -326 6 02d2 GETCONTROLBRUSH exported, shared data -331 1 4f36 ENABLEHARDWAREINPUT exported -332 1 3df2 USERYIELD exported, shared data -333 1 334e ISUSERIDLE exported, shared data -334 1 4fed GETQUEUESTATUS exported, shared data -335 1 501c GETINPUTSTATE exported, shared data -336 12 0deb LOADCURSORICONHANDLER exported, shared data -337 1 530a GETMOUSEEVENTPROC exported, shared data -341 1 1798 _FFFE_FARFRAME exported, shared data -343 1 9c7c GETFILEPORTNAME exported, shared data -356 12 0ff1 LOADDIBCURSORHANDLER exported, shared data -357 12 100d LOADDIBICONHANDLER exported, shared data -358 9 0fa0 ISMENU exported, shared data -359 1 a64c GETDCEX exported, shared data -362 1 8a00 DCHOOK exported, shared data -368 12 176f COPYICON exported, shared data -369 12 16f8 COPYCURSOR exported, shared data -370 14 0fde GETWINDOWPLACEMENT exported, shared data -371 14 100e SETWINDOWPLACEMENT exported, shared data -372 12 1789 GETINTERNALICONHEADER exported, shared data -373 1 20b8 SUBTRACTRECT exported, shared data -400 3 2570 FINALUSERINIT exported, shared data -402 39 077c GETPRIORITYCLIPBOARDFORMAT exported, shared data -403 8 0ea5 UNREGISTERCLASS exported, shared data -404 8 0ec2 GETCLASSINFO exported, shared data -406 12 16b8 CREATECURSOR exported, shared data -407 12 172f CREATEICON exported, shared data -408 12 0000 CREATECURSORICONINDIRECT exported, shared data -410 9 122e INSERTMENU exported, shared data -411 9 1250 APPENDMENU exported, shared data -412 9 1294 REMOVEMENU exported, shared data -413 9 12b6 DELETEMENU exported, shared data -414 9 1272 MODIFYMENU exported, shared data -415 9 0813 CREATEPOPUPMENU exported, shared data -416 9 132a TRACKPOPUPMENU exported, shared data -417 9 07ab GETMENUCHECKMARKDIMENSIONS exported, shared data -418 9 12d8 SETMENUITEMBITMAPS exported, shared data -420 16 055a _WSPRINTF exported, shared data -421 16 0518 WVSPRINTF exported, shared data -422 37 0fff DLGDIRSELECTEX exported, shared data -423 37 106d DLGDIRSELECTCOMBOBOXEX exported, shared data -430 11 0359 LSTRCMP exported, shared data -431 11 0365 ANSIUPPER exported, shared data -432 11 0381 ANSILOWER exported, shared data -433 11 0203 ISCHARALPHA exported, shared data -434 11 0208 ISCHARALPHANUMERIC exported, shared data -435 11 020d ISCHARUPPER exported, shared data -436 11 0212 ISCHARLOWER exported, shared data -437 11 039d ANSIUPPERBUFF exported, shared data -438 11 03b7 ANSILOWERBUFF exported, shared data -445 15 1a6e DEFFRAMEPROC exported, shared data -447 15 1a82 DEFMDICHILDPROC exported, shared data -451 15 1aad TRANSLATEMDISYSACCEL exported, shared data -452 8 0f57 CREATEWINDOWEX exported, shared data -454 2 0cec ADJUSTWINDOWRECTEX exported, shared data -455 12 052b GETICONID exported, shared data -456 12 0328 LOADICONHANDLER exported, shared data -457 12 175b DESTROYICON exported, shared data -458 12 16e4 DESTROYCURSOR exported, shared data -459 12 01bb DUMPICON exported, shared data -460 14 0a85 GETINTERNALWINDOWPOS exported, shared data -461 14 0aef SETINTERNALWINDOWPOS exported, shared data -462 15 0276 CALCCHILDSCROLL exported, shared data -463 15 053f SCROLLCHILDREN exported, shared data -464 14 0fbe DRAGOBJECT exported, shared data -465 14 035e DRAGDETECT exported, shared data -466 1 ac0d DRAWFOCUSRECT exported, shared data -470 11 02e7 STRINGFUNC exported, shared data -471 11 035f LSTRCMPI exported, shared data -472 11 03d1 ANSINEXT exported, shared data -473 11 03eb ANSIPREV exported, shared data -480 1 1d38 GETUSERLOCALOBJTYPE exported, shared data -481 1 4d6c HARDWARE_EVENT exported, shared data -482 18 1ac2 ENABLESCROLLBAR exported, shared data -483 41 1895 SYSTEMPARAMETERSINFO exported, shared data -484 1 b664 __GP exported, shared data -499 22 005c WNETERRORTEXT exported, shared data -501 22 0a68 WNETOPENJOB exported, shared data -502 22 0a9d WNETCLOSEJOB exported, shared data -503 22 0b40 WNETABORTJOB exported, shared data -504 22 0acc WNETHOLDJOB exported, shared data -505 22 0ae9 WNETRELEASEJOB exported, shared data -506 22 0b06 WNETCANCELJOB exported, shared data -507 22 0b23 WNETSETJOBCOPIES exported, shared data -508 22 09ca WNETWATCHQUEUE exported, shared data -509 22 09f9 WNETUNWATCHQUEUE exported, shared data -510 22 0a16 WNETLOCKQUEUEDATA exported, shared data -511 22 0a4b WNETUNLOCKQUEUEDATA exported, shared data -512 22 0992 WNETGETCONNECTION exported, shared data -513 22 08a6 WNETGETCAPS exported, shared data -514 22 08c7 WNETDEVICEMODE exported, shared data -515 22 08de WNETBROWSEDIALOG exported, shared data -516 22 0914 WNETGETUSER exported, shared data -517 22 0940 WNETADDCONNECTION exported, shared data -518 22 0975 WNETCANCELCONNECTION exported, shared data -519 22 0b63 WNETGETERROR exported, shared data -520 22 0b80 WNETGETERRORTEXT exported, shared data -521 22 0847 WNETENABLE exported, shared data -522 22 084e WNETDISABLE exported, shared data -523 22 0478 WNETRESTORECONNECTION exported, shared data -524 22 0855 WNETWRITEJOB exported, shared data -525 22 085e WNETCONNECTDIALOG exported, shared data -526 22 0867 WNETDISCONNECTDIALOG exported, shared data -527 22 0870 WNETCONNECTIONDIALOG exported, shared data -528 22 0879 WNETVIEWQUEUEDIALOG exported, shared data -529 22 088b WNETPROPERTYDIALOG exported, shared data -530 22 0894 WNETGETDIRECTORYTYPE exported, shared data -531 22 089d WNETDIRECTORYNOTIFY exported, shared data -532 22 0882 WNETGETPROPERTYTEXT exported, shared data diff --git a/etc/win87em-ordinals b/etc/win87em-ordinals deleted file mode 100644 index 00ee2aba339..00000000000 --- a/etc/win87em-ordinals +++ /dev/null @@ -1,5 +0,0 @@ - 1 1 002a __FPMATH exported - 2 1 0089 WEP exported - 3 1 01ab __WIN87EMINFO exported - 4 1 0220 __WIN87EMRESTORE exported - 5 1 01e3 __WIN87EMSAVE exported diff --git a/files/drive.c b/files/drive.c index 948f9b633c1..92c2c260b1d 100644 --- a/files/drive.c +++ b/files/drive.c @@ -176,7 +176,7 @@ int DRIVE_IsValid( int drive ) */ int DRIVE_GetCurrentDrive(void) { - TDB *pTask = (TDB *)GlobalLock( GetCurrentTask() ); + TDB *pTask = (TDB *)GlobalLock16( GetCurrentTask() ); if (pTask && (pTask->curdrive & 0x80)) return pTask->curdrive & ~0x80; return DRIVE_CurDrive; } @@ -187,7 +187,7 @@ int DRIVE_GetCurrentDrive(void) */ int DRIVE_SetCurrentDrive( int drive ) { - TDB *pTask = (TDB *)GlobalLock( GetCurrentTask() ); + TDB *pTask = (TDB *)GlobalLock16( GetCurrentTask() ); if (!DRIVE_IsValid( drive )) { DOS_ERROR( ER_InvalidDrive, EC_MediaError, SA_Abort, EL_Disk ); @@ -270,7 +270,7 @@ const char * DRIVE_GetRoot( int drive ) */ const char * DRIVE_GetDosCwd( int drive ) { - TDB *pTask = (TDB *)GlobalLock( GetCurrentTask() ); + TDB *pTask = (TDB *)GlobalLock16( GetCurrentTask() ); if (!DRIVE_IsValid( drive )) return NULL; /* Check if we need to change the directory to the new task. */ @@ -291,7 +291,7 @@ const char * DRIVE_GetDosCwd( int drive ) */ const char * DRIVE_GetUnixCwd( int drive ) { - TDB *pTask = (TDB *)GlobalLock( GetCurrentTask() ); + TDB *pTask = (TDB *)GlobalLock16( GetCurrentTask() ); if (!DRIVE_IsValid( drive )) return NULL; /* Check if we need to change the directory to the new task. */ @@ -356,7 +356,7 @@ int DRIVE_Chdir( int drive, const char *path ) char buffer[MAX_PATHNAME_LEN]; const char *unix_cwd, *dos_cwd; BYTE attr; - TDB *pTask = (TDB *)GlobalLock( GetCurrentTask() ); + TDB *pTask = (TDB *)GlobalLock16( GetCurrentTask() ); dprintf_dosfs( stddeb, "DRIVE_Chdir(%c:,%s)\n", 'A' + drive, path ); strcpy( buffer, "A:" ); diff --git a/files/file.c b/files/file.c index 758aa64d929..e9881a0f40f 100644 --- a/files/file.c +++ b/files/file.c @@ -101,7 +101,7 @@ static void FILE_GetPDBFiles( BYTE **files, WORD *nbFiles ) { PDB *pdb; - if ((pdb = (PDB *)GlobalLock( GetCurrentPDB() )) != NULL) + if ((pdb = (PDB *)GlobalLock16( GetCurrentPDB() )) != NULL) { *files = PTR_SEG_TO_LIN( pdb->fileHandlesPtr ); *nbFiles = pdb->nbFiles; @@ -219,7 +219,7 @@ void FILE_CloseAllFiles( HANDLE hPDB ) { BYTE *files; WORD count; - PDB *pdb = (PDB *)GlobalLock( hPDB ); + PDB *pdb = (PDB *)GlobalLock16( hPDB ); if (!pdb) return; files = PTR_SEG_TO_LIN( pdb->fileHandlesPtr ); @@ -572,7 +572,7 @@ HFILE FILE_Dup( HFILE hFile ) HFILE FILE_Dup2( HFILE hFile1, HFILE hFile2 ) { DOS_FILE *file; - PDB *pdb = (PDB *)GlobalLock( GetCurrentPDB() ); + PDB *pdb = (PDB *)GlobalLock16( GetCurrentPDB() ); BYTE *files = PTR_SEG_TO_LIN( pdb->fileHandlesPtr ); dprintf_file( stddeb, "FILE_Dup2 for handle %d\n", hFile1 ); @@ -702,7 +702,8 @@ HFILE OpenFile( LPCSTR name, OFSTRUCT *ofs, UINT mode ) name, ofs->szPathName, hFileRet ); /* Return the handle, but close it first */ FILE_FreeTaskHandle( hFileRet ); - return hFileRet; +/* return hFileRet; */ + return 0; /* Progman seems to like this better */ } /* OF_CREATE is completely different from all other options, so @@ -875,7 +876,7 @@ INT _lread( HFILE hFile, SEGPTR buffer, WORD count ) /*********************************************************************** * _lcreat (KERNEL.83) */ -INT _lcreat( LPCSTR path, INT attr ) +HFILE _lcreat( LPCSTR path, INT attr ) { DOS_FILE *file; HFILE handle; @@ -893,7 +894,7 @@ INT _lcreat( LPCSTR path, INT attr ) /*********************************************************************** * _lcreat_uniq (Not a Windows API) */ -INT _lcreat_uniq( LPCSTR path, INT attr ) +HFILE _lcreat_uniq( LPCSTR path, INT attr ) { DOS_FILE *file; HFILE handle; @@ -1021,7 +1022,7 @@ LONG _hwrite( HFILE hFile, LPCSTR buffer, LONG count ) WORD SetHandleCount( WORD count ) { HANDLE hPDB = GetCurrentPDB(); - PDB *pdb = (PDB *)GlobalLock( hPDB ); + PDB *pdb = (PDB *)GlobalLock16( hPDB ); BYTE *files = PTR_SEG_TO_LIN( pdb->fileHandlesPtr ); WORD i; @@ -1048,10 +1049,10 @@ WORD SetHandleCount( WORD count ) { memcpy( pdb->fileHandles, files, 20 ); #ifdef WINELIB - GlobalFree( (HGLOBAL)pdb->fileHandlesPtr ); + GlobalFree32( (HGLOBAL32)pdb->fileHandlesPtr ); pdb->fileHandlesPtr = (SEGPTR)pdb->fileHandles; #else - GlobalFree( GlobalHandle( SELECTOROF(pdb->fileHandlesPtr) )); + GlobalFree16( GlobalHandle16( SELECTOROF(pdb->fileHandlesPtr) )); pdb->fileHandlesPtr = (SEGPTR)MAKELONG( 0x18, GlobalHandleToSel( hPDB ) ); #endif @@ -1061,13 +1062,17 @@ WORD SetHandleCount( WORD count ) else /* More than 20, need a new file handles table */ { BYTE *newfiles; - HANDLE newhandle = GlobalAlloc( GMEM_MOVEABLE, count ); +#ifdef WINELIB + newfiles = (BYTE *)GlobalAlloc32( GMEM_FIXED, count ); +#else + HANDLE newhandle = GlobalAlloc16( GMEM_MOVEABLE, count ); if (!newhandle) { DOS_ERROR( ER_OutOfMemory, EC_OutOfResource, SA_Abort, EL_Memory ); return pdb->nbFiles; } - newfiles = (BYTE *)GlobalLock( newhandle ); + newfiles = (BYTE *)GlobalLock16( newhandle ); +#endif /* WINELIB */ if (count > pdb->nbFiles) { memcpy( newfiles, files, pdb->nbFiles ); @@ -1075,12 +1080,13 @@ WORD SetHandleCount( WORD count ) } else memcpy( newfiles, files, count ); #ifdef WINELIB - if (pdb->nbFiles > 20) GlobalFree( (HGLOBAL)pdb->fileHandlesPtr ); + if (pdb->nbFiles > 20) GlobalFree32( (HGLOBAL32)pdb->fileHandlesPtr ); + pdb->fileHandlesPtr = (SEGPTR)newfiles; #else if (pdb->nbFiles > 20) - GlobalFree( GlobalHandle( SELECTOROF(pdb->fileHandlesPtr) )); -#endif - pdb->fileHandlesPtr = WIN16_GlobalLock( newhandle ); + GlobalFree16( GlobalHandle16( SELECTOROF(pdb->fileHandlesPtr) )); + pdb->fileHandlesPtr = WIN16_GlobalLock16( newhandle ); +#endif /* WINELIB */ pdb->nbFiles = count; } return pdb->nbFiles; diff --git a/if1632/Makefile.in b/if1632/Makefile.in index 684948a5d2c..c33bf52f7c6 100644 --- a/if1632/Makefile.in +++ b/if1632/Makefile.in @@ -8,6 +8,7 @@ DLLS = \ comdlg32.spec \ commdlg.spec \ compobj.spec \ + crtdll.spec \ ddeml.spec \ gdi.spec \ gdi32.spec \ @@ -17,6 +18,7 @@ DLLS = \ lzexpand.spec \ mmsystem.spec \ mouse.spec \ + ntdll.spec \ ole2.spec \ ole2conv.spec \ ole2disp.spec \ @@ -40,7 +42,8 @@ DLLS = \ winsock.spec \ winspool.spec \ wprocs.spec \ - wprocs32.spec + wprocs32.spec \ + wsock32.spec SPEC_FILES = $(DLLS:.spec=.S) diff --git a/if1632/crtdll.spec b/if1632/crtdll.spec new file mode 100644 index 00000000000..5cdb2caef56 --- /dev/null +++ b/if1632/crtdll.spec @@ -0,0 +1,530 @@ +name crtdll +type win32 +base 1 + +001 stub ??2@YAPAXI@Z +002 stub ??3@YAXPAX@Z +003 stub ?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z +004 stub _CIacos +005 stub _CIasin +006 stub _CIatan +007 stub _CIatan2 +008 stub _CIcos +009 stub _CIcosh +010 stub _CIexp +011 stub _CIfmod +012 stub _CIlog +013 stub _CIlog10 +014 stub _CIpow +015 stub _CIsin +016 stub _CIsinh +017 stub _CIsqrt +018 stub _CItan +019 stub _CItanh +020 stub _HUGE_dll +021 stub _XcptFilter +022 stub __GetMainArgs +023 stub __argc_dll +024 stub __argv_dll +025 stub __dllonexit +026 stub __doserrno +027 stub __fpecode +028 stub __isascii +029 stub __iscsym +030 stub __iscsymf +031 stub __mb_cur_max_dll +032 stub __pxcptinfoptrs +033 stub __threadhandle +034 stub __threadid +035 stub __toascii +036 stub _abnormal_termination +037 stub _access +038 stub _acmdln_dll +039 stub _aexit_rtn_dll +040 stub _amsg_exit +041 stub _assert +042 stub _basemajor_dll +043 stub _baseminor_dll +044 stub _baseversion_dll +045 stub _beep +046 stub _beginthread +047 stub _c_exit +048 stub _cabs +049 stub _cexit +050 stub _cgets +051 stub _chdir +052 stub _chdrive +053 stub _chgsign +054 stub _chmod +055 stub _chsize +056 stub _clearfp +057 stub _close +058 stub _commit +059 stub _commode_dll +060 stub _control87 +061 stub _controlfp +062 stub _copysign +063 stub _cprintf +064 stub _cpumode_dll +065 stub _cputs +066 stub _creat +067 stub _cscanf +068 stub _ctype +069 stub _cwait +070 stub _daylight_dll +071 stub _dup +072 stub _dup2 +073 stub _ecvt +074 stub _endthread +075 stub _environ_dll +076 stub _eof +077 stub _errno +078 stub _except_handler2 +079 stub _execl +080 stub _execle +081 stub _execlp +082 stub _execlpe +083 stub _execv +084 stub _execve +085 stub _execvp +086 stub _execvpe +087 stub _exit +088 stub _expand +089 stub _fcloseall +090 stub _fcvt +091 stub _fdopen +092 stub _fgetchar +093 stub _fgetwchar +094 stub _filbuf +095 stub _fileinfo_dll +096 stub _filelength +097 stub _fileno +098 stub _findclose +099 stub _findfirst +100 stub _findnext +101 stub _finite +102 stub _flsbuf +103 stub _flushall +104 stub _fmode_dll +105 stub _fpclass +106 stub _fpieee_flt +107 stub _fpreset +108 stub _fputchar +109 stub _fputwchar +110 stub _fsopen +111 stub _fstat +112 stub _ftime +113 stub _ftol +114 stub _fullpath +115 stub _futime +116 stub _gcvt +117 stub _get_osfhandle +118 stub _getch +119 stub _getche +120 stub _getcwd +121 stub _getdcwd +122 stub _getdiskfree +123 stub _getdllprocaddr +124 stub _getdrive +125 stub _getdrives +126 stub _getpid +127 stub _getsystime +128 stub _getw +129 stub _global_unwind2 +130 stub _heapchk +131 stub _heapmin +132 stub _heapset +133 stub _heapwalk +134 stub _hypot +135 stub _initterm +136 stub _iob +137 stub _isatty +138 stub _isctype +139 stub _ismbbalnum +140 stub _ismbbalpha +141 stub _ismbbgraph +142 stub _ismbbkalnum +143 stub _ismbbkana +144 stub _ismbbkpunct +145 stub _ismbblead +146 stub _ismbbprint +147 stub _ismbbpunct +148 stub _ismbbtrail +149 stub _ismbcalpha +150 stub _ismbcdigit +151 stub _ismbchira +152 stub _ismbckata +153 stub _ismbcl0 +154 stub _ismbcl1 +155 stub _ismbcl2 +156 stub _ismbclegal +157 stub _ismbclower +158 stub _ismbcprint +159 stub _ismbcspace +160 stub _ismbcsymbol +161 stub _ismbcupper +162 stub _ismbslead +163 stub _ismbstrail +164 stub _isnan +165 stub _itoa +166 stub _itow +167 stub _j0 +168 stub _j1 +169 stub _jn +170 stub _kbhit +171 stub _lfind +172 stub _loaddll +173 stub _local_unwind2 +174 stub _locking +175 stub _logb +176 stub _lrotl +177 stub _lrotr +178 stub _lsearch +179 stub _lseek +180 stub _ltoa +181 stub _ltow +182 stub _makepath +183 stub _matherr +184 stub _mbbtombc +185 stub _mbbtype +186 stub _mbccpy +187 stub _mbcjistojms +188 stub _mbcjmstojis +189 stub _mbclen +190 stub _mbctohira +191 stub _mbctokata +192 stub _mbctolower +193 stub _mbctombb +194 stub _mbctoupper +195 stub _mbctype +196 stub _mbsbtype +197 stub _mbscat +198 stub _mbschr +199 stub _mbscmp +200 stub _mbscpy +201 stub _mbscspn +202 stub _mbsdec +203 stub _mbsdup +204 stub _mbsicmp +205 stub _mbsinc +206 stub _mbslen +207 stub _mbslwr +208 stub _mbsnbcat +209 stub _mbsnbcmp +210 stub _mbsnbcnt +211 stub _mbsnbcpy +212 stub _mbsnbicmp +213 stub _mbsnbset +214 stub _mbsncat +215 stub _mbsnccnt +216 stub _mbsncmp +217 stub _mbsncpy +218 stub _mbsnextc +219 stub _mbsnicmp +220 stub _mbsninc +221 stub _mbsnset +222 stub _mbspbrk +223 stub _mbsrchr +224 stub _mbsrev +225 stub _mbsset +226 stub _mbsspn +227 stub _mbsspnp +228 stub _mbsstr +229 stub _mbstok +230 stub _mbstrlen +231 stub _mbsupr +232 stub _memccpy +233 stub _memicmp +234 stub _mkdir +235 stub _mktemp +236 stub _msize +237 stub _nextafter +238 stub _onexit +239 stub _open +240 stub _open_osfhandle +241 stub _osmajor_dll +242 stub _osminor_dll +243 stub _osmode_dll +244 stub _osver_dll +245 stub _osversion_dll +246 stub _pclose +247 stub _pctype_dll +248 stub _pgmptr_dll +249 stub _pipe +250 stub _popen +251 stub _purecall +252 stub _putch +253 stub _putenv +254 stub _putw +255 stub _pwctype_dll +256 stub _read +257 stub _rmdir +258 stub _rmtmp +259 stub _rotl +260 stub _rotr +261 stub _scalb +262 stub _searchenv +263 stub _seterrormode +264 stub _setjmp +265 stub _setmode +266 stub _setsystime +267 stub _sleep +268 stub _snprintf +269 stub _snwprintf +270 stub _sopen +271 stub _spawnl +272 stub _spawnle +273 stub _spawnlp +274 stub _spawnlpe +275 stub _spawnv +276 stub _spawnve +277 stub _spawnvp +278 stub _spawnvpe +279 stub _splitpath +280 stub _stat +281 stub _statusfp +282 stub _strcmpi +283 stub _strdate +284 stub _strdec +285 stub _strdup +286 stub _strerror +287 stub _stricmp +288 stub _stricoll +289 stub _strinc +290 stub _strlwr +291 stub _strncnt +292 stub _strnextc +293 stub _strnicmp +294 stub _strninc +295 stub _strnset +296 stub _strrev +297 stub _strset +298 stub _strspnp +299 stub _strtime +300 stub _strupr +301 stub _swab +302 stub _sys_errlist +303 stub _sys_nerr_dll +304 stub _tell +305 stub _tempnam +306 stub _timezone_dll +307 stub _tolower +308 stub _toupper +309 stub _tzname +310 stub _tzset +311 stub _ultoa +312 stub _ultow +313 stub _umask +314 stub _ungetch +315 stub _unlink +316 stub _unloaddll +317 stub _utime +318 stub _vsnprintf +319 stub _vsnwprintf +320 stub _wcsdup +321 stub _wcsicmp +322 stub _wcsicoll +323 stub _wcslwr +324 stub _wcsnicmp +325 stub _wcsnset +326 stub _wcsrev +327 stub _wcsset +328 stub _wcsupr +329 stub _winmajor_dll +330 stub _winminor_dll +331 stub _winver_dll +332 stub _write +333 stub _wtoi +334 stub _wtol +335 stub _y0 +336 stub _y1 +337 stub _yn +338 stub abort +339 stub abs +340 stub acos +341 stub asctime +342 stub asin +343 stub atan +344 stub atan2 +345 stub atexit +346 stub atof +347 stub atoi +348 stub atol +349 stub bsearch +350 stub calloc +351 stub ceil +352 stub clearerr +353 stub clock +354 stub cos +355 stub cosh +356 stub ctime +357 stub difftime +358 stub div +359 stub exit +360 stub exp +361 stub fabs +362 stub fclose +363 stub feof +364 stub ferror +365 stub fflush +366 stub fgetc +367 stub fgetpos +368 stub fgets +369 stub fgetwc +370 stub floor +371 stub fmod +372 stub fopen +373 stub fprintf +374 stub fputc +375 stub fputs +376 stub fputwc +377 stub fread +378 stub free +379 stub freopen +380 stub frexp +381 stub fscanf +382 stub fseek +383 stub fsetpos +384 stub ftell +385 stub fwprintf +386 stub fwrite +387 stub fwscanf +388 stub getc +389 stub getchar +390 stub getenv +391 stub gets +392 stub gmtime +393 stub is_wctype +394 stub isalnum +395 stub isalpha +396 stub iscntrl +397 stub isdigit +398 stub isgraph +399 stub isleadbyte +400 stub islower +401 stub isprint +402 stub ispunct +403 stub isspace +404 stub isupper +405 stub iswalnum +406 stub iswalpha +407 stub iswascii +408 stub iswcntrl +409 stub iswctype +410 stub iswdigit +411 stub iswgraph +412 stub iswlower +413 stub iswprint +414 stub iswpunct +415 stub iswspace +416 stub iswupper +417 stub iswxdigit +418 stub isxdigit +419 stub labs +420 stub ldexp +421 stub ldiv +422 stub localeconv +423 stub localtime +424 stub log +425 stub log10 +426 stub longjmp +427 stub malloc +428 stub mblen +429 stub mbstowcs +430 stub mbtowc +431 stub memchr +432 stub memcmp +433 stub memcpy +434 stub memmove +435 stub memset +436 stub mktime +437 stub modf +438 stub perror +439 stub pow +440 stub printf +441 stub putc +442 stub putchar +443 stub puts +444 stub qsort +445 stub raise +446 stub rand +447 stub realloc +448 stub remove +449 stub rename +450 stub rewind +451 stub scanf +452 stub setbuf +453 stub setlocale +454 stub setvbuf +455 stub signal +456 stub sin +457 stub sinh +458 stub sprintf +459 stub sqrt +460 stub srand +461 stub sscanf +462 stub strcat +463 stub strchr +464 stub strcmp +465 stub strcoll +466 stub strcpy +467 stub strcspn +468 stub strerror +469 stub strftime +470 stub strlen +471 stub strncat +472 stub strncmp +473 stub strncpy +474 stub strpbrk +475 stub strrchr +476 stub strspn +477 stub strstr +478 stub strtod +479 stub strtok +480 stub strtol +481 stub strtoul +482 stub strxfrm +483 stub swprintf +484 stub swscanf +485 stub system +486 stub tan +487 stub tanh +488 stub time +489 stub tmpfile +490 stub tmpnam +491 stub tolower +492 stub toupper +493 stub towlower +494 stub towupper +495 stub ungetc +496 stub ungetwc +497 stub vfprintf +498 stub vfwprintf +499 stub vprintf +500 stub vsprintf +501 stub vswprintf +502 stub vwprintf +503 stub wcscat +504 stub wcschr +505 stub wcscmp +506 stub wcscoll +507 stub wcscpy +508 stub wcscspn +509 stub wcsftime +510 stub wcslen +511 stub wcsncat +512 stub wcsncmp +513 stub wcsncpy +514 stub wcspbrk +515 stub wcsrchr +516 stub wcsspn +517 stub wcsstr +518 stub wcstod +519 stub wcstok +520 stub wcstol +521 stub wcstombs +522 stub wcstoul +523 stub wcsxfrm +524 stub wctomb +525 stub wprintf +526 stub wscanf diff --git a/if1632/gdi.spec b/if1632/gdi.spec index 0e239462aa6..9b1956405d4 100644 --- a/if1632/gdi.spec +++ b/if1632/gdi.spec @@ -124,7 +124,7 @@ heap 65488 # 65536 - 16 (instance data) - 32 (stock objects) 125 pascal16 CreateMetaFile(ptr) CreateMetaFile 126 pascal16 CloseMetaFile(word) CloseMetaFile 127 pascal16 DeleteMetaFile(word) DeleteMetaFile -128 pascal16 MulDiv(s_word s_word s_word) MulDiv +128 pascal16 MulDiv(s_word s_word s_word) MulDiv16 129 pascal16 SaveVisRgn(word) SaveVisRgn 130 pascal16 RestoreVisRgn(word) RestoreVisRgn 131 pascal16 InquireVisRgn(word) InquireVisRgn diff --git a/if1632/kernel.spec b/if1632/kernel.spec index 64e9c5437ab..d8b4f31fec9 100644 --- a/if1632/kernel.spec +++ b/if1632/kernel.spec @@ -5,27 +5,27 @@ type win16 2 stub ExitKernel 3 pascal GetVersion() GetVersion 4 pascal16 LocalInit(word word word) LocalInit -5 pascal16 LocalAlloc(word word) LocalAlloc -6 pascal16 LocalReAlloc(word word word) LocalReAlloc -7 pascal16 LocalFree(word) LocalFree -8 pascal16 LocalLock(word) LocalLock -9 pascal16 LocalUnlock(word) LocalUnlock -10 pascal16 LocalSize(word) LocalSize -11 pascal16 LocalHandle(word) LocalHandle -12 pascal16 LocalFlags(word) LocalFlags -13 pascal16 LocalCompact(word) LocalCompact +5 pascal16 LocalAlloc(word word) LocalAlloc16 +6 pascal16 LocalReAlloc(word word word) LocalReAlloc16 +7 pascal16 LocalFree(word) LocalFree16 +8 pascal16 LocalLock(word) LocalLock16 +9 pascal16 LocalUnlock(word) LocalUnlock16 +10 pascal16 LocalSize(word) LocalSize16 +11 pascal16 LocalHandle(word) LocalHandle16 +12 pascal16 LocalFlags(word) LocalFlags16 +13 pascal16 LocalCompact(word) LocalCompact16 14 pascal16 LocalNotify(long) LocalNotify -15 pascal16 GlobalAlloc(word long) GlobalAlloc -16 pascal16 GlobalReAlloc(word long word) GlobalReAlloc -17 pascal16 GlobalFree(word) GlobalFree -18 pascal GlobalLock(word) WIN16_GlobalLock -19 pascal16 GlobalUnlock(word) GlobalUnlock -20 pascal GlobalSize(word) GlobalSize -21 pascal GlobalHandle(word) GlobalHandle -22 pascal16 GlobalFlags(word) GlobalFlags +15 pascal16 GlobalAlloc(word long) GlobalAlloc16 +16 pascal16 GlobalReAlloc(word long word) GlobalReAlloc16 +17 pascal16 GlobalFree(word) GlobalFree16 +18 pascal GlobalLock(word) WIN16_GlobalLock16 +19 pascal16 GlobalUnlock(word) GlobalUnlock16 +20 pascal GlobalSize(word) GlobalSize16 +21 pascal GlobalHandle(word) GlobalHandle16 +22 pascal16 GlobalFlags(word) GlobalFlags16 23 pascal16 LockSegment(word) LockSegment 24 pascal16 UnlockSegment(word) UnlockSegment -25 pascal GlobalCompact(long) GlobalCompact +25 pascal GlobalCompact(long) GlobalCompact16 26 pascal16 GlobalFreeAll(word) GlobalFreeAll 27 stub GetModuleName 28 stub GlobalMasterHandle @@ -111,13 +111,13 @@ type win16 112 pascal16 GlobalUnWire(word) GlobalUnWire 113 equate __AHSHIFT 3 114 equate __AHINCR 8 -115 pascal OutputDebugString(ptr) OutputDebugString +115 pascal16 OutputDebugString(ptr) OutputDebugString 116 stub InitLib 117 pascal16 OldYield() OldYield 118 register GetTaskQueueDS() GetTaskQueueDS 119 register GetTaskQueueES() GetTaskQueueES 120 stub UndefDynLink -121 pascal16 LocalShrink(word word) LocalShrink +121 pascal16 LocalShrink(word word) LocalShrink16 122 pascal16 IsTaskLocked() IsTaskLocked 123 stub KbdRst 124 return EnableKernel 0 0 diff --git a/if1632/kernel32.spec b/if1632/kernel32.spec index 77c095f5f26..fe9917002b6 100644 --- a/if1632/kernel32.spec +++ b/if1632/kernel32.spec @@ -318,24 +318,24 @@ base 1 0312 stub GetWindowsDirectoryW 0313 stdcall GlobalAddAtomA(long) WIN32_GlobalAddAtomA 0314 stub GlobalAddAtomW -0315 stdcall GlobalAlloc(long long) GlobalAlloc32 -0316 stub GlobalCompact +0315 stdcall GlobalAlloc(long long) GlobalAlloc32 +0316 stdcall GlobalCompact(long) GlobalCompact32 0317 stub GlobalDeleteAtom 0318 stub GlobalFindAtomA 0319 stub GlobalFindAtomW 0320 stub GlobalFix -0321 stub GlobalFlags -0322 stub GlobalFree +0321 stdcall GlobalFlags(long) GlobalFlags32 +0322 stdcall GlobalFree(long) GlobalFree32 0323 stub GlobalGetAtomNameA 0324 stub GlobalGetAtomNameW -0325 stub GlobalHandle -0326 stdcall GlobalLock(long) GlobalLock32 +0325 stdcall GlobalHandle(ptr) GlobalHandle32 +0326 stdcall GlobalLock(long) GlobalLock32 0327 stub GlobalMemoryStatus -0328 stub GlobalReAlloc -0329 stub GlobalSize +0328 stdcall GlobalReAlloc(long long long) GlobalReAlloc32 +0329 stdcall GlobalSize(long) GlobalSize32 0330 stub GlobalUnWire 0331 stub GlobalUnfix -0332 stub GlobalUnlock +0332 stdcall GlobalUnlock(long) GlobalUnlock32 0333 stub GlobalWire 0334 stdcall HeapAlloc(long long long) HeapAlloc 0335 stdcall HeapCompact(long long) HeapCompact @@ -354,7 +354,7 @@ base 1 0348 stub InterlockedExchange 0349 stub InterlockedIncrement 0350 stub InvalidateConsoleDIBits -0351 stub IsBadCodePtr +0351 stdcall IsBadCodePtr(ptr long) WIN32_IsBadCodePtr 0352 stub IsBadHugeReadPtr 0353 stub IsBadHugeWritePtr 0354 stdcall IsBadReadPtr(ptr long) WIN32_IsBadReadPtr @@ -374,17 +374,17 @@ base 1 0368 stub LoadLibraryW 0369 stub LoadModule 0370 stdcall LoadResource(long long) LoadResource32 -0371 stdcall LocalAlloc(long long) GlobalAlloc32 -0372 stub LocalCompact +0371 stdcall LocalAlloc(long long) LocalAlloc32 +0372 stdcall LocalCompact(long) LocalCompact32 0373 stub LocalFileTimeToFileTime -0374 stub LocalFlags -0375 stub LocalFree -0376 stub LocalHandle -0377 stdcall LocalLock(long) GlobalLock32 -0378 stub LocalReAlloc -0379 stub LocalShrink -0380 stub LocalSize -0381 stub LocalUnlock +0374 stdcall LocalFlags(long) LocalFlags32 +0375 stdcall LocalFree(long) LocalFree32 +0376 stdcall LocalHandle(ptr) LocalHandle32 +0377 stdcall LocalLock(long) LocalLock32 +0378 stdcall LocalReAlloc(long long long) LocalReAlloc32 +0379 stdcall LocalShrink(long long) LocalShrink32 +0380 stdcall LocalSize(long) LocalSize32 +0381 stdcall LocalUnlock(long) LocalUnlock32 0382 stub LockFile 0383 stub LockFileEx 0384 stub LockResource @@ -394,7 +394,7 @@ base 1 0388 stub MoveFileExA 0389 stub MoveFileExW 0390 stub MoveFileW -0391 stub MulDiv +0391 stdcall MulDiv(long long long) MulDiv32 0392 stdcall MultiByteToWideChar(long long ptr long ptr long) MultiByteToWideChar 0393 stub OpenConsoleW 0394 stub OpenEventA diff --git a/if1632/ntdll.spec b/if1632/ntdll.spec new file mode 100644 index 00000000000..ea49e96b62b --- /dev/null +++ b/if1632/ntdll.spec @@ -0,0 +1,954 @@ +name ntdll +type win32 +base 0 + +001 stub CsrAllocateCaptureBuffer +002 stub CsrAllocateCapturePointer +003 stub CsrAllocateMessagePointer +004 stub CsrCaptureMessageBuffer +005 stub CsrCaptureMessageString +006 stub CsrCaptureTimeout +007 stub CsrClientCallServer +008 stub CsrClientConnectToServer +009 stub CsrClientMaxMessage +010 stub CsrClientSendMessage +011 stub CsrClientThreadConnect +012 stub CsrFreeCaptureBuffer +013 stub CsrIdentifyAlertableThread +014 stub CsrNewThread +015 stub CsrProbeForRead +016 stub CsrProbeForWrite +017 stub CsrSetPriorityClass +018 stub CsrpProcessCallbackRequest +019 stub DbgBreakPoint +020 stub DbgPrint +021 stub DbgPrompt +022 stub DbgSsHandleKmApiMsg +023 stub DbgSsInitialize +024 stub DbgUiConnectToDbg +025 stub DbgUiContinue +026 stub DbgUiWaitStateChange +027 stub DbgUserBreakPoint +028 stub KiUserApcDispatcher +029 stub KiUserCallbackDispatcher +030 stub KiUserExceptionDispatcher +031 stub LdrAccessResource +032 stub LdrDisableThreadCalloutsForDll +033 stub LdrEnumResources +034 stub LdrFindEntryForAddress +035 stub LdrFindResourceDirectory_U +036 stub LdrFindResource_U +037 stub LdrGetDllHandle +038 stub LdrGetProcedureAddress +039 stub LdrInitializeThunk +040 stub LdrLoadDll +041 stub LdrProcessRelocationBlock +042 stub LdrQueryImageFileExecutionOptions +043 stub LdrQueryProcessModuleInformation +044 stub LdrShutdownProcess +045 stub LdrShutdownThread +046 stub LdrUnloadDll +047 stub LdrVerifyImageMatchesChecksum +048 stub NPXEMULATORTABLE +049 stub NlsMbCodePageTag +050 stub NlsMbOemCodePageTag +051 stub NtAcceptConnectPort +052 stub NtAccessCheck +053 stub NtAccessCheckAndAuditAlarm +054 stub NtAdjustGroupsToken +055 stub NtAdjustPrivilegesToken +056 stub NtAlertResumeThread +057 stub NtAlertThread +058 stub NtAllocateLocallyUniqueId +059 stub NtAllocateUuids +060 stub NtAllocateVirtualMemory +061 stub NtCallbackReturn +062 stub NtCancelIoFile +063 stub NtCancelTimer +064 stub NtClearEvent +065 stub NtClose +066 stub NtCloseObjectAuditAlarm +067 stub NtCompleteConnectPort +068 stub NtConnectPort +069 stub NtContinue +070 stub NtCreateDirectoryObject +071 stub NtCreateEvent +072 stub NtCreateEventPair +073 stub NtCreateFile +074 stub NtCreateIoCompletion +075 stub NtCreateKey +076 stub NtCreateMailslotFile +077 stub NtCreateMutant +078 stub NtCreateNamedPipeFile +079 stub NtCreatePagingFile +080 stub NtCreatePort +081 stub NtCreateProcess +082 stub NtCreateProfile +083 stub NtCreateSection +084 stub NtCreateSemaphore +085 stub NtCreateSymbolicLinkObject +086 stub NtCreateThread +087 stub NtCreateTimer +088 stub NtCreateToken +089 stub NtCurrentTeb +090 stub NtDelayExecution +091 stub NtDeleteFile +092 stub NtDeleteKey +093 stub NtDeleteValueKey +094 stub NtDeviceIoControlFile +095 stub NtDisplayString +096 stub NtDuplicateObject +097 stub NtDuplicateToken +098 stub NtEnumerateBus +099 stub NtEnumerateKey +100 stub NtEnumerateValueKey +101 stub NtExtendSection +102 stub NtFlushBuffersFile +103 stub NtFlushInstructionCache +104 stub NtFlushKey +105 stub NtFlushVirtualMemory +106 stub NtFlushWriteBuffer +107 stub NtFreeVirtualMemory +108 stub NtFsControlFile +109 stub NtGetContextThread +110 stub NtGetPlugPlayEvent +111 stub NtGetTickCount +112 stub NtImpersonateClientOfPort +113 stub NtImpersonateThread +114 stub NtInitializeRegistry +115 stub NtListenPort +116 stub NtLoadDriver +117 stub NtLoadKey +118 stub NtLockFile +119 stub NtLockVirtualMemory +120 stub NtMakeTemporaryObject +121 stub NtMapViewOfSection +122 stub NtNotifyChangeDirectoryFile +123 stub NtNotifyChangeKey +124 stub NtOpenDirectoryObject +125 stub NtOpenEvent +126 stub NtOpenEventPair +127 stub NtOpenFile +128 stub NtOpenIoCompletion +129 stub NtOpenKey +130 stub NtOpenMutant +131 stub NtOpenObjectAuditAlarm +132 stub NtOpenProcess +133 stub NtOpenProcessToken +134 stub NtOpenSection +135 stub NtOpenSemaphore +136 stub NtOpenSymbolicLinkObject +137 stub NtOpenThread +138 stub NtOpenThreadToken +139 stub NtOpenTimer +140 stub NtPlugPlayControl +141 stub NtPrivilegeCheck +142 stub NtPrivilegeObjectAuditAlarm +143 stub NtPrivilegedServiceAuditAlarm +144 stub NtProtectVirtualMemory +145 stub NtPulseEvent +146 stub NtQueryAttributesFile +147 stub NtQueryDefaultLocale +148 stub NtQueryDirectoryFile +149 stub NtQueryDirectoryObject +150 stub NtQueryEaFile +151 stub NtQueryEvent +152 stub NtQueryInformationFile +153 stub NtQueryInformationPort +154 stub NtQueryInformationProcess +155 stub NtQueryInformationThread +156 stub NtQueryInformationToken +157 stub NtQueryIntervalProfile +158 stub NtQueryIoCompletion +159 stub NtQueryKey +160 stub NtQueryMutant +161 stub NtQueryObject +162 stub NtQueryPerformanceCounter +163 stub NtQuerySection +164 stub NtQuerySecurityObject +165 stub NtQuerySemaphore +166 stub NtQuerySymbolicLinkObject +167 stub NtQuerySystemEnvironmentValue +168 stub NtQuerySystemInformation +169 stub NtQuerySystemTime +170 stub NtQueryTimer +171 stub NtQueryTimerResolution +172 stub NtQueryValueKey +173 stub NtQueryVirtualMemory +174 stub NtQueryVolumeInformationFile +175 stub NtRaiseException +176 stub NtRaiseHardError +177 stub NtReadFile +178 stub NtReadRequestData +179 stub NtReadVirtualMemory +180 stub NtRegisterNewDevice +181 stub NtRegisterThreadTerminatePort +182 stub NtReleaseMutant +183 stub NtReleaseProcessMutant +184 stub NtReleaseSemaphore +185 stub NtRemoveIoCompletion +186 stub NtReplaceKey +187 stub NtReplyPort +188 stub NtReplyWaitReceivePort +189 stub NtReplyWaitReplyPort +190 stub NtRequestPort +191 stub NtRequestWaitReplyPort +192 stub NtResetEvent +193 stub NtRestoreKey +194 stub NtResumeThread +195 stub NtSaveKey +196 stub NtSetContextThread +197 stub NtSetDefaultHardErrorPort +198 stub NtSetDefaultLocale +199 stub NtSetEaFile +200 stub NtSetEvent +201 stub NtSetHighEventPair +202 stub NtSetHighWaitLowEventPair +203 stub NtSetHighWaitLowThread +204 stub NtSetInformationFile +205 stub NtSetInformationKey +206 stub NtSetInformationObject +207 stub NtSetInformationProcess +208 stub NtSetInformationThread +209 stub NtSetInformationToken +210 stub NtSetIntervalProfile +211 stub NtSetIoCompletion +212 stub NtSetLdtEntries +213 stub NtSetLowEventPair +214 stub NtSetLowWaitHighEventPair +215 stub NtSetLowWaitHighThread +216 stub NtSetSecurityObject +217 stub NtSetSystemEnvironmentValue +218 stub NtSetSystemInformation +219 stub NtSetSystemPowerState +220 stub NtSetSystemTime +221 stub NtSetTimer +222 stub NtSetTimerResolution +223 stub NtSetValueKey +224 stub NtSetVolumeInformationFile +225 stub NtShutdownSystem +226 stub NtStartProfile +227 stub NtStopProfile +228 stub NtSuspendThread +229 stub NtSystemDebugControl +230 stub NtTerminateProcess +231 stub NtTerminateThread +232 stub NtTestAlert +233 stub NtUnloadDriver +234 stub NtUnloadKey +235 stub NtUnlockFile +236 stub NtUnlockVirtualMemory +237 stub NtUnmapViewOfSection +238 stub NtVdmControl +239 stub NtW32Call +240 stub NtWaitForMultipleObjects +241 stub NtWaitForProcessMutant +242 stub NtWaitForSingleObject +243 stub NtWaitHighEventPair +244 stub NtWaitLowEventPair +245 stub NtWriteFile +246 stub NtWriteRequestData +247 stub NtWriteVirtualMemory +248 stub PfxFindPrefix +249 stub PfxInitialize +250 stub PfxInsertPrefix +251 stub PfxRemovePrefix +252 stub RestoreEm87Context +253 stub RtlAbortRXact +254 stub RtlAbsoluteToSelfRelativeSD +255 stub RtlAcquirePebLock +256 stub RtlAcquireResourceExclusive +257 stub RtlAcquireResourceShared +258 stub RtlAddAccessAllowedAce +259 stub RtlAddAccessDeniedAce +260 stub RtlAddAce +261 stub RtlAddActionToRXact +262 stub RtlAddAttributeActionToRXact +263 stub RtlAddAuditAccessAce +264 stub RtlAdjustPrivilege +265 stub RtlAllocateAndInitializeSid +266 stub RtlAllocateHeap +267 stub RtlAnsiCharToUnicodeChar +268 stub RtlAnsiStringToUnicodeSize +269 stub RtlAnsiStringToUnicodeString +270 stub RtlAppendAsciizToString +271 stub RtlAppendStringToString +272 stub RtlAppendUnicodeStringToString +273 stub RtlAppendUnicodeToString +274 stub RtlApplyRXact +275 stub RtlApplyRXactNoFlush +276 stub RtlAreAllAccessesGranted +277 stub RtlAreAnyAccessesGranted +278 stub RtlAreBitsClear +279 stub RtlAreBitsSet +280 stub RtlAssert +281 stub RtlCaptureStackBackTrace +282 stub RtlCharToInteger +283 stub RtlCheckRegistryKey +284 stub RtlClearAllBits +285 stub RtlClearBits +286 stub RtlCompactHeap +287 stub RtlCompareMemory +288 stub RtlCompareMemoryUlong +289 stub RtlCompareString +290 stub RtlCompareUnicodeString +291 stub RtlCompressBuffer +292 stub RtlConsoleMultiByteToUnicodeN +293 stub RtlConvertExclusiveToShared +294 stub RtlConvertLongToLargeInteger +295 stub RtlConvertSharedToExclusive +296 stub RtlConvertSidToUnicodeString +297 stub RtlConvertUiListToApiList +298 stub RtlConvertUlongToLargeInteger +299 stub RtlCopyLuid +300 stub RtlCopyLuidAndAttributesArray +301 stub RtlCopySecurityDescriptor +302 stub RtlCopySid +303 stub RtlCopySidAndAttributesArray +304 stub RtlCopyString +305 stub RtlCopyUnicodeString +306 stub RtlCreateAcl +307 stub RtlCreateAndSetSD +308 stub RtlCreateEnvironment +309 stub RtlCreateHeap +310 stub RtlCreateProcessParameters +311 stub RtlCreateQueryDebugBuffer +312 stub RtlCreateRegistryKey +313 stub RtlCreateSecurityDescriptor +314 stub RtlCreateTagHeap +315 stub RtlCreateUnicodeString +316 stub RtlCreateUnicodeStringFromAsciiz +317 stub RtlCreateUserProcess +318 stub RtlCreateUserSecurityObject +319 stub RtlCreateUserThread +320 stub RtlCustomCPToUnicodeN +321 stub RtlCutoverTimeToSystemTime +322 stub RtlDeNormalizeProcessParams +323 stub RtlDecompressBuffer +324 stub RtlDecompressFragment +325 stub RtlDelete +326 stub RtlDeleteAce +327 stub RtlDeleteCriticalSection +328 stub RtlDeleteElementGenericTable +329 stub RtlDeleteRegistryValue +330 stub RtlDeleteResource +331 stub RtlDeleteSecurityObject +332 stub RtlDestroyEnvironment +333 stub RtlDestroyHeap +334 stub RtlDestroyProcessParameters +335 stub RtlDestroyQueryDebugBuffer +336 stub RtlDetermineDosPathNameType_U +337 stub RtlDoesFileExists_U +338 stub RtlDosPathNameToNtPathName_U +339 stub RtlDosSearchPath_U +340 stub RtlDumpResource +341 stub RtlEnlargedIntegerMultiply +342 stub RtlEnlargedUnsignedDivide +343 stub RtlEnlargedUnsignedMultiply +344 stub RtlEnterCriticalSection +345 stub RtlEnumProcessHeaps +346 stub RtlEnumerateGenericTable +347 stub RtlEnumerateGenericTableWithoutSplaying +348 stub RtlEqualComputerName +349 stub RtlEqualDomainName +350 stub RtlEqualLuid +351 stub RtlEqualPrefixSid +352 stub RtlEqualSid +353 stub RtlEqualString +354 stub RtlEqualUnicodeString +355 stub RtlEraseUnicodeString +356 stub RtlExpandEnvironmentStrings_U +357 stub RtlExtendHeap +358 stub RtlExtendedIntegerMultiply +359 stub RtlExtendedLargeIntegerDivide +360 stub RtlExtendedMagicDivide +361 stub RtlFillMemory +362 stub RtlFillMemoryUlong +363 stub RtlFindClearBits +364 stub RtlFindClearBitsAndSet +365 stub RtlFindLongestRunClear +366 stub RtlFindLongestRunSet +367 stub RtlFindMessage +368 stub RtlFindSetBits +369 stub RtlFindSetBitsAndClear +370 stub RtlFirstFreeAce +371 stub RtlFormatCurrentUserKeyPath +372 stub RtlFormatMessage +373 stub RtlFreeAnsiString +374 stub RtlFreeHeap +375 stub RtlFreeOemString +376 stub RtlFreeSid +377 stub RtlFreeUnicodeString +378 stub RtlGenerate8dot3Name +379 stub RtlGetAce +380 stub RtlGetCallersAddress +381 stub RtlGetCompressionWorkSpaceSize +382 stub RtlGetControlSecurityDescriptor +383 stub RtlGetCurrentDirectory_U +384 stub RtlGetDaclSecurityDescriptor +385 stub RtlGetElementGenericTable +386 stub RtlGetFullPathName_U +387 stub RtlGetGroupSecurityDescriptor +388 stub RtlGetLongestNtPathLength +389 stub RtlGetNtGlobalFlags +390 stub RtlGetNtProductType +391 stub RtlGetOwnerSecurityDescriptor +392 stub RtlGetProcessHeaps +393 stub RtlGetSaclSecurityDescriptor +394 stub RtlGetUserInfoHeap +395 stub RtlIdentifierAuthoritySid +396 stub RtlImageDirectoryEntryToData +397 stub RtlImageNtHeader +398 stub RtlImpersonateSelf +399 stub RtlInitAnsiString +400 stub RtlInitCodePageTable +401 stub RtlInitNlsTables +402 stub RtlInitString +403 stub RtlInitUnicodeString +404 stub RtlInitializeBitMap +405 stub RtlInitializeContext +406 stub RtlInitializeCriticalSection +407 stub RtlInitializeGenericTable +408 stub RtlInitializeRXact +409 stub RtlInitializeResource +410 stub RtlInitializeSid +411 stub RtlInsertElementGenericTable +412 stub RtlIntegerToChar +413 stub RtlIntegerToUnicodeString +414 stub RtlIsDosDeviceName_U +415 stub RtlIsGenericTableEmpty +416 stub RtlIsNameLegalDOS8Dot3 +417 stub RtlIsTextUnicode +418 stub RtlLargeIntegerAdd +419 stub RtlLargeIntegerArithmeticShift +420 stub RtlLargeIntegerDivide +421 stub RtlLargeIntegerNegate +422 stub RtlLargeIntegerShiftLeft +423 stub RtlLargeIntegerShiftRight +424 stub RtlLargeIntegerSubtract +425 stub RtlLargeIntegerToChar +426 stub RtlLeaveCriticalSection +427 stub RtlLengthRequiredSid +428 stub RtlLengthSecurityDescriptor +429 stub RtlLengthSid +430 stub RtlLocalTimeToSystemTime +431 stub RtlLockHeap +432 stub RtlLookupElementGenericTable +433 stub RtlMakeSelfRelativeSD +434 stub RtlMapGenericMask +435 stub RtlMoveMemory +436 stub RtlMultiByteToUnicodeN +437 stub RtlMultiByteToUnicodeSize +438 stub RtlNewInstanceSecurityObject +439 stub RtlNewSecurityGrantedAccess +440 stub RtlNewSecurityObject +441 stub RtlNormalizeProcessParams +442 stub RtlNtStatusToDosError +443 stub RtlNumberGenericTableElements +444 stub RtlNumberOfClearBits +445 stub RtlNumberOfSetBits +446 stub RtlOemStringToUnicodeSize +447 stub RtlOemStringToUnicodeString +448 stub RtlOemToUnicodeN +449 stub RtlOpenCurrentUser +450 stub RtlPcToFileHeader +451 stub RtlPrefixString +452 stub RtlPrefixUnicodeString +453 stub RtlProtectHeap +454 stub RtlQueryEnvironmentVariable_U +455 stub RtlQueryInformationAcl +456 stub RtlQueryProcessBackTraceInformation +457 stub RtlQueryProcessDebugInformation +458 stub RtlQueryProcessHeapInformation +459 stub RtlQueryProcessLockInformation +460 stub RtlQueryRegistryValues +461 stub RtlQuerySecurityObject +462 stub RtlQueryTagHeap +463 stub RtlQueryTimeZoneInformation +464 stub RtlRaiseException +465 stub RtlRaiseStatus +466 stub RtlRandom +467 stub RtlReAllocateHeap +468 stub RtlRealPredecessor +469 stub RtlRealSuccessor +470 stub RtlReleasePebLock +471 stub RtlReleaseResource +472 stub RtlRemoteCall +473 stub RtlResetRtlTranslations +474 stub RtlRunDecodeUnicodeString +475 stub RtlRunEncodeUnicodeString +476 stub RtlSecondsSince1970ToTime +477 stub RtlSecondsSince1980ToTime +478 stub RtlSelfRelativeToAbsoluteSD +479 stub RtlSetAllBits +480 stub RtlSetBits +481 stub RtlSetCurrentDirectory_U +482 stub RtlSetCurrentEnvironment +483 stub RtlSetDaclSecurityDescriptor +484 stub RtlSetEnvironmentVariable +485 stub RtlSetGroupSecurityDescriptor +486 stub RtlSetInformationAcl +487 stub RtlSetOwnerSecurityDescriptor +488 stub RtlSetSaclSecurityDescriptor +489 stub RtlSetSecurityObject +490 stub RtlSetTimeZoneInformation +491 stub RtlSetUserFlagsHeap +492 stub RtlSetUserValueHeap +493 stub RtlSizeHeap +494 stub RtlSplay +495 stub RtlStartRXact +496 stub RtlSubAuthorityCountSid +497 stub RtlSubAuthoritySid +498 stub RtlSubtreePredecessor +499 stub RtlSubtreeSuccessor +500 stub RtlSystemTimeToLocalTime +501 stub RtlTimeFieldsToTime +502 stub RtlTimeToElapsedTimeFields +503 stub RtlTimeToSecondsSince1970 +504 stub RtlTimeToSecondsSince1980 +505 stub RtlTimeToTimeFields +506 stub RtlUnicodeStringToAnsiSize +507 stub RtlUnicodeStringToAnsiString +508 stub RtlUnicodeStringToCountedOemString +509 stub RtlUnicodeStringToInteger +510 stub RtlUnicodeStringToOemSize +511 stub RtlUnicodeStringToOemString +512 stub RtlUnicodeToCustomCPN +513 stub RtlUnicodeToMultiByteN +514 stub RtlUnicodeToMultiByteSize +515 stub RtlUnicodeToOemN +516 stub RtlUniform +517 stub RtlUnlockHeap +518 stub RtlUnwind +519 stub RtlUpcaseUnicodeChar +520 stub RtlUpcaseUnicodeString +521 stub RtlUpcaseUnicodeStringToAnsiString +522 stub RtlUpcaseUnicodeStringToCountedOemString +523 stub RtlUpcaseUnicodeStringToOemString +524 stub RtlUpcaseUnicodeToCustomCPN +525 stub RtlUpcaseUnicodeToMultiByteN +526 stub RtlUpcaseUnicodeToOemN +527 stub RtlUpperChar +528 stub RtlUpperString +529 stub RtlUsageHeap +530 stub RtlValidAcl +531 stub RtlValidSecurityDescriptor +532 stub RtlValidSid +533 stub RtlValidateHeap +534 stub RtlValidateProcessHeaps +535 stub RtlWalkHeap +536 stub RtlWriteRegistryValue +537 stub RtlZeroHeap +538 stub RtlZeroMemory +539 stub RtlpInitializeRtl +540 stub RtlpNtCreateKey +541 stub RtlpNtEnumerateSubKey +542 stub RtlpNtMakeTemporaryKey +543 stub RtlpNtOpenKey +544 stub RtlpNtQueryValueKey +545 stub RtlpNtSetValueKey +546 stub RtlpUnWaitCriticalSection +547 stub RtlpWaitForCriticalSection +548 stub RtlxAnsiStringToUnicodeSize +549 stub RtlxOemStringToUnicodeSize +550 stub RtlxUnicodeStringToAnsiSize +551 stub RtlxUnicodeStringToOemSize +552 stub SaveEm87Context +553 stub ZwAcceptConnectPort +554 stub ZwAccessCheck +555 stub ZwAccessCheckAndAuditAlarm +556 stub ZwAdjustGroupsToken +557 stub ZwAdjustPrivilegesToken +558 stub ZwAlertResumeThread +559 stub ZwAlertThread +560 stub ZwAllocateLocallyUniqueId +561 stub ZwAllocateUuids +562 stub ZwAllocateVirtualMemory +563 stub ZwCallbackReturn +564 stub ZwCancelIoFile +565 stub ZwCancelTimer +566 stub ZwClearEvent +567 stub ZwClose +568 stub ZwCloseObjectAuditAlarm +569 stub ZwCompleteConnectPort +570 stub ZwConnectPort +571 stub ZwContinue +572 stub ZwCreateDirectoryObject +573 stub ZwCreateEvent +574 stub ZwCreateEventPair +575 stub ZwCreateFile +576 stub ZwCreateIoCompletion +577 stub ZwCreateKey +578 stub ZwCreateMailslotFile +579 stub ZwCreateMutant +580 stub ZwCreateNamedPipeFile +581 stub ZwCreatePagingFile +582 stub ZwCreatePort +583 stub ZwCreateProcess +584 stub ZwCreateProfile +585 stub ZwCreateSection +586 stub ZwCreateSemaphore +587 stub ZwCreateSymbolicLinkObject +588 stub ZwCreateThread +589 stub ZwCreateTimer +590 stub ZwCreateToken +591 stub ZwDelayExecution +592 stub ZwDeleteFile +593 stub ZwDeleteKey +594 stub ZwDeleteValueKey +595 stub ZwDeviceIoControlFile +596 stub ZwDisplayString +597 stub ZwDuplicateObject +598 stub ZwDuplicateToken +599 stub ZwEnumerateBus +600 stub ZwEnumerateKey +601 stub ZwEnumerateValueKey +602 stub ZwExtendSection +603 stub ZwFlushBuffersFile +604 stub ZwFlushInstructionCache +605 stub ZwFlushKey +606 stub ZwFlushVirtualMemory +607 stub ZwFlushWriteBuffer +608 stub ZwFreeVirtualMemory +609 stub ZwFsControlFile +610 stub ZwGetContextThread +611 stub ZwGetPlugPlayEvent +612 stub ZwGetTickCount +613 stub ZwImpersonateClientOfPort +614 stub ZwImpersonateThread +615 stub ZwInitializeRegistry +616 stub ZwListenPort +617 stub ZwLoadDriver +618 stub ZwLoadKey +619 stub ZwLockFile +620 stub ZwLockVirtualMemory +621 stub ZwMakeTemporaryObject +622 stub ZwMapViewOfSection +623 stub ZwNotifyChangeDirectoryFile +624 stub ZwNotifyChangeKey +625 stub ZwOpenDirectoryObject +626 stub ZwOpenEvent +627 stub ZwOpenEventPair +628 stub ZwOpenFile +629 stub ZwOpenIoCompletion +630 stub ZwOpenKey +631 stub ZwOpenMutant +632 stub ZwOpenObjectAuditAlarm +633 stub ZwOpenProcess +634 stub ZwOpenProcessToken +635 stub ZwOpenSection +636 stub ZwOpenSemaphore +637 stub ZwOpenSymbolicLinkObject +638 stub ZwOpenThread +639 stub ZwOpenThreadToken +640 stub ZwOpenTimer +641 stub ZwPlugPlayControl +642 stub ZwPrivilegeCheck +643 stub ZwPrivilegeObjectAuditAlarm +644 stub ZwPrivilegedServiceAuditAlarm +645 stub ZwProtectVirtualMemory +646 stub ZwPulseEvent +647 stub ZwQueryAttributesFile +648 stub ZwQueryDefaultLocale +649 stub ZwQueryDirectoryFile +650 stub ZwQueryDirectoryObject +651 stub ZwQueryEaFile +652 stub ZwQueryEvent +653 stub ZwQueryInformationFile +654 stub ZwQueryInformationPort +655 stub ZwQueryInformationProcess +656 stub ZwQueryInformationThread +657 stub ZwQueryInformationToken +658 stub ZwQueryIntervalProfile +659 stub ZwQueryIoCompletion +660 stub ZwQueryKey +661 stub ZwQueryMutant +662 stub ZwQueryObject +663 stub ZwQueryPerformanceCounter +664 stub ZwQuerySection +665 stub ZwQuerySecurityObject +666 stub ZwQuerySemaphore +667 stub ZwQuerySymbolicLinkObject +668 stub ZwQuerySystemEnvironmentValue +669 stub ZwQuerySystemInformation +670 stub ZwQuerySystemTime +671 stub ZwQueryTimer +672 stub ZwQueryTimerResolution +673 stub ZwQueryValueKey +674 stub ZwQueryVirtualMemory +675 stub ZwQueryVolumeInformationFile +676 stub ZwRaiseException +677 stub ZwRaiseHardError +678 stub ZwReadFile +679 stub ZwReadRequestData +680 stub ZwReadVirtualMemory +681 stub ZwRegisterNewDevice +682 stub ZwRegisterThreadTerminatePort +683 stub ZwReleaseMutant +684 stub ZwReleaseProcessMutant +685 stub ZwReleaseSemaphore +686 stub ZwRemoveIoCompletion +687 stub ZwReplaceKey +688 stub ZwReplyPort +689 stub ZwReplyWaitReceivePort +690 stub ZwReplyWaitReplyPort +691 stub ZwRequestPort +692 stub ZwRequestWaitReplyPort +693 stub ZwResetEvent +694 stub ZwRestoreKey +695 stub ZwResumeThread +696 stub ZwSaveKey +697 stub ZwSetContextThread +698 stub ZwSetDefaultHardErrorPort +699 stub ZwSetDefaultLocale +700 stub ZwSetEaFile +701 stub ZwSetEvent +702 stub ZwSetHighEventPair +703 stub ZwSetHighWaitLowEventPair +704 stub ZwSetHighWaitLowThread +705 stub ZwSetInformationFile +706 stub ZwSetInformationKey +707 stub ZwSetInformationObject +708 stub ZwSetInformationProcess +709 stub ZwSetInformationThread +710 stub ZwSetInformationToken +711 stub ZwSetIntervalProfile +712 stub ZwSetIoCompletion +713 stub ZwSetLdtEntries +714 stub ZwSetLowEventPair +715 stub ZwSetLowWaitHighEventPair +716 stub ZwSetLowWaitHighThread +717 stub ZwSetSecurityObject +718 stub ZwSetSystemEnvironmentValue +719 stub ZwSetSystemInformation +720 stub ZwSetSystemPowerState +721 stub ZwSetSystemTime +722 stub ZwSetTimer +723 stub ZwSetTimerResolution +724 stub ZwSetValueKey +725 stub ZwSetVolumeInformationFile +726 stub ZwShutdownSystem +727 stub ZwStartProfile +728 stub ZwStopProfile +729 stub ZwSuspendThread +730 stub ZwSystemDebugControl +731 stub ZwTerminateProcess +732 stub ZwTerminateThread +733 stub ZwTestAlert +734 stub ZwUnloadDriver +735 stub ZwUnloadKey +736 stub ZwUnlockFile +737 stub ZwUnlockVirtualMemory +738 stub ZwUnmapViewOfSection +739 stub ZwVdmControl +740 stub ZwW32Call +741 stub ZwWaitForMultipleObjects +742 stub ZwWaitForProcessMutant +743 stub ZwWaitForSingleObject +744 stub ZwWaitHighEventPair +745 stub ZwWaitLowEventPair +746 stub ZwWriteFile +747 stub ZwWriteRequestData +748 stub ZwWriteVirtualMemory +749 stub _CIpow +750 stub __eCommonExceptions +751 stub __eEmulatorInit +752 stub __eF2XM1 +753 stub __eFABS +754 stub __eFADD32 +755 stub __eFADD64 +756 stub __eFADDPreg +757 stub __eFADDreg +758 stub __eFADDtop +759 stub __eFCHS +760 stub __eFCOM +761 stub __eFCOM32 +762 stub __eFCOM64 +763 stub __eFCOMP +764 stub __eFCOMP32 +765 stub __eFCOMP64 +766 stub __eFCOMPP +767 stub __eFCOS +768 stub __eFDECSTP +769 stub __eFDIV32 +770 stub __eFDIV64 +771 stub __eFDIVPreg +772 stub __eFDIVR32 +773 stub __eFDIVR64 +774 stub __eFDIVRPreg +775 stub __eFDIVRreg +776 stub __eFDIVRtop +777 stub __eFDIVreg +778 stub __eFDIVtop +779 stub __eFFREE +780 stub __eFIADD16 +781 stub __eFIADD32 +782 stub __eFICOM16 +783 stub __eFICOM32 +784 stub __eFICOMP16 +785 stub __eFICOMP32 +786 stub __eFIDIV16 +787 stub __eFIDIV32 +788 stub __eFIDIVR16 +789 stub __eFIDIVR32 +790 stub __eFILD16 +791 stub __eFILD32 +792 stub __eFILD64 +793 stub __eFIMUL16 +794 stub __eFIMUL32 +795 stub __eFINCSTP +796 stub __eFINIT +797 stub __eFIST16 +798 stub __eFIST32 +799 stub __eFISTP16 +800 stub __eFISTP32 +801 stub __eFISTP64 +802 stub __eFISUB16 +803 stub __eFISUB32 +804 stub __eFISUBR16 +805 stub __eFISUBR32 +806 stub __eFLD1 +807 stub __eFLD32 +808 stub __eFLD64 +809 stub __eFLD80 +810 stub __eFLDCW +811 stub __eFLDENV +812 stub __eFLDL2E +813 stub __eFLDLN2 +814 stub __eFLDPI +815 stub __eFLDZ +816 stub __eFMUL32 +817 stub __eFMUL64 +818 stub __eFMULPreg +819 stub __eFMULreg +820 stub __eFMULtop +821 stub __eFPATAN +822 stub __eFPREM +823 stub __eFPREM1 +824 stub __eFPTAN +825 stub __eFRNDINT +826 stub __eFRSTOR +827 stub __eFSAVE +828 stub __eFSCALE +829 stub __eFSIN +830 stub __eFSQRT +831 stub __eFST +832 stub __eFST32 +833 stub __eFST64 +834 stub __eFSTCW +835 stub __eFSTENV +836 stub __eFSTP +837 stub __eFSTP32 +838 stub __eFSTP64 +839 stub __eFSTP80 +840 stub __eFSTSW +841 stub __eFSUB32 +842 stub __eFSUB64 +843 stub __eFSUBPreg +844 stub __eFSUBR32 +845 stub __eFSUBR64 +846 stub __eFSUBRPreg +847 stub __eFSUBRreg +848 stub __eFSUBRtop +849 stub __eFSUBreg +850 stub __eFSUBtop +851 stub __eFTST +852 stub __eFUCOM +853 stub __eFUCOMP +854 stub __eFUCOMPP +855 stub __eFXAM +856 stub __eFXCH +857 stub __eFXTRACT +858 stub __eFYL2X +859 stub __eFYL2XP1 +860 stub __eGetStatusWord +861 stub _alloca_probe +862 stub _chkstk +863 stub _fltused +864 stub _ftol +865 stub _itoa +866 stub _ltoa +867 stub _memccpy +868 stub _memicmp +869 stub _snprintf +870 stub _snwprintf +871 stub _splitpath +872 stub _strcmpi +873 stub _stricmp +874 stub _strlwr +875 stub _strnicmp +876 stub _strupr +877 stub _ultoa +878 stub _vsnprintf +879 stub _wcsicmp +880 stub _wcslwr +881 stub _wcsnicmp +882 stub _wcsupr +883 stub abs +884 stub atan +885 stub atoi +886 stub atol +887 stub ceil +888 stub cos +889 stub fabs +890 stub floor +891 stub isalpha +892 stub isdigit +893 stub islower +894 stub isprint +895 stub isspace +896 stub isupper +897 stub iswalpha +898 stub iswctype +899 stub isxdigit +900 stub labs +901 stub log +902 stub mbstowcs +903 stub memchr +904 stub memcmp +905 stub memcpy +906 stub memmove +907 stub memset +908 stub pow +909 stub qsort +910 stub sin +911 stub sprintf +912 stub sqrt +913 stub sscanf +914 stub strcat +915 stub strchr +916 stub strcmp +917 stub strcpy +918 stub strcspn +919 stub strlen +920 stub strncat +921 stub strncmp +922 stub strncpy +923 stub strpbrk +924 stub strrchr +925 stub strspn +926 stub strstr +927 stub swprintf +928 stub tan +929 stub tolower +930 stub toupper +931 stub towlower +932 stub towupper +933 stub vsprintf +934 stub wcscat +935 stub wcschr +936 stub wcscmp +937 stub wcscpy +938 stub wcscspn +939 stub wcslen +940 stub wcsncat +941 stub wcsncmp +942 stub wcsncpy +943 stub wcspbrk +944 stub wcsrchr +945 stub wcsspn +946 stub wcsstr +947 stub wcstok +948 stub wcstol +949 stub wcstombs +950 stub wcstoul diff --git a/if1632/relay32.c b/if1632/relay32.c index c67ac680e77..3f0a24e4d41 100644 --- a/if1632/relay32.c +++ b/if1632/relay32.c @@ -52,15 +52,16 @@ LONG RELAY32_CallWindowProcConvStruct( WNDPROC func, int hwnd, int message, return result; case WM_NCCALCSIZE: STRUCT32_NCCALCSIZE16to32Flat(lParam,&st.nccs); - if(((NCCALCSIZE_PARAMS*)lParam)->lppos) { - STRUCT32_WINDOWPOS16to32(((NCCALCSIZE_PARAMS*)lParam)->lppos,&wp); - st.nccs.lppos=℘ - } else - st.nccs.lppos= 0; + if(wParam && ((NCCALCSIZE_PARAMS*)lParam)->lppos) + { + STRUCT32_WINDOWPOS16to32(PTR_SEG_TO_LIN(((NCCALCSIZE_PARAMS*)lParam)->lppos),&wp); + st.nccs.lppos=℘ + } + else st.nccs.lppos= 0; result=CallWndProc32(func,hwnd,message,wParam,(int)&st.nccs); STRUCT32_NCCALCSIZE32to16Flat(&st.nccs,lParam); - if(((NCCALCSIZE_PARAMS*)lParam)->lppos) - STRUCT32_WINDOWPOS32to16(&wp,((NCCALCSIZE_PARAMS*)lParam)->lppos); + if(wParam && ((NCCALCSIZE_PARAMS*)lParam)->lppos) + STRUCT32_WINDOWPOS32to16(&wp,PTR_SEG_TO_LIN(((NCCALCSIZE_PARAMS*)lParam)->lppos)); return result; case WM_NCCREATE: lpcs = (CREATESTRUCT*)lParam; diff --git a/if1632/shell32.spec b/if1632/shell32.spec index e0d598f86b7..8abcf95aa06 100644 --- a/if1632/shell32.spec +++ b/if1632/shell32.spec @@ -84,7 +84,7 @@ base 1 0079 stub SheSetCurDrive 0080 stub SheShortenPathA 0081 stub SheShortenPathW -0082 stub ShellAboutA +0082 stdcall ShellAboutA(word ptr ptr word) ShellAbout 0083 stub ShellAboutW 0084 stdcall ShellExecuteA(word ptr ptr ptr ptr s_word) ShellExecute 0085 stub ShellExecuteEx diff --git a/if1632/user.spec b/if1632/user.spec index f5e7d91f123..731c0c08668 100644 --- a/if1632/user.spec +++ b/if1632/user.spec @@ -41,7 +41,7 @@ heap 65520 39 pascal16 BeginPaint(word ptr) BeginPaint 40 pascal16 EndPaint(word ptr) EndPaint 41 pascal16 CreateWindow(segptr segptr long s_word s_word s_word s_word - word word word segptr) CreateWindow + word word word segptr) CreateWindow16 42 pascal16 ShowWindow(word word) ShowWindow 43 pascal16 CloseWindow(word) CloseWindow 44 pascal16 OpenIcon(word) OpenIcon @@ -57,7 +57,7 @@ heap 65520 54 pascal16 EnumWindows(segptr long) EnumWindows 55 pascal16 EnumChildWindows(word segptr long) EnumChildWindows 56 pascal16 MoveWindow(word word word word word word) MoveWindow -57 pascal16 RegisterClass(ptr) RegisterClass +57 pascal16 RegisterClass(ptr) RegisterClass16 58 pascal16 GetClassName(word ptr word) GetClassName 59 pascal16 SetActiveWindow(word) SetActiveWindow 60 pascal16 GetActiveWindow() GetActiveWindow @@ -356,7 +356,7 @@ heap 65520 400 stub FinalUserInit 402 pascal16 GetPriorityClipboardFormat(word ptr s_word) GetPriorityClipboardFormat -403 pascal16 UnregisterClass(segptr word) UnregisterClass +403 pascal16 UnregisterClass(segptr word) UnregisterClass16 404 pascal16 GetClassInfo(word segptr ptr) GetClassInfo 406 pascal16 CreateCursor(word word word word word ptr ptr) CreateCursor 407 pascal16 CreateIcon(word word word word word ptr ptr) CreateIcon @@ -372,13 +372,11 @@ heap 65520 416 pascal16 TrackPopupMenu(word word word word word word ptr) TrackPopupMenu 417 pascal GetMenuCheckMarkDimensions() GetMenuCheckMarkDimensions 418 pascal16 SetMenuItemBitmaps(word word word word word) SetMenuItemBitmaps -420 pascal16 wsprintf() windows_wsprintf -# windows_wsprintf() handles arguments itself, as libc can't handle an -# 16-bit stack. DLLRelay() will pass 16-bit stack pointer as 1st arg. +420 pascal16 wsprintf() wsprintf 421 pascal16 wvsprintf(ptr ptr ptr) wvsprintf 422 stub DlgDirSelectEx 423 stub DlgDirSelectComboBoxEx -427 stub FindWindowEx +427 pascal16 FindWindowEx(word word segptr ptr) FindWindowEx 428 stub TileWindows 429 stub CascadeWindows 430 pascal16 lstrcmp(ptr ptr) lstrcmp @@ -400,7 +398,7 @@ heap 65520 450 stub CreateIconFromResourceEx 451 pascal16 TranslateMDISysAccel(word ptr) TranslateMDISysAccel 452 pascal16 CreateWindowEx(long segptr segptr long s_word s_word s_word s_word - word word word segptr) CreateWindowEx + word word word segptr) CreateWindowEx16 454 pascal16 AdjustWindowRectEx(ptr long word long) AdjustWindowRectEx 455 pascal16 GetIconID(word long) GetIconID 456 pascal16 LoadIconHandler(word word) LoadIconHandler diff --git a/if1632/user32.spec b/if1632/user32.spec index 6f6821574a2..e38df88d7b8 100644 --- a/if1632/user32.spec +++ b/if1632/user32.spec @@ -89,7 +89,7 @@ base 1 0080 stub CreateMenu 0081 stub CreatePopupMenu 0082 stdcall CreateWindowExA(long ptr ptr long long long long long - long long long ptr) USER32_CreateWindowExA + long long long ptr) CreateWindowEx32A 0083 stub CreateWindowExW 0084 stub CreateWindowStationA 0085 stub CreateWindowStationW @@ -237,7 +237,7 @@ base 1 0225 stub GetClipboardViewer 0226 stub GetCursor 0227 stub GetCursorInfo -0228 stub GetCursorPos +0228 stdcall GetCursorPos(ptr) GetCursorPos 0229 stdcall GetDC(long) GetDC 0230 stub GetDCEx 0231 stdcall GetDesktopWindow() GetDesktopWindow @@ -435,7 +435,7 @@ base 1 0423 stub PtInRect 0424 stub QuerySendMessage 0425 stub RedrawWindow -0426 stdcall RegisterClassA(ptr) USER32_RegisterClassA +0426 stdcall RegisterClassA(ptr) RegisterClass32A 0427 stub RegisterClassExA 0428 stub RegisterClassExW 0429 stub RegisterClassW diff --git a/if1632/wsock32.spec b/if1632/wsock32.spec new file mode 100644 index 00000000000..f20befb43d7 --- /dev/null +++ b/if1632/wsock32.spec @@ -0,0 +1,80 @@ +name wsock32 +type win32 +base 0 + +001 stub accept +002 stub bind +003 stub closesocket +004 stub connect +005 stub getpeername +006 stub getsockname +007 stub getsockopt +008 stub htonl +009 stub htons +010 stub inet_addr +011 stub inet_ntoa +012 stub ioctlsocket +013 stub listen +014 stub ntohl +015 stub ntohs +016 stub recv +017 stub recvfrom +018 stub select +019 stub send +020 stub sendto +021 stub setsockopt +022 stub shutdown +023 stub socket +051 stub gethostbyaddr +052 stub gethostbyname +053 stub getprotobyname +054 stub getprotobynumber +055 stub getservbyname +056 stub getservbyport +057 stub gethostname +101 stub WSAAsyncSelect +102 stub WSAAsyncGetHostByAddr +103 stub WSAAsyncGetHostByName +104 stub WSAAsyncGetProtoByNumber +105 stub WSAAsyncGetProtoByName +106 stub WSAAsyncGetServByPort +107 stub WSAAsyncGetServByName +108 stub WSACancelAsyncRequest +109 stub WSASetBlockingHook +110 stub WSAUnhookBlockingHook +111 stub WSAGetLastError +112 stub WSASetLastError +113 stub WSACancelBlockingCall +114 stub WSAIsBlocking +115 stub WSAStartup +116 stub WSACleanup +151 stub __WSAFDIsSet +#500 stub WEP +# applications *should* 'degrade gracefully if these are not present +# ... as it is, they don't +#1000 stub WSApSetPostRoutine +#1100 stub inet_network +#1101 stub getnetbyname +#1102 stub rcmd +#1103 stub rexec +#1104 stub rresvport +#1105 stub sethostname +#1106 stub dn_expand +#1107 stub WSARecvEx +1108 stub s_perror +1109 stub GetAddressByNameA +1110 stub GetAddressByNameW +#1111 stub EnumProtocolsA +#1112 stub EnumProtocolsW +#1113 stub GetTypeByNameA +#1114 stub GetTypeByNameW +#1115 stub GetNameByTypeA +#1116 stub GetNameByTypeW +#1117 stub SetServiceA +#1118 stub SetServiceW +#1119 stub GetServiceA +#1120 stub GetServiceW +#1130 stub NPLoadNameSpaces +#1140 stub TransmitFile +#1141 stub AcceptEx +#1142 stub GetAcceptExSockaddrs diff --git a/include/advapi32.h b/include/advapi32.h index d4531ad3b8a..5de3830f204 100644 --- a/include/advapi32.h +++ b/include/advapi32.h @@ -3,6 +3,6 @@ #include "shell.h" #include "kernel32.h" -BOOL WINAPI GetUserNameA (char * lpBuffer, DWORD *nSize); +BOOL GetUserNameA (char * lpBuffer, DWORD *nSize); #endif /* __WINE_ADVAPI32_H */ diff --git a/include/caption.h b/include/caption.h deleted file mode 100644 index 0c951c398c1..00000000000 --- a/include/caption.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Caption Bar definitions - */ - - -typedef struct tagHEADCAPTION { - HBITMAP hClose; - HBITMAP hMinim; - HBITMAP hMaxim; - HMENU hSysMenu; - RECT rectClose; - RECT rectMinim; - RECT rectMaxim; -} HEADCAPTION; -typedef HEADCAPTION FAR* LPHEADCAPTION; - - diff --git a/include/class.h b/include/class.h index 042c7467c0f..f110089818a 100644 --- a/include/class.h +++ b/include/class.h @@ -9,18 +9,25 @@ #include "windows.h" -#define CLASS_MAGIC 0x4b4e /* 'NK' */ +#define CLASS_MAGIC ('C' | ('L' << 8) | ('A' << 16) | ('S' << 24)) typedef struct tagCLASS { - struct tagCLASS *next; /* Next class */ - HCLASS self; /* Handle to this class */ - WORD wMagic; /* Magic number (must be CLASS_MAGIC) */ - ATOM atomName; /* Name of the class */ - HANDLE hdce; /* Class DCE (if CS_CLASSDC) */ - WORD cWindows; /* Count of existing windows of this class */ - WNDCLASS wc; /* Class information */ - WORD wExtra[1]; /* Class extra bytes */ + struct tagCLASS *next; /* Next class */ + UINT32 magic; /* Magic number */ + UINT32 cWindows; /* Count of existing windows */ + UINT32 style; /* Class style */ + WNDPROC16 lpfnWndProc; /* 16-bit window procedure */ + INT32 cbClsExtra; /* Class extra bytes */ + INT32 cbWndExtra; /* Window extra bytes */ + SEGPTR lpszMenuName; /* Default menu name */ + HANDLE16 hInstance; /* Module that created the task */ + HICON16 hIcon; /* Default icon */ + HCURSOR16 hCursor; /* Default cursor */ + HBRUSH16 hbrBackground; /* Default background */ + ATOM atomName; /* Name of the class */ + HANDLE16 hdce; /* Class DCE (if CS_CLASSDC) */ + WORD wExtra[1]; /* Class extra bytes */ } CLASS; extern void CLASS_DumpClass( CLASS *class ); diff --git a/include/commdlg.h b/include/commdlg.h index 384b0b4d2a7..84965e4cee0 100644 --- a/include/commdlg.h +++ b/include/commdlg.h @@ -5,6 +5,12 @@ #ifndef COMMDLG_H #define COMMDLG_H +#include "wintypes.h" /* needed for CHOOSEFONT structure */ + +#ifndef WINELIB +#pragma pack(1) +#endif + #define RT_CURSOR MAKEINTRESOURCE(1) #define RT_BITMAP MAKEINTRESOURCE(2) #define RT_ICON MAKEINTRESOURCE(3) @@ -77,10 +83,10 @@ typedef struct { HWND hwndOwner; HWND hInstance; COLORREF rgbResult; - COLORREF FAR* lpCustColors; + COLORREF *lpCustColors; DWORD Flags; LPARAM lCustData; - UINT (CALLBACK* lpfnHook)(HWND, UINT, WPARAM, LPARAM); + UINT (*lpfnHook)(HWND, UINT, WPARAM, LPARAM); LPCSTR lpTemplateName; } CHOOSECOLOR; typedef CHOOSECOLOR *LPCHOOSECOLOR; @@ -135,22 +141,22 @@ typedef struct { HDC hDC; /* printer DC/IC or NULL */ SEGPTR lpLogFont; /* ptr. to a LOGFONT struct */ short iPointSize; /* 10 * size in points of selected font */ - DWORD Flags; /* enum. type flags */ + DWORD Flags WINE_PACKED; /* enum. type flags */ COLORREF rgbColors; /* returned text color */ LPARAM lCustData; /* data passed to hook fn. */ /* UINT (CALLBACK* lpfnHook)(HWND, UINT, WPARAM, LPARAM);*/ FARPROC lpfnHook; SEGPTR lpTemplateName; /* custom template name */ HINSTANCE hInstance; /* instance handle of.EXE that */ - /* contains cust. dlg. template */ - SEGPTR lpszStyle; /* return the style field here */ - /* must be LF_FACESIZE or bigger */ - UINT nFontType; /* same value reported to the */ - /* EnumFonts callback with the */ - /* extra FONTTYPE_ bits added */ - short nSizeMin; /* minimum pt size allowed & */ - short nSizeMax; /* max pt size allowed if */ - /* CF_LIMITSIZE is used */ + /* contains cust. dlg. template */ + SEGPTR lpszStyle WINE_PACKED; /* return the style field here */ + /* must be LF_FACESIZE or bigger */ + UINT nFontType; /* same value reported to the */ + /* EnumFonts callback with the */ + /* extra FONTTYPE_ bits added */ + short nSizeMin WINE_PACKED; /* minimum pt size allowed & */ + short nSizeMax WINE_PACKED; /* max pt size allowed if */ + /* CF_LIMITSIZE is used */ } CHOOSEFONT; typedef CHOOSEFONT *LPCHOOSEFONT; @@ -309,6 +315,10 @@ LRESULT PrintDlgProc(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam); LRESULT PrintSetupDlgProc(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam); LRESULT FormatCharDlgProc(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam); +#ifndef WINELIB +#pragma pack(4) +#endif + #endif /* #ifdef COMMDLG_H */ diff --git a/include/driver.h b/include/driver.h index be629812371..5c2a08e65ac 100644 --- a/include/driver.h +++ b/include/driver.h @@ -35,18 +35,14 @@ typedef struct { DWORD dwDCISize; LPCSTR lpszDCISectionName; LPCSTR lpszDCIAliasName; - } DRVCONFIGINFO; -typedef DRVCONFIGINFO FAR* LPDRVCONFIGINFO; +} DRVCONFIGINFO, *LPDRVCONFIGINFO; typedef struct { UINT length; HDRVR hDriver; HINSTANCE hModule; char szAliasName[128]; - } DRIVERINFOSTRUCT; -typedef DRIVERINFOSTRUCT FAR* LPDRIVERINFOSTRUCT; - -typedef LONG (CALLBACK* DRIVERPROC)(DWORD, HDRVR, UINT, LPARAM, LPARAM); +} DRIVERINFOSTRUCT, *LPDRIVERINFOSTRUCT; typedef struct { DRIVERINFOSTRUCT dis; @@ -54,8 +50,7 @@ typedef struct { void *lpPrevItem; void *lpNextItem; DRIVERPROC lpDrvProc; - } DRIVERITEM; -typedef DRIVERITEM FAR* LPDRIVERITEM; +} DRIVERITEM, *LPDRIVERITEM; LRESULT DefDriverProc(DWORD dwDevID, HDRVR hDriv, WORD wMsg, DWORD dwParam1, DWORD dwParam2); @@ -64,7 +59,7 @@ LRESULT CloseDriver(HDRVR hDriver, LPARAM lParam1, LPARAM lParam2); LRESULT SendDriverMessage(HDRVR hDriver, WORD message, LPARAM lParam1, LPARAM lParam2); HINSTANCE GetDriverModuleHandle(HDRVR hDriver); HDRVR GetNextDriver(HDRVR, DWORD); -BOOL GetDriverInfo(HDRVR, DRIVERINFOSTRUCT FAR*); +BOOL GetDriverInfo(HDRVR, DRIVERINFOSTRUCT *); diff --git a/include/except.h b/include/except.h index c3654fbcfc3..1c2ec01926f 100644 --- a/include/except.h +++ b/include/except.h @@ -209,7 +209,7 @@ typedef DWORD ( *PEXCEPTION_HANDLER)( PEXCEPTION_RECORD pexcrec, * function pointer to a UnhandledExceptionFilter(); */ -typedef long (WINAPI *__PTOP_EXCFILTER) +typedef long (*__PTOP_EXCFILTER) (PEXCEPTION_POINTERS ExceptionInfo); typedef __PTOP_EXCFILTER PTOP_LEVER_EXCEPTION_FILTER; @@ -253,8 +253,8 @@ DWORD EXC_CallUnhandledExceptionFilter( PEXCEPTION_RECORD precord, void EXC_Init(void); -BOOL WINAPI RaiseException(DWORD exccode, DWORD excflags, - DWORD nargs, const LPDWORD pargs); +BOOL RaiseException(DWORD exccode, DWORD excflags, + DWORD nargs, const LPDWORD pargs); /* * this undocumented function is called when an exception @@ -270,14 +270,14 @@ BOOL WINAPI RaiseException(DWORD exccode, DWORD excflags, * context. */ -BOOL WINAPI RtlUnwind( PEXCEPTION_FRAME pestframe, - LPVOID unusedEIP, - PEXCEPTION_RECORD pexcrec, - DWORD contextEAX ); +BOOL RtlUnwind( PEXCEPTION_FRAME pestframe, + LPVOID unusedEIP, + PEXCEPTION_RECORD pexcrec, + DWORD contextEAX ); -DWORD WINAPI UnhandledExceptionFilter(PEXCEPTION_POINTERS epointers); +DWORD UnhandledExceptionFilter(PEXCEPTION_POINTERS epointers); -__PTOP_EXCFILTER WINAPI SetUnhandledExceptionFilter( +__PTOP_EXCFILTER SetUnhandledExceptionFilter( LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter); #endif /* __WINE_EXCEPT_H */ diff --git a/include/gdi.h b/include/gdi.h index 39a65f4d6eb..9581bb75564 100644 --- a/include/gdi.h +++ b/include/gdi.h @@ -198,12 +198,7 @@ typedef struct tagDC #define DC_SAVED 2 /* It is a saved DC */ /* Last 32 bytes are reserved for stock object handles */ -#ifdef WINELIB32 -/* Stupid overloading (see DefWindowProc, case WM_ERASEBKGND) */ -#define GDI_HEAP_SIZE (COLOR_BTNHIGHLIGHT+1) -#else -#define GDI_HEAP_SIZE 0xffe0 -#endif +#define GDI_HEAP_SIZE 0xffe0 /* First handle possible for stock objects (must be >= GDI_HEAP_SIZE) */ #define FIRST_STOCK_HANDLE GDI_HEAP_SIZE @@ -249,15 +244,6 @@ typedef struct tagDC /* GDI local heap */ -#ifdef WINELIB - -#define GDI_HEAP_ALLOC(size) LocalAlloc (LMEM_FIXED,size) -#define GDI_HEAP_LIN_ADDR(handle) LocalLock (handle) -#define GDI_HEAP_SEG_ADDR(handle) LocalLock (handle) -#define GDI_HEAP_FREE(handle) LocalFree (handle) - -#else - extern WORD GDI_HeapSel; #define GDI_HEAP_ALLOC(size) \ @@ -268,10 +254,14 @@ extern WORD GDI_HeapSel; LOCAL_Free( GDI_HeapSel, (handle) ) #define GDI_HEAP_LIN_ADDR(handle) \ ((handle) ? PTR_SEG_OFF_TO_LIN(GDI_HeapSel, (handle)) : NULL) + +#ifdef WINELIB +#define GDI_HEAP_SEG_ADDR(handle) ((SEGPTR)GDI_HEAP_LIN_ADDR(handle)) +#else #define GDI_HEAP_SEG_ADDR(handle) \ ((handle) ? MAKELONG((handle), GDI_HeapSel) : 0) -#endif +#endif /* WINELIB */ extern BOOL GDI_Init(void); extern HANDLE GDI_AllocObject( WORD, WORD ); diff --git a/include/global.h b/include/global.h dissimilarity index 67% index d1692bea681..42014fcba6d 100644 --- a/include/global.h +++ b/include/global.h @@ -1,28 +1,28 @@ -/* - * Global heap declarations - * - * Copyright 1995 Alexandre Julliard - */ - -#ifndef __WINE_GLOBAL_H -#define __WINE_GLOBAL_H - -#include "wintypes.h" - -typedef struct -{ - HGLOBAL handle; - WORD sel; - int shmid; -} SHMDATA; - -extern HGLOBAL GLOBAL_CreateBlock( WORD flags, const void *ptr, DWORD size, - HGLOBAL hOwner, BOOL isCode, - BOOL is32Bit, BOOL isReadOnly, - SHMDATA *shmdata); -extern BOOL GLOBAL_FreeBlock( HGLOBAL handle ); -extern HGLOBAL GLOBAL_Alloc( WORD flags, DWORD size, HGLOBAL hOwner, - BOOL isCode, BOOL is32Bit, BOOL isReadOnly ); -extern WORD GlobalHandleToSel( HGLOBAL handle ); - -#endif /* __WINE_GLOBAL_H */ +/* + * Global heap declarations + * + * Copyright 1995 Alexandre Julliard + */ + +#ifndef __WINE_GLOBAL_H +#define __WINE_GLOBAL_H + +#include "wintypes.h" + +typedef struct +{ + HGLOBAL16 handle; + WORD sel; + int shmid; +} SHMDATA; + +extern HGLOBAL16 GLOBAL_CreateBlock( UINT16 flags, const void *ptr, DWORD size, + HGLOBAL16 hOwner, BOOL isCode, + BOOL is32Bit, BOOL isReadOnly, + SHMDATA *shmdata); +extern BOOL GLOBAL_FreeBlock( HGLOBAL16 handle ); +extern HGLOBAL16 GLOBAL_Alloc( WORD flags, DWORD size, HGLOBAL16 hOwner, + BOOL isCode, BOOL is32Bit, BOOL isReadOnly ); +extern WORD GlobalHandleToSel( HGLOBAL16 handle ); + +#endif /* __WINE_GLOBAL_H */ diff --git a/include/ldt.h b/include/ldt.h index b02b2cde708..0daaadec344 100644 --- a/include/ldt.h +++ b/include/ldt.h @@ -47,36 +47,25 @@ extern ldt_copy_entry ldt_copy[LDT_SIZE]; #define __AHSHIFT 3 /* don't change! */ #define __AHINCR (1 << __AHSHIFT) -#ifndef WINELIB #define SELECTOR_TO_ENTRY(sel) (((int)(sel) & 0xffff) >> __AHSHIFT) #define ENTRY_TO_SELECTOR(i) ((i) ? (((int)(i) << __AHSHIFT) | 7) : 0) #define IS_LDT_ENTRY_FREE(i) (!(ldt_flags_copy[(i)] & LDT_FLAGS_ALLOCATED)) #define IS_SELECTOR_FREE(sel) (IS_LDT_ENTRY_FREE(SELECTOR_TO_ENTRY(sel))) #define GET_SEL_BASE(sel) (ldt_copy[SELECTOR_TO_ENTRY(sel)].base) #define GET_SEL_LIMIT(sel) (ldt_copy[SELECTOR_TO_ENTRY(sel)].limit) -#else -/* Complain if these are used in WineLib */ -#define SELECTOR_TO_ENTRY(sel) error.error -#define ENTRY_TO_SELECTOR(i) error.error -#define IS_LDT_ENTRY_FREE(i) error.error -#define IS_SELECTOR_FREE(sel) error.error -#define GET_SEL_BASE(sel) error.error -#define GET_SEL_LIMIT(sel) error.error -#endif - -#ifndef WINELIB - /* Convert a segmented ptr (16:16) to a linear (32) pointer */ -#define PTR_SEG_TO_LIN(ptr) \ - ((void*)(GET_SEL_BASE((int)(ptr) >> 16) + ((int)(ptr) & 0xffff))) #define PTR_SEG_OFF_TO_LIN(seg,off) \ ((void*)(GET_SEL_BASE(seg) + (unsigned int)(off))) + +#ifndef WINELIB + /* Convert a segmented ptr (16:16) to a linear (32) pointer */ +#define PTR_SEG_TO_LIN(ptr) PTR_SEG_OFF_TO_LIN(SELECTOROF(ptr),OFFSETOF(ptr)) +#define PTR_SEG_OFF_TO_SEGPTR(seg,off) ((SEGPTR)MAKELONG(off,seg)) #else #define PTR_SEG_TO_LIN(ptr) ((void*)(ptr)) -#define PTR_SEG_OFF_TO_LIN(seg,off) ((void*)((char*)(seg)+(int)(off))) +#define PTR_SEG_OFF_TO_SEGPTR(seg,off) ((SEGPTR)PTR_SEG_OFF_TO_LIN(seg,off)) #endif - extern unsigned char ldt_flags_copy[LDT_SIZE]; #define LDT_FLAGS_TYPE 0x03 /* Mask for segment type */ diff --git a/include/listbox.h b/include/listbox.h index 60bed755a71..ebd9c9e5aeb 100644 --- a/include/listbox.h +++ b/include/listbox.h @@ -32,7 +32,7 @@ typedef struct { BOOL HasStrings; BOOL OwnerDrawn; WORD iNumStops; - LPINT TabStops; + LPINT16 TabStops; HANDLE hDrawItemStruct; BOOL needMeasure; HANDLE HeapSel; diff --git a/include/local.h b/include/local.h index bfc6f123358..5561078813c 100644 --- a/include/local.h +++ b/include/local.h @@ -13,15 +13,16 @@ /* excepted that they need DS as the first parameter. This */ /* allows managing several heaps from the emulation library. */ -extern HLOCAL LOCAL_Alloc( HANDLE ds, WORD flags, WORD size ); -extern HLOCAL LOCAL_ReAlloc( HANDLE ds, HLOCAL handle, WORD size, WORD flags ); -extern HLOCAL LOCAL_Free( HANDLE ds, HLOCAL handle ); -extern HLOCAL LOCAL_Handle( HANDLE ds, WORD addr ); -extern WORD LOCAL_Size( HANDLE ds, HLOCAL handle ); -extern WORD LOCAL_Flags( HANDLE ds, HLOCAL handle ); -extern WORD LOCAL_HeapSize( HANDLE ds ); -extern WORD LOCAL_CountFree( WORD ds ); -extern LPSTR LOCAL_Lock( HANDLE ds, HLOCAL handle ); -extern BOOL LOCAL_Unlock( HANDLE ds, HLOCAL handle ); +extern HLOCAL16 LOCAL_Alloc( HANDLE16 ds, UINT16 flags, WORD size ); +extern HLOCAL16 LOCAL_ReAlloc( HANDLE16 ds, HLOCAL16 handle, + WORD size, UINT16 flags ); +extern HLOCAL16 LOCAL_Free( HANDLE16 ds, HLOCAL16 handle ); +extern HLOCAL16 LOCAL_Handle( HANDLE16 ds, WORD addr ); +extern UINT16 LOCAL_Size( HANDLE16 ds, HLOCAL16 handle ); +extern UINT16 LOCAL_Flags( HANDLE16 ds, HLOCAL16 handle ); +extern UINT16 LOCAL_HeapSize( HANDLE16 ds ); +extern UINT16 LOCAL_CountFree( HANDLE16 ds ); +extern LPSTR LOCAL_Lock( HANDLE16 ds, HLOCAL16 handle ); +extern BOOL LOCAL_Unlock( HANDLE16 ds, HLOCAL16 handle ); #endif /* __WINE_LOCAL_H */ diff --git a/include/menu.h b/include/menu.h index 32c4ff77b40..dabde45a22d 100644 --- a/include/menu.h +++ b/include/menu.h @@ -9,12 +9,13 @@ #define MENU_MAGIC 0x554d /* 'MU' */ extern BOOL MENU_Init(void); +extern HMENU MENU_GetDefSysMenu(void); extern UINT MENU_GetMenuBarHeight( HWND hwnd, UINT menubarWidth, - int orgX, int orgY ); /* menu.c */ -extern void MENU_TrackMouseMenuBar( HWND hwnd, POINT pt ); /* menu.c */ -extern void MENU_TrackKbdMenuBar( WND*, UINT wParam, INT vkey); /* menu.c */ + int orgX, int orgY ); +extern void MENU_TrackMouseMenuBar( HWND hwnd, POINT pt ); +extern void MENU_TrackKbdMenuBar( WND*, UINT wParam, INT vkey); extern UINT MENU_DrawMenuBar( HDC hDC, LPRECT lprect, - HWND hwnd, BOOL suppress_draw ); /* menu.c */ + HWND hwnd, BOOL suppress_draw ); extern LRESULT PopupMenuWndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam ); typedef struct tagMENUITEM diff --git a/include/mmsystem.h b/include/mmsystem.h index 035710378d4..a08d12bf436 100644 --- a/include/mmsystem.h +++ b/include/mmsystem.h @@ -36,8 +36,7 @@ typedef struct { DWORD songptrpos; /* song pointer position */ } midi; } u; - } MMTIME; -typedef MMTIME FAR *LPMMTIME; +} MMTIME, *LPMMTIME; #define TIME_MS 0x0001 /* time in milliseconds */ #define TIME_SAMPLES 0x0002 /* number of wave samples */ @@ -109,9 +108,7 @@ typedef MMTIME FAR *LPMMTIME; #define CALLBACK_TASK 0x00020000l /* dwCallback is a HTASK */ #define CALLBACK_FUNCTION 0x00030000l /* dwCallback is a FARPROC */ -typedef void (CALLBACK DRVCALLBACK) (HDRVR h, UINT uMessage, DWORD dwUser, DWORD dw1, DWORD dw2); - -typedef DRVCALLBACK FAR *LPDRVCALLBACK; +typedef void (*LPDRVCALLBACK) (HDRVR h, UINT uMessage, DWORD dwUser, DWORD dw1, DWORD dw2); #define MM_MICROSOFT 1 /* Microsoft Corp. */ @@ -151,13 +148,9 @@ BOOL sndPlaySound(LPCSTR lpszSoundName, UINT uFlags); #define WAVERR_SYNC (WAVERR_BASE + 3) /* device is synchronous */ #define WAVERR_LASTERROR (WAVERR_BASE + 3) /* last error in range */ -DECLARE_HANDLE(HWAVE); -DECLARE_HANDLE(HWAVEIN); -DECLARE_HANDLE(HWAVEOUT); -typedef HWAVEIN FAR *LPHWAVEIN; -typedef HWAVEOUT FAR *LPHWAVEOUT; -typedef DRVCALLBACK WAVECALLBACK; -typedef WAVECALLBACK FAR *LPWAVECALLBACK; +typedef HWAVEIN *LPHWAVEIN; +typedef HWAVEOUT *LPHWAVEOUT; +typedef LPDRVCALLBACK LPWAVECALLBACK; #define WOM_OPEN MM_WOM_OPEN #define WOM_CLOSE MM_WOM_CLOSE @@ -178,10 +171,9 @@ typedef struct wavehdr_tag { DWORD dwUser; /* for client's use */ DWORD dwFlags; /* assorted flags (see defines) */ DWORD dwLoops; /* loop control counter */ - struct wavehdr_tag FAR *lpNext; /* reserved for driver */ + struct wavehdr_tag *lpNext; /* reserved for driver */ DWORD reserved; /* reserved for driver */ -} WAVEHDR; -typedef WAVEHDR FAR *LPWAVEHDR; +} WAVEHDR, *LPWAVEHDR; #define WHDR_DONE 0x00000001 /* done bit */ #define WHDR_PREPARED 0x00000002 /* set if this header has been prepared */ @@ -197,8 +189,7 @@ typedef struct { DWORD dwFormats; /* formats supported */ UINT wChannels; /* number of sources supported */ DWORD dwSupport; /* functionality supported by driver */ -} WAVEOUTCAPS; -typedef WAVEOUTCAPS FAR *LPWAVEOUTCAPS; +} WAVEOUTCAPS, *LPWAVEOUTCAPS; #define WAVECAPS_PITCH 0x0001 /* supports pitch control */ #define WAVECAPS_PLAYBACKRATE 0x0002 /* supports playback rate control */ @@ -213,8 +204,7 @@ typedef struct { char szPname[MAXPNAMELEN]; /* product name (NULL terminated string) */ DWORD dwFormats; /* formats supported */ UINT wChannels; /* number of channels supported */ -} WAVEINCAPS; -typedef WAVEINCAPS FAR *LPWAVEINCAPS; +} WAVEINCAPS, *LPWAVEINCAPS; #define WAVE_INVALIDFORMAT 0x00000000 /* invalid format */ #define WAVE_FORMAT_1M08 0x00000001 /* 11.025 kHz, Mono, 8-bit */ @@ -237,66 +227,64 @@ typedef struct { DWORD nSamplesPerSec WINE_PACKED; /* sample rate */ DWORD nAvgBytesPerSec WINE_PACKED; /* for buffer estimation */ WORD nBlockAlign; /* block size of data */ -} WAVEFORMAT; -typedef WAVEFORMAT FAR *LPWAVEFORMAT; +} WAVEFORMAT, *LPWAVEFORMAT; #define WAVE_FORMAT_PCM 1 typedef struct { WAVEFORMAT wf; WORD wBitsPerSample; -} PCMWAVEFORMAT; -typedef PCMWAVEFORMAT FAR *LPPCMWAVEFORMAT; +} PCMWAVEFORMAT, *LPPCMWAVEFORMAT; UINT waveOutGetNumDevs(void); -UINT waveOutGetDevCaps(UINT uDeviceID, WAVEOUTCAPS FAR* lpCaps, +UINT waveOutGetDevCaps(UINT uDeviceID, WAVEOUTCAPS * lpCaps, UINT uSize); -UINT waveOutGetVolume(UINT uDeviceID, DWORD FAR* lpdwVolume); +UINT waveOutGetVolume(UINT uDeviceID, DWORD * lpdwVolume); UINT waveOutSetVolume(UINT uDeviceID, DWORD dwVolume); UINT waveOutGetErrorText(UINT uError, LPSTR lpText, UINT uSize); UINT waveGetErrorText(UINT uError, LPSTR lpText, UINT uSize); -UINT waveOutOpen(HWAVEOUT FAR* lphWaveOut, UINT uDeviceID, +UINT waveOutOpen(HWAVEOUT * lphWaveOut, UINT uDeviceID, const LPWAVEFORMAT lpFormat, DWORD dwCallback, DWORD dwInstance, DWORD dwFlags); UINT waveOutClose(HWAVEOUT hWaveOut); UINT waveOutPrepareHeader(HWAVEOUT hWaveOut, - WAVEHDR FAR* lpWaveOutHdr, UINT uSize); + WAVEHDR * lpWaveOutHdr, UINT uSize); UINT waveOutUnprepareHeader(HWAVEOUT hWaveOut, - WAVEHDR FAR* lpWaveOutHdr, UINT uSize); -UINT waveOutWrite(HWAVEOUT hWaveOut, WAVEHDR FAR* lpWaveOutHdr, + WAVEHDR * lpWaveOutHdr, UINT uSize); +UINT waveOutWrite(HWAVEOUT hWaveOut, WAVEHDR * lpWaveOutHdr, UINT uSize); UINT waveOutPause(HWAVEOUT hWaveOut); UINT waveOutRestart(HWAVEOUT hWaveOut); UINT waveOutReset(HWAVEOUT hWaveOut); UINT waveOutBreakLoop(HWAVEOUT hWaveOut); -UINT waveOutGetPosition(HWAVEOUT hWaveOut, MMTIME FAR* lpInfo, +UINT waveOutGetPosition(HWAVEOUT hWaveOut, MMTIME * lpInfo, UINT uSize); -UINT waveOutGetPitch(HWAVEOUT hWaveOut, DWORD FAR* lpdwPitch); +UINT waveOutGetPitch(HWAVEOUT hWaveOut, DWORD * lpdwPitch); UINT waveOutSetPitch(HWAVEOUT hWaveOut, DWORD dwPitch); -UINT waveOutGetPlaybackRate(HWAVEOUT hWaveOut, DWORD FAR* lpdwRate); +UINT waveOutGetPlaybackRate(HWAVEOUT hWaveOut, DWORD * lpdwRate); UINT waveOutSetPlaybackRate(HWAVEOUT hWaveOut, DWORD dwRate); -UINT waveOutGetID(HWAVEOUT hWaveOut, UINT FAR* lpuDeviceID); +UINT waveOutGetID(HWAVEOUT hWaveOut, UINT * lpuDeviceID); DWORD waveOutMessage(HWAVEOUT hWaveOut, UINT uMessage, DWORD dw1, DWORD dw2); UINT waveInGetNumDevs(void); -UINT waveInGetDevCaps(UINT uDeviceID, WAVEINCAPS FAR* lpCaps, +UINT waveInGetDevCaps(UINT uDeviceID, WAVEINCAPS * lpCaps, UINT uSize); UINT waveInGetErrorText(UINT uError, LPSTR lpText, UINT uSize); -UINT waveInOpen(HWAVEIN FAR* lphWaveIn, UINT uDeviceID, +UINT waveInOpen(HWAVEIN * lphWaveIn, UINT uDeviceID, const LPWAVEFORMAT lpFormat, DWORD dwCallback, DWORD dwInstance, DWORD dwFlags); UINT waveInClose(HWAVEIN hWaveIn); UINT waveInPrepareHeader(HWAVEIN hWaveIn, - WAVEHDR FAR* lpWaveInHdr, UINT uSize); + WAVEHDR * lpWaveInHdr, UINT uSize); UINT waveInUnprepareHeader(HWAVEIN hWaveIn, - WAVEHDR FAR* lpWaveInHdr, UINT uSize); + WAVEHDR * lpWaveInHdr, UINT uSize); UINT waveInAddBuffer(HWAVEIN hWaveIn, - WAVEHDR FAR* lpWaveInHdr, UINT uSize); + WAVEHDR * lpWaveInHdr, UINT uSize); UINT waveInStart(HWAVEIN hWaveIn); UINT waveInStop(HWAVEIN hWaveIn); UINT waveInReset(HWAVEIN hWaveIn); -UINT waveInGetPosition(HWAVEIN hWaveIn, MMTIME FAR* lpInfo, +UINT waveInGetPosition(HWAVEIN hWaveIn, MMTIME * lpInfo, UINT uSize); -UINT waveInGetID(HWAVEIN hWaveIn, UINT FAR* lpuDeviceID); +UINT waveInGetID(HWAVEIN hWaveIn, UINT * lpuDeviceID); DWORD waveInMessage(HWAVEIN hWaveIn, UINT uMessage, DWORD dw1, DWORD dw2); @@ -308,18 +296,14 @@ DWORD waveInMessage(HWAVEIN hWaveIn, UINT uMessage, DWORD dw1, DWORD dw2); #define MIDIERR_INVALIDSETUP (MIDIERR_BASE + 5) /* invalid setup */ #define MIDIERR_LASTERROR (MIDIERR_BASE + 5) /* last error in range */ -DECLARE_HANDLE(HMIDI); -DECLARE_HANDLE(HMIDIIN); -DECLARE_HANDLE(HMIDIOUT); -typedef HMIDIIN FAR *LPHMIDIIN; -typedef HMIDIOUT FAR *LPHMIDIOUT; -typedef DRVCALLBACK MIDICALLBACK; -typedef MIDICALLBACK FAR *LPMIDICALLBACK; +typedef HMIDIIN *LPHMIDIIN; +typedef HMIDIOUT *LPHMIDIOUT; +typedef LPDRVCALLBACK LPMIDICALLBACK; #define MIDIPATCHSIZE 128 typedef WORD PATCHARRAY[MIDIPATCHSIZE]; -typedef WORD FAR *LPPATCHARRAY; +typedef WORD *LPPATCHARRAY; typedef WORD KEYARRAY[MIDIPATCHSIZE]; -typedef WORD FAR *LPKEYARRAY; +typedef WORD *LPKEYARRAY; #define MIM_OPEN MM_MIM_OPEN #define MIM_CLOSE MM_MIM_CLOSE @@ -352,8 +336,7 @@ typedef struct { UINT wNotes; /* max # of notes (internal synth only) */ UINT wChannelMask; /* channels used (internal synth only) */ DWORD dwSupport; /* functionality supported by driver */ -} MIDIOUTCAPS; -typedef MIDIOUTCAPS FAR *LPMIDIOUTCAPS; +} MIDIOUTCAPS, *LPMIDIOUTCAPS; #define MOD_MIDIPORT 1 /* output port */ #define MOD_SYNTH 2 /* generic internal synth */ @@ -370,8 +353,7 @@ typedef struct { UINT wPid; /* product ID */ VERSION vDriverVersion; /* version of the driver */ char szPname[MAXPNAMELEN]; /* product name (NULL terminated string) */ -} MIDIINCAPS; -typedef MIDIINCAPS FAR *LPMIDIINCAPS; +} MIDIINCAPS, *LPMIDIINCAPS; typedef struct { LPSTR lpData; /* pointer to locked data block */ @@ -379,10 +361,9 @@ typedef struct { DWORD dwBytesRecorded; /* used for input only */ DWORD dwUser; /* for client's use */ DWORD dwFlags; /* assorted flags (see defines) */ - struct midihdr_tag FAR *lpNext; /* reserved for driver */ + struct midihdr_tag *lpNext; /* reserved for driver */ DWORD reserved; /* reserved for driver */ -} MIDIHDR; -typedef MIDIHDR FAR *LPMIDIHDR; +} MIDIHDR, *LPMIDIHDR; #define MHDR_DONE 0x00000001 /* done bit */ #define MHDR_PREPARED 0x00000002 /* set if header prepared */ @@ -390,27 +371,27 @@ typedef MIDIHDR FAR *LPMIDIHDR; UINT midiOutGetNumDevs(void); UINT midiOutGetDevCaps(UINT uDeviceID, - MIDIOUTCAPS FAR* lpCaps, UINT uSize); -UINT midiOutGetVolume(UINT uDeviceID, DWORD FAR* lpdwVolume); + MIDIOUTCAPS * lpCaps, UINT uSize); +UINT midiOutGetVolume(UINT uDeviceID, DWORD * lpdwVolume); UINT midiOutSetVolume(UINT uDeviceID, DWORD dwVolume); UINT midiOutGetErrorText(UINT uError, LPSTR lpText, UINT uSize); UINT midiGetErrorText(UINT uError, LPSTR lpText, UINT uSize); -UINT midiOutOpen(HMIDIOUT FAR* lphMidiOut, UINT uDeviceID, +UINT midiOutOpen(HMIDIOUT * lphMidiOut, UINT uDeviceID, DWORD dwCallback, DWORD dwInstance, DWORD dwFlags); UINT midiOutClose(HMIDIOUT hMidiOut); UINT midiOutPrepareHeader(HMIDIOUT hMidiOut, - MIDIHDR FAR* lpMidiOutHdr, UINT uSize); + MIDIHDR * lpMidiOutHdr, UINT uSize); UINT midiOutUnprepareHeader(HMIDIOUT hMidiOut, - MIDIHDR FAR* lpMidiOutHdr, UINT uSize); + MIDIHDR * lpMidiOutHdr, UINT uSize); UINT midiOutShortMsg(HMIDIOUT hMidiOut, DWORD dwMsg); UINT midiOutLongMsg(HMIDIOUT hMidiOut, - MIDIHDR FAR* lpMidiOutHdr, UINT uSize); + MIDIHDR * lpMidiOutHdr, UINT uSize); UINT midiOutReset(HMIDIOUT hMidiOut); UINT midiOutCachePatches(HMIDIOUT hMidiOut, - UINT uBank, WORD FAR* lpwPatchArray, UINT uFlags); + UINT uBank, WORD * lpwPatchArray, UINT uFlags); UINT midiOutCacheDrumPatches(HMIDIOUT hMidiOut, - UINT uPatch, WORD FAR* lpwKeyArray, UINT uFlags); -UINT midiOutGetID(HMIDIOUT hMidiOut, UINT FAR* lpuDeviceID); + UINT uPatch, WORD * lpwKeyArray, UINT uFlags); +UINT midiOutGetID(HMIDIOUT hMidiOut, UINT * lpuDeviceID); DWORD midiOutMessage(HMIDIOUT hMidiOut, UINT uMessage, DWORD dw1, DWORD dw2); @@ -418,19 +399,19 @@ UINT midiInGetNumDevs(void); UINT midiInGetDevCaps(UINT uDeviceID, LPMIDIINCAPS lpCaps, UINT uSize); UINT midiInGetErrorText(UINT uError, LPSTR lpText, UINT uSize); -UINT midiInOpen(HMIDIIN FAR* lphMidiIn, UINT uDeviceID, +UINT midiInOpen(HMIDIIN * lphMidiIn, UINT uDeviceID, DWORD dwCallback, DWORD dwInstance, DWORD dwFlags); UINT midiInClose(HMIDIIN hMidiIn); UINT midiInPrepareHeader(HMIDIIN hMidiIn, - MIDIHDR FAR* lpMidiInHdr, UINT uSize); + MIDIHDR * lpMidiInHdr, UINT uSize); UINT midiInUnprepareHeader(HMIDIIN hMidiIn, - MIDIHDR FAR* lpMidiInHdr, UINT uSize); + MIDIHDR * lpMidiInHdr, UINT uSize); UINT midiInAddBuffer(HMIDIIN hMidiIn, - MIDIHDR FAR* lpMidiInHdr, UINT uSize); + MIDIHDR * lpMidiInHdr, UINT uSize); UINT midiInStart(HMIDIIN hMidiIn); UINT midiInStop(HMIDIIN hMidiIn); UINT midiInReset(HMIDIIN hMidiIn); -UINT midiInGetID(HMIDIIN hMidiIn, UINT FAR* lpuDeviceID); +UINT midiInGetID(HMIDIIN hMidiIn, UINT * lpuDeviceID); DWORD midiInMessage(HMIDIIN hMidiIn, UINT uMessage, DWORD dw1, DWORD dw2); @@ -443,8 +424,7 @@ typedef struct { char szPname[MAXPNAMELEN]; /* product name (NULL terminated string) */ UINT wTechnology; /* type of device */ DWORD dwSupport; /* functionality supported by driver */ -} AUXCAPS; -typedef AUXCAPS FAR *LPAUXCAPS; +} AUXCAPS, *LPAUXCAPS; #define AUXCAPS_CDAUDIO 1 /* audio from internal CD-ROM drive */ #define AUXCAPS_AUXIN 2 /* audio from auxiliary input jacks */ @@ -453,9 +433,9 @@ typedef AUXCAPS FAR *LPAUXCAPS; #define AUXCAPS_LRVOLUME 0x0002 /* separate left-right volume control */ UINT auxGetNumDevs(void); -UINT auxGetDevCaps(UINT uDeviceID, AUXCAPS FAR* lpCaps, UINT uSize); +UINT auxGetDevCaps(UINT uDeviceID, AUXCAPS * lpCaps, UINT uSize); UINT auxSetVolume(UINT uDeviceID, DWORD dwVolume); -UINT auxGetVolume(UINT uDeviceID, DWORD FAR* lpdwVolume); +UINT auxGetVolume(UINT uDeviceID, DWORD * lpdwVolume); DWORD auxOutMessage(UINT uDeviceID, UINT uMessage, DWORD dw1, DWORD dw2); @@ -463,9 +443,7 @@ DWORD auxOutMessage(UINT uDeviceID, UINT uMessage, DWORD dw1, DWORD dw2); #define TIMERR_NOCANDO (TIMERR_BASE+1) /* request not completed */ #define TIMERR_STRUCT (TIMERR_BASE+33) /* time struct size */ -typedef void (CALLBACK TIMECALLBACK) (UINT uTimerID, UINT uMessage, DWORD dwUser, DWORD dw1, DWORD dw2); - -typedef TIMECALLBACK FAR *LPTIMECALLBACK; +typedef void (*LPTIMECALLBACK) (UINT uTimerID, UINT uMessage, DWORD dwUser, DWORD dw1, DWORD dw2); #define TIME_ONESHOT 0 /* program timer for single event */ #define TIME_PERIODIC 1 /* program for continuous periodic event */ @@ -473,15 +451,14 @@ typedef TIMECALLBACK FAR *LPTIMECALLBACK; typedef struct { UINT wPeriodMin; /* minimum period supported */ UINT wPeriodMax; /* maximum period supported */ - } TIMECAPS; -typedef TIMECAPS FAR *LPTIMECAPS; +} TIMECAPS, *LPTIMECAPS; -UINT timeGetSystemTime(MMTIME FAR* lpTime, UINT uSize); +UINT timeGetSystemTime(MMTIME * lpTime, UINT uSize); DWORD timeGetTime(void); UINT timeSetEvent(UINT uDelay, UINT uResolution, LPTIMECALLBACK lpFunction, DWORD dwUser, UINT uFlags); UINT timeKillEvent(UINT uTimerID); -UINT timeGetDevCaps(TIMECAPS FAR* lpTimeCaps, UINT uSize); +UINT timeGetDevCaps(TIMECAPS * lpTimeCaps, UINT uSize); UINT timeBeginPeriod(UINT uPeriod); UINT timeEndPeriod(UINT uPeriod); @@ -515,21 +492,19 @@ typedef struct { UINT wNumButtons; /* number of buttons */ UINT wPeriodMin; /* minimum message period when captured */ UINT wPeriodMax; /* maximum message period when captured */ - } JOYCAPS; -typedef JOYCAPS FAR *LPJOYCAPS; +} JOYCAPS, *LPJOYCAPS; typedef struct { UINT wXpos; /* x position */ UINT wYpos; /* y position */ UINT wZpos; /* z position */ UINT wButtons; /* button states */ - } JOYINFO; -typedef JOYINFO FAR *LPJOYINFO; +} JOYINFO, *LPJOYINFO; -UINT joyGetDevCaps(UINT uJoyID, JOYCAPS FAR* lpCaps, UINT uSize); +UINT joyGetDevCaps(UINT uJoyID, JOYCAPS * lpCaps, UINT uSize); UINT joyGetNumDevs(void); -UINT joyGetPos(UINT uJoyID, JOYINFO FAR* lpInfo); -UINT joyGetThreshold(UINT uJoyID, UINT FAR* lpuThreshold); +UINT joyGetPos(UINT uJoyID, JOYINFO * lpInfo); +UINT joyGetThreshold(UINT uJoyID, UINT * lpuThreshold); UINT joyReleaseCapture(UINT uJoyID); UINT joySetCapture(HWND hwnd, UINT uJoyID, UINT uPeriod, BOOL bChanged); @@ -550,10 +525,8 @@ UINT joySetThreshold(UINT uJoyID, UINT uThreshold); #define CFSEPCHAR '+' /* compound file name separator char. */ typedef DWORD FOURCC; /* a four character code */ -DECLARE_HANDLE(HMMIO); /* a handle to an open file */ -typedef LONG (CALLBACK MMIOPROC)(LPSTR lpmmioinfo, UINT uMessage, +typedef LONG (*LPMMIOPROC)(LPSTR lpmmioinfo, UINT uMessage, LPARAM lParam1, LPARAM lParam2); -typedef MMIOPROC FAR *LPMMIOPROC; typedef struct { DWORD dwFlags; /* general status flags */ @@ -575,8 +548,7 @@ typedef struct { DWORD dwReserved1; /* reserved for MMIO use */ DWORD dwReserved2; /* reserved for MMIO use */ HMMIO hmmio; /* handle to open file */ -} MMIOINFO; -typedef MMIOINFO FAR *LPMMIOINFO; +} MMIOINFO, *LPMMIOINFO; typedef struct _MMCKINFO { @@ -585,8 +557,7 @@ typedef struct _MMCKINFO FOURCC fccType; /* form type or list type */ DWORD dwDataOffset; /* offset of data portion of chunk */ DWORD dwFlags; /* flags used by MMIO functions */ -} MMCKINFO; -typedef MMCKINFO FAR *LPMMCKINFO; +} MMCKINFO, *LPMMCKINFO; #define MMIO_RWMODE 0x00000003 /* open file for reading/writing/both */ #define MMIO_SHAREMODE 0x00000070 /* file sharing mode number */ @@ -653,30 +624,30 @@ typedef MMCKINFO FAR *LPMMCKINFO; FOURCC mmioStringToFOURCC(LPCSTR sz, UINT uFlags); LPMMIOPROC mmioInstallIOProc(FOURCC fccIOProc, LPMMIOPROC pIOProc, DWORD dwFlags); -HMMIO mmioOpen(LPSTR szFileName, MMIOINFO FAR* lpmmioinfo, +HMMIO mmioOpen(LPSTR szFileName, MMIOINFO * lpmmioinfo, DWORD dwOpenFlags); UINT mmioRename(LPCSTR szFileName, LPCSTR szNewFileName, - MMIOINFO FAR* lpmmioinfo, DWORD dwRenameFlags); + MMIOINFO * lpmmioinfo, DWORD dwRenameFlags); UINT mmioClose(HMMIO hmmio, UINT uFlags); LONG mmioRead(HMMIO hmmio, HPSTR pch, LONG cch); LONG mmioWrite(HMMIO hmmio, HPCSTR pch, LONG cch); LONG mmioSeek(HMMIO hmmio, LONG lOffset, int iOrigin); -UINT mmioGetInfo(HMMIO hmmio, MMIOINFO FAR* lpmmioinfo, UINT uFlags); -UINT mmioSetInfo(HMMIO hmmio, const MMIOINFO FAR* lpmmioinfo, UINT uFlags); +UINT mmioGetInfo(HMMIO hmmio, MMIOINFO * lpmmioinfo, UINT uFlags); +UINT mmioSetInfo(HMMIO hmmio, const MMIOINFO * lpmmioinfo, UINT uFlags); UINT mmioSetBuffer(HMMIO hmmio, LPSTR pchBuffer, LONG cchBuffer, UINT uFlags); UINT mmioFlush(HMMIO hmmio, UINT uFlags); -UINT mmioAdvance(HMMIO hmmio, MMIOINFO FAR* lpmmioinfo, UINT uFlags); +UINT mmioAdvance(HMMIO hmmio, MMIOINFO * lpmmioinfo, UINT uFlags); LONG mmioSendMessage(HMMIO hmmio, UINT uMessage, LPARAM lParam1, LPARAM lParam2); -UINT mmioDescend(HMMIO hmmio, MMCKINFO FAR* lpck, - const MMCKINFO FAR* lpckParent, UINT uFlags); -UINT mmioAscend(HMMIO hmmio, MMCKINFO FAR* lpck, UINT uFlags); -UINT mmioCreateChunk(HMMIO hmmio, MMCKINFO FAR* lpck, UINT uFlags); +UINT mmioDescend(HMMIO hmmio, MMCKINFO * lpck, + const MMCKINFO * lpckParent, UINT uFlags); +UINT mmioAscend(HMMIO hmmio, MMCKINFO * lpck, UINT uFlags); +UINT mmioCreateChunk(HMMIO hmmio, MMCKINFO * lpck, UINT uFlags); -typedef UINT (CALLBACK *YIELDPROC) (UINT uDeviceID, DWORD dwYieldData); +typedef UINT (*YIELDPROC) (UINT uDeviceID, DWORD dwYieldData); DWORD mciSendCommand (UINT uDeviceID, UINT uMessage, DWORD dwParam1, DWORD dwParam2); @@ -691,7 +662,7 @@ BOOL mciSetYieldProc (UINT uDeviceID, YIELDPROC fpYieldProc, DWORD dwYieldData); HTASK mciGetCreatorTask(UINT uDeviceID); -YIELDPROC mciGetYieldProc (UINT uDeviceID, DWORD FAR* lpdwYieldData); +YIELDPROC mciGetYieldProc (UINT uDeviceID, DWORD * lpdwYieldData); #define MCIERR_INVALID_DEVICE_ID (MCIERR_BASE + 1) #define MCIERR_UNRECOGNIZED_KEYWORD (MCIERR_BASE + 3) @@ -953,8 +924,7 @@ YIELDPROC mciGetYieldProc (UINT uDeviceID, DWORD FAR* lpdwYieldData); typedef struct { DWORD dwCallback; - } MCI_GENERIC_PARMS; -typedef MCI_GENERIC_PARMS FAR *LPMCI_GENERIC_PARMS; +} MCI_GENERIC_PARMS, *LPMCI_GENERIC_PARMS; typedef struct { DWORD dwCallback; @@ -963,43 +933,37 @@ typedef struct { LPCSTR lpstrDeviceType; LPCSTR lpstrElementName; LPCSTR lpstrAlias; - } MCI_OPEN_PARMS; -typedef MCI_OPEN_PARMS FAR *LPMCI_OPEN_PARMS; +} MCI_OPEN_PARMS, *LPMCI_OPEN_PARMS; typedef struct { DWORD dwCallback; DWORD dwFrom; DWORD dwTo; - } MCI_PLAY_PARMS; -typedef MCI_PLAY_PARMS FAR *LPMCI_PLAY_PARMS; +} MCI_PLAY_PARMS, *LPMCI_PLAY_PARMS; typedef struct { DWORD dwCallback; DWORD dwTo; - } MCI_SEEK_PARMS; -typedef MCI_SEEK_PARMS FAR *LPMCI_SEEK_PARMS; +} MCI_SEEK_PARMS, *LPMCI_SEEK_PARMS; typedef struct { DWORD dwCallback; DWORD dwReturn; DWORD dwItem; DWORD dwTrack; - } MCI_STATUS_PARMS; -typedef MCI_STATUS_PARMS FAR * LPMCI_STATUS_PARMS; +} MCI_STATUS_PARMS, *LPMCI_STATUS_PARMS; typedef struct { DWORD dwCallback; LPSTR lpstrReturn; DWORD dwRetSize; - } MCI_INFO_PARMS; -typedef MCI_INFO_PARMS FAR * LPMCI_INFO_PARMS; +} MCI_INFO_PARMS, *LPMCI_INFO_PARMS; typedef struct { DWORD dwCallback; DWORD dwReturn; DWORD dwItem; - } MCI_GETDEVCAPS_PARMS; -typedef MCI_GETDEVCAPS_PARMS FAR * LPMCI_GETDEVCAPS_PARMS; +} MCI_GETDEVCAPS_PARMS, *LPMCI_GETDEVCAPS_PARMS; typedef struct { DWORD dwCallback; @@ -1008,15 +972,13 @@ typedef struct { DWORD dwNumber; UINT wDeviceType; UINT wReserved0; - } MCI_SYSINFO_PARMS; -typedef MCI_SYSINFO_PARMS FAR * LPMCI_SYSINFO_PARMS; +} MCI_SYSINFO_PARMS, *LPMCI_SYSINFO_PARMS; typedef struct { DWORD dwCallback; DWORD dwTimeFormat; DWORD dwAudio; - } MCI_SET_PARMS; -typedef MCI_SET_PARMS FAR *LPMCI_SET_PARMS; +} MCI_SET_PARMS, *LPMCI_SET_PARMS; typedef struct { DWORD dwCallback; @@ -1024,33 +986,28 @@ typedef struct { UINT wReserved0; HWND hwndBreak; UINT wReserved1; - } MCI_BREAK_PARMS; -typedef MCI_BREAK_PARMS FAR * LPMCI_BREAK_PARMS; +} MCI_BREAK_PARMS, *LPMCI_BREAK_PARMS; typedef struct { DWORD dwCallback; LPCSTR lpstrSoundName; - } MCI_SOUND_PARMS; -typedef MCI_SOUND_PARMS FAR * LPMCI_SOUND_PARMS; +} MCI_SOUND_PARMS, *LPMCI_SOUND_PARMS; typedef struct { DWORD dwCallback; LPCSTR lpfilename; - } MCI_SAVE_PARMS; -typedef MCI_SAVE_PARMS FAR * LPMCI_SAVE_PARMS; +} MCI_SAVE_PARMS, *LPMCI_SAVE_PARMS; typedef struct { DWORD dwCallback; LPCSTR lpfilename; - } MCI_LOAD_PARMS; -typedef MCI_LOAD_PARMS FAR * LPMCI_LOAD_PARMS; +} MCI_LOAD_PARMS, *LPMCI_LOAD_PARMS; typedef struct { DWORD dwCallback; DWORD dwFrom; DWORD dwTo; - } MCI_RECORD_PARMS; -typedef MCI_RECORD_PARMS FAR *LPMCI_RECORD_PARMS; +} MCI_RECORD_PARMS, *LPMCI_RECORD_PARMS; #define MCI_VD_MODE_PARK (MCI_VD_OFFSET + 1) @@ -1095,20 +1052,17 @@ typedef struct { DWORD dwFrom; DWORD dwTo; DWORD dwSpeed; - } MCI_VD_PLAY_PARMS; -typedef MCI_VD_PLAY_PARMS FAR *LPMCI_VD_PLAY_PARMS; +} MCI_VD_PLAY_PARMS, *LPMCI_VD_PLAY_PARMS; typedef struct { DWORD dwCallback; DWORD dwFrames; - } MCI_VD_STEP_PARMS; -typedef MCI_VD_STEP_PARMS FAR *LPMCI_VD_STEP_PARMS; +} MCI_VD_STEP_PARMS, *LPMCI_VD_STEP_PARMS; typedef struct { DWORD dwCallback; LPCSTR lpstrCommand; - } MCI_VD_ESCAPE_PARMS; -typedef MCI_VD_ESCAPE_PARMS FAR *LPMCI_VD_ESCAPE_PARMS; +} MCI_VD_ESCAPE_PARMS, *LPMCI_VD_ESCAPE_PARMS; #define MCI_WAVE_OPEN_BUFFER 0x00010000L @@ -1144,15 +1098,13 @@ typedef struct { LPCSTR lpstrElementName; LPCSTR lpstrAlias; DWORD dwBufferSeconds; - } MCI_WAVE_OPEN_PARMS; -typedef MCI_WAVE_OPEN_PARMS FAR *LPMCI_WAVE_OPEN_PARMS; +} MCI_WAVE_OPEN_PARMS, *LPMCI_WAVE_OPEN_PARMS; typedef struct { DWORD dwCallback; DWORD dwFrom; DWORD dwTo; - } MCI_WAVE_DELETE_PARMS; -typedef MCI_WAVE_DELETE_PARMS FAR *LPMCI_WAVE_DELETE_PARMS; +} MCI_WAVE_DELETE_PARMS, *LPMCI_WAVE_DELETE_PARMS; typedef struct { DWORD dwCallback; @@ -1172,8 +1124,7 @@ typedef struct { UINT wReserved4; UINT wBitsPerSample; UINT wReserved5; - } MCI_WAVE_SET_PARMS; -typedef MCI_WAVE_SET_PARMS FAR * LPMCI_WAVE_SET_PARMS; +} MCI_WAVE_SET_PARMS, * LPMCI_WAVE_SET_PARMS; #define MCI_SEQ_DIV_PPQN (0 + MCI_SEQ_OFFSET) #define MCI_SEQ_DIV_SMPTE_24 (1 + MCI_SEQ_OFFSET) @@ -1209,8 +1160,7 @@ typedef struct { DWORD dwSlave; DWORD dwMaster; DWORD dwOffset; - } MCI_SEQ_SET_PARMS; -typedef MCI_SEQ_SET_PARMS FAR * LPMCI_SEQ_SET_PARMS; +} MCI_SEQ_SET_PARMS, *LPMCI_SEQ_SET_PARMS; #define MCI_ANIM_OPEN_WS 0x00010000L #define MCI_ANIM_OPEN_PARENT 0x00020000L @@ -1271,22 +1221,19 @@ typedef struct { DWORD dwStyle; HWND hWndParent; UINT wReserved1; - } MCI_ANIM_OPEN_PARMS; -typedef MCI_ANIM_OPEN_PARMS FAR *LPMCI_ANIM_OPEN_PARMS; +} MCI_ANIM_OPEN_PARMS, *LPMCI_ANIM_OPEN_PARMS; typedef struct { DWORD dwCallback; DWORD dwFrom; DWORD dwTo; DWORD dwSpeed; - } MCI_ANIM_PLAY_PARMS; -typedef MCI_ANIM_PLAY_PARMS FAR *LPMCI_ANIM_PLAY_PARMS; +} MCI_ANIM_PLAY_PARMS, *LPMCI_ANIM_PLAY_PARMS; typedef struct { DWORD dwCallback; DWORD dwFrames; - } MCI_ANIM_STEP_PARMS; -typedef MCI_ANIM_STEP_PARMS FAR *LPMCI_ANIM_STEP_PARMS; +} MCI_ANIM_STEP_PARMS, *LPMCI_ANIM_STEP_PARMS; typedef struct { DWORD dwCallback; @@ -1295,8 +1242,7 @@ typedef struct { UINT nCmdShow; UINT wReserved2; LPCSTR lpstrText; - } MCI_ANIM_WINDOW_PARMS; -typedef MCI_ANIM_WINDOW_PARMS FAR * LPMCI_ANIM_WINDOW_PARMS; +} MCI_ANIM_WINDOW_PARMS, *LPMCI_ANIM_WINDOW_PARMS; typedef struct { DWORD dwCallback; @@ -1306,15 +1252,13 @@ typedef struct { #else /* ifdef MCI_USE_OFFEXT */ RECT rc; #endif /* ifdef MCI_USE_OFFEXT */ - } MCI_ANIM_RECT_PARMS; -typedef MCI_ANIM_RECT_PARMS FAR * LPMCI_ANIM_RECT_PARMS; +} MCI_ANIM_RECT_PARMS, *LPMCI_ANIM_RECT_PARMS; typedef struct { DWORD dwCallback; RECT rc; HDC hDC; - } MCI_ANIM_UPDATE_PARMS; -typedef MCI_ANIM_UPDATE_PARMS FAR * LPMCI_ANIM_UPDATE_PARMS; +} MCI_ANIM_UPDATE_PARMS, *LPMCI_ANIM_UPDATE_PARMS; #define MCI_OVLY_OPEN_WS 0x00010000L #define MCI_OVLY_OPEN_PARENT 0x00020000L @@ -1357,8 +1301,7 @@ typedef struct { DWORD dwStyle; HWND hWndParent; UINT wReserved1; - } MCI_OVLY_OPEN_PARMS; -typedef MCI_OVLY_OPEN_PARMS FAR *LPMCI_OVLY_OPEN_PARMS; +} MCI_OVLY_OPEN_PARMS, *LPMCI_OVLY_OPEN_PARMS; typedef struct { DWORD dwCallback; @@ -1367,8 +1310,7 @@ typedef struct { UINT nCmdShow; UINT wReserved2; LPCSTR lpstrText; - } MCI_OVLY_WINDOW_PARMS; -typedef MCI_OVLY_WINDOW_PARMS FAR * LPMCI_OVLY_WINDOW_PARMS; +} MCI_OVLY_WINDOW_PARMS, *LPMCI_OVLY_WINDOW_PARMS; typedef struct { DWORD dwCallback; @@ -1378,22 +1320,19 @@ typedef struct { #else /* ifdef MCI_USE_OFFEXT */ RECT rc; #endif /* ifdef MCI_USE_OFFEXT */ - } MCI_OVLY_RECT_PARMS; -typedef MCI_OVLY_RECT_PARMS FAR * LPMCI_OVLY_RECT_PARMS; +} MCI_OVLY_RECT_PARMS, *LPMCI_OVLY_RECT_PARMS; typedef struct { DWORD dwCallback; LPCSTR lpfilename; RECT rc; - } MCI_OVLY_SAVE_PARMS; -typedef MCI_OVLY_SAVE_PARMS FAR * LPMCI_OVLY_SAVE_PARMS; +} MCI_OVLY_SAVE_PARMS, *LPMCI_OVLY_SAVE_PARMS; typedef struct { DWORD dwCallback; LPCSTR lpfilename; RECT rc; - } MCI_OVLY_LOAD_PARMS; -typedef MCI_OVLY_LOAD_PARMS FAR * LPMCI_OVLY_LOAD_PARMS; +} MCI_OVLY_LOAD_PARMS, *LPMCI_OVLY_LOAD_PARMS; /************************************************************** @@ -1525,23 +1464,20 @@ typedef struct { DWORD dwInstance; HMIDIOUT hMidi; DWORD dwFlags; - } PORTALLOC; -typedef PORTALLOC FAR *LPPORTALLOC; +} PORTALLOC, *LPPORTALLOC; typedef struct { HWAVE hWave; LPWAVEFORMAT lpFormat; DWORD dwCallBack; DWORD dwInstance; - } WAVEOPENDESC; -typedef WAVEOPENDESC FAR *LPWAVEOPENDESC; +} WAVEOPENDESC, *LPWAVEOPENDESC; typedef struct { HMIDI hMidi; DWORD dwCallback; DWORD dwInstance; - } MIDIOPENDESC; -typedef MIDIOPENDESC FAR *LPMIDIOPENDESC; +} MIDIOPENDESC, *LPMIDIOPENDESC; typedef struct { UINT wDelay; @@ -1549,8 +1485,7 @@ typedef struct { LPTIMECALLBACK lpFunction; DWORD dwUser; UINT wFlags; - } TIMEREVENT; -typedef TIMEREVENT FAR *LPTIMEREVENT; +} TIMEREVENT, *LPTIMEREVENT; typedef struct { UINT wDeviceID; /* device ID */ @@ -1559,8 +1494,7 @@ typedef struct { /* filled in by the driver */ UINT wType; /* driver type */ /* filled in by the driver */ - } MCI_OPEN_DRIVER_PARMS; -typedef MCI_OPEN_DRIVER_PARMS FAR * LPMCI_OPEN_DRIVER_PARMS; +} MCI_OPEN_DRIVER_PARMS, * LPMCI_OPEN_DRIVER_PARMS; DWORD mciGetDriverData(UINT uDeviceID); BOOL mciSetDriverData(UINT uDeviceID, DWORD dwData); diff --git a/include/nonclient.h b/include/nonclient.h index c890201650d..49fa2065985 100644 --- a/include/nonclient.h +++ b/include/nonclient.h @@ -7,7 +7,7 @@ #ifndef __WINE_NONCLIENT_H #define __WINE_NONCLIENT_H -#include "windows.h" +#include "win.h" extern void NC_GetInsideRect( HWND hwnd, RECT *rect ); extern void NC_GetMinMaxInfo( HWND hwnd, POINT *maxSize, POINT *maxPos, @@ -18,7 +18,7 @@ extern LONG NC_HandleNCActivate( HWND hwnd, WPARAM wParam ); extern LONG NC_HandleNCCalcSize( HWND hwnd, NCCALCSIZE_PARAMS *params ); extern LONG NC_HandleNCHitTest( HWND hwnd, POINT pt ); extern LONG NC_HandleNCLButtonDown( HWND hwnd, WPARAM wParam, LPARAM lParam ); -extern LONG NC_HandleNCLButtonDblClk( HWND hwnd, WPARAM wParam, LPARAM lParam ); +extern LONG NC_HandleNCLButtonDblClk( WND *pWnd, WPARAM wParam, LPARAM lParam); extern LONG NC_HandleSysCommand( HWND hwnd, WPARAM wParam, POINT pt ); extern LONG NC_HandleSetCursor( HWND hwnd, WPARAM wParam, LPARAM lParam ); diff --git a/include/ole.h b/include/ole.h index 18cf70684ed..b9206404b66 100644 --- a/include/ole.h +++ b/include/ole.h @@ -145,8 +145,8 @@ typedef struct _OLETARGETDEVICE { } OLETARGETDEVICE; typedef struct _OLESTREAM* LPOLESTREAM; typedef struct _OLESTREAMVTBL { - DWORD (CALLBACK* Get)(LPOLESTREAM,LPSTR,DWORD); - DWORD (CALLBACK* Put)(LPOLESTREAM,LPSTR,DWORD); + DWORD (*Get)(LPOLESTREAM,LPSTR,DWORD); + DWORD (*Put)(LPOLESTREAM,LPSTR,DWORD); } OLESTREAMVTBL; typedef OLESTREAMVTBL* LPOLESTREAMVTBL; typedef struct _OLESTREAM { @@ -156,14 +156,14 @@ typedef struct _OLESERVERDOC* LPOLESERVERDOC; typedef struct _OLEOBJECT* LPOLEOBJECT; typedef struct _OLECLIENT* LPOLECLIENT; typedef struct _OLESERVERDOCVTBL { - OLESTATUS (CALLBACK* Save)(LPOLESERVERDOC); - OLESTATUS (CALLBACK* Close)(LPOLESERVERDOC); - OLESTATUS (CALLBACK* SetHostNames)(LPOLESERVERDOC,OLE_LPCSTR,OLE_LPCSTR); - OLESTATUS (CALLBACK* SetDocDimensions)(LPOLESERVERDOC,LPRECT); - OLESTATUS (CALLBACK* GetObject)(LPOLESERVERDOC,OLE_LPCSTR,LPOLEOBJECT*,LPOLECLIENT); - OLESTATUS (CALLBACK* Release)(LPOLESERVERDOC); - OLESTATUS (CALLBACK* SetColorScheme)(LPOLESERVERDOC,LPLOGPALETTE); - OLESTATUS (CALLBACK* Execute)(LPOLESERVERDOC,HGLOBAL); + OLESTATUS (*Save)(LPOLESERVERDOC); + OLESTATUS (*Close)(LPOLESERVERDOC); + OLESTATUS (*SetHostNames)(LPOLESERVERDOC,OLE_LPCSTR,OLE_LPCSTR); + OLESTATUS (*SetDocDimensions)(LPOLESERVERDOC,LPRECT); + OLESTATUS (*GetObject)(LPOLESERVERDOC,OLE_LPCSTR,LPOLEOBJECT*,LPOLECLIENT); + OLESTATUS (*Release)(LPOLESERVERDOC); + OLESTATUS (*SetColorScheme)(LPOLESERVERDOC,LPLOGPALETTE); + OLESTATUS (*Execute)(LPOLESERVERDOC,HGLOBAL); } OLESERVERDOCVTBL; typedef OLESERVERDOCVTBL* LPOLESERVERDOCVTBL; typedef struct _OLESERVERDOC { @@ -173,13 +173,13 @@ typedef struct _OLESERVERDOC { typedef struct _OLESERVER* LPOLESERVER; typedef struct _OLESERVERVTBL { - OLESTATUS (CALLBACK* Open)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,LPOLESERVERDOC *); - OLESTATUS (CALLBACK* Create)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC FAR*); - OLESTATUS (CALLBACK* CreateFromTemplate)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC *); - OLESTATUS (CALLBACK* Edit)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC *); - OLESTATUS (CALLBACK* Exit)(LPOLESERVER); - OLESTATUS (CALLBACK* Release)(LPOLESERVER); - OLESTATUS (CALLBACK* Execute)(LPOLESERVER); + OLESTATUS (*Open)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,LPOLESERVERDOC *); + OLESTATUS (*Create)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC*); + OLESTATUS (*CreateFromTemplate)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC *); + OLESTATUS (*Edit)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC *); + OLESTATUS (*Exit)(LPOLESERVER); + OLESTATUS (*Release)(LPOLESERVER); + OLESTATUS (*Execute)(LPOLESERVER); } OLESERVERVTBL; typedef OLESERVERVTBL *LPOLESERVERVTBL; typedef struct _OLESERVER { @@ -187,7 +187,7 @@ typedef struct _OLESERVER { /* server specific data */ } OLESERVER; typedef struct _OLECLIENTVTBL { - int (CALLBACK* CallBack)(LPOLECLIENT,OLE_NOTIFICATION,LPOLEOBJECT); + int (*CallBack)(LPOLECLIENT,OLE_NOTIFICATION,LPOLEOBJECT); } OLECLIENTVTBL; typedef OLECLIENTVTBL *LPOLECLIENTVTBL; @@ -197,44 +197,44 @@ typedef struct _OLECLIENT { } OLECLIENT; typedef struct _OLEOBJECTVTBL { - void * (CALLBACK* QueryProtocol)(LPOLEOBJECT,OLE_LPCSTR); - OLESTATUS (CALLBACK* Release)(LPOLEOBJECT); - OLESTATUS (CALLBACK* Show)(LPOLEOBJECT,BOOL); - OLESTATUS (CALLBACK* DoVerb)(LPOLEOBJECT,UINT,BOOL,BOOL); - OLESTATUS (CALLBACK* GetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE *); - OLESTATUS (CALLBACK* SetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE); - OLESTATUS (CALLBACK* SetTargetDevice)(LPOLEOBJECT,HGLOBAL); - OLESTATUS (CALLBACK* SetBounds)(LPOLEOBJECT,LPRECT); - OLESTATUS (CALLBACK* EnumFormats)(LPOLEOBJECT,OLECLIPFORMAT); - OLESTATUS (CALLBACK* SetColorScheme)(LPOLEOBJECT,LPLOGPALETTE); - OLESTATUS (CALLBACK* Delete)(LPOLEOBJECT); - OLESTATUS (CALLBACK* SetHostNames)(LPOLEOBJECT,OLE_LPCSTR,OLE_LPCSTR); - OLESTATUS (CALLBACK* SaveToStream)(LPOLEOBJECT,LPOLESTREAM); - OLESTATUS (CALLBACK* Clone)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT *); - OLESTATUS (CALLBACK* CopyFromLink)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT *); - OLESTATUS (CALLBACK* Equal)(LPOLEOBJECT,LPOLEOBJECT); - OLESTATUS (CALLBACK* CopyToClipBoard)(LPOLEOBJECT); - OLESTATUS (CALLBACK* Draw)(LPOLEOBJECT,HDC,LPRECT,LPRECT,HDC); - OLESTATUS (CALLBACK* Activate)(LPOLEOBJECT,UINT,BOOL,BOOL,HWND,LPRECT); - OLESTATUS (CALLBACK* Execute)(LPOLEOBJECT,HGLOBAL,UINT); - OLESTATUS (CALLBACK* Close)(LPOLEOBJECT); - OLESTATUS (CALLBACK* Update)(LPOLEOBJECT); - OLESTATUS (CALLBACK* Reconnect)(LPOLEOBJECT); - OLESTATUS (CALLBACK* ObjectConvert)(LPOLEOBJECT,OLE_LPCSTR,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT*); - OLESTATUS (CALLBACK* GetLinkUpdateOptions)(LPOLEOBJECT,LPOLEOPT_UPDATE); - OLESTATUS (CALLBACK* SetLinkUpdateOptions)(LPOLEOBJECT,OLEOPT_UPDATE); - OLESTATUS (CALLBACK* Rename)(LPOLEOBJECT,OLE_LPCSTR); - OLESTATUS (CALLBACK* QueryName)(LPOLEOBJECT,LPSTR,LPUINT); - OLESTATUS (CALLBACK* QueryType)(LPOLEOBJECT,LPLONG); - OLESTATUS (CALLBACK* QueryBounds)(LPOLEOBJECT,LPRECT); - OLESTATUS (CALLBACK* QuerySize)(LPOLEOBJECT,LPDWORD); - OLESTATUS (CALLBACK* QueryOpen)(LPOLEOBJECT); - OLESTATUS (CALLBACK* QueryOutOfDate)(LPOLEOBJECT); - OLESTATUS (CALLBACK* QueryReleaseStatus)(LPOLEOBJECT); - OLESTATUS (CALLBACK* QueryReleaseError)(LPOLEOBJECT); - OLE_RELEASE_METHOD (CALLBACK* QueryReleaseMethod)(LPOLEOBJECT); - OLESTATUS (CALLBACK* RequestData)(LPOLEOBJECT,OLECLIPFORMAT); - OLESTATUS (CALLBACK* ObjectLong)(LPOLEOBJECT,UINT,LPLONG); + void * (*QueryProtocol)(LPOLEOBJECT,OLE_LPCSTR); + OLESTATUS (*Release)(LPOLEOBJECT); + OLESTATUS (*Show)(LPOLEOBJECT,BOOL); + OLESTATUS (*DoVerb)(LPOLEOBJECT,UINT,BOOL,BOOL); + OLESTATUS (*GetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE *); + OLESTATUS (*SetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE); + OLESTATUS (*SetTargetDevice)(LPOLEOBJECT,HGLOBAL); + OLESTATUS (*SetBounds)(LPOLEOBJECT,LPRECT); + OLESTATUS (*EnumFormats)(LPOLEOBJECT,OLECLIPFORMAT); + OLESTATUS (*SetColorScheme)(LPOLEOBJECT,LPLOGPALETTE); + OLESTATUS (*Delete)(LPOLEOBJECT); + OLESTATUS (*SetHostNames)(LPOLEOBJECT,OLE_LPCSTR,OLE_LPCSTR); + OLESTATUS (*SaveToStream)(LPOLEOBJECT,LPOLESTREAM); + OLESTATUS (*Clone)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT *); + OLESTATUS (*CopyFromLink)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT *); + OLESTATUS (*Equal)(LPOLEOBJECT,LPOLEOBJECT); + OLESTATUS (*CopyToClipBoard)(LPOLEOBJECT); + OLESTATUS (*Draw)(LPOLEOBJECT,HDC,LPRECT,LPRECT,HDC); + OLESTATUS (*Activate)(LPOLEOBJECT,UINT,BOOL,BOOL,HWND,LPRECT); + OLESTATUS (*Execute)(LPOLEOBJECT,HGLOBAL,UINT); + OLESTATUS (*Close)(LPOLEOBJECT); + OLESTATUS (*Update)(LPOLEOBJECT); + OLESTATUS (*Reconnect)(LPOLEOBJECT); + OLESTATUS (*ObjectConvert)(LPOLEOBJECT,OLE_LPCSTR,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT*); + OLESTATUS (*GetLinkUpdateOptions)(LPOLEOBJECT,LPOLEOPT_UPDATE); + OLESTATUS (*SetLinkUpdateOptions)(LPOLEOBJECT,OLEOPT_UPDATE); + OLESTATUS (*Rename)(LPOLEOBJECT,OLE_LPCSTR); + OLESTATUS (*QueryName)(LPOLEOBJECT,LPSTR,LPUINT16); + OLESTATUS (*QueryType)(LPOLEOBJECT,LPLONG); + OLESTATUS (*QueryBounds)(LPOLEOBJECT,LPRECT); + OLESTATUS (*QuerySize)(LPOLEOBJECT,LPDWORD); + OLESTATUS (*QueryOpen)(LPOLEOBJECT); + OLESTATUS (*QueryOutOfDate)(LPOLEOBJECT); + OLESTATUS (*QueryReleaseStatus)(LPOLEOBJECT); + OLESTATUS (*QueryReleaseError)(LPOLEOBJECT); + OLE_RELEASE_METHOD (*QueryReleaseMethod)(LPOLEOBJECT); + OLESTATUS (*RequestData)(LPOLEOBJECT,OLECLIPFORMAT); + OLESTATUS (*ObjectLong)(LPOLEOBJECT,UINT,LPLONG); } OLEOBJECTVTBL; typedef OLEOBJECTVTBL* LPOLEOBJECTVTBL; @@ -243,11 +243,11 @@ typedef struct _OLEOBJECT { } OLEOBJECT; -OLESTATUS WINAPI OleRegisterServer(LPCSTR,LPOLESERVER,LHSERVER *,HINSTANCE,OLE_SERVER_USE); -OLESTATUS WINAPI OleUnblockServer(LHSERVER,BOOL *); -OLESTATUS WINAPI OleRegisterServerDoc(LHSERVER,LPCSTR,LPOLESERVERDOC,LHSERVERDOC *); -OLESTATUS WINAPI OleRegisterClientDoc(LPCSTR,LPCSTR,LONG,LHCLIENTDOC *); -OLESTATUS WINAPI OleRenameClientDoc(LHCLIENTDOC,LPCSTR); -OLESTATUS WINAPI OleRevokeServerDoc(LHSERVERDOC); -OLESTATUS WINAPI OleRevokeClientDoc(LHCLIENTDOC); -OLESTATUS WINAPI OleRevokeServer(LHSERVER); +OLESTATUS OleRegisterServer(LPCSTR,LPOLESERVER,LHSERVER *,HINSTANCE,OLE_SERVER_USE); +OLESTATUS OleUnblockServer(LHSERVER,BOOL *); +OLESTATUS OleRegisterServerDoc(LHSERVER,LPCSTR,LPOLESERVERDOC,LHSERVERDOC *); +OLESTATUS OleRegisterClientDoc(LPCSTR,LPCSTR,LONG,LHCLIENTDOC *); +OLESTATUS OleRenameClientDoc(LHCLIENTDOC,LPCSTR); +OLESTATUS OleRevokeServerDoc(LHSERVERDOC); +OLESTATUS OleRevokeClientDoc(LHCLIENTDOC); +OLESTATUS OleRevokeServer(LHSERVER); diff --git a/include/stackframe.h b/include/stackframe.h index d0c840097dc..e52eb1428b7 100644 --- a/include/stackframe.h +++ b/include/stackframe.h @@ -75,9 +75,9 @@ extern DWORD IF1632_Original32_esp; #endif SEGPTR MAKE_SEGPTR(void *ptr); #else -#define CURRENT_STACK16 error.error -#define CURRENT_DS 0 -#define MAKE_SEGPTR(ptr) ((SEGPTR)ptr) +#define CURRENT_STACK16 error.error +#define CURRENT_DS ((WORD)GetTaskDS()) +#define MAKE_SEGPTR(ptr) ((SEGPTR)ptr) #endif #endif /* WINE_STACKFRAME_H */ diff --git a/include/struct32.h b/include/struct32.h index ff53d2472e4..ea5b75b08e2 100644 --- a/include/struct32.h +++ b/include/struct32.h @@ -66,8 +66,6 @@ typedef struct { WORD id WINE_PACKED; } DLGITEMTEMPLATE32; -#define CW_USEDEFAULT32 0x80000000 - typedef struct tagMSG32 { DWORD hwnd; diff --git a/include/task.h b/include/task.h index 82bc80e4129..ce56b762f20 100644 --- a/include/task.h +++ b/include/task.h @@ -89,7 +89,7 @@ typedef struct DWORD compat_flags WINE_PACKED; /* Compatibility flags */ BYTE unused4[14]; HANDLE hPDB; /* Selector of PDB (i.e. PSP) */ - DWORD dta WINE_PACKED; /* Current DTA */ + SEGPTR dta WINE_PACKED; /* Current DTA */ BYTE curdrive; /* Current drive */ BYTE curdir[65]; /* Current directory */ WORD nCmdShow; /* cmdShow parameter to WinMain */ diff --git a/include/toolhelp.h b/include/toolhelp.h index 11e0e542ddd..e1611017b38 100644 --- a/include/toolhelp.h +++ b/include/toolhelp.h @@ -77,9 +77,8 @@ typedef struct BOOL GlobalInfo( GLOBALINFO *pInfo ); BOOL GlobalFirst( GLOBALENTRY *pGlobal, WORD wFlags ); BOOL GlobalNext( GLOBALENTRY *pGlobal, WORD wFlags) ; -BOOL GlobalEntryHandle( GLOBALENTRY *pGlobal, HGLOBAL hItem ); -BOOL GlobalEntryModule( GLOBALENTRY *pGlobal, HMODULE hModule, WORD wSeg ); -WORD GlobalHandleToSel( HGLOBAL handle ); +BOOL GlobalEntryHandle( GLOBALENTRY *pGlobal, HGLOBAL16 hItem ); +BOOL GlobalEntryModule( GLOBALENTRY *pGlobal, HMODULE16 hModule, WORD wSeg ); /* Local heap */ @@ -92,7 +91,7 @@ typedef struct typedef struct { DWORD dwSize; - HLOCAL hHandle; + HLOCAL16 hHandle; WORD wAddress; WORD wSize; WORD wFlags; @@ -333,7 +332,7 @@ struct { struct { DWORD dwSize; UINT wErrCode; - VOID FAR* lpInfo; /* depends on wErrCode */ + VOID *lpInfo; /* depends on wErrCode */ } NFYLOGERROR; /* called for parameter errors? */ @@ -342,6 +341,6 @@ struct { DWORD dwSize; UINT wErrCode; FARPROC lpfnErrorAddr; - void FAR* FAR* lpBadParam; + void **lpBadParam; } NFYLOGPARAMERROR; #endif /* __TOOLHELP_H */ diff --git a/include/user.h b/include/user.h index c17364e0b63..e4eead73b99 100644 --- a/include/user.h +++ b/include/user.h @@ -10,16 +10,6 @@ #include "ldt.h" #include "local.h" -#ifdef WINELIB - -#define USER_HEAP_ALLOC(size) LocalAlloc (LMEM_FIXED, size) -#define USER_HEAP_REALLOC(handle,size) LocalReAlloc (handle,size,LMEM_FIXED) -#define USER_HEAP_LIN_ADDR(handle) LocalLock (handle) -#define USER_HEAP_SEG_ADDR(handle) LocalLock (handle) -#define USER_HEAP_FREE(handle) LocalFree (handle) - -#else /* WINELIB */ - extern WORD USER_HeapSel; #define USER_HEAP_ALLOC(size) \ @@ -30,9 +20,12 @@ extern WORD USER_HeapSel; LOCAL_Free( USER_HeapSel, (handle) ) #define USER_HEAP_LIN_ADDR(handle) \ ((handle) ? PTR_SEG_OFF_TO_LIN(USER_HeapSel, (handle)) : NULL) + +#ifdef WINELIB +#define USER_HEAP_SEG_ADDR(handle) ((SEGPTR)(USER_HEAP_LIN_ADDR(handle))) +#else #define USER_HEAP_SEG_ADDR(handle) \ ((handle) ? MAKELONG((handle), USER_HeapSel) : 0) - #endif /* WINELIB */ #endif /* USER_H */ diff --git a/include/ver.h b/include/ver.h index e6bcd8e849b..23246033953 100644 --- a/include/ver.h +++ b/include/ver.h @@ -127,36 +127,36 @@ typedef struct tagVS_FIXEDFILEINFO { DWORD dwFileDateLS; } VS_FIXEDFILEINFO; -DWORD WINAPI +DWORD GetFileResourceSize(LPCSTR filename,SEGPTR restype,SEGPTR resid,LPDWORD off); -DWORD WINAPI +DWORD GetFileResource(LPCSTR filename,SEGPTR restype,SEGPTR resid, DWORD off,DWORD reslen,LPVOID data ); -DWORD WINAPI +DWORD GetFileVersionInfoSize(LPCSTR filename,LPDWORD handle); -DWORD WINAPI +DWORD GetFileVersionInfo(LPCSTR filename,DWORD handle,DWORD datasize,LPVOID data); -DWORD WINAPI +DWORD VerFindFile( UINT flags,LPCSTR filename,LPCSTR windir,LPCSTR appdir, LPSTR curdir,UINT *curdirlen,LPSTR destdir,UINT*destdirlen ); -DWORD WINAPI +DWORD VerInstallFile( UINT flags,LPCSTR srcfilename,LPCSTR destfilename,LPCSTR srcdir, LPCSTR destdir,LPSTR tmpfile,UINT*tmpfilelen ); -DWORD WINAPI +DWORD VerLanguageName(UINT lang,LPSTR langname,UINT langnamelen); -DWORD WINAPI +DWORD VerQueryValue(SEGPTR block,LPCSTR subblock,SEGPTR *buffer,UINT *buflen); /* diff --git a/include/winbase.h b/include/winbase.h index e913407a8f1..0eb05f59f5d 100644 --- a/include/winbase.h +++ b/include/winbase.h @@ -43,7 +43,7 @@ struct _EXCEPTION_POINTERS; typedef LONG (TOP_LEVEL_EXCEPTION_FILTER)(struct _EXCEPTION_POINTERS *); -WINAPI TOP_LEVEL_EXCEPTION_FILTER *SetUnhandledExceptionFilter(TOP_LEVEL_EXCEPTION_FILTER *func); +TOP_LEVEL_EXCEPTION_FILTER *SetUnhandledExceptionFilter(TOP_LEVEL_EXCEPTION_FILTER *func); /*WINAPI int SetErrorMode(int);*/ @@ -114,39 +114,36 @@ typedef struct { /*DWORD WINAPI GetVersion( void );*/ -int -WINAPI WinMain(HINSTANCE, HINSTANCE prev, char *cmd, int show); +int WinMain(HINSTANCE, HINSTANCE prev, char *cmd, int show); #define GMEM_FIXED 0x0000 #define GMEM_MOVEABLE 0x0002 -DECLARE_HANDLE(HACCEL); - -HACCEL WINAPI LoadAcceleratorsA( HINSTANCE, const char *); +HACCEL LoadAcceleratorsA( HINSTANCE, const char *); #define FreeModule(hLibModule) FreeLibrary((hLibModule)) #define MakeProcInstance(lpProc,hInstance) (lpProc) #define FreeProcInstance(lpProc) (lpProc) -WINAPI void DeleteCriticalSection(CRITICAL_SECTION *lpCrit); -WINAPI void EnterCriticalSection(CRITICAL_SECTION *lpCrit); -WINAPI int GetCurrentProcessId(void); -WINAPI HANDLE32 GetProcessHeap(void); -WINAPI LPVOID HeapAlloc(HANDLE32,DWORD,DWORD); -WINAPI DWORD HeapCompact(HANDLE32,DWORD); -WINAPI HANDLE32 HeapCreate(DWORD,DWORD,DWORD); -WINAPI BOOL HeapDestroy(HANDLE32); -WINAPI BOOL HeapFree(HANDLE32,DWORD,LPVOID); -WINAPI BOOL HeapLock(HANDLE32); -WINAPI LPVOID HeapReAlloc(HANDLE32,DWORD,LPVOID,DWORD); -WINAPI DWORD HeapSize(HANDLE32,DWORD,LPVOID); -WINAPI BOOL HeapUnlock(HANDLE32); -WINAPI BOOL HeapValidate(HANDLE32,DWORD,LPVOID); -WINAPI void InitializeCriticalSection(CRITICAL_SECTION *lpCrit); -WINAPI void LeaveCriticalSection(CRITICAL_SECTION *lpCrit); -WINAPI HANDLE OpenProcess(DWORD access, BOOL inherit, DWORD id); -WINAPI int TerminateProcess(HANDLE h, int ret); -WINAPI LPVOID VirtualAlloc(LPVOID addr,DWORD size,DWORD type,DWORD protect); -WINAPI BOOL VirtualFree( LPVOID addr, DWORD size, DWORD type ); +void DeleteCriticalSection(CRITICAL_SECTION *lpCrit); +void EnterCriticalSection(CRITICAL_SECTION *lpCrit); +int GetCurrentProcessId(void); +HANDLE32 GetProcessHeap(void); +LPVOID HeapAlloc(HANDLE32,DWORD,DWORD); +DWORD HeapCompact(HANDLE32,DWORD); +HANDLE32 HeapCreate(DWORD,DWORD,DWORD); +BOOL HeapDestroy(HANDLE32); +BOOL HeapFree(HANDLE32,DWORD,LPVOID); +BOOL HeapLock(HANDLE32); +LPVOID HeapReAlloc(HANDLE32,DWORD,LPVOID,DWORD); +DWORD HeapSize(HANDLE32,DWORD,LPVOID); +BOOL HeapUnlock(HANDLE32); +BOOL HeapValidate(HANDLE32,DWORD,LPVOID); +void InitializeCriticalSection(CRITICAL_SECTION *lpCrit); +void LeaveCriticalSection(CRITICAL_SECTION *lpCrit); +HANDLE OpenProcess(DWORD access, BOOL inherit, DWORD id); +int TerminateProcess(HANDLE h, int ret); +LPVOID VirtualAlloc(LPVOID addr,DWORD size,DWORD type,DWORD protect); +BOOL VirtualFree( LPVOID addr, DWORD size, DWORD type ); #endif /* __WINE_WINBASE_H */ diff --git a/include/wincon.h b/include/wincon.h index c10560cd781..bb5ffd03652 100644 --- a/include/wincon.h +++ b/include/wincon.h @@ -196,140 +196,62 @@ typedef BOOL HANDLER_ROUTINE (WORD ctrltype); #define ENABLE_WRAP_AT_EOL_OUTPUT 0x02 -BOOL WINAPI AllocConsole (VOID); - - -HANDLE WINAPI CreateConsoleScreenBuffer (DWORD access, - DWORD mode, - CONST SECURITY_ATTRIBUTES * lattr, - DWORD flags, - VOID * ptr); - -BOOL WINAPI FillConsoleOutputAttribute (HANDLE h, - WORD attr, - DWORD len, - COORD co, - DWORD * done); - -BOOL WINAPI FillConsoleOutputCharacterA (HANDLE h, - CHAR c, - DWORD len, - COORD co, - DWORD * done); - - -BOOL WINAPI FlushBuffer (HANDLE h); - -BOOL WINAPI FreeConsole (VOID); -BOOL WINAPI GenerateConsoleCtrlEvent (DWORD ev, DWORD group); -UINT WINAPI GetConsoleCP (VOID); -BOOL WINAPI GetConsoleCursorInfo (HANDLE h, CONSOLE_CURSOR_INFO *info); -BOOL WINAPI GetConsoleMode (HANDLE h, DWORD * mode); -UINT WINAPI GetConsoleOutputCP (VOID); -BOOL WINAPI GetConsoleScreenBufferInfo (HANDLE h, CONSOLE_SCREEN_BUFFER_INFO * - ptr); - -DWORD WINAPI GetConsoleTitleA (LPSTR str, DWORD len); - - -COORD WINAPI GetLargestConsoleWindowSize (HANDLE h); - -BOOL WINAPI GetNumberOfConsoleInputEvents (HANDLE h, - DWORD * n); - -BOOL WINAPI GetNumberOfConsoleMouseButtons (DWORD * n); - -BOOL WINAPI PeekConsoleInputA (HANDLE h, - INPUT_RECORD * ptr, - DWORD len, - DWORD * done); - - - -BOOL WINAPI ReadConsoleA (HANDLE h, - VOID * ptr, - DWORD len, - DWORD * done, - VOID * res); - -BOOL WINAPI ReadConsoleInputA (HANDLE h, - INPUT_RECORD * ptr, - DWORD len, - DWORD * done); - -BOOL WINAPI ReadConsoleOutputA (HANDLE h, - CHAR_INFO * ptr, - COORD size, - COORD fred, - SMALL_RECT * reg); - -BOOL WINAPI ReadConsoleOutputAttribute (HANDLE h, - WORD * attr, - DWORD len, - COORD rc, - DWORD * done); - -BOOL WINAPI ReadConsoleOutputCharacterA (HANDLE h, - LPSTR c, - DWORD len, - COORD rc, - DWORD * done); - -BOOL WINAPI ScrollConsoleScreenBufferA (HANDLE h, - CONST SMALL_RECT * sr, - CONST SMALL_RECT * cr, - COORD cpos, - CONST CHAR_INFO * i); - - -BOOL WINAPI SetConsoleActiveScreenBuffer (HANDLE h); -BOOL WINAPI SetConsoleCP (UINT i); -BOOL WINAPI SetConsoleCtrlHandler (HANDLER_ROUTINE * func, BOOL a); - -BOOL WINAPI SetConsoleCursorInfo (HANDLE h, CONST CONSOLE_CURSOR_INFO * info); - -BOOL WINAPI SetConsoleCursorPosition (HANDLE h, COORD pos); - -BOOL WINAPI SetConsoleMode (HANDLE h, DWORD mode); - -BOOL WINAPI SetConsoleOutputCP (UINT i); -BOOL WINAPI SetConsoleScreenBufferSize (HANDLE h, COORD size); -BOOL WINAPI SetConsoleTextAttribute (HANDLE h, - WORD attrs); -BOOL WINAPI SetConsoleTitleA (const char * str); - -BOOL WINAPI SetConsoleWindowInfo (HANDLE h, - BOOL abs, - CONST SMALL_RECT * wnd); - -BOOL WINAPI WriteConsoleA (HANDLE h, - CONST VOID * ptr, - DWORD slen, - DWORD * done, - VOID * res); - -BOOL WINAPI WriteConsoleInputA (HANDLE h, - CONST INPUT_RECORD * ptr, - DWORD len, - DWORD * done); - -BOOL WINAPI WriteConsoleOutputA (HANDLE h, - CONST CHAR_INFO * ptr, - COORD size, - COORD fred, - SMALL_RECT* where); - -BOOL WINAPI WriteConsoleOutputAttribute (HANDLE h, - CONST WORD *attr, - DWORD len, - COORD co, - DWORD * done); - -BOOL WINAPI WriteConsoleOutputCharacterA (HANDLE h, - const char * c, - DWORD len, - COORD co, - DWORD * done); +BOOL AllocConsole (VOID); + + +HANDLE CreateConsoleScreenBuffer (DWORD access, DWORD mode, + CONST SECURITY_ATTRIBUTES * lattr, + DWORD flags, VOID * ptr); +BOOL FillConsoleOutputAttribute (HANDLE h, WORD attr, DWORD len, + COORD co, DWORD * done); +BOOL FillConsoleOutputCharacterA (HANDLE h, CHAR c, DWORD len, + COORD co, DWORD * done); +BOOL FlushBuffer (HANDLE h); +BOOL FreeConsole (VOID); +BOOL GenerateConsoleCtrlEvent (DWORD ev, DWORD group); +UINT GetConsoleCP (VOID); +BOOL GetConsoleCursorInfo (HANDLE h, CONSOLE_CURSOR_INFO *info); +BOOL GetConsoleMode (HANDLE h, DWORD * mode); +UINT GetConsoleOutputCP (VOID); +BOOL GetConsoleScreenBufferInfo (HANDLE h, CONSOLE_SCREEN_BUFFER_INFO * ptr); +DWORD GetConsoleTitleA (LPSTR str, DWORD len); +COORD GetLargestConsoleWindowSize (HANDLE h); +BOOL GetNumberOfConsoleInputEvents (HANDLE h, DWORD * n); +BOOL GetNumberOfConsoleMouseButtons (DWORD * n); +BOOL PeekConsoleInputA (HANDLE h, INPUT_RECORD * ptr, DWORD len, DWORD * done); +BOOL ReadConsoleA (HANDLE h, VOID * ptr, DWORD len, DWORD * done, VOID * res); +BOOL ReadConsoleInputA (HANDLE h, INPUT_RECORD * ptr, DWORD len, DWORD * done); +BOOL ReadConsoleOutputA (HANDLE h, CHAR_INFO * ptr, COORD size, + COORD fred, SMALL_RECT * reg); +BOOL ReadConsoleOutputAttribute (HANDLE h, WORD * attr, DWORD len, + COORD rc, DWORD * done); +BOOL ReadConsoleOutputCharacterA (HANDLE h, LPSTR c, DWORD len, + COORD rc, DWORD * done); +BOOL ScrollConsoleScreenBufferA (HANDLE h, CONST SMALL_RECT * sr, + CONST SMALL_RECT * cr, COORD cpos, + CONST CHAR_INFO * i); +BOOL SetConsoleActiveScreenBuffer (HANDLE h); +BOOL SetConsoleCP (UINT i); +BOOL SetConsoleCtrlHandler (HANDLER_ROUTINE * func, BOOL a); +BOOL SetConsoleCursorInfo (HANDLE h, CONST CONSOLE_CURSOR_INFO * info); +BOOL SetConsoleCursorPosition (HANDLE h, COORD pos); +BOOL SetConsoleMode (HANDLE h, DWORD mode); +BOOL SetConsoleOutputCP (UINT i); +BOOL SetConsoleScreenBufferSize (HANDLE h, COORD size); +BOOL SetConsoleTextAttribute (HANDLE h, WORD attrs); +BOOL SetConsoleTitleA (const char * str); +BOOL SetConsoleWindowInfo (HANDLE h, BOOL abs, CONST SMALL_RECT * wnd); +BOOL WriteConsoleA (HANDLE h, CONST VOID * ptr, DWORD slen, + DWORD * done, VOID * res); +BOOL WriteConsoleInputA (HANDLE h, CONST INPUT_RECORD * ptr, + DWORD len, DWORD * done); +BOOL WriteConsoleOutputA (HANDLE h, CONST CHAR_INFO * ptr, + COORD size, COORD fred, + SMALL_RECT* where); +BOOL WriteConsoleOutputAttribute (HANDLE h, CONST WORD *attr, DWORD len, + COORD co, DWORD * done); +BOOL WriteConsoleOutputCharacterA (HANDLE h, const char * c, DWORD len, + COORD co, DWORD * done); #endif #endif diff --git a/include/windows.h b/include/windows.h index 3a0ff78126c..d48cd6b40d4 100644 --- a/include/windows.h +++ b/include/windows.h @@ -4,6 +4,7 @@ #define WINDOWS_H #include "wintypes.h" +#include "winuser.h" #ifndef WINELIB #pragma pack(1) @@ -42,47 +43,6 @@ typedef PAINTSTRUCT *PPAINTSTRUCT; typedef PAINTSTRUCT *NPPAINTSTRUCT; typedef PAINTSTRUCT *LPPAINTSTRUCT; - - /* Window classes */ - -typedef struct { - WORD style; - WNDPROC lpfnWndProc WINE_PACKED; - INT cbClsExtra, cbWndExtra; - HANDLE hInstance; - HICON hIcon; - HCURSOR hCursor; - HBRUSH hbrBackground; - SEGPTR lpszMenuName WINE_PACKED; - SEGPTR lpszClassName WINE_PACKED; -} WNDCLASS, *LPWNDCLASS; - -#define CS_VREDRAW 0x0001 -#define CS_HREDRAW 0x0002 -#define CS_KEYCVTWINDOW 0x0004 -#define CS_DBLCLKS 0x0008 -#define CS_OWNDC 0x0020 -#define CS_CLASSDC 0x0040 -#define CS_PARENTDC 0x0080 -#define CS_NOKEYCVT 0x0100 -#define CS_NOCLOSE 0x0200 -#define CS_SAVEBITS 0x0800 -#define CS_BYTEALIGNCLIENT 0x1000 -#define CS_BYTEALIGNWINDOW 0x2000 -#define CS_GLOBALCLASS 0x4000 - - /* Offsets for GetClassLong() and GetClassWord() */ -#define GCL_MENUNAME (-8) -#define GCW_HBRBACKGROUND (-10) -#define GCW_HCURSOR (-12) -#define GCW_HICON (-14) -#define GCW_HMODULE (-16) -#define GCW_CBWNDEXTRA (-18) -#define GCW_CBCLSEXTRA (-20) -#define GCL_WNDPROC (-24) -#define GCW_STYLE (-26) -#define GCW_ATOM (-32) - /* Windows */ typedef struct { @@ -206,8 +166,8 @@ typedef struct /* WM_NCCALCSIZE parameter structure */ typedef struct { - RECT rgrc[3]; - WINDOWPOS FAR* lppos; + RECT rgrc[3]; + SEGPTR lppos; } NCCALCSIZE_PARAMS; /* WM_NCCALCSIZE return flags */ @@ -423,8 +383,6 @@ typedef struct tagMSG POINT pt WINE_PACKED; } MSG, *LPMSG; -typedef WORD ATOM; - #define MAKEINTATOM(i) ((SEGPTR)MAKELONG((i),0)) /* Raster operations */ @@ -1224,8 +1182,7 @@ typedef struct tagDCB char EofChar; char EvtChar; UINT TxDelay WINE_PACKED; -} DCB; -typedef DCB FAR* LPDCB; +} DCB, *LPDCB; typedef struct tagCOMSTAT { @@ -1443,7 +1400,7 @@ typedef struct tagDRAGINFO { HANDLE hOfStruct; POINT pt WINE_PACKED; LONG l WINE_PACKED; -} DRAGINFO, FAR* LPDRAGINFO; +} DRAGINFO, *LPDRAGINFO; #define DRAGOBJ_PROGRAM 0x0001 #define DRAGOBJ_DATA 0x0002 @@ -1877,6 +1834,11 @@ typedef struct tagDRAGINFO { #define SW_INVALIDATE 0x0002 #define SW_ERASE 0x0003 +/* CreateWindow() coordinates */ +#define CW_USEDEFAULT16 ((INT16)0x8000) +#define CW_USEDEFAULT32 ((INT32)0x80000000) +#define CW_USEDEFAULT WINELIB_NAME(CW_USEDEFAULT) + /* Button control styles */ #define BS_PUSHBUTTON 0x00000000L #define BS_DEFPUSHBUTTON 0x00000001L @@ -2163,9 +2125,6 @@ typedef struct tagDRAGINFO { #define EM_SCROLL (WM_USER+5) #define EM_GETTHUMB (WM_USER+14) -typedef int (CALLBACK *EDITWORDBREAKPROC)(LPSTR lpch, int ichCurrent, - int cch, int code); - /* EDITWORDBREAKPROC code values */ #define WB_LEFT 0 #define WB_RIGHT 1 @@ -2193,9 +2152,7 @@ typedef struct HDC hDC; RECT rcItem WINE_PACKED; DWORD itemData WINE_PACKED; -} DRAWITEMSTRUCT; -typedef DRAWITEMSTRUCT NEAR* PDRAWITEMSTRUCT; -typedef DRAWITEMSTRUCT FAR* LPDRAWITEMSTRUCT; +} DRAWITEMSTRUCT, *PDRAWITEMSTRUCT, *LPDRAWITEMSTRUCT; typedef struct { @@ -2205,9 +2162,7 @@ typedef struct UINT itemWidth; UINT itemHeight; DWORD itemData WINE_PACKED; -} MEASUREITEMSTRUCT; -typedef MEASUREITEMSTRUCT NEAR* PMEASUREITEMSTRUCT; -typedef MEASUREITEMSTRUCT FAR* LPMEASUREITEMSTRUCT; +} MEASUREITEMSTRUCT, *PMEASUREITEMSTRUCT, *LPMEASUREITEMSTRUCT; typedef struct { @@ -2216,9 +2171,7 @@ typedef struct UINT itemID; HWND hwndItem; DWORD itemData; -} DELETEITEMSTRUCT; -typedef DELETEITEMSTRUCT NEAR* PDELETEITEMSTRUCT; -typedef DELETEITEMSTRUCT FAR* LPDELETEITEMSTRUCT; +} DELETEITEMSTRUCT, *PDELETEITEMSTRUCT, *LPDELETEITEMSTRUCT; typedef struct { @@ -2229,9 +2182,7 @@ typedef struct DWORD itemData1; UINT itemID2; DWORD itemData2 WINE_PACKED; -} COMPAREITEMSTRUCT; -typedef COMPAREITEMSTRUCT NEAR* PCOMPAREITEMSTRUCT; -typedef COMPAREITEMSTRUCT FAR* LPCOMPAREITEMSTRUCT; +} COMPAREITEMSTRUCT, *PCOMPAREITEMSTRUCT, *LPCOMPAREITEMSTRUCT; /* WM_KEYUP/DOWN/CHAR HIWORD(lParam) flags */ #define KF_EXTENDED 0x0100 @@ -2340,6 +2291,7 @@ typedef COMPAREITEMSTRUCT FAR* LPCOMPAREITEMSTRUCT; #define GMEM_LOWER GMEM_NOT_BANKED #define GMEM_DISCARDED 0x4000 #define GMEM_LOCKCOUNT 0x00ff +#define GMEM_INVALID_HANDLE 0x8000 #define GHND (GMEM_MOVEABLE | GMEM_ZEROINIT) #define GPTR (GMEM_FIXED | GMEM_ZEROINIT) @@ -2616,7 +2568,7 @@ typedef struct { #define HELP_SETWINPOS 0x0203 typedef struct { - TCHAR dmDeviceName[32]; + CHAR dmDeviceName[32]; WORD dmSpecVersion; WORD dmDriverVersion; WORD dmSize; @@ -2635,7 +2587,7 @@ typedef struct { short dmYResolution; short dmTTOption; short dmCollate; - TCHAR dmFormName[32]; + CHAR dmFormName[32]; WORD dmUnusedPadding; WORD dmBitsPerPel; DWORD dmPelsWidth; @@ -2718,7 +2670,7 @@ HBITMAP CreateCompatibleBitmap(HDC,INT,INT); HDC CreateCompatibleDC(HDC); HCURSOR CreateCursor(HANDLE,INT,INT,INT,INT,const BYTE*,const BYTE*); HANDLE CreateCursorIconIndirect(HANDLE,CURSORICONINFO*,const BYTE*,const BYTE*); -HDC CreateDC(LPCTSTR,LPCTSTR,LPCTSTR,const DEVMODE*); +HDC CreateDC(LPCSTR,LPCSTR,LPCSTR,const DEVMODE*); HBRUSH CreateDIBPatternBrush(HGLOBAL,UINT); HBITMAP CreateDIBitmap(HDC,BITMAPINFOHEADER*,DWORD,LPVOID,BITMAPINFO*,UINT); HWND CreateDialog(HINSTANCE,SEGPTR,HWND,DLGPROC); @@ -2731,23 +2683,21 @@ HRGN CreateEllipticRgnIndirect(LPRECT); HFONT CreateFont(INT,INT,INT,INT,INT,BYTE,BYTE,BYTE,BYTE,BYTE,BYTE,BYTE,BYTE,LPCSTR); HFONT CreateFontIndirect(const LOGFONT*); HBRUSH CreateHatchBrush(INT,COLORREF); -HDC CreateIC(LPCTSTR,LPCTSTR,LPCTSTR,const DEVMODE*); +HDC CreateIC(LPCSTR,LPCSTR,LPCSTR,const DEVMODE*); HICON CreateIcon(HINSTANCE,INT,INT,BYTE,BYTE,const BYTE*,const BYTE*); HMENU CreateMenu(void); -HDC CreateMetaFile(LPCTSTR); +HDC CreateMetaFile(LPCSTR); HPALETTE CreatePalette(const LOGPALETTE*); HBRUSH CreatePatternBrush(HBITMAP); HPEN CreatePen(INT,INT,COLORREF); HPEN CreatePenIndirect(const LOGPEN*); -HRGN CreatePolyPolygonRgn(const POINT*,const INT*,INT,INT); +HRGN CreatePolyPolygonRgn(const POINT*,const INT16*,INT,INT); HRGN CreatePolygonRgn(const POINT*,INT,INT); HMENU CreatePopupMenu(void); HRGN CreateRectRgn(INT,INT,INT,INT); HRGN CreateRectRgnIndirect(const RECT*); HRGN CreateRoundRectRgn(INT,INT,INT,INT,INT,INT); HBRUSH CreateSolidBrush(COLORREF); -HWND CreateWindow(SEGPTR,SEGPTR,DWORD,INT,INT,INT,INT,HWND,HMENU,HINSTANCE,SEGPTR); -HWND CreateWindowEx(DWORD,SEGPTR,SEGPTR,DWORD,INT,INT,INT,INT,HWND,HMENU,HINSTANCE,SEGPTR); BOOL DPtoLP(HDC,LPPOINT,INT); void DebugBreak(void); LRESULT DefDlgProc(HWND,UINT,WPARAM,LPARAM); @@ -2782,7 +2732,7 @@ DWORD DragObject(HWND, HWND, WORD, HANDLE, WORD, HCURSOR); void DrawFocusRect(HDC,const RECT*); BOOL DrawIcon(HDC,INT,INT,HICON); void DrawMenuBar(HWND); -INT DrawText(HDC,LPCTSTR,INT,LPRECT,UINT); +INT DrawText(HDC,LPCSTR,INT,LPRECT,UINT); DWORD DumpIcon(SEGPTR,WORD*,SEGPTR*,SEGPTR*); BOOL Ellipse(HDC,INT,INT,INT,INT); BOOL EmptyClipboard(void); @@ -2795,8 +2745,8 @@ BOOL EndDialog(HWND,INT); BOOL EndPaint(HWND,const PAINTSTRUCT*); BOOL EnumChildWindows(HWND,WNDENUMPROC,LPARAM); UINT EnumClipboardFormats(UINT); -INT EnumFontFamilies(HDC,LPCTSTR,FONTENUMPROC,LPARAM); -INT EnumFonts(HDC,LPCTSTR,FONTENUMPROC,LPARAM); +INT EnumFontFamilies(HDC,LPCSTR,FONTENUMPROC,LPARAM); +INT EnumFonts(HDC,LPCSTR,FONTENUMPROC,LPARAM); BOOL EnumMetaFile(HDC,HMETAFILE,MFENUMPROC,LPARAM); INT EnumObjects(HDC,INT,GOBJENUMPROC,LPARAM); INT EnumProps(HWND,PROPENUMPROC); @@ -2811,7 +2761,7 @@ int ExcludeUpdateRgn(HDC,HWND); int ExcludeVisRect(HDC,short,short,short,short); BOOL ExitWindows(DWORD,WORD); BOOL ExtFloodFill(HDC,INT,INT,COLORREF,WORD); -BOOL ExtTextOut(HDC,short,short,WORD,LPRECT,LPSTR,WORD,LPINT); +BOOL ExtTextOut(HDC,short,short,WORD,LPRECT,LPSTR,WORD,LPINT16); HICON ExtractIcon(HINSTANCE,LPCSTR,WORD); WORD FarGetOwner(HANDLE); void FarSetOwner(HANDLE,HANDLE); @@ -2824,6 +2774,7 @@ ATOM FindAtom(SEGPTR); HINSTANCE FindExecutable(LPCSTR,LPCSTR,LPSTR); HRSRC FindResource(HINSTANCE,SEGPTR,SEGPTR); HWND FindWindow(SEGPTR,LPSTR); +HWND FindWindowEx(HWND,HWND,SEGPTR,LPSTR); BOOL FlashWindow(HWND,BOOL); BOOL FloodFill(HDC,INT,INT,COLORREF); int FlushComm(int,int); @@ -2852,10 +2803,7 @@ HWND GetCapture(void); WORD GetCaretBlinkTime(void); void GetCaretPos(LPPOINT); BOOL GetCharABCWidths(HDC,UINT,UINT,LPABC); -BOOL GetCharWidth(HDC,WORD,WORD,LPINT); -BOOL GetClassInfo(HANDLE,SEGPTR,LPWNDCLASS); -LONG GetClassLong(HWND,short); -int GetClassName(HWND,LPSTR,short); +BOOL GetCharWidth(HDC,WORD,WORD,LPINT16); WORD GetClassWord(HWND,short); void GetClientRect(HWND,LPRECT); int GetClipBox(HDC,LPRECT); @@ -2897,7 +2845,7 @@ WORD GetDriveType(INT); int GetEnvironment(LPSTR,LPSTR,WORD); HMODULE GetExePtr(HANDLE); HWND GetFocus(void); -DWORD GetFreeSpace(WORD); +DWORD GetFreeSpace(UINT16); DWORD GetHeapSpaces(HMODULE); BOOL GetInputState(void); int GetInstanceData(HANDLE,WORD,int); @@ -2952,7 +2900,7 @@ WORD GetROP2(HDC); WORD GetRelAbs(HDC); int GetRgnBox(HRGN,LPRECT); int GetScrollPos(HWND,int); -void GetScrollRange(HWND,int,LPINT,LPINT); +void GetScrollRange(HWND,int,LPINT16,LPINT16); DWORD GetSelectorBase(WORD); DWORD GetSelectorLimit(WORD); HANDLE GetStockObject(int); @@ -2966,7 +2914,7 @@ int GetSystemMetrics(WORD); WORD GetSystemPaletteEntries(HDC,WORD,WORD,LPPALETTEENTRY); WORD GetSystemPaletteUse(HDC); VOID GetSystemTime(LPSYSTEMTIME); /* Win32 */ -DWORD GetTabbedTextExtent(HDC,LPSTR,int,int,LPINT); +DWORD GetTabbedTextExtent(HDC,LPSTR,int,int,LPINT16); HINSTANCE GetTaskDS(void); HQUEUE GetTaskQueue(HTASK); BYTE GetTempDrive(BYTE); @@ -2978,7 +2926,7 @@ DWORD GetTextExtent(HDC,LPCSTR,short); BOOL GetTextExtentPoint(HDC,LPCSTR,short,LPSIZE); INT GetTextFace(HDC,INT,LPSTR); BOOL GetTextMetrics(HDC,LPTEXTMETRIC); -LPINT GetThresholdEvent(void); +LPINT16 GetThresholdEvent(void); int GetThresholdStatus(void); DWORD GetTickCount(void); HWND GetTopWindow(HWND); @@ -3006,34 +2954,21 @@ int GetWindowTextLength(HWND); WORD GetWindowWord(HWND,short); UINT GetWindowsDirectory(LPSTR,UINT); ATOM GlobalAddAtom(SEGPTR); -HGLOBAL GlobalAlloc(WORD,DWORD); -DWORD GlobalCompact(DWORD); DWORD GlobalDOSAlloc(DWORD); WORD GlobalDOSFree(WORD); ATOM GlobalDeleteAtom(ATOM); ATOM GlobalFindAtom(SEGPTR); -void GlobalFix(HGLOBAL); -WORD GlobalFlags(HGLOBAL); -HGLOBAL GlobalFree(HGLOBAL); -void GlobalFreeAll(HANDLE); +void GlobalFix(HGLOBAL16); +void GlobalFreeAll(HGLOBAL16); WORD GlobalGetAtomName(ATOM,LPSTR,short); -#ifdef WINELIB32 -HGLOBAL GlobalHandle(LPCVOID); /* Win32 */ -#else -DWORD GlobalHandle(UINT); /* Win16 */ -#endif -HGLOBAL GlobalLRUNewest(HGLOBAL); -HGLOBAL GlobalLRUOldest(HGLOBAL); -LPVOID GlobalLock(HGLOBAL); +HGLOBAL16 GlobalLRUNewest(HGLOBAL16); +HGLOBAL16 GlobalLRUOldest(HGLOBAL16); void GlobalNotify(FARPROC); -WORD GlobalPageLock(HGLOBAL); -WORD GlobalPageUnlock(HGLOBAL); -HGLOBAL GlobalReAlloc(HGLOBAL,DWORD,WORD); -DWORD GlobalSize(HGLOBAL); -BOOL GlobalUnWire(HGLOBAL); -void GlobalUnfix(HGLOBAL); -BOOL GlobalUnlock(HGLOBAL); -SEGPTR GlobalWire(HGLOBAL); +WORD GlobalPageLock(HGLOBAL16); +WORD GlobalPageUnlock(HGLOBAL16); +BOOL GlobalUnWire(HGLOBAL16); +void GlobalUnfix(HGLOBAL16); +SEGPTR GlobalWire(HGLOBAL16); BOOL GrayString(HDC,HBRUSH,FARPROC,LPARAM,INT,INT,INT,INT,INT); void HideCaret(HWND); BOOL HiliteMenuItem(HWND,HMENU,UINT,UINT); @@ -3089,18 +3024,8 @@ HMENU LoadMenuIndirect(SEGPTR); HANDLE LoadModule(LPCSTR,LPVOID); HGLOBAL LoadResource(HINSTANCE,HRSRC); int LoadString(HANDLE,WORD,LPSTR,int); -HANDLE LocalAlloc(WORD,WORD); -UINT LocalCompact(WORD); -UINT LocalFlags(HLOCAL); -HANDLE LocalFree(HANDLE); -HANDLE LocalHandle(WORD); BOOL LocalInit(HANDLE,WORD,WORD); -NPVOID LocalLock(HLOCAL); FARPROC LocalNotify(FARPROC); -HANDLE LocalReAlloc(HANDLE,WORD,WORD); -UINT LocalShrink(HANDLE,WORD); -UINT LocalSize(HLOCAL); -BOOL LocalUnlock(HANDLE); LPVOID LockResource(HGLOBAL); HGLOBAL LockSegment(HGLOBAL); HMENU LookupMenuHandle(HMENU,INT); @@ -3114,7 +3039,6 @@ BOOL ModifyMenu(HMENU,UINT,UINT,UINT,SEGPTR); DWORD MoveTo(HDC,short,short); BOOL MoveToEx(HDC,short,short,LPPOINT); BOOL MoveWindow(HWND,short,short,short,short,BOOL); -INT MulDiv(INT,INT,INT); DWORD OemKeyScan(WORD); BOOL OemToAnsi(LPSTR,LPSTR); void OemToAnsiBuff(LPSTR,LPSTR,INT); @@ -3130,7 +3054,7 @@ int OpenComm(LPCSTR,UINT,UINT); HFILE OpenFile(LPCSTR,OFSTRUCT*,UINT); BOOL OpenIcon(HWND); int OpenSound(void); -void OutputDebugString(LPSTR); +void OutputDebugString(LPCSTR); void PaintRect(HWND,HWND,HDC,HBRUSH,LPRECT); BOOL PaintRgn(HDC,HRGN); BOOL PatBlt(HDC,short,short,short,short,DWORD); @@ -3138,7 +3062,7 @@ BOOL PeekMessage(LPMSG,HWND,WORD,WORD,WORD); BOOL Pie(HDC,INT,INT,INT,INT,INT,INT,INT,INT); BOOL PlayMetaFile(HDC,HANDLE); void PlayMetaFileRecord(HDC,LPHANDLETABLE,LPMETARECORD,WORD); -BOOL PolyPolygon(HDC,LPPOINT,LPINT,WORD); +BOOL PolyPolygon(HDC,LPPOINT,LPINT16,WORD); BOOL Polygon(HDC,LPPOINT,int); BOOL Polyline(HDC,LPPOINT,int); BOOL PostAppMessage(HANDLE,WORD,WORD,LONG); @@ -3212,7 +3136,6 @@ DWORD RegQueryInfoKeyW(HKEY,LPWSTR,LPDWORD,LPDWORD,LPDWORD,LPDWORD, LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPDWORD,FILETIME*); DWORD RegQueryInfoKeyA(HKEY,LPSTR,LPDWORD,LPDWORD,LPDWORD,LPDWORD, LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPDWORD,FILETIME*); -ATOM RegisterClass(LPWNDCLASS); WORD RegisterClipboardFormat(LPCSTR); WORD RegisterWindowMessage(SEGPTR); void ReleaseCapture(void); @@ -3254,7 +3177,6 @@ DWORD SetBrushOrg(HDC,short,short); HWND SetCapture(HWND); void SetCaretBlinkTime(WORD); void SetCaretPos(short,short); -LONG SetClassLong(HWND,short,LONG); WORD SetClassWord(HWND,short,WORD); HANDLE SetClipboardData(WORD,HANDLE); HWND SetClipboardViewer(HWND); @@ -3303,7 +3225,7 @@ WORD SetSelectorLimit(WORD,DWORD); int SetSoundNoise(int,int); WORD SetStretchBltMode(HDC,WORD); LONG SetSwapAreaSize(WORD); -void SetSysColors(int,LPINT,COLORREF*); +void SetSysColors(int,LPINT16,COLORREF*); HWND SetSysModalWindow(HWND); WORD SetSystemPaletteUse(HDC,WORD); WORD SetSystemTimer(HWND,WORD,WORD,FARPROC); @@ -3354,7 +3276,7 @@ void SwitchStackBack(void); void SwitchStackTo(WORD,WORD,WORD); int SyncAllVoices(void); BOOL SystemParametersInfo(UINT,UINT,LPVOID,UINT); -LONG TabbedTextOut(HDC,short,short,LPSTR,short,short,LPINT,short); +LONG TabbedTextOut(HDC,short,short,LPSTR,short,short,LPINT16,short); BOOL TextOut(HDC,short,short,LPSTR,short); int Throw(LPCATCHBUF,int); int ToAscii(WORD,WORD,LPSTR,LPVOID,WORD); @@ -3369,7 +3291,6 @@ BOOL UnhookWindowsHookEx(HHOOK); BOOL UnionRect(LPRECT,LPRECT,LPRECT); void UnlockSegment(HGLOBAL); BOOL UnrealizeObject(HBRUSH); -BOOL UnregisterClass(SEGPTR,HANDLE); int UpdateColors(HDC); void UpdateWindow(HWND); void ValidateCodeSegments(void); @@ -3377,7 +3298,7 @@ LPSTR ValidateFreeSpaces(void); void ValidateRect(HWND,LPRECT); void ValidateRgn(HWND,HRGN); WORD VkKeyScan(WORD); -SEGPTR WIN16_GlobalLock(HGLOBAL); +SEGPTR WIN16_GlobalLock16(HGLOBAL16); SEGPTR WIN16_LockResource(HANDLE); SEGPTR WIN16_lstrcpyn(SEGPTR,SEGPTR,WORD); void WaitMessage(void); @@ -3407,7 +3328,85 @@ SEGPTR lstrcpy(SEGPTR,SEGPTR); LPSTR lstrcpyn(LPSTR,LPCSTR,int); INT lstrlen(LPCSTR); int wsprintf(LPSTR,LPSTR,...); -int wvsprintf(LPSTR,LPSTR,LPSTR); +int wvsprintf(LPSTR,LPCSTR,LPCSTR); + + +/* Declarations for functions that exist both in Win16 and Win32 */ + +HWND CreateWindow16(SEGPTR,SEGPTR,DWORD,INT16,INT16,INT16,INT16,HWND,HMENU,HINSTANCE,SEGPTR); +#define CreateWindow32A(className,titleName,style,x,y,width,height,\ + parent,menu,instance,param) \ + CreateWindowEx32A(0,className,titleName,style,x,y,width,height,\ + parent,menu,instance,param) +#define CreateWindow32W(className,titleName,style,x,y,width,height,\ + parent,menu,instance,param) \ + CreateWindowEx32W(0,className,titleName,style,x,y,width,height,\ + parent,menu,instance,param) +#define CreateWindow WINELIB_NAME_AW(CreateWindow) +HWND CreateWindowEx16(DWORD,SEGPTR,SEGPTR,DWORD,INT16,INT16,INT16,INT16,HWND,HMENU,HINSTANCE,SEGPTR); +HWND32 CreateWindowEx32A(DWORD,LPCSTR,LPCSTR,DWORD,INT32,INT32,INT32,INT32,HWND32,HMENU32,HINSTANCE32,LPVOID); +HWND32 CreateWindowEx32W(DWORD,LPCWSTR,LPCWSTR,DWORD,INT32,INT32,INT32,INT32,HWND32,HMENU32,HINSTANCE32,LPVOID); +#define CreateWindowEx WINELIB_NAME_AW(CreateWindowEx) +HGLOBAL16 GlobalAlloc16(UINT16,DWORD); +HGLOBAL32 GlobalAlloc32(UINT32,DWORD); +#define GlobalAlloc WINELIB_NAME(GlobalAlloc) +DWORD GlobalCompact16(DWORD); +DWORD GlobalCompact32(DWORD); +#define GlobalCompact WINELIB_NAME(GlobalCompact) +UINT16 GlobalFlags16(HGLOBAL16); +UINT32 GlobalFlags32(HGLOBAL32); +#define GlobalFlags WINELIB_NAME(GlobalFlags) +HGLOBAL16 GlobalFree16(HGLOBAL16); +HGLOBAL32 GlobalFree32(HGLOBAL32); +#define GlobalFree WINELIB_NAME(GlobalFree) +DWORD GlobalHandle16(WORD); +HGLOBAL32 GlobalHandle32(LPCVOID); +#define GlobalHandle WINELIB_NAME(GlobalHandle) +LPVOID GlobalLock16(HGLOBAL16); +LPVOID GlobalLock32(HGLOBAL32); +#define GlobalLock WINELIB_NAME(GlobalLock) +HGLOBAL16 GlobalReAlloc16(HGLOBAL16,DWORD,UINT16); +HGLOBAL32 GlobalReAlloc32(HGLOBAL32,DWORD,UINT32); +#define GlobalReAlloc WINELIB_NAME(GlobalReAlloc) +DWORD GlobalSize16(HGLOBAL16); +DWORD GlobalSize32(HGLOBAL32); +#define GlobalSize WINELIB_NAME(GlobalSize) +BOOL GlobalUnlock16(HGLOBAL16); +BOOL GlobalUnlock32(HGLOBAL32); +#define GlobalUnlock WINELIB_NAME(GlobalUnlock) +HLOCAL16 LocalAlloc16(UINT16,WORD); +HLOCAL32 LocalAlloc32(UINT32,DWORD); +#define LocalAlloc WINELIB_NAME(LocalAlloc) +UINT16 LocalCompact16(UINT16); +UINT32 LocalCompact32(UINT32); +#define LocalCompact WINELIB_NAME(LocalCompact) +UINT16 LocalFlags16(HLOCAL16); +UINT32 LocalFlags32(HLOCAL32); +#define LocalFlags WINELIB_NAME(LocalFlags) +HLOCAL16 LocalFree16(HLOCAL16); +HLOCAL32 LocalFree32(HLOCAL32); +#define LocalFree WINELIB_NAME(LocalFree) +HLOCAL16 LocalHandle16(WORD); +HLOCAL32 LocalHandle32(LPCVOID); +#define LocalHandle WINELIB_NAME(LocalHandle) +SEGPTR LocalLock16(HLOCAL16); +LPVOID LocalLock32(HLOCAL32); +#define LocalLock WINELIB_NAME(LocalLock) +HLOCAL16 LocalReAlloc16(HLOCAL16,WORD,UINT16); +HLOCAL32 LocalReAlloc32(HLOCAL32,DWORD,UINT32); +#define LocalReAlloc WINELIB_NAME(LocalReAlloc) +UINT16 LocalShrink16(HGLOBAL16,UINT16); +UINT32 LocalShrink32(HGLOBAL32,UINT32); +#define LocalShrink WINELIB_NAME(LocalShrink) +UINT16 LocalSize16(HLOCAL16); +UINT32 LocalSize32(HLOCAL32); +#define LocalSize WINELIB_NAME(LocalSize) +BOOL LocalUnlock16(HLOCAL16); +BOOL LocalUnlock32(HLOCAL32); +#define LocalUnlock WINELIB_NAME(LocalUnlock) +INT16 MulDiv16(INT16,INT16,INT16); +INT32 MulDiv32(INT32,INT32,INT32); +#define MulDiv WINELIB_NAME(MulDiv) #ifdef WINELIB #define WINELIB_UNIMP(x) fprintf (stderr, "WineLib: Unimplemented %s\n", x) diff --git a/include/winpos.h b/include/winpos.h index 4ec73192d28..94d2dc53a39 100644 --- a/include/winpos.h +++ b/include/winpos.h @@ -37,7 +37,7 @@ extern BOOL WINPOS_SetActiveWindow( HWND hWnd, BOOL fMouse, BOOL fChangeFocus); extern BOOL WINPOS_ChangeActiveWindow( HWND hwnd, BOOL mouseMsg ); extern LONG WINPOS_SendNCCalcSize( HWND hwnd, BOOL calcValidRect, RECT *newWindowRect, RECT *oldWindowRect, - RECT *oldClientRect, WINDOWPOS *winpos, + RECT *oldClientRect, SEGPTR winpos, RECT *newClientRect ); extern LONG WINPOS_HandleWindowPosChanging( WINDOWPOS *winpos ); extern INT WINPOS_WindowFromPoint( POINT pt, WND **ppWnd ); diff --git a/include/winsock.h b/include/winsock.h index 4fbfb1d5ceb..c22e2e16c64 100644 --- a/include/winsock.h +++ b/include/winsock.h @@ -22,7 +22,7 @@ */ typedef u_int SOCKET; -extern int PASCAL FAR __WSAFDIsSet(SOCKET, fd_set FAR *); +extern int __WSAFDIsSet(SOCKET, fd_set *); /* * Internet address (old style... should be updated) @@ -46,10 +46,8 @@ typedef struct WSAData { char szSystemStatus[WSASYS_STATUS_LEN+1]; unsigned short iMaxSockets; unsigned short iMaxUdpDg; - char FAR * lpVendorInfo; -} WSADATA; - -typedef WSADATA FAR *LPWSADATA; + char *lpVendorInfo; +} WSADATA, *LPWSADATA; /* * This is used instead of -1, since the @@ -192,91 +190,44 @@ extern "C" { /* Microsoft Windows Extension function prototypes */ -INT PASCAL FAR WSAStartup(WORD wVersionRequired, LPWSADATA lpWSAData); - -INT PASCAL FAR WSACleanup(void); - -void PASCAL FAR WSASetLastError(INT iError); - -INT PASCAL FAR WSAGetLastError(void); - -BOOL PASCAL FAR WSAIsBlocking(void); - -INT PASCAL FAR WSAUnhookBlockingHook(void); - -FARPROC PASCAL FAR WSASetBlockingHook(FARPROC lpBlockFunc); - -INT PASCAL FAR WSACancelBlockingCall(void); - -HANDLE PASCAL FAR WSAAsyncGetServByName(HWND hWnd, u_int wMsg, - const char FAR *name, - const char FAR *proto, - char FAR *buf, INT buflen); - -HANDLE PASCAL FAR WSAAsyncGetServByPort(HWND hWnd, u_int wMsg, INT port, - const char FAR *proto, char FAR *buf, - INT buflen); - -HANDLE PASCAL FAR WSAAsyncGetProtoByName(HWND hWnd, u_int wMsg, - const char FAR *name, char FAR *buf, - INT buflen); - -HANDLE PASCAL FAR WSAAsyncGetProtoByNumber(HWND hWnd, u_int wMsg, - INT number, char FAR *buf, - INT buflen); - -HANDLE PASCAL FAR WSAAsyncGetHostByName(HWND hWnd, u_int wMsg, - const char FAR *name, char FAR *buf, - INT buflen); - -HANDLE PASCAL FAR WSAAsyncGetHostByAddr(HWND hWnd, u_int wMsg, - const char FAR *addr, INT len, INT type, - char FAR *buf, INT buflen); - -INT PASCAL FAR WSACancelAsyncRequest(HANDLE hAsyncTaskHandle); - -INT PASCAL FAR WSAAsyncSelect(SOCKET s, HWND hWnd, u_int wMsg, long lEvent); +INT WSAStartup(WORD wVersionRequired, LPWSADATA lpWSAData); +INT WSACleanup(void); +void WSASetLastError(INT iError); +INT WSAGetLastError(void); +BOOL WSAIsBlocking(void); +INT WSAUnhookBlockingHook(void); +FARPROC WSASetBlockingHook(FARPROC lpBlockFunc); +INT WSACancelBlockingCall(void); +HANDLE WSAAsyncGetServByName(HWND hWnd, u_int wMsg, + LPCSTR name, LPCSTR proto, + LPSTR buf, INT buflen); +HANDLE WSAAsyncGetServByPort(HWND hWnd, u_int wMsg, INT port, + LPCSTR proto, LPSTR buf, INT buflen); +HANDLE WSAAsyncGetProtoByName(HWND hWnd, u_int wMsg, + LPCSTR name, LPSTR buf, INT buflen); +HANDLE WSAAsyncGetProtoByNumber(HWND hWnd, u_int wMsg, + INT number, LPSTR buf, INT buflen); +HANDLE WSAAsyncGetHostByName(HWND hWnd, u_int wMsg, + LPCSTR name, LPSTR buf, INT buflen); +HANDLE WSAAsyncGetHostByAddr(HWND hWnd, u_int wMsg, LPCSTR addr, INT len, + INT type, LPSTR buf, INT buflen); +INT WSACancelAsyncRequest(HANDLE hAsyncTaskHandle); +INT WSAAsyncSelect(SOCKET s, HWND hWnd, u_int wMsg, long lEvent); #ifdef __cplusplus } #endif /* Microsoft Windows Extended data types */ -typedef struct sockaddr SOCKADDR; -typedef struct sockaddr *PSOCKADDR; -typedef struct sockaddr FAR *LPSOCKADDR; - -typedef struct sockaddr_in SOCKADDR_IN; -typedef struct sockaddr_in *PSOCKADDR_IN; -typedef struct sockaddr_in FAR *LPSOCKADDR_IN; - -typedef struct linger LINGER; -typedef struct linger *PLINGER; -typedef struct linger FAR *LPLINGER; - -typedef struct in_addr IN_ADDR; -typedef struct in_addr *PIN_ADDR; -typedef struct in_addr FAR *LPIN_ADDR; - -typedef struct fd_set FD_SET; -typedef struct fd_set *PFD_SET; -typedef struct fd_set FAR *LPFD_SET; - -typedef struct hostent HOSTENT; -typedef struct hostent *PHOSTENT; -typedef struct hostent FAR *LPHOSTENT; - -typedef struct servent SERVENT; -typedef struct servent *PSERVENT; -typedef struct servent FAR *LPSERVENT; - -typedef struct protoent PROTOENT; -typedef struct protoent *PPROTOENT; -typedef struct protoent FAR *LPPROTOENT; - -typedef struct timeval TIMEVAL; -typedef struct timeval *PTIMEVAL; -typedef struct timeval FAR *LPTIMEVAL; +typedef struct sockaddr SOCKADDR, *PSOCKADDR, *LPSOCKADDR; +typedef struct sockaddr_in SOCKADDR_IN, *PSOCKADDR_IN, *LPSOCKADDR_IN; +typedef struct linger LINGER, *PLINGER, *LPLINGER; +typedef struct in_addr IN_ADDR, *PIN_ADDR, *LPIN_ADDR; +typedef struct fd_set FD_SET, *PFD_SET, *LPFD_SET; +typedef struct hostent HOSTENT, *PHOSTENT, *LPHOSTENT; +typedef struct servent SERVENT, *PSERVENT, *LPSERVENT; +typedef struct protoent PROTOENT, *PPROTOENT, *LPPROTOENT; +typedef struct timeval TIMEVAL, *PTIMEVAL, *LPTIMEVAL; /* * Windows message parameter composition and decomposition diff --git a/include/wintypes.h b/include/wintypes.h index afce262e75b..a9bbe794c06 100644 --- a/include/wintypes.h +++ b/include/wintypes.h @@ -1,3 +1,9 @@ +/* + * Basic types definitions + * + * Copyright 1996 Alexandre Julliard + */ + #ifndef __WINE_WINTYPES_H #define __WINE_WINTYPES_H @@ -19,70 +25,99 @@ # endif #endif -typedef short INT16; -typedef unsigned short UINT16; -typedef int INT32; -typedef unsigned int UINT32; - -typedef unsigned short WORD; -typedef unsigned long DWORD; -typedef unsigned short BOOL; -typedef unsigned char BYTE; -typedef long LONG; -typedef unsigned char CHAR; +/* Macros to map Winelib names to the correct implementation name */ +/* depending on WINELIB16, WINELIB32 and UNICODE macros. */ + +#ifdef WINELIB +# ifdef WINELIB32 +# define WINELIB_NAME(func) func##32 +# ifdef UNICODE +# define WINELIB_NAME_AW(func) func##32W +# else +# define WINELIB_NAME_AW(func) func##32A +# endif /* UNICODE */ +# else /* WINELIB32 */ +# define WINELIB_NAME(func) func##16 +# define WINELIB_NAME_AW(func) func##16 +# endif /* WINELIB32 */ +#else /* WINELIB */ +# define WINELIB_NAME(func) /* nothing */ +# define WINELIB_NAME_AW(func) /* nothing */ +#endif /* WINELIB */ + +#ifdef WINELIB +# define DECL_WINELIB_TYPE(type) typedef WINELIB_NAME(type) type +# define DECL_WINELIB_TYPE_AW(type) typedef WINELIB_NAME_AW(type) type +#else /* WINELIB */ +# define DECL_WINELIB_TYPE(type) /* nothing */ +# define DECL_WINELIB_TYPE_AW(type) /* nothing */ +#endif /* WINELIB */ + +/* Standard data types. These are the same for emulator and library. */ + +typedef void VOID; +typedef short INT16; +typedef unsigned short UINT16; +typedef int INT32; +typedef unsigned int UINT32; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef unsigned short BOOL; +typedef unsigned char BYTE; +typedef long LONG; +typedef char CHAR; /* Some systems might have wchar_t, but we really need 16 bit characters */ -typedef unsigned short WCHAR; +typedef unsigned short WCHAR; -#ifdef WINELIB32 -typedef int INT; -typedef unsigned int UINT; -typedef char TCHAR; /* Should probably eventually be unsigned short */ -typedef void* NPVOID; +/* Handles types. These are the same for emulator and library. */ + +typedef UINT16 HANDLE16; +typedef UINT32 HANDLE32; +typedef UINT16 WPARAM16; +typedef UINT32 WPARAM32; +typedef LONG LPARAM; +typedef LONG LRESULT; +typedef WORD ATOM; +typedef WORD CATCHBUF[9]; +typedef WORD *LPCATCHBUF; +typedef DWORD ACCESS_MASK; +typedef ACCESS_MASK REGSAM; +typedef INT16 HFILE; +typedef HANDLE32 HHOOK; +typedef HANDLE32 HKEY; + +/* Pointers types. These are the same for emulator and library. */ + +typedef CHAR *LPSTR; +typedef const CHAR *LPCSTR; +typedef WCHAR *LPWSTR; +typedef const WCHAR *LPCWSTR; +typedef BYTE *LPBYTE; +typedef WORD *LPWORD; +typedef DWORD *LPDWORD; +typedef LONG *LPLONG; +typedef VOID *LPVOID; +typedef const VOID *LPCVOID; +typedef INT16 *LPINT16; +typedef UINT16 *LPUINT16; +typedef INT32 *LPINT32; +typedef UINT32 *LPUINT32; +typedef HKEY *LPHKEY; + +/* Special case: a segmented pointer is just a pointer in the library. */ + +#ifdef WINELIB typedef void* SEGPTR; -#else /* WINELIB32 */ -typedef short INT; -typedef unsigned short UINT; -typedef char TCHAR; /* TCHAR is just char in Win16 */ -typedef WORD NPVOID; +#else /* WINELIB */ typedef DWORD SEGPTR; -#endif /* WINELIB32 */ - -typedef UINT16 HANDLE16; -typedef UINT32 HANDLE32; -typedef UINT HANDLE; -typedef UINT WPARAM; -typedef LONG LPARAM; -typedef LONG LRESULT; -typedef INT HFILE; -typedef DWORD HHOOK; -typedef char *LPSTR; -typedef BYTE *LPBYTE; -typedef const char *LPCSTR; -typedef TCHAR *LPTSTR; -typedef const TCHAR *LPCTSTR; -typedef WCHAR *LPWSTR; -typedef const WCHAR *LPCWSTR; -typedef char *NPSTR; -typedef INT *LPINT; -typedef UINT *LPUINT; -typedef WORD *LPWORD; -typedef DWORD *LPDWORD; -typedef LONG *LPLONG; -typedef void *LPVOID; -typedef const void *LPCVOID; -typedef WORD CATCHBUF[9]; -typedef WORD *LPCATCHBUF; -typedef DWORD ACCESS_MASK; -typedef ACCESS_MASK REGSAM; - -#define DECLARE_HANDLE(a) \ - typedef HANDLE a; \ - typedef HANDLE16 a##16; \ - typedef HANDLE32 a##32; +#endif /* WINELIB */ +/* Handle types that exist both in Win16 and Win32. */ + +#define DECLARE_HANDLE(a) typedef HANDLE16 a##16; typedef HANDLE32 a##32; +DECLARE_HANDLE(HACCEL); DECLARE_HANDLE(HBITMAP); DECLARE_HANDLE(HBRUSH); -DECLARE_HANDLE(HCLASS); DECLARE_HANDLE(HCURSOR); DECLARE_HANDLE(HDC); DECLARE_HANDLE(HDROP); @@ -96,6 +131,10 @@ DECLARE_HANDLE(HINSTANCE); DECLARE_HANDLE(HLOCAL); DECLARE_HANDLE(HMENU); DECLARE_HANDLE(HMETAFILE); +DECLARE_HANDLE(HMIDI); +DECLARE_HANDLE(HMIDIIN); +DECLARE_HANDLE(HMIDIOUT); +DECLARE_HANDLE(HMMIO); DECLARE_HANDLE(HMODULE); DECLARE_HANDLE(HPALETTE); DECLARE_HANDLE(HPEN); @@ -103,69 +142,207 @@ DECLARE_HANDLE(HQUEUE); DECLARE_HANDLE(HRGN); DECLARE_HANDLE(HRSRC); DECLARE_HANDLE(HTASK); +DECLARE_HANDLE(HWAVE); +DECLARE_HANDLE(HWAVEIN); +DECLARE_HANDLE(HWAVEOUT); DECLARE_HANDLE(HWND); -DECLARE_HANDLE(LOCALHANDLE); -#ifdef WINELIB32 -DECLARE_HANDLE(HKEY); +#undef DECLARE_HANDLE + +/* Callback function pointers types for Win16. */ + +#ifdef WINELIB +typedef LRESULT (*WNDPROC16)(HWND16,UINT16,WPARAM16,LPARAM); +typedef LRESULT (*FARPROC16)(); #else -typedef DWORD HKEY; +/* Function pointers are SEGPTR in Win16 */ +typedef SEGPTR FARPROC16; +typedef SEGPTR WNDPROC16; #endif -typedef HKEY* LPHKEY; -typedef HGLOBAL GLOBALHANDLE; + +/* Callback function pointers types for Win32. */ + +typedef LRESULT (*FARPROC32)(); +typedef LRESULT (*WNDPROC32)(HWND32,UINT32,WPARAM32,LPARAM); + +/* TCHAR data types definitions for Winelib. */ +/* These types are _not_ defined for the emulator, because they */ +/* depend on the UNICODE macro that only exists in user's code. */ #ifdef WINELIB -typedef long (*FARPROC)(); -typedef LRESULT (*WNDPROC)(HWND,UINT,WPARAM,LPARAM); -typedef LRESULT (*WNDENUMPROC)(HWND,LPARAM); +# if defined(WINELIB32) && defined(UNICODE) +typedef WCHAR TCHAR; +typedef LPWSTR LPTSTR; +typedef LPCWSTR LPCTSTR; +# else /* WINELIB32 && UNICODE */ +typedef CHAR TCHAR; +typedef LPSTR LPTSTR; +typedef LPCSTR LPCTSTR; +# endif /* WINELIB32 && UNICODE */ +#endif /* WINELIB */ + +/* Data types specific to the library. These do _not_ exist in the emulator. */ + +DECL_WINELIB_TYPE(INT); +DECL_WINELIB_TYPE(LPINT); +DECL_WINELIB_TYPE(LPUINT); +DECL_WINELIB_TYPE(UINT); +DECL_WINELIB_TYPE(WPARAM); + +DECL_WINELIB_TYPE(HACCEL); +DECL_WINELIB_TYPE(HANDLE); +DECL_WINELIB_TYPE(HBITMAP); +DECL_WINELIB_TYPE(HBRUSH); +DECL_WINELIB_TYPE(HCURSOR); +DECL_WINELIB_TYPE(HDC); +DECL_WINELIB_TYPE(HDROP); +DECL_WINELIB_TYPE(HDRVR); +DECL_WINELIB_TYPE(HDWP); +DECL_WINELIB_TYPE(HFONT); +DECL_WINELIB_TYPE(HGDIOBJ); +DECL_WINELIB_TYPE(HGLOBAL); +DECL_WINELIB_TYPE(HICON); +DECL_WINELIB_TYPE(HINSTANCE); +DECL_WINELIB_TYPE(HLOCAL); +DECL_WINELIB_TYPE(HMENU); +DECL_WINELIB_TYPE(HMETAFILE); +DECL_WINELIB_TYPE(HMIDI); +DECL_WINELIB_TYPE(HMIDIIN); +DECL_WINELIB_TYPE(HMIDIOUT); +DECL_WINELIB_TYPE(HMMIO); +DECL_WINELIB_TYPE(HMODULE); +DECL_WINELIB_TYPE(HPALETTE); +DECL_WINELIB_TYPE(HPEN); +DECL_WINELIB_TYPE(HQUEUE); +DECL_WINELIB_TYPE(HRGN); +DECL_WINELIB_TYPE(HRSRC); +DECL_WINELIB_TYPE(HTASK); +DECL_WINELIB_TYPE(HWAVE); +DECL_WINELIB_TYPE(HWAVEIN); +DECL_WINELIB_TYPE(HWAVEOUT); +DECL_WINELIB_TYPE(HWND); + +DECL_WINELIB_TYPE(FARPROC); +DECL_WINELIB_TYPE(WNDPROC); + +/* Library data types defined as a transition aid for the emulator. */ +/* These should _not_ be used in the emulator and will be removed someday. */ + +#ifndef NO_TRANSITION_TYPES + +#ifndef WINELIB +typedef INT16 INT; +typedef UINT16 UINT; +typedef WPARAM16 WPARAM; +typedef HANDLE16 HACCEL; +typedef HANDLE16 HANDLE; +typedef HANDLE16 HBITMAP; +typedef HANDLE16 HBRUSH; +typedef HANDLE16 HCURSOR; +typedef HANDLE16 HDC; +typedef HANDLE16 HDROP; +typedef HANDLE16 HDRVR; +typedef HANDLE16 HDWP; +typedef HANDLE16 HFONT; +typedef HANDLE16 HGDIOBJ; +typedef HANDLE16 HGLOBAL; +typedef HANDLE16 HICON; +typedef HANDLE16 HINSTANCE; +typedef HANDLE16 HMENU; +typedef HANDLE16 HMETAFILE; +typedef HANDLE16 HMIDI; +typedef HANDLE16 HMIDIIN; +typedef HANDLE16 HMIDIOUT; +typedef HANDLE16 HMMIO; +typedef HANDLE16 HMODULE; +typedef HANDLE16 HPALETTE; +typedef HANDLE16 HPEN; +typedef HANDLE16 HQUEUE; +typedef HANDLE16 HRGN; +typedef HANDLE16 HRSRC; +typedef HANDLE16 HTASK; +typedef HANDLE16 HWAVE; +typedef HANDLE16 HWAVEIN; +typedef HANDLE16 HWAVEOUT; +typedef HANDLE16 HWND; +typedef FARPROC16 FARPROC; +typedef WNDPROC16 WNDPROC; +#endif /* WINELIB */ + +/* Callback function pointers types. */ + +#ifdef WINELIB +typedef LONG (*DRIVERPROC)(DWORD, HDRVR, UINT, LPARAM, LPARAM); +typedef int (*EDITWORDBREAKPROC)(LPSTR lpch, int ichCurrent, int cch,int code); /*typedef int (*FONTENUMPROC)(const LOGFONT*,const TEXTMETRIC*,DWORD,LPARAM);*/ typedef int (*FONTENUMPROC)(const void*,const void*,DWORD,LPARAM); typedef int (*GOBJENUMPROC)(LPVOID,LPARAM); -typedef BOOL (*PROPENUMPROC)(HWND,LPCTSTR,HANDLE); /*typedef int (*MFENUMPROC)(HDC,HANDLETABLE*,METARECORD*,int,LPARAM);*/ typedef int (*MFENUMPROC)(HDC,void*,void*,int,LPARAM); +typedef BOOL (*PROPENUMPROC)(HWND,LPCTSTR,HANDLE); +typedef LRESULT (*WNDENUMPROC)(HWND,LPARAM); #else -typedef SEGPTR FARPROC; -typedef SEGPTR WNDPROC; -typedef SEGPTR WNDENUMPROC; +typedef SEGPTR DRIVERPROC; +typedef SEGPTR EDITWORDBREAKPROC; typedef SEGPTR FONTENUMPROC; typedef SEGPTR GOBJENUMPROC; -typedef SEGPTR PROPENUMPROC; typedef SEGPTR MFENUMPROC; +typedef SEGPTR PROPENUMPROC; +typedef SEGPTR WNDENUMPROC; #endif typedef FARPROC DLGPROC; typedef FARPROC HOOKPROC; -#define TRUE 1 +#endif /* NO_TRANSITION_TYPES */ + +/* Misc. constants. */ + +#ifdef FALSE +#undef FALSE +#endif #define FALSE 0 -#define CW_USEDEFAULT ((INT)0x8000) + +#ifdef TRUE +#undef TRUE +#endif +#define TRUE 1 + +#ifdef NULL +#undef NULL +#endif +#define NULL 0 + +/* Define some empty macros for compatibility with Windows code. */ + +#ifdef WINELIB +#define CALLBACK +#define NEAR #define FAR +#define PASCAL +#define WINAPI #define _far -#define NEAR #define _near -#define PASCAL #define _pascal #define __export -#define VOID void -#define WINAPI PASCAL -#define CALLBACK PASCAL +#endif /* WINELIB */ -#undef NULL -#define NULL 0 +/* Macro for structure packing. */ #ifdef WINELIB #define WINE_PACKED #else #define WINE_PACKED __attribute__ ((packed)) -#endif +#endif /* WINELIB */ + +/* Macros to split words and longs. */ -#define LOBYTE(w) ((BYTE)(UINT)(w)) -#define HIBYTE(w) ((BYTE)((UINT)(w) >> 8)) +#define LOBYTE(w) ((BYTE)(WORD)(w)) +#define HIBYTE(w) ((BYTE)((WORD)(w) >> 8)) #define LOWORD(l) ((WORD)(DWORD)(l)) #define HIWORD(l) ((WORD)((DWORD)(l) >> 16)) -#define SLOWORD(l) ((INT)(LONG)(l)) -#define SHIWORD(l) ((INT)((LONG)(l) >> 16)) +#define SLOWORD(l) ((INT16)(LONG)(l)) +#define SHIWORD(l) ((INT16)((LONG)(l) >> 16)) #define MAKELONG(low, high) ((LONG)(((WORD)(low)) | \ (((DWORD)((WORD)(high))) << 16))) @@ -173,6 +350,8 @@ typedef FARPROC HOOKPROC; #define SELECTOROF(ptr) (HIWORD(ptr)) #define OFFSETOF(ptr) (LOWORD(ptr)) +/* Macros to access unaligned or wrong-endian WORDs and DWORDs. */ + #if !defined(WINELIB) || defined(__i386__) #define PUT_WORD(ptr,w) (*(WORD *)(ptr) = (w)) #define GET_WORD(ptr) (*(WORD *)(ptr)) @@ -189,13 +368,16 @@ typedef FARPROC HOOKPROC; ((DWORD)GET_WORD((WORD *)(ptr)+1) << 16))) #endif /* !WINELIB || __i386__ */ +/* MIN and MAX macros */ -#ifndef MAX -#define MAX(a,b) (((a) > (b)) ? (a) : (b)) +#ifdef MAX +#undef MAX #endif +#define MAX(a,b) (((a) > (b)) ? (a) : (b)) -#ifndef MIN -#define MIN(a,b) (((a) < (b)) ? (a) : (b)) +#ifdef MIN +#undef MIN #endif +#define MIN(a,b) (((a) < (b)) ? (a) : (b)) #endif /* __WINE_WINTYPES_H */ diff --git a/include/winuser.h b/include/winuser.h index 9ee274f5e0e..b8dcdb9da95 100644 --- a/include/winuser.h +++ b/include/winuser.h @@ -43,7 +43,7 @@ typedef struct typedef struct { UINT16 style; - WNDPROC lpfnWndProc WINE_PACKED; + WNDPROC16 lpfnWndProc WINE_PACKED; INT16 cbClsExtra; INT16 cbWndExtra; HANDLE16 hInstance; @@ -93,5 +93,55 @@ DECL_WINELIB_TYPE_AW(LPWNDCLASS); DECL_WINELIB_TYPE_AW(WNDCLASSEX); DECL_WINELIB_TYPE_AW(LPWNDCLASSEX); +#define CS_VREDRAW 0x0001 +#define CS_HREDRAW 0x0002 +#define CS_KEYCVTWINDOW 0x0004 +#define CS_DBLCLKS 0x0008 +#define CS_OWNDC 0x0020 +#define CS_CLASSDC 0x0040 +#define CS_PARENTDC 0x0080 +#define CS_NOKEYCVT 0x0100 +#define CS_NOCLOSE 0x0200 +#define CS_SAVEBITS 0x0800 +#define CS_BYTEALIGNCLIENT 0x1000 +#define CS_BYTEALIGNWINDOW 0x2000 +#define CS_GLOBALCLASS 0x4000 + + /* Offsets for GetClassLong() and GetClassWord() */ +#define GCL_MENUNAME (-8) +#define GCW_HBRBACKGROUND (-10) +#define GCL_HBRBACKGROUND GCW_HBRBACKGROUND +#define GCW_HCURSOR (-12) +#define GCL_HCURSOR GCW_HCURSOR +#define GCW_HICON (-14) +#define GCL_HICON GCW_HICON +#define GCW_HMODULE (-16) +#define GCL_HMODULE GCW_HMODULE +#define GCW_CBWNDEXTRA (-18) +#define GCL_CBWNDEXTRA GCW_CBWNDEXTRA +#define GCW_CBCLSEXTRA (-20) +#define GCL_CBCLSEXTRA GCW_CBCLSEXTRA +#define GCL_WNDPROC (-24) +#define GCW_STYLE (-26) +#define GCL_STYLE GCW_STYLE +#define GCW_ATOM (-32) +#define GCL_HICONSM (-34) + +ATOM RegisterClass16(const WNDCLASS16*); +ATOM RegisterClass32A(const WNDCLASS32A *); +ATOM RegisterClass32W(const WNDCLASS32W *); +#define RegisterClass WINELIB_NAME_AW(RegisterClass) +ATOM RegisterClassEx32A(const WNDCLASSEX32A *); +ATOM RegisterClassEx32W(const WNDCLASSEX32W *); +#define RegisterClassEx WINELIB_NAME_AW(RegisterClassEx) +BOOL UnregisterClass16(SEGPTR,HINSTANCE16); +BOOL UnregisterClass32A(LPCSTR,HINSTANCE32); +BOOL UnregisterClass32W(LPCWSTR,HINSTANCE32); +#define UnregisterClass WINELIB_NAME_AW(UnregisterClass) + +BOOL GetClassInfo(HANDLE,SEGPTR,WNDCLASS16 *); +LONG GetClassLong(HWND,short); +int GetClassName(HWND,LPSTR,short); +LONG SetClassLong(HWND,short,LONG); #endif /* __WINE_WINUSER_H */ diff --git a/library/heap.c b/library/heap.c index d942902f618..a3ac881c198 100644 --- a/library/heap.c +++ b/library/heap.c @@ -19,8 +19,6 @@ /* Controls the blocks per handle table */ #define MAXBLOCKS 1024 -static char Copyright [] = "Copyright (C) 1994 Miguel de Icaza"; - typedef struct handle_table { struct handle_table *next; void *blocks [MAXBLOCKS]; @@ -166,12 +164,12 @@ BOOL GlobalUnlock (HANDLE hMem) return LocalUnlock (hMem); } -WORD GlobalFlags (HANDLE hMem) +WORD GlobalFlags16(HANDLE hMem) { return LocalFlags (hMem); } -DWORD GlobalSize (HANDLE hMem) +DWORD GlobalSize16(HANDLE hMem) { return LocalSize (hMem); } @@ -184,7 +182,7 @@ DWORD GlobalCompact(DWORD desired) return 0x01000000; /* Should check the available core. */ } -HANDLE GlobalReAlloc(HANDLE hMem, DWORD new_size, WORD flags) +HANDLE GlobalReAlloc16(HANDLE hMem, DWORD new_size, WORD flags) { if (!(flags & GMEM_MODIFY)) return LocalReAlloc (hMem, new_size, flags); @@ -208,7 +206,9 @@ DWORD int GlobalHandle(WORD selector) #endif -#else /* WINELIB16 */ +#endif /* WINELIB16 */ + +#if 0 typedef struct { DWORD Size; DWORD Padding[3]; } HeapData; @@ -319,17 +319,17 @@ BOOL GlobalUnlock (HANDLE hMem) return 0; } -WORD GlobalFlags (HANDLE hMem) +WORD GlobalFlags32(HANDLE hMem) { return LocalFlags (hMem); } -DWORD GlobalSize (HANDLE hMem) +DWORD GlobalSize32(HANDLE hMem) { return HEAP_Size (hMem); } -HANDLE GlobalReAlloc(HANDLE hMem, DWORD new_size, WORD flags) +HANDLE GlobalReAlloc32(HANDLE hMem, DWORD new_size, WORD flags) { if (!(flags & GMEM_MODIFY)) return HEAP_ReAlloc (hMem, new_size, flags); diff --git a/library/miscstubs.c b/library/miscstubs.c index 407de96303f..1cee6cf41a5 100644 --- a/library/miscstubs.c +++ b/library/miscstubs.c @@ -44,12 +44,13 @@ int CallTo32_LargeStack( int (*func)(), int nbargs, ...) WORD CallTo16_word_ ( FARPROC func, WORD arg ) { return func(arg); } -void GlobalFreeAll(HANDLE owner) +#if 0 +void GlobalFreeAll(HGLOBAL16 owner) { WINELIB_UNIMP("GlobalFreeAll()"); } -SEGPTR WIN16_GlobalLock(HGLOBAL h) +SEGPTR WIN16_GlobalLock16(HGLOBAL16 h) { return (SEGPTR)h; } HLOCAL LOCAL_Free(WORD ds, HLOCAL handle) { return LocalFree(handle); } @@ -128,6 +129,7 @@ HGLOBAL GlobalHandle(LPCVOID a) fprintf(stderr,"JBP: GlobalHandle() ignored.\n"); return 0; } +#endif extern LRESULT ACTIVATEAPP_callback(HWND,UINT,WPARAM,LPARAM); extern LRESULT AboutDlgProc(HWND,UINT,WPARAM,LPARAM); diff --git a/library/winmain.c b/library/winmain.c index d1c0ac0dde4..4508a34f7ea 100644 --- a/library/winmain.c +++ b/library/winmain.c @@ -8,7 +8,7 @@ extern int MAIN_Init(void); extern BOOL WIDGETS_Init(void); extern BOOL WIN_CreateDesktopWindow(void); -extern int PASCAL WinMain(HINSTANCE,HINSTANCE,LPSTR,int); +extern int WinMain(HINSTANCE,HINSTANCE,LPSTR,int); extern void TASK_Reschedule(void); extern int USER_InitApp(HINSTANCE); diff --git a/libtest/hello.c b/libtest/hello.c index 4285ac132b6..7de4fb5098e 100644 --- a/libtest/hello.c +++ b/libtest/hello.c @@ -42,6 +42,8 @@ int PASCAL WinMain (HANDLE inst, HANDLE prev, LPSTR cmdline, int show) HWND wnd; MSG msg; WNDCLASS class; + char className[] = "class"; /* To make sure className >= 0x10000 */ + char winName[] = "Test app"; if (!prev){ class.style = CS_HREDRAW | CS_VREDRAW; @@ -53,12 +55,12 @@ int PASCAL WinMain (HANDLE inst, HANDLE prev, LPSTR cmdline, int show) class.hCursor = LoadCursor (0, IDC_ARROW); class.hbrBackground = GetStockObject (WHITE_BRUSH); class.lpszMenuName = NULL; - class.lpszClassName = (SEGPTR)"class"; + class.lpszClassName = (SEGPTR)className; } if (!RegisterClass (&class)) return FALSE; - wnd = CreateWindow ("class", "Test app", WS_OVERLAPPEDWINDOW, + wnd = CreateWindow (className, winName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 0, 0, inst, 0); ShowWindow (wnd, show); diff --git a/libtest/hello3.c b/libtest/hello3.c index fe532cb7b58..588c62784b9 100644 --- a/libtest/hello3.c +++ b/libtest/hello3.c @@ -69,6 +69,8 @@ int PASCAL WinMain (HANDLE inst, HANDLE prev, LPSTR cmdline, int show) HWND wnd; MSG msg; WNDCLASS class; + char className[] = "class"; /* To make sure className >= 0x10000 */ + char winName[] = "Test app"; if (!prev){ class.style = CS_HREDRAW | CS_VREDRAW; @@ -80,12 +82,12 @@ int PASCAL WinMain (HANDLE inst, HANDLE prev, LPSTR cmdline, int show) class.hCursor = LoadCursor (0, IDC_ARROW); class.hbrBackground = GetStockObject (WHITE_BRUSH); class.lpszMenuName = 0; - class.lpszClassName = (SEGPTR)"class"; + class.lpszClassName = (SEGPTR)className; } if (!RegisterClass (&class)) return FALSE; - wnd = CreateWindow ("class", "Test app", WS_OVERLAPPEDWINDOW, + wnd = CreateWindow (className, winName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 0, LoadMenu(inst,"MAIN"), inst, 0); ShowWindow (wnd, show); diff --git a/libtest/hello4.c b/libtest/hello4.c index 9e8f8001d79..964c52192ee 100644 --- a/libtest/hello4.c +++ b/libtest/hello4.c @@ -78,6 +78,9 @@ int PASCAL WinMain (HANDLE inst, HANDLE prev, LPSTR cmdline, int show) HWND wnd,wnd2; MSG msg; WNDCLASS class; + char className[] = "class"; /* To make sure className >= 0x10000 */ + char class2Name[] = "class2"; + char winName[] = "Test app"; if (!prev){ class.style = CS_HREDRAW | CS_VREDRAW; @@ -89,23 +92,23 @@ int PASCAL WinMain (HANDLE inst, HANDLE prev, LPSTR cmdline, int show) class.hCursor = LoadCursor (0, IDC_ARROW); class.hbrBackground = GetStockObject (WHITE_BRUSH); class.lpszMenuName = NULL; - class.lpszClassName = (SEGPTR)"class"; + class.lpszClassName = (SEGPTR)className; if (!RegisterClass (&class)) return FALSE; } - wnd = CreateWindow ("class", "Test app", WS_OVERLAPPEDWINDOW, + wnd = CreateWindow (className, winName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 0, 0, inst, 0); if (!prev){ class.lpfnWndProc = WndProc2; - class.lpszClassName = (SEGPTR)"class2"; + class.lpszClassName = class2Name; if (!RegisterClass (&class)) return FALSE; } - wnd2= CreateWindow ("class2","Test app", WS_BORDER | WS_CHILD, + wnd2= CreateWindow (class2Name,"Test app", WS_BORDER | WS_CHILD, 50, 50, 350, 50, wnd, 0, inst, 0); ShowWindow (wnd, show); diff --git a/libtest/new.c b/libtest/new.c index 8dfabced7ff..67f68f5ddd8 100644 --- a/libtest/new.c +++ b/libtest/new.c @@ -9,7 +9,7 @@ long FAR PASCAL ChildProc(HWND, WORD, WPARAM, LPARAM); int PASCAL WinMain (HANDLE hInstance, HANDLE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow) { - static char szAppName[] = "ClassLook" ; + char szAppName[] = "ClassLook" ; HWND hwnd ; MSG msg ; WNDCLASS wndclass ; @@ -32,7 +32,7 @@ int PASCAL WinMain (HANDLE hInstance, HANDLE hPrevInstance, } hwnd = CreateWindow (szAppName, /* window class name */ - "ClassLook", /* window caption */ + szAppName, /* window caption */ WS_OVERLAPPEDWINDOW, /* window style */ CW_USEDEFAULT, /* initial x position */ CW_USEDEFAULT, /* initial y position */ @@ -60,6 +60,7 @@ long FAR PASCAL WndProc (HWND hwnd, WORD message, WPARAM wParam, LPARAM lParam) PAINTSTRUCT ps ; RECT rect ; WNDCLASS wndclass ; + char clsName[] = "SecondClass"; static HWND hChild; @@ -75,11 +76,11 @@ long FAR PASCAL WndProc (HWND hwnd, WORD message, WPARAM wParam, LPARAM lParam) wndclass.hCursor = LoadCursor (NULL, IDC_CROSS) ; wndclass.hbrBackground = GetStockObject (LTGRAY_BRUSH) ; wndclass.lpszMenuName = NULL ; - wndclass.lpszClassName = "SecondClass" ; + wndclass.lpszClassName = clsName; RegisterClass (&wndclass); - hChild = CreateWindow("SecondClass","Child Window", + hChild = CreateWindow(clsName,"Child Window", WS_CHILD | WS_VISIBLE | WS_BORDER, 10, 10, 580, 380, hwnd, NULL, ghInstance, NULL); ShowWindow(hChild, SW_SHOW); @@ -106,7 +107,7 @@ long FAR PASCAL ChildProc(HWND hwnd, WORD message, WPARAM wParam, LPARAM lParam) HDC hDC; PAINTSTRUCT ps; WNDCLASS wndClass; - char* classes[]={"EDIT","BUTTON","LISTBOX","STATIC","SCROLLBAR","COMBOBOX","COMBOLBOX", NULL}; + char *classes[]={"EDIT","BUTTON","LISTBOX","STATIC","SCROLLBAR","COMBOBOX","COMBOLBOX", NULL}; char** curr; char buf[256]; RECT rect ; diff --git a/libtest/rolex.c b/libtest/rolex.c index 2f5212c8cbb..f7aadd00550 100644 --- a/libtest/rolex.c +++ b/libtest/rolex.c @@ -15,8 +15,8 @@ #include #include "windows.h" -char* AppName = "Rolex"; -char* WindowName = "Rolex"; +char AppName[] = "Rolex"; +char WindowName[] = "Rolex"; int WindowWidth = 100; int WindowHeight = 121; COLORREF FaceColor = RGB(192,192,192); diff --git a/loader/builtin.c b/loader/builtin.c index a2f074d5a84..33ea613c0d9 100644 --- a/loader/builtin.c +++ b/loader/builtin.c @@ -96,13 +96,16 @@ extern const DLL_DESCRIPTOR W32SYS_Descriptor; extern const DLL_DESCRIPTOR ADVAPI32_Descriptor; extern const DLL_DESCRIPTOR COMCTL32_Descriptor; extern const DLL_DESCRIPTOR COMDLG32_Descriptor; +extern const DLL_DESCRIPTOR CRTDLL_Descriptor; extern const DLL_DESCRIPTOR OLE32_Descriptor; extern const DLL_DESCRIPTOR GDI32_Descriptor; extern const DLL_DESCRIPTOR KERNEL32_Descriptor; +extern const DLL_DESCRIPTOR NTDLL_Descriptor; extern const DLL_DESCRIPTOR SHELL32_Descriptor; extern const DLL_DESCRIPTOR USER32_Descriptor; extern const DLL_DESCRIPTOR WPROCS32_Descriptor; extern const DLL_DESCRIPTOR WINSPOOL_Descriptor; +extern const DLL_DESCRIPTOR WSOCK32_Descriptor; /* Table of all built-in DLLs */ @@ -141,13 +144,16 @@ static BUILTIN_DLL BuiltinDLLs[] = { &ADVAPI32_Descriptor, 0 }, { &COMCTL32_Descriptor, 0 }, { &COMDLG32_Descriptor, 0 }, + { &CRTDLL_Descriptor, 0 }, { &OLE32_Descriptor, 0 }, { &GDI32_Descriptor, 0 }, { &KERNEL32_Descriptor, DLL_FLAG_ALWAYS_USED }, + { &NTDLL_Descriptor, 0 }, { &SHELL32_Descriptor, 0 }, { &USER32_Descriptor, 0 }, { &WPROCS32_Descriptor, DLL_FLAG_ALWAYS_USED }, { &WINSPOOL_Descriptor, 0 }, + { &WSOCK32_Descriptor, 0 }, /* Last entry */ { NULL, 0 } }; @@ -214,7 +220,7 @@ HMODULE BUILTIN_LoadModule( LPCSTR name, BOOL force ) dprintf_module( stddeb, "Built-in %s: hmodule=%04x\n", table->descr->name, hModule ); - pModule = (NE_MODULE *)GlobalLock( hModule ); + pModule = (NE_MODULE *)GlobalLock16( hModule ); pModule->self = hModule; if (pModule->flags & NE_FFLAGS_WIN32) @@ -243,7 +249,7 @@ HMODULE BUILTIN_LoadModule( LPCSTR name, BOOL force ) pSegTable->selector = GLOBAL_Alloc( GMEM_FIXED, minsize, hModule, FALSE, FALSE, FALSE ); if (!pSegTable->selector) return 0; - if (pSegTable->minsize) memcpy( GlobalLock( pSegTable->selector ), + if (pSegTable->minsize) memcpy( GlobalLock16( pSegTable->selector ), descr->data_start, pSegTable->minsize); if (pModule->heap_size) LocalInit( pSegTable->selector, pSegTable->minsize, minsize ); @@ -266,7 +272,7 @@ NE_MODULE *BUILTIN_GetEntryPoint( WORD cs, WORD ip, WORD *pOrd, char **ppName ) register BYTE *p; NE_MODULE *pModule; - if (!(pModule = MODULE_GetPtr( FarGetOwner( GlobalHandle(cs) )))) + if (!(pModule = MODULE_GetPtr( FarGetOwner( GlobalHandle16(cs) )))) return NULL; /* Search for the ordinal */ diff --git a/loader/main.c b/loader/main.c index 334ec826b1a..0a2d76464d8 100644 --- a/loader/main.c +++ b/loader/main.c @@ -34,6 +34,7 @@ static char Copyright[] = "Copyright Robert J. Amstadt, 1993"; #include "options.h" #include "spy.h" #include "task.h" +#include "user.h" #include "dce.h" #include "pe_image.h" #include "stddebug.h" @@ -61,7 +62,13 @@ int MAIN_Init(void) /* Initialize message spying */ if (!SPY_Init()) return 0; -#ifndef WINELIB +#ifdef WINELIB + /* Create USER and GDI heap */ + USER_HeapSel = GlobalAlloc16( GMEM_FIXED, 0x10000 ); + LocalInit( USER_HeapSel, 0, 0xffff ); + GDI_HeapSel = GlobalAlloc16( GMEM_FIXED, GDI_HEAP_SIZE ); + LocalInit( GDI_HeapSel, 0, GDI_HEAP_SIZE-1 ); +#else /* Initialize relay code */ if (!RELAY_Init()) return 0; diff --git a/loader/module.c b/loader/module.c index a3f46154928..920313f852e 100644 --- a/loader/module.c +++ b/loader/module.c @@ -43,7 +43,7 @@ static HANDLE hInitialStack32 = 0; */ NE_MODULE *MODULE_GetPtr( HMODULE hModule ) { - NE_MODULE *pModule = (NE_MODULE *)GlobalLock( hModule ); + NE_MODULE *pModule = (NE_MODULE *)GlobalLock16( hModule ); if (!pModule || (pModule->magic != NE_SIGNATURE) || (pModule->self != hModule)) return NULL; return pModule; @@ -177,7 +177,7 @@ void MODULE_DumpModule( HMODULE hmodule ) printf( "\nNon-resident names table:\n" ); if (pModule->nrname_handle) { - pstr = (char *)GlobalLock( pModule->nrname_handle ); + pstr = (char *)GlobalLock16( pModule->nrname_handle ); while (*pstr) { printf( "%*.*s: %d\n", *pstr, *pstr, pstr + 1, @@ -275,11 +275,11 @@ static WORD MODULE_Ne2MemFlags(WORD flags) DWORD MODULE_AllocateSegment(WORD wFlags, WORD wSize, WORD wElem) { WORD size = wSize << wElem; - HANDLE hMem = GlobalAlloc( MODULE_Ne2MemFlags(wFlags), size); -#ifdef WINELIB32 - return (DWORD)GlobalLock(hMem); + HANDLE hMem = GlobalAlloc16( MODULE_Ne2MemFlags(wFlags), size); +#ifdef WINELIB + return (DWORD)GlobalLock16(hMem); #else - WORD selector = HIWORD(GlobalLock(hMem)); + WORD selector = HIWORD(WIN16_GlobalLock16(hMem)); return MAKELONG(hMem, selector); #endif } @@ -421,10 +421,10 @@ static HMODULE MODULE_LoadExeHeader( HFILE hFile, OFSTRUCT *ofs ) /* entry table length */ ne_header.entry_tab_length; - hModule = GlobalAlloc( GMEM_MOVEABLE | GMEM_ZEROINIT, size ); + hModule = GlobalAlloc16( GMEM_MOVEABLE | GMEM_ZEROINIT, size ); if (!hModule) return (HMODULE)11; /* invalid exe */ FarSetOwner( hModule, hModule ); - pModule = (NE_MODULE *)GlobalLock( hModule ); + pModule = (NE_MODULE *)GlobalLock16( hModule ); memcpy( pModule, &ne_header, sizeof(ne_header) ); pModule->count = 0; pModule->pe_module = NULL; @@ -485,7 +485,7 @@ static HMODULE MODULE_LoadExeHeader( HFILE hFile, OFSTRUCT *ofs ) } else { - GlobalFree( hModule ); + GlobalFree16( hModule ); return (HMODULE)11; /* invalid exe */ } @@ -508,7 +508,7 @@ static HMODULE MODULE_LoadExeHeader( HFILE hFile, OFSTRUCT *ofs ) ne_header.moduleref_tab_offset - ne_header.rname_tab_offset, pData )) { - GlobalFree( hModule ); + GlobalFree16( hModule ); return (HMODULE)11; /* invalid exe */ } pData += ne_header.moduleref_tab_offset - ne_header.rname_tab_offset; @@ -532,7 +532,7 @@ static HMODULE MODULE_LoadExeHeader( HFILE hFile, OFSTRUCT *ofs ) ne_header.entry_tab_offset - ne_header.iname_tab_offset, pData )) { - GlobalFree( hModule ); + GlobalFree16( hModule ); return (HMODULE)11; /* invalid exe */ } pData += ne_header.entry_tab_offset - ne_header.iname_tab_offset; @@ -544,7 +544,7 @@ static HMODULE MODULE_LoadExeHeader( HFILE hFile, OFSTRUCT *ofs ) ne_header.entry_tab_length, pData )) { - GlobalFree( hModule ); + GlobalFree16( hModule ); return (HMODULE)11; /* invalid exe */ } pData += ne_header.entry_tab_length; @@ -557,16 +557,16 @@ static HMODULE MODULE_LoadExeHeader( HFILE hFile, OFSTRUCT *ofs ) hModule, FALSE, FALSE, FALSE ); if (!pModule->nrname_handle) { - GlobalFree( hModule ); + GlobalFree16( hModule ); return (HMODULE)11; /* invalid exe */ } - buffer = GlobalLock( pModule->nrname_handle ); + buffer = GlobalLock16( pModule->nrname_handle ); _llseek( hFile, ne_header.nrname_tab_offset, SEEK_SET ); if (FILE_Read( hFile, buffer, ne_header.nrname_tab_length ) != ne_header.nrname_tab_length) { - GlobalFree( pModule->nrname_handle ); - GlobalFree( hModule ); + GlobalFree16( pModule->nrname_handle ); + GlobalFree16( hModule ); return (HMODULE)11; /* invalid exe */ } } @@ -581,8 +581,8 @@ static HMODULE MODULE_LoadExeHeader( HFILE hFile, OFSTRUCT *ofs ) hModule, FALSE, FALSE, FALSE ); if (!pModule->dlls_to_init) { - if (pModule->nrname_handle) GlobalFree( pModule->nrname_handle ); - GlobalFree( hModule ); + if (pModule->nrname_handle) GlobalFree16( pModule->nrname_handle ); + GlobalFree16( hModule ); return (HMODULE)11; /* invalid exe */ } } @@ -640,7 +640,7 @@ WORD MODULE_GetOrdinal( HMODULE hModule, const char *name ) /* Now search the non-resident names table */ if (!pModule->nrname_handle) return 0; /* No non-resident table */ - cpnt = (char *)GlobalLock( pModule->nrname_handle ); + cpnt = (char *)GlobalLock16( pModule->nrname_handle ); /* Skip the first entry (module description string) */ cpnt += *cpnt + 1 + sizeof(WORD); @@ -704,7 +704,7 @@ SEGPTR MODULE_GetEntryPoint( HMODULE hModule, WORD ordinal ) if (sel == 0xfe) sel = 0xffff; /* constant entry */ else sel = (WORD)(DWORD)NE_SEG_TABLE(pModule)[sel-1].selector; - return (SEGPTR)MAKELONG( offset, sel ); + return PTR_SEG_OFF_TO_SEGPTR( sel, offset ); } @@ -893,7 +893,7 @@ static void MODULE_FreeModule( HMODULE hModule ) pSegment = NE_SEG_TABLE( pModule ); for (i = 1; i <= pModule->seg_count; i++, pSegment++) { - GlobalFree( pSegment->selector ); + GlobalFree16( pSegment->selector ); } /* Free the referenced modules */ @@ -906,9 +906,9 @@ static void MODULE_FreeModule( HMODULE hModule ) /* Free the module storage */ - if (pModule->nrname_handle) GlobalFree( pModule->nrname_handle ); - if (pModule->dlls_to_init) GlobalFree( pModule->dlls_to_init ); - GlobalFree( hModule ); + if (pModule->nrname_handle) GlobalFree16( pModule->nrname_handle ); + if (pModule->dlls_to_init) GlobalFree16( pModule->dlls_to_init ); + GlobalFree16( hModule ); /* Remove module from cache */ @@ -978,7 +978,7 @@ HINSTANCE LoadModule( LPCSTR name, LPVOID paramBlock ) /* Load the referenced DLLs */ pModRef = (WORD *)((char *)pModule + pModule->modref_table); - pDLLs = (WORD *)GlobalLock( pModule->dlls_to_init ); + pDLLs = (WORD *)GlobalLock16( pModule->dlls_to_init ); for (i = 0; i < pModule->modref_count; i++, pModRef++) { char buffer[256]; @@ -1059,8 +1059,8 @@ HINSTANCE LoadModule( LPCSTR name, LPVOID paramBlock ) /* Create the 32-bit stack frame */ - *(DWORD *)GlobalLock(hInitialStack32) = 0xDEADBEEF; - stack32Top = (char*)GlobalLock(hInitialStack32) + + *(DWORD *)GlobalLock16(hInitialStack32) = 0xDEADBEEF; + stack32Top = (char*)GlobalLock16(hInitialStack32) + 0x10000; frame32 = (STACK32FRAME *)stack32Top - 1; frame32->saved_esp = (DWORD)stack32Top; @@ -1073,7 +1073,7 @@ HINSTANCE LoadModule( LPCSTR name, LPVOID paramBlock ) frame32->retaddr = 0; frame32->codeselector = WINE_CODE_SELECTOR; /* pTask->esp = (DWORD)frame32; */ - IF1632_Stack32_base = WIN16_GlobalLock(hInitialStack32); + IF1632_Stack32_base = WIN16_GlobalLock16(hInitialStack32); } /* FIXME: we probably need a DOS handle here */ @@ -1086,8 +1086,7 @@ HINSTANCE LoadModule( LPCSTR name, LPVOID paramBlock ) IF1632_Saved16_sp = oldsp; for (i = 2; i <= pModule->seg_count; i++) NE_LoadSegment( hModule, i ); if (hInitialStack32){ - GlobalUnlock (hInitialStack32); - GlobalFree (hInitialStack32); + GlobalFree16(hInitialStack32); IF1632_Stack32_base = hInitialStack32 = 0; } } @@ -1116,8 +1115,8 @@ HINSTANCE LoadModule( LPCSTR name, LPVOID paramBlock ) pModule->count++; } #else - hModule = GlobalAlloc( GMEM_MOVEABLE | GMEM_ZEROINIT, sizeof(NE_MODULE) ); - pModule = (NE_MODULE *)GlobalLock( hModule ); + hModule = GlobalAlloc16( GMEM_MOVEABLE | GMEM_ZEROINIT, sizeof(NE_MODULE)); + pModule = (NE_MODULE *)GlobalLock16( hModule ); pModule->count = 1; pModule->magic = NE_SIGNATURE; pModule->self = hModule; @@ -1249,24 +1248,24 @@ void FreeLibrary( HANDLE handle ) HANDLE WinExec( LPSTR lpCmdLine, WORD nCmdShow ) { LOADPARAMS params; - HLOCAL cmdShowHandle, cmdLineHandle; + HGLOBAL16 cmdShowHandle, cmdLineHandle; HANDLE handle; WORD *cmdShowPtr; char *p, *cmdline, filename[256]; static int use_load_module = 1; - if (!(cmdShowHandle = GlobalAlloc( 0, 2 * sizeof(WORD) ))) return 0; - if (!(cmdLineHandle = GlobalAlloc( 0, 256 ))) return 0; + if (!(cmdShowHandle = GlobalAlloc16( 0, 2 * sizeof(WORD) ))) return 0; + if (!(cmdLineHandle = GlobalAlloc16( 0, 256 ))) return 0; /* Store nCmdShow */ - cmdShowPtr = (WORD *)GlobalLock( cmdShowHandle ); + cmdShowPtr = (WORD *)GlobalLock16( cmdShowHandle ); cmdShowPtr[0] = 2; cmdShowPtr[1] = nCmdShow; /* Build the filename and command-line */ - cmdline = (char *)GlobalLock( cmdLineHandle ); + cmdline = (char *)GlobalLock16( cmdLineHandle ); lstrcpyn( filename, lpCmdLine, sizeof(filename) - 4 /* for extension */ ); for (p = filename; *p && (*p != ' ') && (*p != '\t'); p++); if (*p) lstrcpyn( cmdline, p + 1, 128 ); @@ -1284,8 +1283,8 @@ HANDLE WinExec( LPSTR lpCmdLine, WORD nCmdShow ) #else params.hEnvironment = (HANDLE)SELECTOROF( GetDOSEnvironment() ); #endif /* WINELIB */ - params.cmdLine = (SEGPTR)WIN16_GlobalLock( cmdLineHandle ); - params.showCmd = (SEGPTR)WIN16_GlobalLock( cmdShowHandle ); + params.cmdLine = (SEGPTR)WIN16_GlobalLock16( cmdLineHandle ); + params.showCmd = (SEGPTR)WIN16_GlobalLock16( cmdShowHandle ); params.reserved = 0; handle = LoadModule( filename, ¶ms ); if (handle == 2) /* file not found */ @@ -1360,8 +1359,8 @@ HANDLE WinExec( LPSTR lpCmdLine, WORD nCmdShow ) } } - GlobalFree( cmdShowHandle ); - GlobalFree( cmdLineHandle ); + GlobalFree16( cmdShowHandle ); + GlobalFree16( cmdLineHandle ); #if 0 if (handle < (HANDLE)32) /* Error? */ diff --git a/loader/ne_image.c b/loader/ne_image.c index 447b5004049..8fb20303771 100644 --- a/loader/ne_image.c +++ b/loader/ne_image.c @@ -60,7 +60,7 @@ BOOL NE_LoadSegment( HMODULE hModule, WORD segnum ) segnum, pSeg->selector ); lseek( fd, pSeg->filepos << pModule->alignment, SEEK_SET ); size = pSeg->size ? pSeg->size : 0x10000; - mem = GlobalLock(pSeg->selector); + mem = GlobalLock16(pSeg->selector); if (pModule->flags & NE_FFLAGS_SELFLOAD && segnum > 1) { #ifndef WINELIB /* Implement self loading segments */ @@ -231,7 +231,7 @@ BOOL NE_LoadSegment( HMODULE hModule, WORD segnum ) } else { - address = MAKELONG( rep->target2, pSegTable[rep->target1-1].selector ); + address = PTR_SEG_OFF_TO_SEGPTR( pSegTable[rep->target1-1].selector, rep->target2 ); } dprintf_fixup(stddeb,"%d: %04x:%04x\n", @@ -517,12 +517,12 @@ void NE_InitializeDLLs( HMODULE hModule ) { HANDLE to_init = pModule->dlls_to_init; pModule->dlls_to_init = 0; - for (pDLL = (HMODULE *)GlobalLock( to_init ); *pDLL; pDLL++) + for (pDLL = (HMODULE *)GlobalLock16( to_init ); *pDLL; pDLL++) { NE_InitializeDLLs( *pDLL ); NE_InitDLL( *pDLL ); } - GlobalFree( to_init ); + GlobalFree16( to_init ); } NE_InitDLL( hModule ); } diff --git a/loader/ne_resource.c b/loader/ne_resource.c index caee5f854bd..bf88022b42a 100644 --- a/loader/ne_resource.c +++ b/loader/ne_resource.c @@ -298,7 +298,7 @@ HGLOBAL NE_LoadResource( HMODULE hModule, HRSRC hRsrc ) pNameInfo->handle = NE_AllocResource( hModule, hRsrc, 0 ); pNameInfo->usage = 1; lseek( fd, (int)pNameInfo->offset << sizeShift, SEEK_SET ); - read( fd, GlobalLock( pNameInfo->handle ), + read( fd, GlobalLock16( pNameInfo->handle ), (int)pNameInfo->length << sizeShift ); return pNameInfo->handle; } @@ -311,7 +311,7 @@ SEGPTR NE_LockResource( HMODULE hModule, HGLOBAL handle ) { /* May need to reload the resource if discarded */ - return (SEGPTR)WIN16_GlobalLock( handle ); + return (SEGPTR)WIN16_GlobalLock16( handle ); } @@ -337,7 +337,7 @@ BOOL NE_FreeResource( HMODULE hModule, HGLOBAL handle ) if (pNameInfo->usage > 0) pNameInfo->usage--; if (pNameInfo->usage == 0) { - GlobalFree( pNameInfo->handle ); + GlobalFree16( pNameInfo->handle ); pNameInfo->handle = 0; } return TRUE; diff --git a/loader/pe_image.c b/loader/pe_image.c index d16417a8e0d..461a0743bdb 100644 --- a/loader/pe_image.c +++ b/loader/pe_image.c @@ -34,8 +34,6 @@ #include "debug.h" #include "xmalloc.h" -static HANDLE32 ProcessHeap; /* FIXME: should be in process database */ - void my_wcstombs(char * result, u_short * source, int len) { while(len--) { @@ -164,10 +162,10 @@ void fixup_imports(struct pe_data *pe, HMODULE hModule) i++; /* Now, allocate memory for dlls_to_init */ - ne_mod = GlobalLock(hModule); + ne_mod = GlobalLock16(hModule); ne_mod->dlls_to_init = GLOBAL_Alloc(GMEM_ZEROINIT,(i+1) * sizeof(HMODULE), hModule, FALSE, FALSE, FALSE ); - mod_ptr = GlobalLock(ne_mod->dlls_to_init); + mod_ptr = GlobalLock16(ne_mod->dlls_to_init); /* load the modules and put their handles into the list */ for(i=0,pe_imp = pe->pe_import;pe_imp->ModuleName;pe_imp++) { @@ -207,16 +205,17 @@ void fixup_imports(struct pe_data *pe, HMODULE hModule) dprintf_win32(stddeb,"--- Ordinal %s,%d\n", Module, ordinal); *thunk_list = WIN32_GetProcAddress(MODULE_FindModule(Module), ordinal); + if(!*thunk_list) + { + fprintf(stderr,"No implementation for %s.%d\n",Module, + ordinal); + fixup_failed=1; + } }else{ /* import by name */ dprintf_win32(stddeb, "--- %s %s.%d\n", pe_name->Name, Module, pe_name->Hint); #ifndef WINELIB /* FIXME: JBP: Should this happen in libwine.a? */ *thunk_list = WIN32_GetProcAddress(MODULE_FindModule(Module), pe_name->Name); - -#else - fprintf(stderr,"JBP: Call to RELAY32_GetEntryPoint being ignored.\n"); -#endif - } if(!*thunk_list) { fprintf(stderr,"No implementation for %s.%d(%s)\n",Module, @@ -224,6 +223,11 @@ void fixup_imports(struct pe_data *pe, HMODULE hModule) fixup_failed=1; } +#else + fprintf(stderr,"JBP: Call to RELAY32_GetEntryPoint being ignored.\n"); +#endif + } + import_list++; thunk_list++; } @@ -552,12 +556,12 @@ HINSTANCE PE_LoadModule( int fd, OFSTRUCT *ofs, LOADPARAMS* params ) /* several empty tables */ 8; - hModule = GlobalAlloc( GMEM_MOVEABLE | GMEM_ZEROINIT, size ); + hModule = GlobalAlloc16( GMEM_MOVEABLE | GMEM_ZEROINIT, size ); if (!hModule) return (HINSTANCE)11; /* invalid exe */ FarSetOwner( hModule, hModule ); - pModule = (NE_MODULE*)GlobalLock(hModule); + pModule = (NE_MODULE*)GlobalLock16(hModule); /* Set all used entries */ pModule->magic=NE_SIGNATURE; @@ -623,7 +627,6 @@ HINSTANCE PE_LoadModule( int fd, OFSTRUCT *ofs, LOADPARAMS* params ) if ((pe->pe_header->coff.Characteristics & IMAGE_FILE_DLL)) { /* PE_InitDLL(hModule); */ } else { - ProcessHeap = HeapCreate( 0, 0x10000, 0 ); TASK_CreateTask(hModule,hInstance,0, params->hEnvironment,(LPSTR)PTR_SEG_TO_LIN(params->cmdLine), *((WORD*)PTR_SEG_TO_LIN(params->showCmd)+1)); @@ -632,11 +635,6 @@ HINSTANCE PE_LoadModule( int fd, OFSTRUCT *ofs, LOADPARAMS* params ) return hInstance; } -HANDLE32 GetProcessHeap(void) -{ - return ProcessHeap; -} - int USER_InitApp(HINSTANCE hInstance); void PE_InitTEB(int hTEB); @@ -651,7 +649,7 @@ void PE_Win32CallToStart(struct sigcontext_struct context) hModule = GetExePtr( GetCurrentTask() ); pModule = MODULE_GetPtr( hModule ); USER_InitApp( hModule ); - fs=(int)GlobalAlloc(GHND,0x10000); + fs=(int)GlobalAlloc16(GHND,0x10000); PE_InitTEB(fs); __asm__ __volatile__("movw %w0,%%fs"::"r" (fs)); CallTaskStart32( (FARPROC)(pModule->pe_module->load_addr + @@ -706,9 +704,9 @@ void PE_InitTEB(int hTEB) TDB *pTask; TEB *pTEB; - pTask = (TDB *)(GlobalLock(GetCurrentTask() & 0xffff)); + pTask = (TDB *)(GlobalLock16(GetCurrentTask() & 0xffff)); pTEB = (TEB *)(PTR_SEG_OFF_TO_LIN(hTEB, 0)); - pTEB->stack = (void *)(GlobalLock(pTask->hStack32)); + pTEB->stack = (void *)(GlobalLock16(pTask->hStack32)); pTEB->Except = (void *)(-1); pTEB->TEBDSAlias = pTEB; pTEB->taskid = getpid(); @@ -723,12 +721,12 @@ void PE_InitializeDLLs(HMODULE hModule) { HANDLE to_init = pModule->dlls_to_init; pModule->dlls_to_init = 0; - for (pDLL = (HMODULE *)GlobalLock( to_init ); *pDLL; pDLL++) + for (pDLL = (HMODULE *)GlobalLock16( to_init ); *pDLL; pDLL++) { PE_InitializeDLLs( *pDLL ); PE_InitDLL( *pDLL ); } - GlobalFree( to_init ); + GlobalFree16( to_init ); } PE_InitDLL( hModule ); } diff --git a/loader/resource.c b/loader/resource.c index 5c5ec939733..6ebfd69eb76 100644 --- a/loader/resource.c +++ b/loader/resource.c @@ -279,9 +279,9 @@ HANDLE LoadAccelerators(HANDLE instance, SEGPTR lpTableName) lp = (BYTE *)LockResource(rsc_mem); n = SizeofResource( instance, hRsrc ) / sizeof(ACCELENTRY); - hAccel = GlobalAlloc(GMEM_MOVEABLE, + hAccel = GlobalAlloc16(GMEM_MOVEABLE, sizeof(ACCELHEADER) + (n + 1)*sizeof(ACCELENTRY)); - lpAccelTbl = (LPACCELHEADER)GlobalLock(hAccel); + lpAccelTbl = (LPACCELHEADER)GlobalLock16(hAccel); lpAccelTbl->wCount = 0; for (i = 0; i < n; i++) { lpAccelTbl->tbl[i].type = *(lp++); @@ -296,7 +296,7 @@ HANDLE LoadAccelerators(HANDLE instance, SEGPTR lpTableName) lpAccelTbl->tbl[i].type); lpAccelTbl->wCount++; } - GlobalUnlock(hAccel); + GlobalUnlock16(hAccel); FreeResource( rsc_mem ); return hAccel; } @@ -318,7 +318,7 @@ int TranslateAccelerator(HWND hWnd, HANDLE hAccel, LPMSG msg) dprintf_accel(stddeb, "TranslateAccelerators hAccel=%04x !\n", hAccel); - lpAccelTbl = (LPACCELHEADER)GlobalLock(hAccel); + lpAccelTbl = (LPACCELHEADER)GlobalLock16(hAccel); for (i = 0; i < lpAccelTbl->wCount; i++) { if(lpAccelTbl->tbl[i].type & VIRTKEY_ACCEL) { if(msg->wParam == lpAccelTbl->tbl[i].wEvent && @@ -332,7 +332,7 @@ int TranslateAccelerator(HWND hWnd, HANDLE hAccel, LPMSG msg) (SHIFT_ACCEL | CONTROL_ACCEL | ALT_ACCEL))) { SendMessage(hWnd, WM_COMMAND, lpAccelTbl->tbl[i].wIDval, 0x00010000L); - GlobalUnlock(hAccel); + GlobalUnlock16(hAccel); return 1; } if (msg->message == WM_KEYUP || msg->message == WM_SYSKEYUP) @@ -343,12 +343,12 @@ int TranslateAccelerator(HWND hWnd, HANDLE hAccel, LPMSG msg) if (msg->wParam == lpAccelTbl->tbl[i].wEvent && msg->message == WM_CHAR) { SendMessage(hWnd, WM_COMMAND, lpAccelTbl->tbl[i].wIDval, 0x00010000L); - GlobalUnlock(hAccel); + GlobalUnlock16(hAccel); return 1; } } } - GlobalUnlock(hAccel); + GlobalUnlock16(hAccel); return 0; } diff --git a/loader/task.c b/loader/task.c index bab6794a78d..52be7a7fe40 100644 --- a/loader/task.c +++ b/loader/task.c @@ -74,7 +74,7 @@ BOOL TASK_Init(void) */ HTASK TASK_GetNextTask( HTASK hTask ) { - TDB* pTask = (TDB*)GlobalLock(hTask); + TDB* pTask = (TDB*)GlobalLock16(hTask); if (pTask->hNext) return pTask->hNext; return (hFirstTask != hTask) ? hFirstTask : 0; @@ -141,8 +141,8 @@ static HANDLE TASK_CreateDOSEnvironment(void) /* Now allocate the environment */ - if (!(handle = GlobalAlloc( GMEM_FIXED, size ))) return 0; - p = (char *)GlobalLock( handle ); + if (!(handle = GlobalAlloc16( GMEM_FIXED, size ))) return 0; + p = (char *)GlobalLock16( handle ); /* And fill it with the Unix environment */ @@ -181,7 +181,7 @@ static HANDLE TASK_CreateDOSEnvironment(void) /* Display it */ - p = (char *) GlobalLock( handle ); + p = (char *) GlobalLock16( handle ); dprintf_task(stddeb, "Master DOS environment at %p\n", p); for (; *p; p += strlen(p) + 1) dprintf_task(stddeb, " %s\n", p); dprintf_task( stddeb, "Progname: %s\n", p+3 ); @@ -198,11 +198,11 @@ static void TASK_LinkTask( HTASK hTask ) HTASK *prevTask; TDB *pTask; - if (!(pTask = (TDB *)GlobalLock( hTask ))) return; + if (!(pTask = (TDB *)GlobalLock16( hTask ))) return; prevTask = &hFirstTask; while (*prevTask) { - TDB *prevTaskPtr = (TDB *)GlobalLock( *prevTask ); + TDB *prevTaskPtr = (TDB *)GlobalLock16( *prevTask ); if (prevTaskPtr->priority >= pTask->priority) break; prevTask = &prevTaskPtr->hNext; } @@ -223,12 +223,12 @@ static void TASK_UnlinkTask( HTASK hTask ) prevTask = &hFirstTask; while (*prevTask && (*prevTask != hTask)) { - pTask = (TDB *)GlobalLock( *prevTask ); + pTask = (TDB *)GlobalLock16( *prevTask ); prevTask = &pTask->hNext; } if (*prevTask) { - pTask = (TDB *)GlobalLock( *prevTask ); + pTask = (TDB *)GlobalLock16( *prevTask ); *prevTask = pTask->hNext; pTask->hNext = 0; nTaskCount--; @@ -248,7 +248,7 @@ static void TASK_CreateThunks( HGLOBAL handle, WORD offset, WORD count ) WORD free; THUNKS *pThunk; - pThunk = (THUNKS *)((BYTE *)GlobalLock( handle ) + offset); + pThunk = (THUNKS *)((BYTE *)GlobalLock16( handle ) + offset); pThunk->next = 0; pThunk->magic = THUNK_MAGIC; pThunk->free = (int)&pThunk->thunks - (int)pThunk; @@ -274,7 +274,7 @@ static SEGPTR TASK_AllocThunk( HTASK hTask ) THUNKS *pThunk; WORD sel, base; - if (!(pTask = (TDB *)GlobalLock( hTask ))) return 0; + if (!(pTask = (TDB *)GlobalLock16( hTask ))) return 0; sel = pTask->hCSAlias; pThunk = &pTask->thunks; base = (int)pThunk - (int)pTask; @@ -289,12 +289,12 @@ static SEGPTR TASK_AllocThunk( HTASK hTask ) TASK_CreateThunks( sel, 0, MIN_THUNKS ); pThunk->next = sel; } - pThunk = (THUNKS *)GlobalLock( sel ); + pThunk = (THUNKS *)GlobalLock16( sel ); base = 0; } base += pThunk->free; pThunk->free = *(WORD *)((BYTE *)pThunk + pThunk->free); - return MAKELONG( base, sel ); + return PTR_SEG_OFF_TO_SEGPTR( sel, base ); } #endif @@ -311,14 +311,14 @@ static BOOL TASK_FreeThunk( HTASK hTask, SEGPTR thunk ) THUNKS *pThunk; WORD sel, base; - if (!(pTask = (TDB *)GlobalLock( hTask ))) return 0; + if (!(pTask = (TDB *)GlobalLock16( hTask ))) return 0; sel = pTask->hCSAlias; pThunk = &pTask->thunks; base = (int)pThunk - (int)pTask; while (sel && (sel != HIWORD(thunk))) { sel = pThunk->next; - pThunk = (THUNKS *)GlobalLock( sel ); + pThunk = (THUNKS *)GlobalLock16( sel ); base = 0; } if (!sel) return FALSE; @@ -339,7 +339,7 @@ static BOOL TASK_FreeThunk( HTASK hTask, SEGPTR thunk ) static void TASK_CallToStart(void) { int cs_reg, ds_reg, ip_reg; - TDB *pTask = (TDB *)GlobalLock( hCurrentTask ); + TDB *pTask = (TDB *)GlobalLock16( hCurrentTask ); NE_MODULE *pModule = MODULE_GetPtr( pTask->hModule ); SEGTABLEENTRY *pSegTable = NE_SEG_TABLE( pModule ); @@ -406,24 +406,24 @@ HTASK TASK_CreateTask( HMODULE hModule, HANDLE hInstance, HANDLE hPrevInstance, hTask = GLOBAL_Alloc( GMEM_FIXED | GMEM_ZEROINIT, sizeof(TDB), hModule, FALSE, FALSE, FALSE ); if (!hTask) return 0; - pTask = (TDB *)GlobalLock( hTask ); + pTask = (TDB *)GlobalLock16( hTask ); /* Allocate the new environment block */ if (!(hParentEnv = hEnvironment)) { - TDB *pParent = (TDB *)GlobalLock( hCurrentTask ); + TDB *pParent = (TDB *)GlobalLock16( hCurrentTask ); hParentEnv = pParent ? pParent->pdb.environment : hDOSEnvironment; } /* FIXME: do we really need to make a copy also when */ /* we don't use the parent environment? */ - if (!(hEnvironment = GlobalAlloc( GMEM_FIXED, GlobalSize( hParentEnv ) ))) + if (!(hEnvironment = GlobalAlloc16( GMEM_FIXED, GlobalSize16(hParentEnv)))) { - GlobalFree( hTask ); + GlobalFree16( hTask ); return 0; } - memcpy( GlobalLock( hEnvironment ), GlobalLock( hParentEnv ), - GlobalSize( hParentEnv ) ); + memcpy( GlobalLock16( hEnvironment ), GlobalLock16( hParentEnv ), + GlobalSize16( hParentEnv ) ); /* Get current directory */ @@ -501,8 +501,8 @@ HTASK TASK_CreateTask( HMODULE hModule, HANDLE hInstance, HANDLE hPrevInstance, /* Default DTA overwrites command-line */ - pTask->dta = MAKELONG( (int)&pTask->pdb.cmdLine - (int)&pTask->pdb, - pTask->hPDB ); + pTask->dta = PTR_SEG_OFF_TO_SEGPTR( pTask->hPDB, + (int)&pTask->pdb.cmdLine - (int)&pTask->pdb ); /* Allocate the 32-bit stack */ @@ -512,8 +512,8 @@ HTASK TASK_CreateTask( HMODULE hModule, HANDLE hInstance, HANDLE hPrevInstance, /* Create the 32-bit stack frame */ - *(DWORD *)GlobalLock(pTask->hStack32) = 0xDEADBEEF; - stack32Top = (char*)GlobalLock(pTask->hStack32) + STACK32_SIZE; + *(DWORD *)GlobalLock16(pTask->hStack32) = 0xDEADBEEF; + stack32Top = (char*)GlobalLock16(pTask->hStack32) + STACK32_SIZE; frame32 = (STACK32FRAME *)stack32Top - 1; frame32->saved_esp = (DWORD)stack32Top; frame32->edi = 0; @@ -583,7 +583,7 @@ static void TASK_DeleteTask( HTASK hTask ) TDB *pTask; HANDLE hPDB; - if (!(pTask = (TDB *)GlobalLock( hTask ))) return; + if (!(pTask = (TDB *)GlobalLock16( hTask ))) return; hPDB = pTask->hPDB; /* Free the task module */ @@ -601,7 +601,7 @@ static void TASK_DeleteTask( HTASK hTask ) /* Free the task structure itself */ - GlobalFree( hTask ); + GlobalFree16( hTask ); /* Free all memory used by this task (including the 32-bit stack, */ /* the environment block and the thunk segments). */ @@ -622,7 +622,7 @@ void TASK_KillCurrentTask( int exitCode ) { extern void EXEC_ExitWindows( int retCode ); - TDB* pTask = (TDB*) GlobalLock( hCurrentTask ); + TDB* pTask = (TDB*) GlobalLock16( hCurrentTask ); /* Perform USER cleanup */ @@ -685,13 +685,13 @@ void TASK_Reschedule(void) /* Find a task to yield to */ - pOldTask = (TDB *)GlobalLock( hCurrentTask ); + pOldTask = (TDB *)GlobalLock16( hCurrentTask ); if (pOldTask && pOldTask->hYieldTo) { /* If a task is stored in hYieldTo of the current task (put there */ /* by DirectedYield), yield to it only if it has events pending. */ hTask = pOldTask->hYieldTo; - if (!(pNewTask = (TDB *)GlobalLock( hTask )) || !pNewTask->nEvents) + if (!(pNewTask = (TDB *)GlobalLock16( hTask )) || !pNewTask->nEvents) hTask = 0; } @@ -700,7 +700,7 @@ void TASK_Reschedule(void) hTask = hFirstTask; while (hTask) { - pNewTask = (TDB *)GlobalLock( hTask ); + pNewTask = (TDB *)GlobalLock16( hTask ); if (pNewTask->nEvents && (hTask != hCurrentTask)) break; hTask = pNewTask->hNext; } @@ -713,7 +713,7 @@ void TASK_Reschedule(void) if (!hTask) return; /* Do nothing */ - pNewTask = (TDB *)GlobalLock( hTask ); + pNewTask = (TDB *)GlobalLock16( hTask ); dprintf_task( stddeb, "Switching to task %04x (%.8s)\n", hTask, pNewTask->module_name ); @@ -743,7 +743,7 @@ void TASK_Reschedule(void) IF1632_Saved16_ss = pNewTask->ss; IF1632_Saved16_sp = pNewTask->sp; IF1632_Saved32_esp = pNewTask->esp; - IF1632_Stack32_base = WIN16_GlobalLock( pNewTask->hStack32 ); + IF1632_Stack32_base = WIN16_GlobalLock16( pNewTask->hStack32 ); #endif } @@ -767,7 +767,7 @@ void InitTask( struct sigcontext_struct context ) #ifndef WINELIB EAX_reg(&context) = 0; #endif - if (!(pTask = (TDB *)GlobalLock( hCurrentTask ))) return; + if (!(pTask = (TDB *)GlobalLock16( hCurrentTask ))) return; if (!(pModule = MODULE_GetPtr( pTask->hModule ))) return; if (firstTask) @@ -835,7 +835,7 @@ BOOL WaitEvent( HTASK hTask ) TDB *pTask; if (!hTask) hTask = hCurrentTask; - pTask = (TDB *)GlobalLock( hTask ); + pTask = (TDB *)GlobalLock16( hTask ); if (pTask->nEvents > 0) { pTask->nEvents--; @@ -856,7 +856,7 @@ void PostEvent( HTASK hTask ) TDB *pTask; if (!hTask) hTask = hCurrentTask; - if (!(pTask = (TDB *)GlobalLock( hTask ))) return; + if (!(pTask = (TDB *)GlobalLock16( hTask ))) return; pTask->nEvents++; } @@ -870,7 +870,7 @@ void SetPriority( HTASK hTask, int delta ) int newpriority; if (!hTask) hTask = hCurrentTask; - if (!(pTask = (TDB *)GlobalLock( hTask ))) return; + if (!(pTask = (TDB *)GlobalLock16( hTask ))) return; newpriority = pTask->priority + delta; if (newpriority < -32) newpriority = -32; else if (newpriority > 15) newpriority = 15; @@ -909,7 +909,7 @@ void OldYield(void) { TDB *pCurTask; - pCurTask = (TDB *)GlobalLock( hCurrentTask ); + pCurTask = (TDB *)GlobalLock16( hCurrentTask ); if (pCurTask) pCurTask->nEvents++; /* Make sure we get back here */ TASK_SCHEDULE(); if (pCurTask) pCurTask->nEvents--; @@ -923,7 +923,7 @@ void DirectedYield( HTASK hTask ) { TDB *pCurTask; - if ((pCurTask = (TDB *)GlobalLock( hCurrentTask )) != NULL) + if ((pCurTask = (TDB *)GlobalLock16( hCurrentTask )) != NULL) pCurTask->hYieldTo = hTask; OldYield(); @@ -993,9 +993,9 @@ HANDLE GetCodeHandle( FARPROC proc ) /* Check if it is really a thunk */ if ((thunk[0] == 0xb8) && (thunk[3] == 0xea)) - handle = GlobalHandle( thunk[6] + (thunk[7] << 8) ); + handle = GlobalHandle16( thunk[6] + (thunk[7] << 8) ); else - handle = GlobalHandle( HIWORD(proc) ); + handle = GlobalHandle16( HIWORD(proc) ); return handle; #else @@ -1013,7 +1013,7 @@ HQUEUE SetTaskQueue( HANDLE hTask, HQUEUE hQueue ) TDB *pTask; if (!hTask) hTask = hCurrentTask; - if (!(pTask = (TDB *)GlobalLock( hTask ))) return 0; + if (!(pTask = (TDB *)GlobalLock16( hTask ))) return 0; hPrev = pTask->hQueue; pTask->hQueue = hQueue; @@ -1032,7 +1032,7 @@ HQUEUE GetTaskQueue( HANDLE hTask ) TDB *pTask; if (!hTask) hTask = hCurrentTask; - if (!(pTask = (TDB *)GlobalLock( hTask ))) return 0; + if (!(pTask = (TDB *)GlobalLock16( hTask ))) return 0; return pTask->hQueue; } @@ -1080,7 +1080,7 @@ HANDLE GetCurrentPDB(void) { TDB *pTask; - if (!(pTask = (TDB *)GlobalLock( hCurrentTask ))) return 0; + if (!(pTask = (TDB *)GlobalLock16( hCurrentTask ))) return 0; return pTask->hPDB; } @@ -1090,10 +1090,10 @@ HANDLE GetCurrentPDB(void) */ int GetInstanceData( HANDLE instance, WORD buffer, int len ) { - char *ptr = (char *)GlobalLock( instance ); + char *ptr = (char *)GlobalLock16( instance ); if (!ptr || !len) return 0; if ((int)buffer + len >= 0x10000) len = 0x10000 - buffer; - memcpy( ptr + buffer, (char *)GlobalLock( CURRENT_DS ) + buffer, len ); + memcpy( ptr + buffer, (char *)GlobalLock16( CURRENT_DS ) + buffer, len ); return len; } @@ -1106,7 +1106,7 @@ UINT SetErrorMode( UINT mode ) TDB *pTask; UINT oldMode; - if (!(pTask = (TDB *)GlobalLock( hCurrentTask ))) return 0; + if (!(pTask = (TDB *)GlobalLock16( hCurrentTask ))) return 0; oldMode = pTask->error_mode; pTask->error_mode = mode; return oldMode; @@ -1120,8 +1120,8 @@ SEGPTR GetDOSEnvironment(void) { TDB *pTask; - if (!(pTask = (TDB *)GlobalLock( hCurrentTask ))) return 0; - return (SEGPTR)WIN16_GlobalLock( pTask->pdb.environment ); + if (!(pTask = (TDB *)GlobalLock16( hCurrentTask ))) return 0; + return (SEGPTR)WIN16_GlobalLock16( pTask->pdb.environment ); } @@ -1141,7 +1141,7 @@ HINSTANCE GetTaskDS(void) { TDB *pTask; - if (!(pTask = (TDB *)GlobalLock( hCurrentTask ))) return 0; + if (!(pTask = (TDB *)GlobalLock16( hCurrentTask ))) return 0; return pTask->hInstance; } @@ -1153,8 +1153,8 @@ BOOL IsTask( HTASK hTask ) { TDB *pTask; - if (!(pTask = (TDB *)GlobalLock( hTask ))) return FALSE; - if (GlobalSize( hTask ) < sizeof(TDB)) return FALSE; + if (!(pTask = (TDB *)GlobalLock16( hTask ))) return FALSE; + if (GlobalSize16( hTask ) < sizeof(TDB)) return FALSE; return (pTask->magic == TDB_MAGIC); } @@ -1170,7 +1170,7 @@ HMODULE GetExePtr( HANDLE handle ) /* Check for module handle */ - if (!(ptr = GlobalLock( handle ))) return 0; + if (!(ptr = GlobalLock16( handle ))) return 0; if (((NE_MODULE *)ptr)->magic == NE_SIGNATURE) return handle; /* Check the owner for module handle */ @@ -1180,7 +1180,7 @@ HMODULE GetExePtr( HANDLE handle ) #else owner = NULL; #endif - if (!(ptr = GlobalLock( owner ))) return 0; + if (!(ptr = GlobalLock16( owner ))) return 0; if (((NE_MODULE *)ptr)->magic == NE_SIGNATURE) return owner; /* Search for this handle and its owner inside all tasks */ @@ -1188,7 +1188,7 @@ HMODULE GetExePtr( HANDLE handle ) hTask = hFirstTask; while (hTask) { - TDB *pTask = (TDB *)GlobalLock( hTask ); + TDB *pTask = (TDB *)GlobalLock16( hTask ); if ((hTask == handle) || (pTask->hInstance == handle) || (pTask->hQueue == handle) || @@ -1223,7 +1223,7 @@ BOOL TaskNext( TASKENTRY *lpte ) dprintf_toolhelp( stddeb, "TaskNext(%p): task=%04x\n", lpte, lpte->hNext ); if (!lpte->hNext) return FALSE; - pTask = (TDB *)GlobalLock( lpte->hNext ); + pTask = (TDB *)GlobalLock16( lpte->hNext ); if (!pTask || pTask->magic != TDB_MAGIC) return FALSE; pInstData = (INSTANCEDATA *)PTR_SEG_OFF_TO_LIN( pTask->hInstance, 0 ); lpte->hTask = lpte->hNext; diff --git a/memory/atom.c b/memory/atom.c index 9676a540a74..c871a8ff1b6 100644 --- a/memory/atom.c +++ b/memory/atom.c @@ -159,6 +159,7 @@ static ATOM ATOM_AddAtom( WORD selector, SEGPTR name ) if (!entry) return 0; /* Reload the table ptr in case it moved in linear memory */ table = ATOM_GetTable( selector, FALSE ); + str = PTR_SEG_TO_LIN( name ); entryPtr = ATOM_MakePtr( selector, entry ); entryPtr->next = table->entries[hash]; entryPtr->refCount = 1; diff --git a/memory/global.c b/memory/global.c index 54dcd073b3f..78038519d99 100644 --- a/memory/global.c +++ b/memory/global.c @@ -4,8 +4,6 @@ * Copyright 1995 Alexandre Julliard */ -#ifndef WINELIB - #include #include #include @@ -25,16 +23,16 @@ /* Global arena block */ typedef struct { - DWORD base; /* Base address (0 if discarded) */ - DWORD size; /* Size in bytes (0 indicates a free block) */ - HGLOBAL handle; /* Handle for this block */ - HGLOBAL hOwner; /* Owner of this block */ - BYTE lockCount; /* Count of GlobalFix() calls */ - BYTE pageLockCount; /* Count of GlobalPageLock() calls */ - BYTE flags; /* Allocation flags */ - BYTE selCount; /* Number of selectors allocated for this block */ + DWORD base; /* Base address (0 if discarded) */ + DWORD size; /* Size in bytes (0 indicates a free block) */ + HGLOBAL16 handle; /* Handle for this block */ + HGLOBAL16 hOwner; /* Owner of this block */ + BYTE lockCount; /* Count of GlobalFix() calls */ + BYTE pageLockCount; /* Count of GlobalPageLock() calls */ + BYTE flags; /* Allocation flags */ + BYTE selCount; /* Number of selectors allocated for this block */ #ifdef CONFIG_IPC - int shmid; + int shmid; #endif } GLOBALARENA; @@ -94,10 +92,10 @@ void debug_handles() * * Create a global heap block for a fixed range of linear memory. */ -HGLOBAL GLOBAL_CreateBlock( WORD flags, const void *ptr, DWORD size, - HGLOBAL hOwner, BOOL isCode, - BOOL is32Bit, BOOL isReadOnly, - SHMDATA *shmdata ) +HGLOBAL16 GLOBAL_CreateBlock( WORD flags, const void *ptr, DWORD size, + HGLOBAL16 hOwner, BOOL isCode, + BOOL is32Bit, BOOL isReadOnly, + SHMDATA *shmdata ) { WORD sel, selcount; GLOBALARENA *pArena; @@ -158,7 +156,7 @@ HGLOBAL GLOBAL_CreateBlock( WORD flags, const void *ptr, DWORD size, * Free a block allocated by GLOBAL_CreateBlock, without touching * the associated linear memory range. */ -BOOL GLOBAL_FreeBlock( HGLOBAL handle ) +BOOL GLOBAL_FreeBlock( HGLOBAL16 handle ) { WORD sel; @@ -173,13 +171,13 @@ BOOL GLOBAL_FreeBlock( HGLOBAL handle ) /*********************************************************************** * GLOBAL_Alloc * - * Implementation of GlobalAlloc() + * Implementation of GlobalAlloc16() */ -HGLOBAL GLOBAL_Alloc( WORD flags, DWORD size, HGLOBAL hOwner, - BOOL isCode, BOOL is32Bit, BOOL isReadOnly ) +HGLOBAL16 GLOBAL_Alloc( UINT16 flags, DWORD size, HGLOBAL16 hOwner, + BOOL isCode, BOOL is32Bit, BOOL isReadOnly ) { void *ptr; - HGLOBAL handle; + HGLOBAL16 handle; SHMDATA shmdata; dprintf_global( stddeb, "GlobalAlloc: %ld flags=%04x\n", size, flags ); @@ -265,11 +263,11 @@ WORD DDE_GlobalHandleToSel( HGLOBAL handle ) /*********************************************************************** - * GlobalAlloc (KERNEL.15) + * GlobalAlloc16 (KERNEL.15) */ -HGLOBAL GlobalAlloc( WORD flags, DWORD size ) +HGLOBAL16 GlobalAlloc16( UINT16 flags, DWORD size ) { - HANDLE owner = GetCurrentPDB(); + HANDLE16 owner = GetCurrentPDB(); if (flags & GMEM_DDESHARE) owner = GetExePtr(owner); /* Make it a module handle */ @@ -278,9 +276,9 @@ HGLOBAL GlobalAlloc( WORD flags, DWORD size ) /*********************************************************************** - * GlobalReAlloc (KERNEL.16) + * GlobalReAlloc16 (KERNEL.16) */ -HGLOBAL GlobalReAlloc( HGLOBAL handle, DWORD size, WORD flags ) +HGLOBAL16 GlobalReAlloc16( HGLOBAL16 handle, DWORD size, UINT16 flags ) { WORD selcount; DWORD oldsize; @@ -288,14 +286,14 @@ HGLOBAL GlobalReAlloc( HGLOBAL handle, DWORD size, WORD flags ) GLOBALARENA *pArena, *pNewArena; WORD sel = GlobalHandleToSel( handle ); - dprintf_global( stddeb, "GlobalReAlloc: %04x %ld flags=%04x\n", + dprintf_global( stddeb, "GlobalReAlloc16: %04x %ld flags=%04x\n", handle, size, flags ); if (!handle) return 0; #ifdef CONFIG_IPC if (Options.ipc && (flags & GMEM_DDESHARE || is_dde_handle(handle))) { fprintf(stdnimp, - "GlobalReAlloc: shared memory reallocating unimplemented\n"); + "GlobalReAlloc16: shared memory reallocating unimplemented\n"); return 0; } #endif /* CONFIG_IPC */ @@ -384,13 +382,13 @@ HGLOBAL GlobalReAlloc( HGLOBAL handle, DWORD size, WORD flags ) /*********************************************************************** - * GlobalFree (KERNEL.17) + * GlobalFree16 (KERNEL.17) */ -HGLOBAL GlobalFree( HGLOBAL handle ) +HGLOBAL16 GlobalFree16( HGLOBAL16 handle ) { - void *ptr = GlobalLock( handle ); + void *ptr = GlobalLock16( handle ); - dprintf_global( stddeb, "GlobalFree: %04x\n", handle ); + dprintf_global( stddeb, "GlobalFree16: %04x\n", handle ); if (!GLOBAL_FreeBlock( handle )) return handle; /* failed */ #ifdef CONFIG_IPC if (is_dde_handle(handle)) return DDE_GlobalFree(handle); @@ -401,80 +399,84 @@ HGLOBAL GlobalFree( HGLOBAL handle ) /*********************************************************************** - * WIN16_GlobalLock (KERNEL.18) + * WIN16_GlobalLock16 (KERNEL.18) * - * This is the GlobalLock() function used by 16-bit code. + * This is the GlobalLock16() function used by 16-bit code. */ -SEGPTR WIN16_GlobalLock( HGLOBAL handle ) +SEGPTR WIN16_GlobalLock16( HGLOBAL16 handle ) { - dprintf_global( stddeb, "WIN16_GlobalLock(%04x) -> %08lx\n", +#ifndef WINELIB + dprintf_global( stddeb, "WIN16_GlobalLock16(%04x) -> %08lx\n", handle, MAKELONG( 0, GlobalHandleToSel(handle)) ); if (!handle) return 0; #ifdef CONFIG_IPC if (is_dde_handle(handle)) - return (SEGPTR)MAKELONG( 0, DDE_GlobalHandleToSel(handle) ); + return PTR_SEG_OFF_TO_SEGPTR( DDE_GlobalHandleToSel(handle), 0 ); #endif /* CONFIG_IPC */ if (!GET_ARENA_PTR(handle)->base) return (SEGPTR)0; - return (SEGPTR)MAKELONG( 0, GlobalHandleToSel(handle) ); + return PTR_SEG_OFF_TO_SEGPTR( GlobalHandleToSel(handle), 0 ); +#else /* WINELIB */ + return GlobalLock16( handle ); +#endif /* WINELIB */ } /*********************************************************************** - * GlobalLock (KERNEL.18) + * GlobalLock16 (KERNEL.18) * - * This is the GlobalLock() function used by 32-bit code. + * This is the GlobalLock16() function used by 32-bit code. */ -LPVOID GlobalLock( HGLOBAL handle ) +LPVOID GlobalLock16( HGLOBAL16 handle ) { if (!handle) return 0; #ifdef CONFIG_IPC if (is_dde_handle(handle)) return DDE_AttachHandle(handle, NULL); #endif - return (LPSTR)GET_ARENA_PTR(handle)->base; + return (LPVOID)GET_ARENA_PTR(handle)->base; } /*********************************************************************** - * GlobalUnlock (KERNEL.19) + * GlobalUnlock16 (KERNEL.19) */ -BOOL GlobalUnlock( HGLOBAL handle ) +BOOL GlobalUnlock16( HGLOBAL16 handle ) { - dprintf_global( stddeb, "GlobalUnlock: %04x\n", handle ); + dprintf_global( stddeb, "GlobalUnlock16: %04x\n", handle ); return 0; } /*********************************************************************** - * GlobalSize (KERNEL.20) + * GlobalSize16 (KERNEL.20) */ -DWORD GlobalSize( HGLOBAL handle ) +DWORD GlobalSize16( HGLOBAL16 handle ) { - dprintf_global( stddeb, "GlobalSize: %04x\n", handle ); + dprintf_global( stddeb, "GlobalSize16: %04x\n", handle ); if (!handle) return 0; return GET_ARENA_PTR(handle)->size; } /*********************************************************************** - * GlobalHandle (KERNEL.21) + * GlobalHandle16 (KERNEL.21) */ -DWORD GlobalHandle( WORD sel ) +DWORD GlobalHandle16( WORD sel ) { - dprintf_global( stddeb, "GlobalHandle: %04x\n", sel ); + dprintf_global( stddeb, "GlobalHandle16: %04x\n", sel ); return MAKELONG( GET_ARENA_PTR(sel)->handle, GlobalHandleToSel(sel) ); } /*********************************************************************** - * GlobalFlags (KERNEL.22) + * GlobalFlags16 (KERNEL.22) */ -WORD GlobalFlags( HGLOBAL handle ) +UINT16 GlobalFlags16( HGLOBAL16 handle ) { GLOBALARENA *pArena; - dprintf_global( stddeb, "GlobalFlags: %04x\n", handle ); + dprintf_global( stddeb, "GlobalFlags16: %04x\n", handle ); pArena = GET_ARENA_PTR(handle); return pArena->lockCount | ((pArena->flags & GA_DISCARDABLE) ? GMEM_DISCARDABLE : 0) | @@ -507,9 +509,9 @@ void UnlockSegment( HGLOBAL handle ) /*********************************************************************** - * GlobalCompact (KERNEL.25) + * GlobalCompact16 (KERNEL.25) */ -DWORD GlobalCompact( DWORD desired ) +DWORD GlobalCompact16( DWORD desired ) { return GLOBAL_MAX_ALLOC_SIZE; } @@ -518,7 +520,7 @@ DWORD GlobalCompact( DWORD desired ) /*********************************************************************** * GlobalFreeAll (KERNEL.26) */ -void GlobalFreeAll( HANDLE owner ) +void GlobalFreeAll( HGLOBAL16 owner ) { DWORD i; GLOBALARENA *pArena; @@ -527,7 +529,7 @@ void GlobalFreeAll( HANDLE owner ) for (i = 0; i < globalArenaSize; i++, pArena++) { if ((pArena->size != 0) && (pArena->hOwner == owner)) - GlobalFree( pArena->handle ); + GlobalFree16( pArena->handle ); } } @@ -535,18 +537,18 @@ void GlobalFreeAll( HANDLE owner ) /*********************************************************************** * GlobalWire (KERNEL.111) */ -SEGPTR GlobalWire( HGLOBAL handle ) +SEGPTR GlobalWire( HGLOBAL16 handle ) { - return WIN16_GlobalLock( handle ); + return WIN16_GlobalLock16( handle ); } /*********************************************************************** * GlobalUnWire (KERNEL.112) */ -BOOL GlobalUnWire( HGLOBAL handle ) +BOOL GlobalUnWire( HGLOBAL16 handle ) { - return GlobalUnlock( handle ); + return GlobalUnlock16( handle ); } @@ -555,7 +557,7 @@ BOOL GlobalUnWire( HGLOBAL handle ) */ DWORD GlobalDOSAlloc( DWORD size ) { - WORD sel = GlobalAlloc( GMEM_FIXED, size ); + WORD sel = GlobalAlloc16( GMEM_FIXED, size ); if (!sel) return 0; return MAKELONG( sel, sel /* this one ought to be a real-mode segment */ ); } @@ -566,7 +568,7 @@ DWORD GlobalDOSAlloc( DWORD size ) */ WORD GlobalDOSFree( WORD sel ) { - return GlobalFree( GlobalHandle(sel) ) ? sel : 0; + return GlobalFree16( GlobalHandle16(sel) ) ? sel : 0; } @@ -583,7 +585,7 @@ LONG SetSwapAreaSize( WORD size ) /*********************************************************************** * GlobalLRUOldest (KERNEL.163) */ -HGLOBAL GlobalLRUOldest( HGLOBAL handle ) +HGLOBAL16 GlobalLRUOldest( HGLOBAL16 handle ) { dprintf_global( stddeb, "GlobalLRUOldest: %04x\n", handle ); if (handle == (HGLOBAL)-1) handle = CURRENT_DS; @@ -594,7 +596,7 @@ HGLOBAL GlobalLRUOldest( HGLOBAL handle ) /*********************************************************************** * GlobalLRUNewest (KERNEL.164) */ -HGLOBAL GlobalLRUNewest( HGLOBAL handle ) +HGLOBAL16 GlobalLRUNewest( HGLOBAL16 handle ) { dprintf_global( stddeb, "GlobalLRUNewest: %04x\n", handle ); if (handle == (HGLOBAL)-1) handle = CURRENT_DS; @@ -605,7 +607,7 @@ HGLOBAL GlobalLRUNewest( HGLOBAL handle ) /*********************************************************************** * GetFreeSpace (KERNEL.169) */ -DWORD GetFreeSpace( UINT wFlags ) +DWORD GetFreeSpace( UINT16 wFlags ) { return GLOBAL_MAX_ALLOC_SIZE; } @@ -614,7 +616,7 @@ DWORD GetFreeSpace( UINT wFlags ) /*********************************************************************** * GlobalPageLock (KERNEL.191) */ -WORD GlobalPageLock( HGLOBAL handle ) +WORD GlobalPageLock( HGLOBAL16 handle ) { dprintf_global( stddeb, "GlobalPageLock: %04x\n", handle ); return ++(GET_ARENA_PTR(handle)->pageLockCount); @@ -624,7 +626,7 @@ WORD GlobalPageLock( HGLOBAL handle ) /*********************************************************************** * GlobalPageUnlock (KERNEL.192) */ -WORD GlobalPageUnlock( HGLOBAL handle ) +WORD GlobalPageUnlock( HGLOBAL16 handle ) { dprintf_global( stddeb, "GlobalPageUnlock: %04x\n", handle ); return --(GET_ARENA_PTR(handle)->pageLockCount); @@ -634,7 +636,7 @@ WORD GlobalPageUnlock( HGLOBAL handle ) /*********************************************************************** * GlobalFix (KERNEL.197) */ -void GlobalFix( HGLOBAL handle ) +void GlobalFix( HGLOBAL16 handle ) { dprintf_global( stddeb, "GlobalFix: %04x\n", handle ); GET_ARENA_PTR(handle)->lockCount++; @@ -644,7 +646,7 @@ void GlobalFix( HGLOBAL handle ) /*********************************************************************** * GlobalUnfix (KERNEL.198) */ -void GlobalUnfix( HGLOBAL handle ) +void GlobalUnfix( HGLOBAL16 handle ) { dprintf_global( stddeb, "GlobalUnfix: %04x\n", handle ); GET_ARENA_PTR(handle)->lockCount--; @@ -672,7 +674,7 @@ WORD FarGetOwner( HANDLE handle ) /*********************************************************************** * GlobalHandleToSel (TOOLHELP.50) */ -WORD GlobalHandleToSel( HGLOBAL handle ) +WORD GlobalHandleToSel( HGLOBAL16 handle ) { dprintf_toolhelp( stddeb, "GlobalHandleToSel: %04x\n", handle ); if (!handle) return 0; @@ -752,7 +754,7 @@ BOOL GlobalInfo( GLOBALINFO *pInfo ) /*********************************************************************** * GlobalEntryHandle (TOOLHELP.54) */ -BOOL GlobalEntryHandle( GLOBALENTRY *pGlobal, HGLOBAL hItem ) +BOOL GlobalEntryHandle( GLOBALENTRY *pGlobal, HGLOBAL16 hItem ) { return FALSE; } @@ -761,7 +763,7 @@ BOOL GlobalEntryHandle( GLOBALENTRY *pGlobal, HGLOBAL hItem ) /*********************************************************************** * GlobalEntryModule (TOOLHELP.55) */ -BOOL GlobalEntryModule( GLOBALENTRY *pGlobal, HMODULE hModule, WORD wSeg ) +BOOL GlobalEntryModule( GLOBALENTRY *pGlobal, HMODULE16 hModule, WORD wSeg ) { return FALSE; } @@ -818,23 +820,98 @@ BOOL MemManInfo( MEMMANINFO *pInfo ) #endif } +#ifndef WINELIB + +#endif /* WINELIB */ + /*********************************************************************** - * GlobalAlloc32 - * implements GlobalAlloc (KERNEL32.316) - * LocalAlloc (KERNEL32.372) + * GlobalAlloc32 (KERNEL32.315) */ -void *GlobalAlloc32(int flags,int size) +HGLOBAL32 GlobalAlloc32( UINT32 flags, DWORD size ) { - dprintf_global(stddeb,"GlobalAlloc32(%x,%x)\n",flags,size); - return malloc(size); + DWORD heapFlags = 0; + + if (flags & GMEM_MOVEABLE) + fprintf( stderr, "GlobalAlloc32: unimplemented flag GMEM_MOVEABLE\n" ); + + if (flags & GMEM_ZEROINIT) heapFlags |= HEAP_ZERO_MEMORY; + return (HGLOBAL32)HeapAlloc( GetProcessHeap(), heapFlags, size ); } + /*********************************************************************** - * GlobalLock32 + * GlobalCompact32 (KERNEL32.316) */ -void* GlobalLock32(DWORD ptr) +DWORD GlobalCompact32( DWORD minfree ) { - return (void*)ptr; + return 0; /* GlobalCompact does nothing in Win32 */ } -#endif /* WINELIB */ + +/*********************************************************************** + * GlobalFlags32 (KERNEL32.321) + */ +UINT32 GlobalFlags32( HGLOBAL32 handle ) +{ + return 0; +} + + +/*********************************************************************** + * GlobalFree32 (KERNEL32.322) + */ +HGLOBAL32 GlobalFree32( HGLOBAL32 handle ) +{ + return HeapFree( GetProcessHeap(), 0, (LPVOID)handle ) ? 0 : handle; +} + + +/*********************************************************************** + * GlobalHandle32 (KERNEL32.325) + */ +HGLOBAL32 GlobalHandle32( LPCVOID ptr ) +{ + return (HGLOBAL32)ptr; +} + + +/*********************************************************************** + * GlobalLock32 (KERNEL32.326) + */ +LPVOID GlobalLock32( HGLOBAL32 handle ) +{ + return (LPVOID)handle; +} + + +/*********************************************************************** + * GlobalReAlloc32 (KERNEL32.328) + */ +HGLOBAL32 GlobalReAlloc32( HGLOBAL32 handle, DWORD size, UINT32 flags ) +{ + if (flags & GMEM_MODIFY) + { + fprintf( stderr, "GlobalReAlloc32: GMEM_MODIFY not supported\n" ); + return 0; + } + + return (HGLOBAL32)HeapReAlloc( GetProcessHeap(), 0, (LPVOID)handle, size ); +} + + +/*********************************************************************** + * GlobalSize32 (KERNEL32.329) + */ +DWORD GlobalSize32( HGLOBAL32 handle ) +{ + return HeapSize( GetProcessHeap(), 0, (LPVOID)handle ); +} + + +/*********************************************************************** + * GlobalUnlock32 (KERNEL32.332) + */ +BOOL GlobalUnlock32( HGLOBAL32 handle ) +{ + return TRUE; +} diff --git a/memory/local.c b/memory/local.c index ff9ae2561c2..38cb3ea273f 100644 --- a/memory/local.c +++ b/memory/local.c @@ -2,6 +2,7 @@ * Local heap functions * * Copyright 1995 Alexandre Julliard + * Copyright 1996 Huw Davies */ /* @@ -11,8 +12,6 @@ * parameter than usual. */ -#ifndef WINELIB - #include #include #include "windows.h" @@ -25,7 +24,6 @@ #include "stddebug.h" #include "debug.h" - #ifndef WINELIB #pragma pack(1) #endif @@ -47,7 +45,6 @@ typedef struct /* Arena types (stored in 'prev' field of the arena) */ #define LOCAL_ARENA_FREE 0 #define LOCAL_ARENA_FIXED 1 -#define LOCAL_ARENA_MOVEABLE 3 /* Layout of a handle entry table * @@ -97,9 +94,9 @@ typedef struct #define LALIGN(word) (((word) + 3) & ~3) #define ARENA_PTR(ptr,arena) ((LOCALARENA *)((char*)(ptr)+(arena))) -#define ARENA_PREV(ptr,arena) (ARENA_PTR(ptr,arena)->prev & ~3) -#define ARENA_NEXT(ptr,arena) (ARENA_PTR(ptr,arena)->next) -#define ARENA_FLAGS(ptr,arena) (ARENA_PTR(ptr,arena)->prev & 3) +#define ARENA_PREV(ptr,arena) (ARENA_PTR((ptr),(arena))->prev & ~3) +#define ARENA_NEXT(ptr,arena) (ARENA_PTR((ptr),(arena))->next) +#define ARENA_FLAGS(ptr,arena) (ARENA_PTR((ptr),(arena))->prev & 3) /* determine whether the handle belongs to a fixed or a moveable block */ #define HANDLE_FIXED(handle) (((handle) & 3) == 0) @@ -110,7 +107,7 @@ typedef struct * * Return a pointer to the local heap, making sure it exists. */ -static LOCALHEAPINFO *LOCAL_GetHeap( WORD ds ) +static LOCALHEAPINFO *LOCAL_GetHeap( HANDLE16 ds ) { LOCALHEAPINFO *pInfo; INSTANCEDATA *ptr = (INSTANCEDATA *)PTR_SEG_OFF_TO_LIN( ds, 0 ); @@ -196,7 +193,7 @@ static void LOCAL_AddBlock( char *baseptr, WORD prev, WORD new ) LOCALARENA *pPrev = ARENA_PTR( baseptr, prev ); LOCALARENA *pNew = ARENA_PTR( baseptr, new ); - pNew->prev = prev | LOCAL_ARENA_FIXED; + pNew->prev = (prev & ~3) | LOCAL_ARENA_FIXED; pNew->next = pPrev->next; ARENA_PTR(baseptr,pPrev->next)->prev &= 3; ARENA_PTR(baseptr,pPrev->next)->prev |= new; @@ -239,7 +236,7 @@ static void LOCAL_RemoveBlock( char *baseptr, WORD block ) /*********************************************************************** * LOCAL_PrintHeap */ -static void LOCAL_PrintHeap( WORD ds ) +static void LOCAL_PrintHeap( HANDLE16 ds ) { char *ptr = PTR_SEG_OFF_TO_LIN( ds, 0 ); LOCALHEAPINFO *pInfo = LOCAL_GetHeap( ds ); @@ -329,7 +326,7 @@ BOOL LocalInit( HANDLE selector, WORD start, WORD end ) * of minsize + stacksize, since there are programs that * resize the data segment before calling InitTask(). So, * we must put it at the end of the segment */ - start = GlobalSize( GlobalHandle( selector ) ); + start = GlobalSize16( GlobalHandle16( selector ) ); start -= end; end += start; dprintf_local( stddeb," new start %04x, minstart: %04x\n", start, pSeg->minsize + pModule->stack_size); @@ -404,10 +401,10 @@ BOOL LocalInit( HANDLE selector, WORD start, WORD end ) /*********************************************************************** * LOCAL_GrowHeap */ -static void LOCAL_GrowHeap( WORD ds ) +static void LOCAL_GrowHeap( HANDLE16 ds ) { - HANDLE hseg = GlobalHandle( ds ); - LONG oldsize = GlobalSize( hseg ); + HANDLE hseg = GlobalHandle16( ds ); + LONG oldsize = GlobalSize16( hseg ); LONG end; LOCALHEAPINFO *pHeapInfo; WORD freeArena, lastArena; @@ -416,14 +413,14 @@ static void LOCAL_GrowHeap( WORD ds ) /* if nothing can be gained, return */ if (oldsize > 0xfff0) return; - hseg = GlobalReAlloc( hseg, 0x10000, GMEM_FIXED ); + hseg = GlobalReAlloc16( hseg, 0x10000, GMEM_FIXED ); ptr = PTR_SEG_OFF_TO_LIN( ds, 0 ); pHeapInfo = LOCAL_GetHeap( ds ); if (pHeapInfo == NULL) { fprintf( stderr, "Local_GrowHeap: heap not found\n" ); return; } - end = GlobalSize( hseg ); + end = GlobalSize16( hseg ); lastArena = (end - sizeof(LOCALARENA)) & ~3; /* Update the HeapInfo */ @@ -433,12 +430,11 @@ static void LOCAL_GrowHeap( WORD ds ) pHeapInfo->minsize += end - oldsize; /* grow the old last block */ - /* FIXME: merge two adjacent free blocks */ pArena = ARENA_PTR( ptr, freeArena ); pArena->size = lastArena - freeArena; pArena->next = lastArena; pArena->free_next = lastArena; - + /* Initialise the new last block */ pLastArena = ARENA_PTR( ptr, lastArena ); @@ -448,14 +444,71 @@ static void LOCAL_GrowHeap( WORD ds ) pLastArena->free_prev = freeArena; pLastArena->free_next = lastArena; /* this one */ + /* If block before freeArena is also free then merge them */ + if((ARENA_PTR(ptr, (pArena->prev & ~3))->prev & 3) == LOCAL_ARENA_FREE) + { + LOCAL_RemoveBlock(ptr, freeArena); + pHeapInfo->items--; + } + dprintf_local( stddeb, "Heap expanded\n" ); LOCAL_PrintHeap( ds ); } + /*********************************************************************** - * LOCAL_Compact + * LOCAL_FreeArena + */ +static HLOCAL16 LOCAL_FreeArena( WORD ds, WORD arena ) +{ + char *ptr = PTR_SEG_OFF_TO_LIN( ds, 0 ); + LOCALHEAPINFO *pInfo; + LOCALARENA *pArena, *pPrev, *pNext; + + dprintf_local( stddeb, "LocalFreeArena: %04x ds=%04x\n", arena, ds ); + if (!(pInfo = LOCAL_GetHeap( ds ))) return arena; + + pArena = ARENA_PTR( ptr, arena ); + if ((pArena->prev & 3) == LOCAL_ARENA_FREE) + { + /* shouldn't happen */ + fprintf( stderr, "LocalFreeArena: Trying to free block %04x twice!\n", + arena ); + LOCAL_PrintHeap( ds ); + return arena; + } + + /* Check if we can merge with the previous block */ + + pPrev = ARENA_PTR( ptr, pArena->prev & ~3 ); + pNext = ARENA_PTR( ptr, pArena->next ); + if ((pPrev->prev & 3) == LOCAL_ARENA_FREE) + { + arena = pArena->prev & ~3; + pArena = pPrev; + LOCAL_RemoveBlock( ptr, pPrev->next ); + pInfo->items--; + } + else /* Make a new free block */ + { + LOCAL_MakeBlockFree( ptr, arena ); + } + + /* Check if we can merge with the next block */ + + if ((pArena->next == pArena->free_next) && + (pArena->next != pInfo->last)) + { + LOCAL_RemoveBlock( ptr, pArena->next ); + pInfo->items--; + } + return 0; +} + +/*********************************************************************** + * LOCAL_GetFreeSpace */ -static WORD LOCAL_Compact( WORD ds, WORD minfree, WORD flags ) +static WORD LOCAL_GetFreeSpace(WORD ds, WORD countdiscard) { char *ptr = PTR_SEG_OFF_TO_LIN( ds, 0 ); LOCALHEAPINFO *pInfo; @@ -465,34 +518,171 @@ static WORD LOCAL_Compact( WORD ds, WORD minfree, WORD flags ) if (!(pInfo = LOCAL_GetHeap( ds ))) { - fprintf( stderr, "Local_FindFreeBlock: Local heap not found\n" ); - LOCAL_PrintHeap(ds); - return 0; + fprintf( stderr, "LOCAL_GetFreeSpace: Local heap not found\n" ); + LOCAL_PrintHeap(ds); + return 0; } - arena = pInfo->first; pArena = ARENA_PTR( ptr, arena ); - while (arena != pArena->free_next) { + while (arena != pArena->free_next) + { arena = pArena->free_next; pArena = ARENA_PTR( ptr, arena ); if (pArena->size >= freespace) freespace = pArena->size; } - - if(freespace < ARENA_HEADER_SIZE) - freespace = 0; - else - freespace -= ARENA_HEADER_SIZE; - - if (flags & LMEM_NOCOMPACT) return freespace; - - if (flags & LMEM_NODISCARD) return freespace; + /* FIXME doesn't yet calculate space that would become free if everything + were discarded when countdiscard == 1 */ + if (freespace < ARENA_HEADER_SIZE) freespace = 0; + else freespace -= ARENA_HEADER_SIZE; return freespace; } + +/*********************************************************************** + * LOCAL_Compact + */ +static WORD LOCAL_Compact( HANDLE16 ds, WORD minfree, WORD flags ) +{ + char *ptr = PTR_SEG_OFF_TO_LIN( ds, 0 ), *fcp, *mcp; + LOCALHEAPINFO *pInfo; + LOCALARENA *pArena, *pMoveArena, *pFinalArena; + WORD arena, movearena, finalarena, table; + WORD count, movesize, size, i; + WORD freespace; + LOCALHANDLEENTRY *pEntry; + + if (!(pInfo = LOCAL_GetHeap( ds ))) + { + fprintf( stderr, "Local_Compact: Local heap not found\n" ); + LOCAL_PrintHeap(ds); + return 0; + } + dprintf_local(stddeb, + "LOCAL_Compact: ds = %04x, minfree = %04x, flags = %04x\n", + ds, minfree, flags); + freespace = LOCAL_GetFreeSpace(ds, minfree ? 0 : 1); + if(freespace >= minfree || (flags & LMEM_NOCOMPACT)) + { + dprintf_local(stddeb, "Returning %04x.\n", freespace); + return freespace; + } + dprintf_local(stddeb, "Local_Compact: Compacting heap %04x.\n", ds); + table = pInfo->htable; + while(table) + { + pEntry = (LOCALHANDLEENTRY *)(ptr + table + sizeof(WORD)); + for(count = *(WORD *)(ptr + table); count > 0; count--, pEntry++) + { + if((pEntry->lock == 0) && !(pEntry->flags & + (LMEM_DISCARDED >> 8))) + { + /* OK we can move this one if we want */ + dprintf_local(stddeb, + "handle %04x (block %04x) can be moved.\n", + (WORD)((char *)pEntry - ptr), pEntry->addr); + movearena = ARENA_HEADER(pEntry->addr); + pMoveArena = ARENA_PTR(ptr, movearena); + movesize = pMoveArena->next - movearena; + arena = pInfo->first; + pArena = ARENA_PTR(ptr, arena); + size = 0xffff; + finalarena = 0; + /* Try to find the smallest arena that will do, */ + /* which is below us in memory */ + for(;;) + { + arena = pArena->free_next; + pArena = ARENA_PTR(ptr, arena); + if(arena >= movearena) + break; + if(arena == pArena->free_next) + break; + if((pArena->size >= movesize) && (pArena->size < size)) + { + size = pArena->size; + finalarena = arena; + } + } + if (finalarena) /* Actually got somewhere to move */ + { + dprintf_local(stddeb, "Moving it to %04x.\n", finalarena); + pFinalArena = ARENA_PTR(ptr, finalarena); + + /* Check to see if it's worth creating a free arena at the end */ + if(pFinalArena->size > movesize+LALIGN(sizeof(LOCALARENA))) + { + LOCAL_AddBlock(ptr, finalarena, finalarena + movesize); + LOCAL_MakeBlockFree(ptr, finalarena + movesize); + pInfo->items++; + } + /* Copy the arena to it's new location */ + LOCAL_RemoveFreeBlock(ptr, finalarena); + memcpy((char *)pFinalArena + ARENA_HEADER_SIZE, + (char *)pMoveArena + ARENA_HEADER_SIZE, + movesize - ARENA_HEADER_SIZE ); + /* Free the old location */ + LOCAL_FreeArena(ds, movearena); + /* Update handle table entry */ + pEntry->addr = finalarena + ARENA_HEADER_SIZE; + } + else if((ARENA_PTR(ptr, pMoveArena->prev & ~3)->prev & 3) + == LOCAL_ARENA_FREE) + { + /* Previous arena is free (but < movesize) */ + /* so we can 'slide' movearena down into it */ + finalarena = pMoveArena->prev & ~3; + pFinalArena = ARENA_PTR(ptr, finalarena); + dprintf_local(stddeb, "Sliding arena %04x to %04x.\n", + movearena, finalarena); + LOCAL_RemoveFreeBlock(ptr, finalarena); + LOCAL_RemoveBlock(ptr, movearena); + mcp = (char *)pMoveArena + ARENA_HEADER_SIZE; + fcp = (char *)pFinalArena + ARENA_HEADER_SIZE; + for(i = 0; i < movesize - ARENA_HEADER_SIZE; i++) + *(fcp++) = *(mcp++); + LOCAL_AddBlock(ptr, finalarena, finalarena + movesize); + LOCAL_MakeBlockFree(ptr, finalarena + movesize); + /* Update handle table entry */ + pEntry->addr = finalarena + ARENA_HEADER_SIZE; + } + } + } + table = *(WORD *)pEntry; + } + freespace = LOCAL_GetFreeSpace(ds, minfree ? 0 : 1); + if(freespace >= minfree || (flags & LMEM_NODISCARD)) + { + dprintf_local(stddeb, "Returning %04x.\n", freespace); + return freespace; + } + + table = pInfo->htable; + while(table) + { + pEntry = (LOCALHANDLEENTRY *)(ptr + table + sizeof(WORD)); + for(count = *(WORD *)(ptr + table); count > 0; count--, pEntry++) + { + if((pEntry->flags & (LMEM_DISCARDABLE >> 8)) && + pEntry->lock == 0 && !(pEntry->flags & (LMEM_DISCARDED >> 8))) + { + dprintf_local(stddeb, "Discarding handle %04x (block %04x).\n", + (char *)pEntry - ptr, pEntry->addr); + LOCAL_FreeArena(ds, pEntry->addr); + pEntry->addr = 0; + pEntry->flags |= (LMEM_DISCARDED >> 8); + /* Call localnotify proc */ + } + } + table = *(WORD *)pEntry; + } + return LOCAL_Compact(ds, 0xffff, LMEM_NODISCARD); +} + + /*********************************************************************** * LOCAL_FindFreeBlock */ -static HLOCAL LOCAL_FindFreeBlock( WORD ds, WORD size ) +static HLOCAL16 LOCAL_FindFreeBlock( HANDLE16 ds, WORD size ) { char *ptr = PTR_SEG_OFF_TO_LIN( ds, 0 ); LOCALHEAPINFO *pInfo; @@ -524,7 +714,7 @@ static HLOCAL LOCAL_FindFreeBlock( WORD ds, WORD size ) * The segment may get moved around in this function, so all callers * should reset their pointer variables. */ -static HLOCAL LOCAL_GetBlock( WORD ds, WORD size, WORD flags ) +static HLOCAL16 LOCAL_GetBlock( HANDLE16 ds, WORD size, WORD flags ) { char *ptr = PTR_SEG_OFF_TO_LIN( ds, 0 ); LOCALHEAPINFO *pInfo; @@ -585,12 +775,12 @@ static HLOCAL LOCAL_GetBlock( WORD ds, WORD size, WORD flags ) /*********************************************************************** * LOCAL_NewHTable */ -static BOOL LOCAL_NewHTable( WORD ds ) +static BOOL LOCAL_NewHTable( HANDLE16 ds ) { char *ptr = PTR_SEG_OFF_TO_LIN( ds, 0 ); LOCALHEAPINFO *pInfo; LOCALHANDLEENTRY *pEntry; - HLOCAL handle; + HLOCAL16 handle; int i; dprintf_local( stddeb, "Local_NewHTable\n" ); @@ -601,11 +791,13 @@ static BOOL LOCAL_NewHTable( WORD ds ) return FALSE; } - handle = LOCAL_GetBlock( ds, pInfo->hdelta * sizeof(LOCALHANDLEENTRY) - + 2 * sizeof(WORD), LMEM_FIXED ); - ptr = PTR_SEG_OFF_TO_LIN( ds, 0 ); - pInfo = LOCAL_GetHeap( ds ); - if (handle == 0) return FALSE; + if (!(handle = LOCAL_GetBlock( ds, pInfo->hdelta * sizeof(LOCALHANDLEENTRY) + + 2 * sizeof(WORD), LMEM_FIXED ))) + return FALSE; + if (!(ptr = PTR_SEG_OFF_TO_LIN( ds, 0 ))) + fprintf(stderr, "LOCAL_NewHTable: ptr == NULL after GetBlock.\n"); + if (!(pInfo = LOCAL_GetHeap( ds ))) + fprintf(stderr,"LOCAL_NewHTable: pInfo == NULL after GetBlock.\n"); /* Fill the entry table */ @@ -621,7 +813,7 @@ static BOOL LOCAL_NewHTable( WORD ds ) /*********************************************************************** * LOCAL_GetNewHandleEntry */ -static HLOCAL LOCAL_GetNewHandleEntry( WORD ds ) +static HLOCAL16 LOCAL_GetNewHandleEntry( HANDLE16 ds ) { char *ptr = PTR_SEG_OFF_TO_LIN( ds, 0 ); LOCALHEAPINFO *pInfo; @@ -661,57 +853,7 @@ static HLOCAL LOCAL_GetNewHandleEntry( WORD ds ) pEntry->lock = 0; dprintf_local( stddeb, "LOCAL_GetNewHandleEntry(%04x): %04x\n", ds, ((char *)pEntry - ptr) ); - return (HLOCAL)((char *)pEntry - ptr); -} - - -/*********************************************************************** - * LOCAL_FreeArena - */ -static HLOCAL LOCAL_FreeArena( WORD ds, WORD arena ) -{ - char *ptr = PTR_SEG_OFF_TO_LIN( ds, 0 ); - LOCALHEAPINFO *pInfo; - LOCALARENA *pArena, *pPrev, *pNext; - - dprintf_local( stddeb, "LocalFreeArena: %04x ds=%04x\n", arena, ds ); - if (!(pInfo = LOCAL_GetHeap( ds ))) return arena; - - pArena = ARENA_PTR( ptr, arena ); - if ((pArena->prev & 3) == LOCAL_ARENA_FREE) - { - /* shouldn't happen */ - fprintf( stderr, "LocalFreeArena: Trying to free block %04x twice!\n", - arena ); - LOCAL_PrintHeap( ds ); - return arena; - } - - /* Check if we can merge with the previous block */ - - pPrev = ARENA_PTR( ptr, pArena->prev & ~3 ); - pNext = ARENA_PTR( ptr, pArena->next ); - if ((pPrev->prev & 3) == LOCAL_ARENA_FREE) - { - arena = pArena->prev & ~3; - pArena = pPrev; - LOCAL_RemoveBlock( ptr, pPrev->next ); - pInfo->items--; - } - else /* Make a new free block */ - { - LOCAL_MakeBlockFree( ptr, arena ); - } - - /* Check if we can merge with the next block */ - - if ((pArena->next == pArena->free_next) && - (pArena->next != pInfo->last)) - { - LOCAL_RemoveBlock( ptr, pArena->next ); - pInfo->items--; - } - return 0; + return (HLOCAL16)((char *)pEntry - ptr); } @@ -720,7 +862,7 @@ static HLOCAL LOCAL_FreeArena( WORD ds, WORD arena ) * * Free a handle table entry. */ -static void LOCAL_FreeHandleEntry( WORD ds, HLOCAL handle ) +static void LOCAL_FreeHandleEntry( HANDLE16 ds, HLOCAL16 handle ) { char *ptr = PTR_SEG_OFF_TO_LIN( ds, 0 ); LOCALHANDLEENTRY *pEntry = (LOCALHANDLEENTRY *)(ptr + handle); @@ -754,16 +896,16 @@ static void LOCAL_FreeHandleEntry( WORD ds, HLOCAL handle ) /* Now check if all entries in this table are free */ - pEntry = (LOCALHANDLEENTRY *)(ptr + *pTable + sizeof(WORD)); - count = *(WORD *)(ptr + *pTable); + table = *pTable; + pEntry = (LOCALHANDLEENTRY *)(ptr + table + sizeof(WORD)); + count = *(WORD *)(ptr + table); for (i = count; i > 0; i--, pEntry++) if (pEntry->lock != 0xff) return; /* Remove the table from the linked list and free it */ - table = *pTable; dprintf_local( stddeb, "LOCAL_FreeHandleEntry(%04x): freeing table %04x\n", ds, table); - *pTable = *((WORD *)(ptr + count * sizeof(*pEntry)) + 1); + *pTable = *(WORD *)pEntry; LOCAL_FreeArena( ds, ARENA_HEADER( table ) ); } @@ -773,7 +915,7 @@ static void LOCAL_FreeHandleEntry( WORD ds, HLOCAL handle ) * * Implementation of LocalFree(). */ -HLOCAL LOCAL_Free( HANDLE ds, HLOCAL handle ) +HLOCAL16 LOCAL_Free( HANDLE16 ds, HLOCAL16 handle ) { char *ptr = PTR_SEG_OFF_TO_LIN( ds, 0 ); @@ -787,9 +929,14 @@ HLOCAL LOCAL_Free( HANDLE ds, HLOCAL handle ) } else { - WORD arena = ARENA_HEADER( *(WORD *)(ptr + handle) ); - dprintf_local( stddeb, "LocalFree: real block at %04x\n", arena ); - if (LOCAL_FreeArena( ds, arena )) return handle; /* couldn't free it */ + LOCALHANDLEENTRY *pEntry = (LOCALHANDLEENTRY *)(ptr + handle); + if (!(pEntry->flags & (LMEM_DISCARDED >> 8))) + { + dprintf_local( stddeb, "LocalFree: real block at %04x\n", + pEntry->addr ); + if (LOCAL_FreeArena( ds, ARENA_HEADER(pEntry->addr) )) + return handle; /* couldn't free it */ + } LOCAL_FreeHandleEntry( ds, handle ); return 0; /* OK */ } @@ -801,17 +948,17 @@ HLOCAL LOCAL_Free( HANDLE ds, HLOCAL handle ) * * Implementation of LocalAlloc(). */ -HLOCAL LOCAL_Alloc( HANDLE ds, WORD flags, WORD size ) +HLOCAL16 LOCAL_Alloc( HANDLE16 ds, WORD flags, WORD size ) { char *ptr; - HLOCAL handle; + HLOCAL16 handle; dprintf_local( stddeb, "LocalAlloc: %04x %d ds=%04x\n", flags, size, ds ); if (flags & LMEM_MOVEABLE) { LOCALHANDLEENTRY *plhe; - HLOCAL hmem; + HLOCAL16 hmem; if (!(hmem = LOCAL_GetBlock( ds, size, flags ))) return 0; if (!(handle = LOCAL_GetNewHandleEntry( ds ))) @@ -837,11 +984,12 @@ HLOCAL LOCAL_Alloc( HANDLE ds, WORD flags, WORD size ) * * Implementation of LocalReAlloc(). */ -HLOCAL LOCAL_ReAlloc( HANDLE ds, HLOCAL handle, WORD size, WORD flags ) +HLOCAL16 LOCAL_ReAlloc( HANDLE16 ds, HLOCAL16 handle, WORD size, WORD flags ) { char *ptr = PTR_SEG_OFF_TO_LIN( ds, 0 ); LOCALHEAPINFO *pInfo; LOCALARENA *pArena, *pNext; + LOCALHANDLEENTRY *pEntry; WORD arena, newhandle, blockhandle; LONG nextarena; @@ -858,11 +1006,52 @@ HLOCAL LOCAL_ReAlloc( HANDLE ds, HLOCAL handle, WORD size, WORD flags ) dprintf_local( stddeb, "LocalReAlloc: arena is %04x\n", arena ); pArena = ARENA_PTR( ptr, arena ); - if (flags & LMEM_MODIFY) { - dprintf_local( stddeb, "LMEM_MODIFY set\n"); - return handle; + if ((flags & LMEM_MODIFY) && (flags & LMEM_DISCARDABLE)) + { + if (HANDLE_FIXED(handle)) + { + fprintf(stderr,"LocalReAlloc: LMEM_MODIFY & LMEM_DISCARDABLE on a fixed handle.\n"); + return handle; + } + dprintf_local( stddeb, "Making block discardable.\n" ); + pEntry = (LOCALHANDLEENTRY *)(ptr + handle); + pEntry->flags |= (LMEM_DISCARDABLE >> 8); + return handle; + } + + if ((flags & LMEM_MODIFY) || (flags & LMEM_DISCARDABLE)) + { + fprintf(stderr,"LocalReAlloc: flags %04x. MODIFY & DISCARDABLE should both be set\n", flags); + return handle; } - if (!size) size = 1; + + if (!size) + { + if (HANDLE_FIXED(handle)) + { + if (flags & LMEM_MOVEABLE) + { + dprintf_local(stddeb, "Freeing fixed block.\n"); + return LOCAL_Free( ds, handle ); + } + else size = 1; + } + else + { + pEntry = (LOCALHANDLEENTRY *)(ptr + handle); + if (pEntry->lock == 0) + { + /* discards moveable blocks is this right? */ + dprintf_local(stddeb,"Discarding block\n"); + LOCAL_FreeArena(ds, ARENA_HEADER(pEntry->addr)); + pEntry->addr = 0; + pEntry->flags = (LMEM_DISCARDED >> 8); + return 0; + } + return handle; + } + } + size = LALIGN( size ); nextarena = LALIGN(blockhandle + size); @@ -901,17 +1090,26 @@ HLOCAL LOCAL_ReAlloc( HANDLE ds, HLOCAL handle, WORD size, WORD flags ) return handle; } - /* Now we have to allocate a new block */ + /* Now we have to allocate a new block, but not if fixed block and no + LMEM_MOVEABLE */ - newhandle = LOCAL_GetBlock( ds, size, flags ); - if (newhandle == 0) return 0; + if (HANDLE_FIXED(handle) && !(flags & LMEM_MOVEABLE)) + { + dprintf_local(stddeb, "Needed to move fixed block, but LMEM_MOVEABLE not specified.\n"); + return 0; /* FIXME: should we free it here? */ + } + + if (!(newhandle = LOCAL_GetBlock( ds, size, flags ))) return 0; ptr = PTR_SEG_OFF_TO_LIN( ds, 0 ); memcpy( ptr + newhandle, ptr + (arena + ARENA_HEADER_SIZE), size ); LOCAL_FreeArena( ds, arena ); if (HANDLE_MOVEABLE( handle )) { dprintf_local( stddeb, "LocalReAlloc: fixing handle\n"); - *(WORD *)(ptr + handle) = newhandle; + pEntry = (LOCALHANDLEENTRY *)(ptr + handle); + pEntry->addr = newhandle; + pEntry->flags |= ~(LMEM_DISCARDED >> 8); /* clear discarded flag */ + pEntry->lock = 0; newhandle = handle; } dprintf_local( stddeb, "LocalReAlloc: returning %04x\n", newhandle ); @@ -922,7 +1120,7 @@ HLOCAL LOCAL_ReAlloc( HANDLE ds, HLOCAL handle, WORD size, WORD flags ) /*********************************************************************** * LOCAL_InternalLock */ -static HLOCAL LOCAL_InternalLock( LPSTR heap, HLOCAL handle ) +static HLOCAL16 LOCAL_InternalLock( LPSTR heap, HLOCAL16 handle ) { dprintf_local( stddeb, "LocalLock: %04x ", handle ); if (HANDLE_MOVEABLE(handle)) @@ -939,7 +1137,7 @@ static HLOCAL LOCAL_InternalLock( LPSTR heap, HLOCAL handle ) /*********************************************************************** * LOCAL_Lock */ -LPSTR LOCAL_Lock( HANDLE ds, HLOCAL handle ) +LPSTR LOCAL_Lock( HANDLE16 ds, HLOCAL16 handle ) { char *ptr = PTR_SEG_OFF_TO_LIN( ds, 0 ); return handle ? ptr + LOCAL_InternalLock( ptr, handle ) : NULL; @@ -949,7 +1147,7 @@ LPSTR LOCAL_Lock( HANDLE ds, HLOCAL handle ) /*********************************************************************** * LOCAL_Unlock */ -BOOL LOCAL_Unlock( WORD ds, HLOCAL handle ) +BOOL LOCAL_Unlock( HANDLE16 ds, HLOCAL16 handle ) { char *ptr = PTR_SEG_OFF_TO_LIN( ds, 0 ); @@ -971,7 +1169,7 @@ BOOL LOCAL_Unlock( WORD ds, HLOCAL handle ) * * Implementation of LocalSize(). */ -WORD LOCAL_Size( WORD ds, HLOCAL handle ) +WORD LOCAL_Size( HANDLE16 ds, HLOCAL16 handle ) { char *ptr = PTR_SEG_OFF_TO_LIN( CURRENT_DS, 0 ); LOCALARENA *pArena; @@ -989,7 +1187,7 @@ WORD LOCAL_Size( WORD ds, HLOCAL handle ) * * Implementation of LocalFlags(). */ -WORD LOCAL_Flags( WORD ds, HLOCAL handle ) +WORD LOCAL_Flags( HANDLE16 ds, HLOCAL16 handle ) { char *ptr = PTR_SEG_OFF_TO_LIN( ds, 0 ); @@ -1014,7 +1212,7 @@ WORD LOCAL_Flags( WORD ds, HLOCAL handle ) * * Implementation of LocalHeapSize(). */ -WORD LOCAL_HeapSize( WORD ds ) +WORD LOCAL_HeapSize( HANDLE16 ds ) { LOCALHEAPINFO *pInfo = LOCAL_GetHeap( ds ); if (!pInfo) return 0; @@ -1027,7 +1225,7 @@ WORD LOCAL_HeapSize( WORD ds ) * * Implementation of LocalCountFree(). */ -WORD LOCAL_CountFree( WORD ds ) +WORD LOCAL_CountFree( HANDLE16 ds ) { WORD arena, total; LOCALARENA *pArena; @@ -1061,7 +1259,7 @@ WORD LOCAL_CountFree( WORD ds ) * * Implementation of LocalHandle(). */ -HLOCAL LOCAL_Handle( WORD ds, WORD addr ) +HLOCAL16 LOCAL_Handle( HANDLE16 ds, WORD addr ) { char *ptr = PTR_SEG_OFF_TO_LIN( ds, 0 ); LOCALHEAPINFO *pInfo; @@ -1082,91 +1280,94 @@ HLOCAL LOCAL_Handle( WORD ds, WORD addr ) WORD count = *(WORD *)(ptr + table); LOCALHANDLEENTRY *pEntry = (LOCALHANDLEENTRY*)(ptr+table+sizeof(WORD)); for (; count > 0; count--, pEntry++) - if (pEntry->addr == addr) return (HLOCAL)((char *)pEntry - ptr); + if (pEntry->addr == addr) return (HLOCAL16)((char *)pEntry - ptr); table = *(WORD *)pEntry; } - return (HLOCAL)addr; /* Fixed block handle is addr */ + return (HLOCAL16)addr; /* Fixed block handle is addr */ } /*********************************************************************** - * LocalAlloc (KERNEL.5) + * LocalAlloc16 (KERNEL.5) */ -HLOCAL LocalAlloc( WORD flags, WORD size ) +HLOCAL16 LocalAlloc16( UINT16 flags, WORD size ) { return LOCAL_Alloc( CURRENT_DS, flags, size ); } /*********************************************************************** - * LocalReAlloc (KERNEL.6) + * LocalReAlloc16 (KERNEL.6) */ -HLOCAL LocalReAlloc( HLOCAL handle, WORD size, WORD flags ) +HLOCAL16 LocalReAlloc16( HLOCAL16 handle, WORD size, UINT16 flags ) { return LOCAL_ReAlloc( CURRENT_DS, handle, size, flags ); } /*********************************************************************** - * LocalFree (KERNEL.7) + * LocalFree16 (KERNEL.7) */ -HLOCAL LocalFree( HLOCAL handle ) +HLOCAL16 LocalFree16( HLOCAL16 handle ) { return LOCAL_Free( CURRENT_DS, handle ); } /*********************************************************************** - * LocalLock (KERNEL.8) + * LocalLock16 (KERNEL.8) + * + * Note: only the offset part of the pointer is returned by the relay code. */ -NPVOID LocalLock( HLOCAL handle ) +SEGPTR LocalLock16( HLOCAL16 handle ) { - char *ptr = PTR_SEG_OFF_TO_LIN( CURRENT_DS, 0 ); - return (NPVOID)LOCAL_InternalLock( ptr, handle ); + HANDLE16 ds = CURRENT_DS; + char *ptr = PTR_SEG_OFF_TO_LIN( ds, 0 ); + return PTR_SEG_OFF_TO_SEGPTR( ds, LOCAL_InternalLock( ptr, handle ) ); } /*********************************************************************** - * LocalUnlock (KERNEL.9) + * LocalUnlock16 (KERNEL.9) */ -BOOL LocalUnlock( HLOCAL handle ) +BOOL LocalUnlock16( HLOCAL16 handle ) { return LOCAL_Unlock( CURRENT_DS, handle ); } /*********************************************************************** - * LocalSize (KERNEL.10) + * LocalSize16 (KERNEL.10) */ -WORD LocalSize( HLOCAL handle ) +UINT16 LocalSize16( HLOCAL16 handle ) { return LOCAL_Size( CURRENT_DS, handle ); } /*********************************************************************** - * LocalHandle (KERNEL.11) + * LocalHandle16 (KERNEL.11) */ -HLOCAL LocalHandle( WORD addr ) +HLOCAL16 LocalHandle16( WORD addr ) { return LOCAL_Handle( CURRENT_DS, addr ); } /*********************************************************************** - * LocalFlags (KERNEL.12) + * LocalFlags16 (KERNEL.12) */ -WORD LocalFlags( HLOCAL handle ) +UINT16 LocalFlags16( HLOCAL16 handle ) { return LOCAL_Flags( CURRENT_DS, handle ); } /*********************************************************************** - * LocalCompact (KERNEL.13) + * LocalCompact16 (KERNEL.13) */ -WORD LocalCompact( WORD minfree ) +UINT16 LocalCompact16( UINT16 minfree ) { dprintf_local( stddeb, "LocalCompact: %04x\n", minfree ); return LOCAL_Compact( CURRENT_DS, minfree, 0 ); @@ -1180,7 +1381,7 @@ FARPROC LocalNotify( FARPROC func ) { LOCALHEAPINFO *pInfo; FARPROC oldNotify; - WORD ds = CURRENT_DS; + HANDLE16 ds = CURRENT_DS; if (!(pInfo = LOCAL_GetHeap( ds ))) { @@ -1188,7 +1389,7 @@ FARPROC LocalNotify( FARPROC func ) LOCAL_PrintHeap( ds ); return 0; } - dprintf_local( stddeb, "LocalNotify(%04x): %08lx\n", ds, func ); + dprintf_local( stddeb, "LocalNotify(%04x): %08lx\n", ds, (DWORD)func ); oldNotify = pInfo->notify; pInfo->notify = func; return oldNotify; @@ -1196,9 +1397,9 @@ FARPROC LocalNotify( FARPROC func ) /*********************************************************************** - * LocalShrink (KERNEL.121) + * LocalShrink16 (KERNEL.121) */ -WORD LocalShrink( HLOCAL handle, WORD newsize ) +UINT16 LocalShrink16( HGLOBAL16 handle, UINT16 newsize ) { dprintf_local( stddeb, "LocalShrink: %04x %04x\n", handle, newsize ); return 0; @@ -1263,7 +1464,7 @@ WORD LocalHandleDelta( WORD delta ) */ BOOL LocalInfo( LOCALINFO *pLocalInfo, HGLOBAL handle ) { - LOCALHEAPINFO *pInfo = LOCAL_GetHeap(SELECTOROF(WIN16_GlobalLock(handle))); + LOCALHEAPINFO *pInfo = LOCAL_GetHeap(SELECTOROF(WIN16_GlobalLock16(handle))); if (!pInfo) return FALSE; pLocalInfo->wcItems = pInfo->items; return TRUE; @@ -1275,7 +1476,7 @@ BOOL LocalInfo( LOCALINFO *pLocalInfo, HGLOBAL handle ) */ BOOL LocalFirst( LOCALENTRY *pLocalEntry, HGLOBAL handle ) { - WORD ds = SELECTOROF( WIN16_GlobalLock( handle ) ); + WORD ds = SELECTOROF( WIN16_GlobalLock16( handle ) ); char *ptr = PTR_SEG_OFF_TO_LIN( ds, 0 ); LOCALHEAPINFO *pInfo = LOCAL_GetHeap( ds ); if (!pInfo) return FALSE; @@ -1319,4 +1520,95 @@ BOOL LocalNext( LOCALENTRY *pLocalEntry ) return TRUE; } +#ifndef WINELIB + #endif /* WINELIB */ + +/*********************************************************************** + * LocalAlloc32 (KERNEL32.371) + */ +HLOCAL32 LocalAlloc32( UINT32 flags, DWORD size ) +{ + return (HLOCAL32)GlobalAlloc32( flags, size ); +} + + +/*********************************************************************** + * LocalCompact32 (KERNEL32.372) + */ +UINT32 LocalCompact32( UINT32 minfree ) +{ + return 0; /* LocalCompact does nothing in Win32 */ +} + + +/*********************************************************************** + * LocalFlags32 (KERNEL32.374) + */ +UINT32 LocalFlags32( HLOCAL32 handle ) +{ + return GlobalFlags32( (HGLOBAL32)handle ); +} + + +/*********************************************************************** + * LocalFree32 (KERNEL32.375) + */ +HLOCAL32 LocalFree32( HLOCAL32 handle ) +{ + return (HLOCAL32)GlobalFree32( (HGLOBAL32)handle ); +} + + +/*********************************************************************** + * LocalHandle32 (KERNEL32.376) + */ +HLOCAL32 LocalHandle32( LPCVOID ptr ) +{ + return (HLOCAL32)GlobalHandle32( ptr ); +} + + +/*********************************************************************** + * LocalLock32 (KERNEL32.377) + */ +LPVOID LocalLock32( HLOCAL32 handle ) +{ + return GlobalLock32( (HGLOBAL32)handle ); +} + + +/*********************************************************************** + * LocalReAlloc32 (KERNEL32.378) + */ +HLOCAL32 LocalReAlloc32( HLOCAL32 handle, DWORD size, UINT32 flags ) +{ + return (HLOCAL32)GlobalReAlloc32( (HGLOBAL32)handle, size, flags ); +} + + +/*********************************************************************** + * LocalShrink32 (KERNEL32.379) + */ +UINT32 LocalShrink32( HGLOBAL32 handle, UINT32 newsize ) +{ + return 0; /* LocalShrink does nothing in Win32 */ +} + + +/*********************************************************************** + * LocalSize32 (KERNEL32.380) + */ +UINT32 LocalSize32( HLOCAL32 handle ) +{ + return GlobalSize32( (HGLOBAL32)handle ); +} + + +/*********************************************************************** + * LocalUnlock32 (KERNEL32.381) + */ +BOOL LocalUnlock32( HLOCAL32 handle ) +{ + return GlobalUnlock32( (HGLOBAL32)handle ); +} diff --git a/memory/selector.c b/memory/selector.c index 6eef187e246..4b9e45a286f 100644 --- a/memory/selector.c +++ b/memory/selector.c @@ -4,8 +4,6 @@ * Copyright 1995 Alexandre Julliard */ -#ifndef WINELIB - #include #include "windows.h" #include "ldt.h" @@ -73,6 +71,7 @@ WORD FreeSelector( WORD sel ) dprintf_selector( stddeb, "FreeSelector(%04x)\n", sel ); if (IS_SELECTOR_FREE(sel)) return sel; /* error */ count = (GET_SEL_LIMIT(sel) >> 16) + 1; + sel &= ~(__AHINCR - 1); /* clear bottom bits of selector */ nextsel = sel + (count << __AHSHIFT); memset( &entry, 0, sizeof(entry) ); /* clear the LDT entries */ /* FIXME: is it correct to free the whole array? */ @@ -484,5 +483,3 @@ SEGPTR MAKE_SEGPTR(void * ptr) return ((entry << 16) | ((unsigned) ptr & 0xffff)); } #endif - -#endif /* WINELIB */ diff --git a/misc/clipboard.c b/misc/clipboard.c index 31049baf812..bbac7a27c1a 100644 --- a/misc/clipboard.c +++ b/misc/clipboard.c @@ -28,8 +28,7 @@ typedef struct tagCLIPFORMAT { DWORD BufSize; void *PrevFormat; void *NextFormat; -} CLIPFORMAT; -typedef CLIPFORMAT FAR* LPCLIPFORMAT; +} CLIPFORMAT, *LPCLIPFORMAT; static HWND hWndClipboardOwner = 0; static HWND hWndViewer = 0; @@ -87,7 +86,7 @@ BOOL EmptyClipboard() while(TRUE) { if (lpFormat == NULL) break; if (lpFormat->hData != 0) { - GlobalFree(lpFormat->hData); + GlobalFree16(lpFormat->hData); lpFormat->hData = 0; } lpFormat = lpFormat->NextFormat; @@ -130,7 +129,7 @@ HANDLE SetClipboardData(WORD wFormat, HANDLE hData) XSetSelectionOwner(display,XA_PRIMARY,WIN_GetXWindow(hWndClipboardOwner),CurrentTime); wineOwnsSelection = True; dprintf_clipboard(stddeb,"Getting selection\n"); - if (lpFormat->hData != 0) GlobalFree(lpFormat->hData); + if (lpFormat->hData != 0) GlobalFree16(lpFormat->hData); lpFormat->hData = hData; return lpFormat->hData; } @@ -339,7 +338,7 @@ HWND GetOpenClipboardWindow() /************************************************************************** * GetPriorityClipboardFormat [USER.402] */ -int GetPriorityClipboardFormat(WORD FAR *lpPriorityList, short nCount) +int GetPriorityClipboardFormat(WORD *lpPriorityList, short nCount) { dprintf_clipboard(stdnimp, "GetPriorityClipboardFormat(%p, %d) !\n", lpPriorityList, nCount); @@ -377,9 +376,9 @@ void CLIPBOARD_ReadSelection(Window w,Atom prop) hText=0; } else { dprintf_clipboard(stddeb,"Selection is %s\n",val); - hText=GlobalAlloc(GMEM_MOVEABLE, nitems+1); - memcpy(GlobalLock(hText),val,nitems+1); - GlobalUnlock(hText); + hText=GlobalAlloc16(GMEM_MOVEABLE, nitems+1); + memcpy(GlobalLock16(hText),val,nitems+1); + GlobalUnlock16(hText); } XFree(val); } @@ -388,7 +387,7 @@ void CLIPBOARD_ReadSelection(Window w,Atom prop) if (lpFormat->wFormatID == CF_TEXT) break; lpFormat = lpFormat->NextFormat; } - if (lpFormat->hData != 0) GlobalFree(lpFormat->hData); + if (lpFormat->hData != 0) GlobalFree16(lpFormat->hData); wait_for_selection=False; lpFormat->hData = hText; dprintf_clipboard(stddeb,"Received selection\n"); diff --git a/misc/comm.c b/misc/comm.c index d863ec50947..73811a921cd 100644 --- a/misc/comm.c +++ b/misc/comm.c @@ -426,7 +426,7 @@ int FlushComm(int fd, int fnQueue) } } -int GetCommError(int fd, COMSTAT FAR *lpStat) +int GetCommError(int fd, COMSTAT *lpStat) { int temperror; @@ -437,7 +437,7 @@ int GetCommError(int fd, COMSTAT FAR *lpStat) return(temperror); } -UINT FAR* SetCommEventMask(int fd, UINT fuEvtMask) +UINT * SetCommEventMask(int fd, UINT fuEvtMask) { dprintf_comm(stddeb, "SetCommEventMask: fd %d, mask %d\n", fd, fuEvtMask); @@ -453,7 +453,7 @@ UINT GetCommEventMask(int fd, int fnEvtClear) return eventmask; } -int SetCommState(DCB FAR *lpdcb) +int SetCommState(DCB *lpdcb) { struct termios port; struct DosDeviceStruct *ptr; @@ -652,7 +652,7 @@ int SetCommState(DCB FAR *lpdcb) } } -int GetCommState(int fd, DCB FAR *lpdcb) +int GetCommState(int fd, DCB *lpdcb) { struct termios port; diff --git a/misc/commdlg.c b/misc/commdlg.c index a749ba297ac..0789843bcc3 100644 --- a/misc/commdlg.c +++ b/misc/commdlg.c @@ -28,6 +28,7 @@ static HBITMAP hFolder2 = 0; static HBITMAP hFloppy = 0; static HBITMAP hHDisk = 0; static HBITMAP hCDRom = 0; +static HBITMAP hBitmapTT = 0; /*********************************************************************** * FileDlg_Init [internal] @@ -715,11 +716,11 @@ BOOL FindText(LPFINDREPLACE lpFind) */ hDlgTmpl = SYSRES_LoadResource( SYSRES_DIALOG_FIND_TEXT ); hInst = WIN_GetWindowInstance( lpFind->hwndOwner ); - if (!(ptr = (SEGPTR)WIN16_GlobalLock( hDlgTmpl ))) return -1; + if (!(ptr = (SEGPTR)WIN16_GlobalLock16( hDlgTmpl ))) return -1; bRet = CreateDialogIndirectParam( hInst, ptr, lpFind->hwndOwner, MODULE_GetWndProcEntry16("FindTextDlgProc"), (DWORD)lpFind ); - GlobalUnlock( hDlgTmpl ); + GlobalUnlock16( hDlgTmpl ); SYSRES_FreeResource( hDlgTmpl ); return bRet; } @@ -744,11 +745,11 @@ BOOL ReplaceText(LPFINDREPLACE lpFind) */ hDlgTmpl = SYSRES_LoadResource( SYSRES_DIALOG_REPLACE_TEXT ); hInst = WIN_GetWindowInstance( lpFind->hwndOwner ); - if (!(ptr = (SEGPTR)WIN16_GlobalLock( hDlgTmpl ))) return -1; + if (!(ptr = (SEGPTR)WIN16_GlobalLock16( hDlgTmpl ))) return -1; bRet = CreateDialogIndirectParam( hInst, ptr, lpFind->hwndOwner, MODULE_GetWndProcEntry16("ReplaceTextDlgProc"), (DWORD)lpFind ); - GlobalUnlock( hDlgTmpl ); + GlobalUnlock16( hDlgTmpl ); SYSRES_FreeResource( hDlgTmpl ); return bRet; } @@ -2150,8 +2151,6 @@ LRESULT ColorDlgProc(HWND hDlg, UINT message, /*********************************************************************** * ChooseFont (COMMDLG.15) - --April 1996-- - please note: ChooseFont etc. are still under construction */ BOOL ChooseFont(LPCHOOSEFONT lpChFont) { @@ -2167,63 +2166,516 @@ BOOL ChooseFont(LPCHOOSEFONT lpChFont) return bRet; } + +#define TEXT_EXTRAS 4 +#define TEXT_COLORS 16 + +static const COLORREF textcolors[TEXT_COLORS]= +{ + 0x00000000L,0x00000080L,0x00008000L,0x00008080L, + 0x00800000L,0x00800080L,0x00808000L,0x00808080L, + 0x00c0c0c0L,0x000000ffL,0x0000ff00L,0x0000ffffL, + 0x00ff0000L,0x00ff00ffL,0x00ffff00L,0x00FFFFFFL +}; + /*********************************************************************** - * FontStyleEnumProc (COMMDLG.18) + * CFn_HookCallChk [internal] */ -int FontStyleEnumProc(LOGFONT *lf ,TEXTMETRIC *tm, int fonttype, LPARAM lParam) +static BOOL CFn_HookCallChk(LPCHOOSEFONT lpcf) { - dprintf_commdlg(stddeb,"FontStyleEnumProc: font=%s (height=%d)\n",lf->lfFaceName,lf->lfHeight); - return 1; + if (lpcf) + if(lpcf->Flags & CF_ENABLEHOOK) + if (lpcf->lpfnHook) + return TRUE; + return FALSE; } /*********************************************************************** - * FontFamilyEnumProc (COMMDLG.19) + * FontFamilyEnumProc (COMMDLG.19) */ -int FontFamilyEnumProc(LOGFONT *lf ,TEXTMETRIC *tm, int fonttype, LPARAM lParam) +int FontFamilyEnumProc(LPLOGFONT lplf ,LPTEXTMETRIC lptm, int nFontType, LPARAM lParam) { - dprintf_commdlg(stddeb,"FontFamilyEnumProc: font=%s\n",lf->lfFaceName); - return 1; + int i; + WORD w; + HWND hwnd=LOWORD(lParam); + + dprintf_commdlg(stddeb,"FontFamilyEnumProc: font=%s (nFontType=%d)\n", + lplf->lfFaceName,nFontType); + i=SendMessage(hwnd,CB_ADDSTRING,0,(LPARAM)MAKE_SEGPTR(lplf->lfFaceName)); + if (i!=CB_ERR) + { + w=(lplf->lfCharSet << 8) | lplf->lfPitchAndFamily; + SendMessage(hwnd, CB_SETITEMDATA,i,MAKELONG(nFontType,w)); + return 1 ; + } + else + return 0; +} + +/*********************************************************************** + * FontStyleEnumProc (COMMDLG.18) + */ +int FontStyleEnumProc(LPLOGFONT lplf ,LPTEXTMETRIC lptm, int nFontType, LPARAM lParam) +{ + int j; + char buffer[20]; +/* HWND hcmb2=LOWORD(lParam);*/ + HWND hcmb3=HIWORD(lParam); + LPLOGFONT lf=lplf; + + dprintf_commdlg(stddeb,"FontStyleEnumProc: (nFontType=%d)\n",nFontType); + dprintf_commdlg(stddeb," %s h=%d w=%d e=%d o=%d wg=%d i=%d u=%d s=%d ch=%d op=%d cp=%d q=%d pf=%xh\n", + lf->lfFaceName,lf->lfHeight,lf->lfWidth,lf->lfEscapement,lf->lfOrientation, + lf->lfWeight,lf->lfItalic,lf->lfUnderline,lf->lfStrikeOut,lf->lfCharSet, + lf->lfOutPrecision,lf->lfClipPrecision,lf->lfQuality,lf->lfPitchAndFamily); + +#if 1 /* VERSION A: use some predefined height values */ + /* FIXME: if (!(nFontType & RASTER_FONTTYPE))......... */ + { + int sizes[]={8,9,10,11,12,14,16,18,20,22,24,26,28,36,48,72,0}; + int i; + if (!SendMessage(hcmb3,CB_GETCOUNT,0,0)) + { + i=0; + while (sizes[i]) + { + sprintf(buffer,"%3d",sizes[i++]); + j=SendMessage(hcmb3,CB_ADDSTRING,0,(LPARAM)MAKE_SEGPTR(buffer)); + SendMessage(hcmb3, CB_SETITEMDATA, j, MAKELONG(sizes[i],0)); + } + } + } + return 0; +#endif + +#if 0 /* VERSION B: use only lplf->lfHeight values */ + { + if (lplf->lfHeight) + { + sprintf(buffer,"%3d",lplf->lfHeight); + j=SendMessage(hcmb3,CB_FINDSTRING,-1,(LPARAM)MAKE_SEGPTR(buffer)); + if (j==CB_ERR) + { + j=SendMessage(hcmb3,CB_ADDSTRING,0,(LPARAM)MAKE_SEGPTR(buffer)); + SendMessage(hcmb3, CB_SETITEMDATA, j, MAKELONG(lplf->lfHeight,lplf->lfWidth)); + } + } + } + return 1 ; +#endif + } + /*********************************************************************** - * ColorDlgProc (COMMDLG.16) + * CFn_WMInitDialog [internal] */ -LRESULT FormatCharDlgProc(HWND hDlg, UINT wMsg, WPARAM wParam, LPARAM lParam) +LRESULT CFn_WMInitDialog(HWND hDlg, WPARAM wParam, LPARAM lParam) { HDC hdc; - FARPROC enumCallback; + int i,j,res,init=0; + long l; + char buffer[32]; + FARPROC enumCallback = MODULE_GetWndProcEntry16("FontFamilyEnumProc"); + LPLOGFONT lpxx; + HCURSOR hcursor=SetCursor(LoadCursor(0,IDC_WAIT)); + LPCHOOSEFONT lpcf; + + SetWindowLong(hDlg, DWL_USER, lParam); + lpcf=(LPCHOOSEFONT)lParam; + lpxx=PTR_SEG_TO_LIN(lpcf->lpLogFont); + dprintf_commdlg(stddeb,"FormatCharDlgProc // WM_INITDIALOG lParam=%08lX\n", lParam); + + if (lpcf->lStructSize != sizeof(CHOOSEFONT)) + { + dprintf_commdlg(stddeb,"WM_INITDIALOG: structure size failure !!!\n"); + EndDialog (hDlg, 0); + return FALSE; + } + if (!hBitmapTT) + hBitmapTT = LoadBitmap(0, MAKEINTRESOURCE(OBM_TRTYPE)); + + if (!(lpcf->Flags & CF_SHOWHELP) || !IsWindow(lpcf->hwndOwner)) + ShowWindow(GetDlgItem(hDlg,pshHelp),SW_HIDE); + if (!(lpcf->Flags & CF_APPLY)) + ShowWindow(GetDlgItem(hDlg,psh3),SW_HIDE); + if (lpcf->Flags & CF_EFFECTS) + { + for (res=1,i=0;res && irgbColors) + SendDlgItemMessage(hDlg,cmb4, CB_SETCURSEL,j,0); + } + } + else + { + ShowWindow(GetDlgItem(hDlg,cmb4),SW_HIDE); + ShowWindow(GetDlgItem(hDlg,chx1),SW_HIDE); + ShowWindow(GetDlgItem(hDlg,chx2),SW_HIDE); + ShowWindow(GetDlgItem(hDlg,grp1),SW_HIDE); + ShowWindow(GetDlgItem(hDlg,stc4),SW_HIDE); + } + + /* perhaps this stuff should be moved to FontStyleEnumProc() ?? */ + strcpy(buffer,"Regular"); /* LoadString(hInst,.... ,buffer,LF_FACESIZE);*/ + j=SendDlgItemMessage(hDlg,cmb2,CB_ADDSTRING,0,(LPARAM)MAKE_SEGPTR(buffer)); + SendDlgItemMessage(hDlg,cmb2, CB_SETITEMDATA, j, MAKELONG(FW_NORMAL,0)); + strcpy(buffer,"Bold"); /* LoadString(hInst,.... ,buffer,LF_FACESIZE);*/ + j=SendDlgItemMessage(hDlg,cmb2,CB_ADDSTRING,0,(LPARAM)MAKE_SEGPTR(buffer)); + SendDlgItemMessage(hDlg,cmb2, CB_SETITEMDATA, j, MAKELONG(FW_BOLD,0)); + strcpy(buffer,"Italic"); /* LoadString(hInst,.... ,buffer,LF_FACESIZE);*/ + j=SendDlgItemMessage(hDlg,cmb2,CB_ADDSTRING,0,(LPARAM)MAKE_SEGPTR(buffer)); + SendDlgItemMessage(hDlg,cmb2, CB_SETITEMDATA, j, MAKELONG(FW_NORMAL,1)); + strcpy(buffer,"Bold Italic"); /* LoadString(hInst,.... ,buffer,LF_FACESIZE);*/ + j=SendDlgItemMessage(hDlg,cmb2,CB_ADDSTRING,0,(LPARAM)MAKE_SEGPTR(buffer)); + SendDlgItemMessage(hDlg,cmb2, CB_SETITEMDATA, j, MAKELONG(FW_BOLD,1)); - switch (wMsg) + hdc= (lpcf->Flags & CF_PRINTERFONTS && lpcf->hDC) ? lpcf->hDC : GetDC(hDlg); + if (hdc) + { + if (!EnumFontFamilies (hdc, NULL,enumCallback,(LPARAM)GetDlgItem(hDlg,cmb1))) + dprintf_commdlg(stddeb,"WM_INITDIALOG: EnumFontFamilies returns 0\n"); + if (lpcf->Flags & CF_INITTOLOGFONTSTRUCT) { - case WM_INITDIALOG: - dprintf_commdlg(stddeb,"FormatCharDlgProc // WM_INITDIALOG lParam=%08lX\n", lParam); - ShowWindow(hDlg, SW_SHOWNORMAL); - hdc = GetDC(hDlg); - if (hdc) + /* look for fitting font name in combobox1 */ + j=SendDlgItemMessage(hDlg,cmb1,CB_FINDSTRING,-1,(LONG)lpxx->lfFaceName); + if (j!=CB_ERR) { - HCURSOR hcursor=SetCursor(LoadCursor(0,IDC_WAIT)); - /* - currently only called for testing of 2 necessary EnumProcs - */ - enumCallback = MODULE_GetWndProcEntry16("FontFamilyEnumProc"); - EnumFontFamilies (hdc, NULL,enumCallback ,NULL); - enumCallback = MODULE_GetWndProcEntry16("FontStyleEnumProc"); - EnumFontFamilies(hdc, /* for example : */ "COURIER",enumCallback,NULL); - ReleaseDC(hDlg,hdc); - SetCursor(hcursor); + SendDlgItemMessage(hDlg,cmb1,CB_SETCURSEL,j,0); + SendMessage(hDlg,WM_COMMAND,cmb1,MAKELONG(GetDlgItem(hDlg,cmb1),CBN_SELCHANGE)); + init=1; + /* look for fitting font style in combobox2 */ + l=MAKELONG(lpxx->lfWeight > FW_MEDIUM ? FW_BOLD:FW_NORMAL,lpxx->lfItalic !=0); + for (i=0;ilfHeight==(int)SendDlgItemMessage(hDlg,cmb3, CB_GETITEMDATA,i,0)) + SendDlgItemMessage(hDlg,cmb3,CB_SETCURSEL,i,0); + } } - return (TRUE); - case WM_COMMAND: - switch (wParam) - { - case IDOK: - EndDialog(hDlg, TRUE); - return(TRUE); - case IDCANCEL: - EndDialog(hDlg, FALSE); - return(TRUE); + if (!init) + { + SendDlgItemMessage(hDlg,cmb1,CB_SETCURSEL,0,0); + SendMessage(hDlg,WM_COMMAND,cmb1,MAKELONG(GetDlgItem(hDlg,cmb1),CBN_SELCHANGE)); + } + } + if (lpcf->Flags & CF_USESTYLE && lpcf->lpszStyle) + { + j=SendDlgItemMessage(hDlg,cmb2,CB_FINDSTRING,-1,(LONG)lpcf->lpszStyle); + if (j!=CB_ERR) + { + j=SendDlgItemMessage(hDlg,cmb2,CB_SETCURSEL,j,0); + SendMessage(hDlg,WM_COMMAND,cmb2,MAKELONG(GetDlgItem(hDlg,cmb2),CBN_SELCHANGE)); + } + } + } + else + { + dprintf_commdlg(stddeb,"WM_INITDIALOG: HDC failure !!!\n"); + EndDialog (hDlg, 0); + return FALSE; + } + + if (!(lpcf->Flags & CF_PRINTERFONTS && lpcf->hDC)) + ReleaseDC(hDlg,hdc); + res=TRUE; + if (CFn_HookCallChk(lpcf)) + res=CallWindowProc(lpcf->lpfnHook,hDlg,WM_INITDIALOG,wParam,lParam); + SetCursor(hcursor); + return res; +} + + +/*********************************************************************** + * CFn_WMMeasureItem [internal] + */ +LRESULT CFn_WMMeasureItem(HWND hDlg, WPARAM wParam, LPARAM lParam) +{ + BITMAP bm; + LPMEASUREITEMSTRUCT lpmi=PTR_SEG_TO_LIN((LPMEASUREITEMSTRUCT)lParam); + if (!hBitmapTT) + hBitmapTT = LoadBitmap(0, MAKEINTRESOURCE(OBM_TRTYPE)); + GetObject(hBitmapTT, sizeof(BITMAP), (LPSTR)&bm); + lpmi->itemHeight=bm.bmHeight; + /* FIXME: use MAX of bm.bmHeight and tm.tmHeight .*/ + return 0; +} + + +/*********************************************************************** + * CFn_WMDrawItem [internal] + */ +LRESULT CFn_WMDrawItem(HWND hDlg, WPARAM wParam, LPARAM lParam) +{ + HBRUSH hBrush; + char buffer[40]; + BITMAP bm; + COLORREF cr; + RECT rect; +#if 0 + HDC hMemDC; + int nFontType; + HBITMAP hBitmap; /* for later TT usage */ +#endif + LPDRAWITEMSTRUCT lpdi = (LPDRAWITEMSTRUCT)PTR_SEG_TO_LIN(lParam); + + if (lpdi->itemID == 0xFFFF) /* got no items */ + DrawFocusRect(lpdi->hDC, &lpdi->rcItem); + else + { + if (lpdi->CtlType == ODT_COMBOBOX) + { + hBrush = SelectObject(lpdi->hDC, GetStockObject(LTGRAY_BRUSH)); + SelectObject(lpdi->hDC, hBrush); + FillRect(lpdi->hDC, &lpdi->rcItem, hBrush); + } + else + return TRUE; /* this should never happen */ + + rect=lpdi->rcItem; + switch (lpdi->CtlID) + { + case cmb1: /* dprintf_commdlg(stddeb,"WM_Drawitem cmb1\n"); */ + SendMessage(lpdi->hwndItem, CB_GETLBTEXT, lpdi->itemID, + (LPARAM)MAKE_SEGPTR(buffer)); + GetObject(hBitmapTT, sizeof(BITMAP), (LPSTR)&bm); + TextOut(lpdi->hDC, lpdi->rcItem.left + bm.bmWidth + 10, + lpdi->rcItem.top, buffer, lstrlen(buffer)); +#if 0 + nFontType = SendMessage(lpdi->hwndItem, CB_GETITEMDATA, lpdi->itemID,0L); + /* FIXME: draw bitmap if truetype usage */ + if (nFontType&TRUETYPE_FONTTYPE) + { + hMemDC = CreateCompatibleDC(lpdi->hDC); + hBitmap = SelectObject(hMemDC, hBitmapTT); + BitBlt(lpdi->hDC, lpdi->rcItem.left, lpdi->rcItem.top, + bm.bmWidth, bm.bmHeight, hMemDC, 0, 0, SRCCOPY); + SelectObject(hMemDC, hBitmap); + DeleteDC(hMemDC); + } +#endif + break; + case cmb2: + case cmb3: /* dprintf_commdlg(stddeb,"WM_DRAWITEN cmb2,cmb3\n"); */ + SendMessage(lpdi->hwndItem, CB_GETLBTEXT, lpdi->itemID, + (LPARAM)MAKE_SEGPTR(buffer)); + TextOut(lpdi->hDC, lpdi->rcItem.left, + lpdi->rcItem.top, buffer, lstrlen(buffer)); + break; + + case cmb4: /* dprintf_commdlg(stddeb,"WM_DRAWITEM cmb4 (=COLOR)\n"); */ + SendMessage(lpdi->hwndItem, CB_GETLBTEXT, lpdi->itemID, + (LPARAM)MAKE_SEGPTR(buffer)); + TextOut(lpdi->hDC, lpdi->rcItem.left + 25+5, + lpdi->rcItem.top, buffer, lstrlen(buffer)); + cr = SendMessage(lpdi->hwndItem, CB_GETITEMDATA, lpdi->itemID,0L); + hBrush = CreateSolidBrush(cr); + if (hBrush) + { + hBrush = SelectObject (lpdi->hDC, hBrush) ; + rect.right=rect.left+25; + rect.top++; + rect.left+=5; + rect.bottom--; + Rectangle(lpdi->hDC,rect.left,rect.top,rect.right,rect.bottom); + DeleteObject (SelectObject (lpdi->hDC, hBrush)) ; + } + rect=lpdi->rcItem; + rect.left+=25+5; + break; + + default: return TRUE; /* this should never happen */ + } + if (lpdi->itemState ==ODS_SELECTED) + InvertRect(lpdi->hDC, &rect); + } + return TRUE; +} + +/*********************************************************************** + * CFn_WMCtlColor [internal] + */ +LRESULT CFn_WMCtlColor(HWND hDlg, WPARAM wParam, LPARAM lParam) +{ + LPCHOOSEFONT lpcf=(LPCHOOSEFONT)GetWindowLong(hDlg, DWL_USER); + + if (lpcf->Flags & CF_EFFECTS) + if (HIWORD(lParam)==CTLCOLOR_STATIC && GetDlgCtrlID(LOWORD(lParam))==stc6) + { + SetTextColor(wParam,lpcf->rgbColors); + return GetStockObject(WHITE_BRUSH); + } + return 0; +} + +/*********************************************************************** + * CFn_WMCommand [internal] + */ +LRESULT CFn_WMCommand(HWND hDlg, WPARAM wParam, LPARAM lParam) +{ + char buffer[200]; + FARPROC enumCallback; + HFONT hFont/*,hFontOld*/; + int i,j; + long l; + HDC hdc; + LPCHOOSEFONT lpcf=(LPCHOOSEFONT)GetWindowLong(hDlg, DWL_USER); + LPLOGFONT lpxx=PTR_SEG_TO_LIN(lpcf->lpLogFont); + + dprintf_commdlg(stddeb,"FormatCharDlgProc // WM_COMMAND lParam=%08lX\n", lParam); + switch (wParam) + { + case cmb1:if (HIWORD(lParam)==CBN_SELCHANGE) + { + hdc=(lpcf->Flags & CF_PRINTERFONTS && lpcf->hDC) ? lpcf->hDC : GetDC(hDlg); + if (hdc) + { + /* only if cmb2 is refilled in FontStyleEnumProc(): + SendDlgItemMessage(hDlg,cmb2,CB_RESETCONTENT,0,0); + */ + SendDlgItemMessage(hDlg,cmb3,CB_RESETCONTENT,0,0); + i=SendDlgItemMessage(hDlg,cmb1,CB_GETCURSEL,0,0); + if (i!=CB_ERR) + { + HCURSOR hcursor=SetCursor(LoadCursor(0,IDC_WAIT)); + SendDlgItemMessage(hDlg,cmb1,CB_GETLBTEXT,i,(LPARAM)MAKE_SEGPTR(buffer)); + dprintf_commdlg(stddeb,"WM_COMMAND/cmb1 =>%s\n",buffer); + enumCallback = MODULE_GetWndProcEntry16("FontStyleEnumProc"); + EnumFontFamilies(hdc,buffer,enumCallback, + MAKELONG(GetDlgItem(hDlg,cmb2),GetDlgItem(hDlg,cmb3))); + SetCursor(hcursor); + } + if (!(lpcf->Flags & CF_PRINTERFONTS && lpcf->hDC)) + ReleaseDC(hDlg,hdc); + } + else + { + dprintf_commdlg(stddeb,"WM_COMMAND: HDC failure !!!\n"); + EndDialog (hDlg, 0); + return TRUE; + } + } + case chx1: + case chx2: + case cmb2: + case cmb3:if (HIWORD(lParam)==CBN_SELCHANGE || HIWORD(lParam)== BN_CLICKED ) + { + dprintf_commdlg(stddeb,"WM_COMMAND/cmb2,3 =%08lX\n", lParam); + i=SendDlgItemMessage(hDlg,cmb1,CB_GETCURSEL,0,0); + if (i==CB_ERR) + i=SendDlgItemMessage(hDlg,cmb1,WM_GETTEXT,20,(LPARAM)MAKE_SEGPTR(buffer)); + else + { + SendDlgItemMessage(hDlg,cmb1,CB_GETLBTEXT,i,(LPARAM)MAKE_SEGPTR(buffer)); + l=SendDlgItemMessage(hDlg,cmb1,CB_GETITEMDATA,i,0); + j=HIWORD(l); + lpcf->nFontType = LOWORD(l); + /* FIXME: lpcf->nFontType |= .... SIMULATED_FONTTYPE and so */ + /* same value reported to the EnumFonts + call back with the extra FONTTYPE_... bits added */ + lpxx->lfPitchAndFamily=j&0xff; + lpxx->lfCharSet=j>>8; + } + strcpy(lpxx->lfFaceName,buffer); + i=SendDlgItemMessage(hDlg,cmb2,CB_GETCURSEL,0,0); + if (i!=CB_ERR) + { + l=SendDlgItemMessage(hDlg,cmb2,CB_GETITEMDATA,i,0); + if (0!=(lpxx->lfItalic=HIWORD(l))) + lpcf->nFontType |= ITALIC_FONTTYPE; + if ((lpxx->lfWeight=LOWORD(l)) > FW_MEDIUM) + lpcf->nFontType |= BOLD_FONTTYPE; + } + i=SendDlgItemMessage(hDlg,cmb3,CB_GETCURSEL,0,0); + if (i!=CB_ERR) + { + l=SendDlgItemMessage(hDlg,cmb3,CB_GETITEMDATA,i,0); + lpxx->lfHeight=-LOWORD(l); + lpxx->lfWidth = 0; /* FYI: lfWidth is in HIWORD(l); */ + } + lpxx->lfStrikeOut=IsDlgButtonChecked(hDlg,chx1); + lpxx->lfUnderline=IsDlgButtonChecked(hDlg,chx2); + lpxx->lfOrientation=lpxx->lfEscapement=0; + lpxx->lfOutPrecision=OUT_DEFAULT_PRECIS; + lpxx->lfClipPrecision=CLIP_DEFAULT_PRECIS; + lpxx->lfQuality=DEFAULT_QUALITY; + + hFont=CreateFontIndirect(lpxx); + if (hFont) + SendDlgItemMessage(hDlg,stc6,WM_SETFONT,hFont,TRUE); + /* FIXME: Delete old font ...? */ + } + break; + + case cmb4:i=SendDlgItemMessage(hDlg,cmb4,CB_GETCURSEL,0,0); + if (i!=CB_ERR) + { + lpcf->rgbColors=textcolors[i]; + InvalidateRect(GetDlgItem(hDlg,stc6),NULL,0); + } + break; + + case psh15:i=RegisterWindowMessage(MAKE_SEGPTR(HELPMSGSTRING)); + if (lpcf->hwndOwner) + SendMessage(lpcf->hwndOwner,i,0,(LPARAM)lpcf); + if (CFn_HookCallChk(lpcf)) + CallWindowProc(lpcf->lpfnHook,hDlg,WM_COMMAND,psh15,(LPARAM)lpcf); + break; + + case IDOK:EndDialog(hDlg, TRUE); + return(TRUE); + case IDCANCEL:EndDialog(hDlg, FALSE); + return(TRUE); } return(FALSE); +} + + +/*********************************************************************** + * FormatCharDlgProc (COMMDLG.16) + FIXME: 1. some strings are "hardcoded", but it's better load from sysres + 2. some CF_.. flags are not supported + 3. some TType extensions + */ +LRESULT FormatCharDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) +{ + LPCHOOSEFONT lpcf=(LPCHOOSEFONT)GetWindowLong(hDlg, DWL_USER); + if (message!=WM_INITDIALOG) + { + int res=0; + if (!lpcf) + return FALSE; + if (CFn_HookCallChk(lpcf)) + res=CallWindowProc(lpcf->lpfnHook,hDlg,message,wParam,lParam); + if (res) + return res; + } + else + return CFn_WMInitDialog(hDlg,wParam,lParam); + switch (message) + { + case WM_MEASUREITEM: + return CFn_WMMeasureItem(hDlg,wParam,lParam); + case WM_DRAWITEM: + return CFn_WMDrawItem(hDlg,wParam,lParam); + case WM_CTLCOLOR: + return CFn_WMCtlColor(hDlg,wParam,lParam); + case WM_COMMAND: + return CFn_WMCommand(hDlg,wParam,lParam); + case WM_CHOOSEFONT_GETLOGFONT: + /* FIXME: current logfont back to caller */ + break; } return FALSE; } diff --git a/misc/compobj.c b/misc/compobj.c index 026b681238f..106aaedc890 100644 --- a/misc/compobj.c +++ b/misc/compobj.c @@ -19,7 +19,7 @@ DWORD currentMalloc=0; /*********************************************************************** * CoBuildVersion [COMPOBJ.1] */ -DWORD WINAPI CoBuildVersion() +DWORD CoBuildVersion() { dprintf_ole(stddeb,"CoBuildVersion()\n"); return (rmm<<16)+rup; @@ -29,7 +29,7 @@ DWORD WINAPI CoBuildVersion() * CoInitialize [COMPOBJ.2] * lpReserved is an IMalloc pointer in 16bit OLE. We just stored it as-is. */ -HRESULT WINAPI CoInitialize(DWORD lpReserved) +HRESULT CoInitialize(DWORD lpReserved) { dprintf_ole(stdnimp,"CoInitialize\n"); /* remember the LPMALLOC, maybe somebody wants to read it later on */ @@ -48,7 +48,7 @@ void CoUnitialize() /*********************************************************************** * CoGetMalloc [COMPOBJ.4] */ -HRESULT WINAPI CoGetMalloc(DWORD dwMemContext, DWORD * lpMalloc) +HRESULT CoGetMalloc(DWORD dwMemContext, DWORD * lpMalloc) { if(currentMalloc) { @@ -63,9 +63,7 @@ HRESULT WINAPI CoGetMalloc(DWORD dwMemContext, DWORD * lpMalloc) /*********************************************************************** * CoDisconnectObject */ -OLESTATUS WINAPI CoDisconnectObject( - LPUNKNOWN lpUnk, - DWORD reserved) +OLESTATUS CoDisconnectObject( LPUNKNOWN lpUnk, DWORD reserved ) { dprintf_ole(stdnimp,"CoDisconnectObject:%p %lx\n",lpUnk,reserved); return OLE_OK; diff --git a/misc/driver.c b/misc/driver.c index 7f9f9515634..eb51ba9f734 100644 --- a/misc/driver.c +++ b/misc/driver.c @@ -41,7 +41,7 @@ void LoadStartupDrivers(void) /************************************************************************** * SendDriverMessage [USER.251] */ -LRESULT WINAPI SendDriverMessage(HDRVR hDriver, WORD msg, LPARAM lParam1, LPARAM lParam2) +LRESULT SendDriverMessage(HDRVR hDriver, WORD msg, LPARAM lParam1, LPARAM lParam2) { dprintf_driver(stdnimp,"SendDriverMessage(%04x, %04X, %08lX, %08lX);\n", hDriver, msg, lParam1, lParam2); @@ -68,8 +68,8 @@ HDRVR OpenDriver(LPSTR lpDriverName, LPSTR lpSectionName, LPARAM lParam) if (lpdrv->lpNextItem == NULL) break; lpdrv = lpdrv->lpNextItem; } - hDrvr = GlobalAlloc(GMEM_MOVEABLE, sizeof(DRIVERITEM)); - lpnewdrv = (LPDRIVERITEM) GlobalLock(hDrvr); + hDrvr = GlobalAlloc16(GMEM_MOVEABLE, sizeof(DRIVERITEM)); + lpnewdrv = (LPDRIVERITEM) GlobalLock16(hDrvr); if (lpnewdrv == NULL) return 0; lpnewdrv->dis.length = sizeof(DRIVERINFOSTRUCT); lpnewdrv->dis.hModule = 0; @@ -91,7 +91,7 @@ HDRVR OpenDriver(LPSTR lpDriverName, LPSTR lpSectionName, LPARAM lParam) lpdrv->lpNextItem = lpnewdrv; lpnewdrv->lpPrevItem = lpdrv; } - lpnewdrv->lpDrvProc = NULL; + lpnewdrv->lpDrvProc = (DRIVERPROC)NULL; dprintf_driver(stddeb,"OpenDriver // hDrvr=%04x loaded !\n", hDrvr); return hDrvr; } @@ -104,14 +104,14 @@ LRESULT CloseDriver(HDRVR hDrvr, LPARAM lParam1, LPARAM lParam2) LPDRIVERITEM lpdrv; dprintf_driver(stddeb, "CloseDriver(%04x, %08lX, %08lX);\n", hDrvr, lParam1, lParam2); - lpdrv = (LPDRIVERITEM) GlobalLock(hDrvr); + lpdrv = (LPDRIVERITEM) GlobalLock16(hDrvr); if (lpdrv != NULL && lpdrv->dis.hDriver == hDrvr) { if (lpdrv->lpPrevItem) ((LPDRIVERITEM)lpdrv->lpPrevItem)->lpNextItem = lpdrv->lpNextItem; if (lpdrv->lpNextItem) ((LPDRIVERITEM)lpdrv->lpNextItem)->lpPrevItem = lpdrv->lpPrevItem; - GlobalUnlock(hDrvr); - GlobalFree(hDrvr); + GlobalUnlock16(hDrvr); + GlobalFree16(hDrvr); dprintf_driver(stddeb,"CloseDriver // hDrvr=%04x closed !\n", hDrvr); return TRUE; } @@ -126,10 +126,10 @@ HANDLE GetDriverModuleHandle(HDRVR hDrvr) LPDRIVERITEM lpdrv; HANDLE hModule = 0; dprintf_driver(stddeb,"GetDriverModuleHandle(%04x);\n", hDrvr); - lpdrv = (LPDRIVERITEM) GlobalLock(hDrvr); + lpdrv = (LPDRIVERITEM) GlobalLock16(hDrvr); if (lpdrv != NULL) { hModule = lpdrv->dis.hModule; - GlobalUnlock(hDrvr); + GlobalUnlock16(hDrvr); } return hModule; } @@ -176,10 +176,10 @@ BOOL GetDriverInfo(HDRVR hDrvr, LPDRIVERINFOSTRUCT lpDrvInfo) LPDRIVERITEM lpdrv; dprintf_driver(stddeb,"GetDriverInfo(%04x, %p);\n", hDrvr, lpDrvInfo); if (lpDrvInfo == NULL) return FALSE; - lpdrv = (LPDRIVERITEM) GlobalLock(hDrvr); + lpdrv = (LPDRIVERITEM) GlobalLock16(hDrvr); if (lpdrv == NULL) return FALSE; memcpy(lpDrvInfo, &lpdrv->dis, sizeof(DRIVERINFOSTRUCT)); - GlobalUnlock(hDrvr); + GlobalUnlock16(hDrvr); return TRUE; } @@ -202,7 +202,7 @@ HDRVR GetNextDriver(HDRVR hDrvr, DWORD dwFlags) lpDrvItemList->dis.hDriver); return lpDrvItemList->dis.hDriver; } - lpdrv = (LPDRIVERITEM) GlobalLock(hDrvr); + lpdrv = (LPDRIVERITEM) GlobalLock16(hDrvr); if (lpdrv != NULL) { if (dwFlags & GND_REVERSE) { if (lpdrv->lpPrevItem) @@ -212,7 +212,7 @@ HDRVR GetNextDriver(HDRVR hDrvr, DWORD dwFlags) if (lpdrv->lpNextItem) hRetDrv = ((LPDRIVERITEM)lpdrv->lpNextItem)->dis.hDriver; } - GlobalUnlock(hDrvr); + GlobalUnlock16(hDrvr); } dprintf_driver(stddeb,"GetNextDriver // return %04x !\n", hRetDrv); return hRetDrv; diff --git a/misc/exec.c b/misc/exec.c index 085bb86e834..ad53f6b7621 100644 --- a/misc/exec.c +++ b/misc/exec.c @@ -165,8 +165,8 @@ BOOL WinHelp(HWND hWnd, LPSTR lpHelpFile, WORD wCommand, DWORD dwData) else nlen = 0; size = sizeof(WINHELP) + nlen + dsize; - hwh = GlobalAlloc(0,size); - lpwh = GlobalLock(hwh); + hwh = GlobalAlloc16(0,size); + lpwh = GlobalLock16(hwh); lpwh->size = size; lpwh->command = wCommand; if(nlen) { @@ -178,6 +178,6 @@ BOOL WinHelp(HWND hWnd, LPSTR lpHelpFile, WORD wCommand, DWORD dwData) lpwh->ofsData = sizeof(WINHELP)+nlen; } else lpwh->ofsData = 0; - GlobalUnlock(hwh); + GlobalUnlock16(hwh); return SendMessage(hDest,WM_WINHELP,hWnd,hwh); } diff --git a/misc/lstr.c b/misc/lstr.c index b8060610273..5ebd79ca660 100644 --- a/misc/lstr.c +++ b/misc/lstr.c @@ -5,14 +5,18 @@ */ #include +#include #include #include #include -#include "ldt.h" #include "windows.h" +#include "ldt.h" +#include "module.h" +#include "stackframe.h" #include "stddebug.h" #include "debug.h" +#include "xmalloc.h" #define ToUpper(c) toupper(c) #define ToLower(c) tolower(c) @@ -315,3 +319,127 @@ void OemToAnsiBuff(LPSTR lpOemStr, LPSTR lpAnsiStr, INT nLength) for(i=0;i buffer) && (p[-1] == '\n')) p[1] = '\0'; /* Remove trailing \n */ + module = MODULE_GetModuleName( GetExePtr(GetCurrentTask()) ); + fprintf( stderr, "OutputDebugString: %s says '%s'\n", + module ? module : "???", buffer ); + +} + + +/*********************************************************************** + * wsprintf (USER.420) + */ +#ifndef WINELIB +int wsprintf( LPSTR dummy1, LPSTR dummy2, ... ) +{ + LPSTR lpOutput, lpFormat; + DWORD *win_stack = (DWORD *)CURRENT_STACK16->args; + + lpOutput = (LPSTR) PTR_SEG_TO_LIN(*win_stack); + win_stack++; + lpFormat = (LPSTR) PTR_SEG_TO_LIN(*win_stack); + win_stack++; + + return wvsprintf( lpOutput, lpFormat, (LPCSTR)win_stack ); +} +#else /* WINELIB */ +int wsprintf(LPSTR lpOutput, LPSTR lpFormat, ...) +{ + va_list valist; + int ArgCnt; + + va_start(valist, lpFormat); + ArgCnt = vsprintf(lpOutput, lpFormat, valist); + va_end(valist); + + return ArgCnt; +} +#endif /* WINELIB */ + + +/*********************************************************************** + * wvsprintf (USER.421) + */ +int wvsprintf( LPSTR buf, LPCSTR format, LPCSTR args ) +{ + LPCSTR ptr; + DWORD stack[512], *stack_ptr; + BOOL fLarge; + + /* Create the 32-bit stack for libc's vsprintf() */ + + for (stack_ptr = stack, ptr = format; *ptr; ptr++) + { + if (*ptr != '%' || *++ptr == '%') + continue; + + /* skip width/precision */ + while (*ptr == '-' || *ptr == '+' || *ptr == '.' || + *ptr == ' ' || isdigit(*ptr) || *ptr == '#') + ptr++; + + /* handle modifier */ + fLarge = ((*ptr == 'l') || (*ptr == 'L')); + if (fLarge) ptr++; + + switch (*ptr) + { + case 's': + *stack_ptr++ = (DWORD)PTR_SEG_TO_LIN(*(DWORD*)args); + args += sizeof(DWORD); + break; + + case 'c': +/* windows' wsprintf() %c ignores 0's, we replace 0 with SPACE to make sure + that the remaining part of the string isn't ignored by the winapp */ + *stack_ptr++ = (DWORD)(*(WORD*)args ? *(WORD*)args : ' '); + args += sizeof(WORD); + break; + + case 'd': + case 'i': + if (!fLarge) + { + *stack_ptr++ = (DWORD)(INT32)(*(INT16 *)args); + args += sizeof(INT16); + break; + } + /* else fall through */ + case 'u': + case 'x': + case 'X': + if (fLarge) + { + *stack_ptr++ = *(DWORD*)args; + args += sizeof(DWORD); + } + else + { + *stack_ptr++ = *(WORD*)args; + args += sizeof(WORD); + } + break; + + default: + *stack_ptr++ = 0; + args += sizeof(WORD); + fprintf( stderr, "wsprintf: oops, unknown format %c!\n", *ptr ); + break; + } + } + + return vsprintf( buf, format, stack ); +} diff --git a/misc/main.c b/misc/main.c index 2cb0af4b809..233e7ed0143 100644 --- a/misc/main.c +++ b/misc/main.c @@ -1044,7 +1044,7 @@ void FileCDR(FARPROC x) /*********************************************************************** * GetWinDebugInfo (KERNEL.355) */ -BOOL GetWinDebugInfo(WINDEBUGINFO FAR* lpwdi, UINT flags) +BOOL GetWinDebugInfo(WINDEBUGINFO *lpwdi, UINT flags) { printf("GetWinDebugInfo(%8lx,%d) stub returning 0\n", (unsigned long)lpwdi, flags); /* 0 means not in debugging mode/version */ @@ -1056,7 +1056,7 @@ BOOL GetWinDebugInfo(WINDEBUGINFO FAR* lpwdi, UINT flags) /*********************************************************************** * GetWinDebugInfo (KERNEL.355) */ -BOOL SetWinDebugInfo(WINDEBUGINFO FAR* lpwdi) +BOOL SetWinDebugInfo(WINDEBUGINFO *lpwdi) { printf("SetWinDebugInfo(%8lx) stub returning 0\n", (unsigned long)lpwdi); /* 0 means not in debugging mode/version */ diff --git a/misc/network.c b/misc/network.c index 0713f8d03a9..65ef9cb4c1d 100644 --- a/misc/network.c +++ b/misc/network.c @@ -154,7 +154,7 @@ int WNetUnlockQueueData(LPSTR szQueue) * WNetGetConnection [USER.512] */ int WNetGetConnection(LPSTR lpLocalName, - LPSTR lpRemoteName, UINT FAR *cbRemoteName) + LPSTR lpRemoteName, UINT *cbRemoteName) { const char *path; @@ -393,7 +393,7 @@ UINT WNetEnumResource(HANDLE hEnum, DWORD cRequ, * WNetOpenEnum [USER.???] */ UINT WNetOpenEnum(DWORD dwScope, DWORD dwType, - LPNETRESOURCE lpNet, HANDLE FAR *lphEnum) + LPNETRESOURCE lpNet, HANDLE *lphEnum) { printf("EMPTY STUB !!! WNetOpenEnum(%08lX, %08lX, %p, %p);\n", dwScope, dwType, lpNet, lphEnum); diff --git a/misc/ole2.c b/misc/ole2.c index e5ae3c7a60c..3ca5010b63c 100644 --- a/misc/ole2.c +++ b/misc/ole2.c @@ -24,7 +24,7 @@ DWORD OleBuildVersion() /*********************************************************************** * OleInitialize [OLE2.2] */ -HRESULT WINAPI OleInitialize(LPVOID reserved) +HRESULT OleInitialize(LPVOID reserved) { dprintf_ole(stdnimp,"OleInitialize\n"); return S_OK; @@ -33,7 +33,7 @@ HRESULT WINAPI OleInitialize(LPVOID reserved) /*********************************************************************** * OleUnitialize [OLE2.3] */ -void WINAPI OleUninitialize() +void OleUninitialize() { dprintf_ole(stdnimp,"OleUninitialize()\n"); } diff --git a/misc/ole2disp.c b/misc/ole2disp.c index edb461ccb68..e738adcde1d 100644 --- a/misc/ole2disp.c +++ b/misc/ole2disp.c @@ -22,10 +22,10 @@ HGLOBAL BSTRheapsel=0; static BSTR BSTR_AllocBytes(int n) { - HLOCAL mem; + HLOCAL16 mem; if(!BSTRheapsel) { - BSTRheapsel=GlobalAlloc(GMEM_FIXED,BSTR_HEAP_SIZE); + BSTRheapsel=GlobalAlloc16(GMEM_FIXED,BSTR_HEAP_SIZE); LocalInit(BSTRheapsel,0,BSTR_HEAP_SIZE-1); } if(!BSTRheapsel) diff --git a/misc/ole2nls.c b/misc/ole2nls.c index 72e5beeaaeb..3f120a57999 100644 --- a/misc/ole2nls.c +++ b/misc/ole2nls.c @@ -18,7 +18,7 @@ /*********************************************************************** * GetUserDefaultLCID (OLE2NLS.1) */ -DWORD WINAPI GetUserDefaultLCID() +DWORD GetUserDefaultLCID() { /* Default sorting, neutral sublanguage */ switch(Options.language) @@ -42,7 +42,7 @@ DWORD WINAPI GetUserDefaultLCID() /*********************************************************************** * GetSystemDefaultLCID (OLE2NLS.2) */ -DWORD WINAPI GetSystemDefaultLCID() +DWORD GetSystemDefaultLCID() { return GetUserDefaultLCID(); } @@ -50,7 +50,7 @@ DWORD WINAPI GetSystemDefaultLCID() /*********************************************************************** * GetUserDefaultLangID (OLE2NLS.3) */ -WORD WINAPI GetUserDefaultLangID() +WORD GetUserDefaultLangID() { return (WORD)GetUserDefaultLCID(); } @@ -58,7 +58,7 @@ WORD WINAPI GetUserDefaultLangID() /*********************************************************************** * GetSystemDefaultLangID (OLE2NLS.4) */ -WORD WINAPI GetSystemDefaultLangID() +WORD GetSystemDefaultLangID() { return GetUserDefaultLangID(); } @@ -67,7 +67,7 @@ WORD WINAPI GetSystemDefaultLangID() * GetLocaleInfoA (OLE2NLS.5) * Is the last parameter really WORD for Win16? */ -int WINAPI GetLocaleInfoA(DWORD lcid,DWORD LCType,LPSTR buf,WORD len) +int GetLocaleInfoA(DWORD lcid,DWORD LCType,LPSTR buf,WORD len) { char *retString; int retLen; diff --git a/misc/olecli.c b/misc/olecli.c index adf9a72cc24..7e53656e9dc 100644 --- a/misc/olecli.c +++ b/misc/olecli.c @@ -18,11 +18,8 @@ extern LONG OLE_current_handle; /*********************************************************************** * OleRegisterClientDoc */ -OLESTATUS WINAPI OleRegisterClientDoc( - LPCSTR classname, - LPCSTR docname, - LONG reserved, - LHCLIENTDOC FAR *hRet) +OLESTATUS OleRegisterClientDoc( LPCSTR classname, LPCSTR docname, + LONG reserved, LHCLIENTDOC *hRet ) { dprintf_ole(stdnimp,"OleRegisterClientDoc:%s %s\n",classname,docname); *hRet=++OLE_current_handle; @@ -32,7 +29,7 @@ OLESTATUS WINAPI OleRegisterClientDoc( /*********************************************************************** * OleRenameClientDoc */ -OLESTATUS WINAPI OleRenameClientDoc(LHCLIENTDOC hDoc, LPCSTR newName) +OLESTATUS OleRenameClientDoc(LHCLIENTDOC hDoc, LPCSTR newName) { dprintf_ole(stdnimp,"OleRenameClientDoc: %ld %s\n",hDoc, newName); return OLE_OK; @@ -41,7 +38,7 @@ OLESTATUS WINAPI OleRenameClientDoc(LHCLIENTDOC hDoc, LPCSTR newName) /*********************************************************************** * OleRevokeClientDoc */ -OLESTATUS WINAPI OleRevokeClientDoc(LHCLIENTDOC hServerDoc) +OLESTATUS OleRevokeClientDoc(LHCLIENTDOC hServerDoc) { dprintf_ole(stdnimp,"OleRevokeClientDoc:%ld\n",hServerDoc); return OLE_OK; @@ -50,7 +47,7 @@ OLESTATUS WINAPI OleRevokeClientDoc(LHCLIENTDOC hServerDoc) /*********************************************************************** * OleIsDcMeta */ -BOOL WINAPI OleIsDcMeta(HDC hdc) +BOOL OleIsDcMeta(HDC hdc) { dprintf_ole(stddeb,"OleIsDCMeta(%04x)\n",hdc); return GDI_GetObjPtr( hdc, METAFILE_DC_MAGIC ) != 0; diff --git a/misc/olesvr.c b/misc/olesvr.c index 53351c2e7b9..4035e0819b7 100644 --- a/misc/olesvr.c +++ b/misc/olesvr.c @@ -17,12 +17,9 @@ LONG OLE_current_handle; /*********************************************************************** * OleRegisterServer */ -OLESTATUS WINAPI OleRegisterServer( - LPCSTR name, - LPOLESERVER serverStruct, - LHSERVER FAR *hRet, - HINSTANCE hServer, - OLE_SERVER_USE use) +OLESTATUS OleRegisterServer( LPCSTR name, LPOLESERVER serverStruct, + LHSERVER *hRet, HINSTANCE hServer, + OLE_SERVER_USE use ) { dprintf_ole(stdnimp,"OleRegisterServer:%s\n",name); *hRet=++OLE_current_handle; @@ -33,7 +30,7 @@ OLESTATUS WINAPI OleRegisterServer( /*********************************************************************** * OleBlockServer */ -OLESTATUS WINAPI OleBlockServer(LHSERVER hServer) +OLESTATUS OleBlockServer(LHSERVER hServer) { fprintf(stdnimp,"OleBlockServer:%ld\n",hServer); return OLE_OK; @@ -42,7 +39,7 @@ OLESTATUS WINAPI OleBlockServer(LHSERVER hServer) /*********************************************************************** * OleUnblockServer */ -OLESTATUS WINAPI OleUnblockServer(LHSERVER hServer, BOOL FAR *block) +OLESTATUS OleUnblockServer(LHSERVER hServer, BOOL *block) { fprintf(stdnimp,"OleUnblockServer:%ld\n",hServer); /* no more blocked messages :) */ @@ -53,11 +50,8 @@ OLESTATUS WINAPI OleUnblockServer(LHSERVER hServer, BOOL FAR *block) /*********************************************************************** * OleRegisterServerDoc */ -OLESTATUS WINAPI OleRegisterServerDoc( - LHSERVER hServer, - LPCSTR docname, - LPOLESERVERDOC document, - LHSERVERDOC FAR *hRet) +OLESTATUS OleRegisterServerDoc( LHSERVER hServer, LPCSTR docname, + LPOLESERVERDOC document, LHSERVERDOC *hRet) { dprintf_ole(stdnimp,"OleRegisterServerDoc:%ld,%s\n", hServer, docname); *hRet=++OLE_current_handle; @@ -67,7 +61,7 @@ OLESTATUS WINAPI OleRegisterServerDoc( /*********************************************************************** * OleRevokeServerDoc */ -OLESTATUS WINAPI OleRevokeServerDoc(LHSERVERDOC hServerDoc) +OLESTATUS OleRevokeServerDoc(LHSERVERDOC hServerDoc) { dprintf_ole(stdnimp,"OleRevokeServerDoc:%ld\n",hServerDoc); return OLE_OK; @@ -76,7 +70,7 @@ OLESTATUS WINAPI OleRevokeServerDoc(LHSERVERDOC hServerDoc) /*********************************************************************** * OleRevokeServer */ -OLESTATUS WINAPI OleRevokeServer(LHSERVER hServer) +OLESTATUS OleRevokeServer(LHSERVER hServer) { dprintf_ole(stdnimp,"OleRevokeServer:%ld\n",hServer); return OLE_OK; diff --git a/misc/registry.c b/misc/registry.c index 182f471746f..7dee810cd50 100644 --- a/misc/registry.c +++ b/misc/registry.c @@ -105,7 +105,7 @@ remove_handle(HKEY hkey) { if (openhandles[i].hkey==hkey) break; if (i==nrofopenhandles) { - dprintf_reg(stddeb,"remove_handle:Didn't find handle %lx?\n",hkey); + dprintf_reg(stddeb,"remove_handle:Didn't find handle %08x?\n",hkey); return; } memcpy( openhandles+i, @@ -728,8 +728,7 @@ SHELL_LoadRegistry() { */ /* RegOpenKeyExW [ADVAPI32.150] */ -WINAPI DWORD -RegOpenKeyExW( +DWORD RegOpenKeyExW( HKEY hkey, LPCWSTR lpszSubKey, DWORD dwReserved, @@ -776,8 +775,7 @@ RegOpenKeyExW( } /* RegOpenKeyW [ADVAPI32.151] */ -WINAPI DWORD -RegOpenKeyW( +DWORD RegOpenKeyW( HKEY hkey, LPCWSTR lpszSubKey, LPHKEY retkey @@ -790,8 +788,7 @@ RegOpenKeyW( /* RegOpenKeyExA [ADVAPI32.149] */ -WINAPI DWORD -RegOpenKeyExA( +DWORD RegOpenKeyExA( HKEY hkey, LPCSTR lpszSubKey, DWORD dwReserved, @@ -815,8 +812,7 @@ RegOpenKeyExA( } /* RegOpenKeyA [ADVAPI32.148] */ -WINAPI DWORD -RegOpenKeyA( +DWORD RegOpenKeyA( HKEY hkey, LPCSTR lpszSubKey, LPHKEY retkey @@ -828,8 +824,7 @@ RegOpenKeyA( } /* RegOpenKey [SHELL.1] [KERNEL.217] */ -WINAPI DWORD -RegOpenKey( +DWORD RegOpenKey( HKEY hkey, LPCSTR lpszSubKey, LPHKEY retkey @@ -854,8 +849,7 @@ RegOpenKey( */ /* RegCreateKeyExW [ADVAPI32.131] */ -WINAPI DWORD -RegCreateKeyExW( +DWORD RegCreateKeyExW( HKEY hkey, LPCWSTR lpszSubKey, DWORD dwReserved, @@ -955,8 +949,7 @@ RegCreateKeyExW( } /* RegCreateKeyW [ADVAPI32.132] */ -WINAPI DWORD -RegCreateKeyW( +DWORD RegCreateKeyW( HKEY hkey, LPCWSTR lpszSubKey, LPHKEY retkey @@ -981,8 +974,7 @@ RegCreateKeyW( } /* RegCreateKeyExA [ADVAPI32.130] */ -WINAPI DWORD -RegCreateKeyExA( +DWORD RegCreateKeyExA( HKEY hkey, LPCSTR lpszSubKey, DWORD dwReserved, @@ -1034,8 +1026,7 @@ RegCreateKeyExA( } /* RegCreateKeyA [ADVAPI32.129] */ -WINAPI DWORD -RegCreateKeyA( +DWORD RegCreateKeyA( HKEY hkey, LPCSTR lpszSubKey, LPHKEY retkey @@ -1059,8 +1050,7 @@ RegCreateKeyA( } /* RegCreateKey [SHELL.2] [KERNEL.218] */ -WINAPI DWORD -RegCreateKey( +DWORD RegCreateKey( HKEY hkey, LPCSTR lpszSubKey, LPHKEY retkey @@ -1084,8 +1074,7 @@ RegCreateKey( */ /* RegQueryValueExW [ADVAPI32.158] */ -WINAPI DWORD -RegQueryValueExW( +DWORD RegQueryValueExW( HKEY hkey, LPWSTR lpszValueName, LPDWORD lpdwReserved, @@ -1096,7 +1085,7 @@ RegQueryValueExW( LPKEYSTRUCT lpkey; int i; - dprintf_reg(stddeb,"RegQueryValueExW(%lx,%s,%p,%p,%p,%p)\n", + dprintf_reg(stddeb,"RegQueryValueExW(%x,%s,%p,%p,%p,%p)\n", hkey,W2C(lpszValueName,0),lpdwReserved,lpdwType,lpbData,lpcbData ); @@ -1141,8 +1130,7 @@ RegQueryValueExW( } /* RegQueryValueW [ADVAPI32.159] */ -WINAPI DWORD -RegQueryValueW( +DWORD RegQueryValueW( HKEY hkey, LPWSTR lpszSubKey, LPWSTR lpszData, @@ -1151,7 +1139,7 @@ RegQueryValueW( HKEY xhkey; DWORD ret,lpdwType; - dprintf_reg(stddeb,"RegQueryValueW(%lx,%s,%p,%p)\n->", + dprintf_reg(stddeb,"RegQueryValueW(%x,%s,%p,%p)\n->", hkey,W2C(lpszSubKey,0),lpszData,lpcbData ); @@ -1178,8 +1166,7 @@ RegQueryValueW( } /* RegQueryValueExA [ADVAPI32.157] */ -WINAPI DWORD -RegQueryValueExA( +DWORD RegQueryValueExA( HKEY hkey, LPSTR lpszValueName, LPDWORD lpdwReserved, @@ -1192,7 +1179,7 @@ RegQueryValueExA( DWORD ret,myxlen; DWORD *mylen; - dprintf_reg(stddeb,"RegQueryValueExA(%lx,%s,%p,%p,%p,%p)\n->", + dprintf_reg(stddeb,"RegQueryValueExA(%x,%s,%p,%p,%p,%p)\n->", hkey,lpszValueName,lpdwReserved,lpdwType,lpbData,lpcbData ); if (lpbData) { @@ -1250,8 +1237,7 @@ RegQueryValueExA( } /* RegQueryValueEx [KERNEL.225] */ -WINAPI DWORD -RegQueryValueEx( +DWORD RegQueryValueEx( HKEY hkey, LPSTR lpszValueName, LPDWORD lpdwReserved, @@ -1259,7 +1245,7 @@ RegQueryValueEx( LPBYTE lpbData, LPDWORD lpcbData ) { - dprintf_reg(stddeb,"RegQueryValueEx(%lx,%s,%p,%p,%p,%p)\n", + dprintf_reg(stddeb,"RegQueryValueEx(%x,%s,%p,%p,%p,%p)\n", hkey,lpszValueName,lpdwReserved,lpdwType,lpbData,lpcbData ); return RegQueryValueExA( @@ -1273,8 +1259,7 @@ RegQueryValueEx( } /* RegQueryValueA [ADVAPI32.156] */ -WINAPI DWORD -RegQueryValueA( +DWORD RegQueryValueA( HKEY hkey, LPSTR lpszSubKey, LPSTR lpszData, @@ -1283,7 +1268,7 @@ RegQueryValueA( HKEY xhkey; DWORD ret,lpdwType; - dprintf_reg(stddeb,"RegQueryValueA(%lx,%s,%p,%p)\n", + dprintf_reg(stddeb,"RegQueryValueA(%x,%s,%p,%p)\n", hkey,lpszSubKey,lpszData,lpcbData ); @@ -1310,14 +1295,13 @@ RegQueryValueA( } /* RegQueryValue [SHELL.6] [KERNEL.224] */ -WINAPI DWORD -RegQueryValue( +DWORD RegQueryValue( HKEY hkey, LPSTR lpszSubKey, LPSTR lpszData, LPDWORD lpcbData ) { - dprintf_reg(stddeb,"RegQueryValueA(%lx,%s,%p,%p)\n", + dprintf_reg(stddeb,"RegQueryValueA(%x,%s,%p,%p)\n", hkey,lpszSubKey,lpszData,lpcbData ); return RegQueryValueA(hkey,lpszSubKey,lpszData,lpcbData); @@ -1332,8 +1316,7 @@ RegQueryValue( */ /* RegSetValueExW [ADVAPI32.170] */ -WINAPI DWORD -RegSetValueExW( +DWORD RegSetValueExW( HKEY hkey, LPWSTR lpszValueName, DWORD dwReserved, @@ -1344,7 +1327,7 @@ RegSetValueExW( LPKEYSTRUCT lpkey; int i; - dprintf_reg(stddeb,"RegSetValueExW(%lx,%s,%ld,%ld,%p,%ld)\n", + dprintf_reg(stddeb,"RegSetValueExW(%x,%s,%ld,%ld,%p,%ld)\n", hkey,W2C(lpszValueName,0),dwReserved,dwType,lpbData,cbData ); /* we no longer care about the lpbData dwType here... */ @@ -1384,8 +1367,7 @@ RegSetValueExW( } /* RegSetValueExA [ADVAPI32.169] */ -WINAPI DWORD -RegSetValueExA( +DWORD RegSetValueExA( HKEY hkey, LPSTR lpszValueName, DWORD dwReserved, @@ -1397,7 +1379,7 @@ RegSetValueExA( LPWSTR lpszValueNameW; DWORD ret; - dprintf_reg(stddeb,"RegSetValueExA(%lx,%s,%ld,%ld,%p,%ld)\n->", + dprintf_reg(stddeb,"RegSetValueExA(%x,%s,%ld,%ld,%p,%ld)\n->", hkey,lpszValueName,dwReserved,dwType,lpbData,cbData ); if ((1<", + dprintf_reg(stddeb,"RegSetValueEx(%x,%s,%ld,%ld,%p,%ld)\n->", hkey,lpszValueName,dwReserved,dwType,lpbData,cbData ); return RegSetValueExA(hkey,lpszValueName,dwReserved,dwType,lpbData,cbData); } /* RegSetValueW [ADVAPI32.171] */ -WINAPI DWORD -RegSetValueW( +DWORD RegSetValueW( HKEY hkey, LPCWSTR lpszSubKey, DWORD dwType, @@ -1445,7 +1425,7 @@ RegSetValueW( HKEY xhkey; DWORD ret; - dprintf_reg(stddeb,"RegSetValueW(%lx,%s,%ld,%s,%ld)\n->", + dprintf_reg(stddeb,"RegSetValueW(%x,%s,%ld,%s,%ld)\n->", hkey,W2C(lpszSubKey,0),dwType,W2C(lpszData,0),cbData ); if (lpszSubKey && *lpszSubKey) { @@ -1471,8 +1451,7 @@ RegSetValueW( } /* RegSetValueA [ADVAPI32.168] */ -WINAPI DWORD -RegSetValueA( +DWORD RegSetValueA( HKEY hkey, LPCSTR lpszSubKey, DWORD dwType, @@ -1482,7 +1461,7 @@ RegSetValueA( DWORD ret; HKEY xhkey; - dprintf_reg(stddeb,"RegSetValueA(%lx,%s,%ld,%s,%ld)\n->", + dprintf_reg(stddeb,"RegSetValueA(%x,%s,%ld,%s,%ld)\n->", hkey,lpszSubKey,dwType,lpszData,cbData ); if (lpszSubKey && *lpszSubKey) { @@ -1505,8 +1484,7 @@ RegSetValueA( } /* RegSetValue [KERNEL.221] [SHELL.5] */ -WINAPI DWORD -RegSetValue( +DWORD RegSetValue( HKEY hkey, LPCSTR lpszSubKey, DWORD dwType, @@ -1514,7 +1492,7 @@ RegSetValue( DWORD cbData ) { DWORD ret; - dprintf_reg(stddeb,"RegSetValue(%lx,%s,%ld,%s,%ld)\n->", + dprintf_reg(stddeb,"RegSetValue(%x,%s,%ld,%s,%ld)\n->", hkey,lpszSubKey,dwType,lpszData,cbData ); ret=RegSetValueA(hkey,lpszSubKey,dwType,lpszData,cbData); @@ -1530,8 +1508,7 @@ RegSetValue( */ /* RegEnumKeyExW [ADVAPI32.139] */ -WINAPI DWORD -RegEnumKeyExW( +DWORD RegEnumKeyExW( HKEY hkey, DWORD iSubkey, LPWSTR lpszName, @@ -1543,7 +1520,7 @@ RegEnumKeyExW( ) { LPKEYSTRUCT lpkey,lpxkey; - dprintf_reg(stddeb,"RegEnumKeyExW(%lx,%ld,%p,%ld,%p,%p,%p,%p)\n", + dprintf_reg(stddeb,"RegEnumKeyExW(%x,%ld,%p,%ld,%p,%p,%p,%p)\n", hkey,iSubkey,lpszName,*lpcchName,lpdwReserved,lpszClass,lpcchClass,ft ); lpkey=lookup_hkey(hkey); @@ -1571,8 +1548,7 @@ RegEnumKeyExW( } /* RegEnumKeyW [ADVAPI32.140] */ -WINAPI DWORD -RegEnumKeyW( +DWORD RegEnumKeyW( HKEY hkey, DWORD iSubkey, LPWSTR lpszName, @@ -1580,14 +1556,13 @@ RegEnumKeyW( ) { FILETIME ft; - dprintf_reg(stddeb,"RegEnumKeyW(%lx,%ld,%p,%ld)\n->", + dprintf_reg(stddeb,"RegEnumKeyW(%x,%ld,%p,%ld)\n->", hkey,iSubkey,lpszName,lpcchName ); return RegEnumKeyExW(hkey,iSubkey,lpszName,&lpcchName,NULL,NULL,NULL,&ft); } /* RegEnumKeyExA [ADVAPI32.138] */ -WINAPI DWORD -RegEnumKeyExA( +DWORD RegEnumKeyExA( HKEY hkey, DWORD iSubkey, LPSTR lpszName, @@ -1601,7 +1576,7 @@ RegEnumKeyExA( LPWSTR lpszNameW,lpszClassW; - dprintf_reg(stddeb,"RegEnumKeyExA(%lx,%ld,%p,%ld,%p,%p,%p,%p)\n->", + dprintf_reg(stddeb,"RegEnumKeyExA(%x,%ld,%p,%ld,%p,%p,%p,%p)\n->", hkey,iSubkey,lpszName,*lpcchName,lpdwReserved,lpszClass,lpcchClass,ft ); if (lpszName) { @@ -1644,8 +1619,7 @@ RegEnumKeyExA( } /* RegEnumKeyA [ADVAPI32.137] */ -WINAPI DWORD -RegEnumKeyA( +DWORD RegEnumKeyA( HKEY hkey, DWORD iSubkey, LPSTR lpszName, @@ -1653,7 +1627,7 @@ RegEnumKeyA( ) { FILETIME ft; - dprintf_reg(stddeb,"RegEnumKeyA(%lx,%ld,%p,%ld)\n->", + dprintf_reg(stddeb,"RegEnumKeyA(%x,%ld,%p,%ld)\n->", hkey,iSubkey,lpszName,lpcchName ); return RegEnumKeyExA( @@ -1669,14 +1643,13 @@ RegEnumKeyA( } /* RegEnumKey [SHELL.7] [KERNEL.216] */ -WINAPI DWORD -RegEnumKey( +DWORD RegEnumKey( HKEY hkey, DWORD iSubkey, LPSTR lpszName, DWORD lpcchName ) { - dprintf_reg(stddeb,"RegEnumKey(%lx,%ld,%p,%ld)\n->", + dprintf_reg(stddeb,"RegEnumKey(%x,%ld,%p,%ld)\n->", hkey,iSubkey,lpszName,lpcchName ); return RegEnumKeyA(hkey,iSubkey,lpszName,lpcchName); @@ -1690,8 +1663,7 @@ RegEnumKey( */ /* RegEnumValueW [ADVAPI32.142] */ -WINAPI DWORD -RegEnumValueW( +DWORD RegEnumValueW( HKEY hkey, DWORD iValue, LPWSTR lpszValue, @@ -1704,7 +1676,7 @@ RegEnumValueW( LPKEYSTRUCT lpkey; LPKEYVALUE val; - dprintf_reg(stddeb,"RegEnumValueW(%ld,%ld,%p,%p,%p,%p,%p,%p)\n", + dprintf_reg(stddeb,"RegEnumValueW(%x,%ld,%p,%p,%p,%p,%p,%p)\n", hkey,iValue,lpszValue,lpcchValue,lpdReserved,lpdwType,lpbData,lpcbData ); lpkey = lookup_hkey(hkey); @@ -1737,8 +1709,7 @@ RegEnumValueW( } /* RegEnumValueA [ADVAPI32.141] */ -WINAPI DWORD -RegEnumValueA( +DWORD RegEnumValueA( HKEY hkey, DWORD iValue, LPSTR lpszValue, @@ -1752,7 +1723,7 @@ RegEnumValueA( LPBYTE lpbDataW; DWORD ret,lpcbDataW; - dprintf_reg(stddeb,"RegEnumValueA(%ld,%ld,%p,%p,%p,%p,%p,%p)\n", + dprintf_reg(stddeb,"RegEnumValueA(%x,%ld,%p,%p,%p,%p,%p,%p)\n", hkey,iValue,lpszValue,lpcchValue,lpdReserved,lpdwType,lpbData,lpcbData ); @@ -1795,8 +1766,7 @@ RegEnumValueA( } /* RegEnumValue [KERNEL.223] */ -WINAPI DWORD -RegEnumValue( +DWORD RegEnumValue( HKEY hkey, DWORD iValue, LPSTR lpszValue, @@ -1806,7 +1776,7 @@ RegEnumValue( LPBYTE lpbData, LPDWORD lpcbData ) { - dprintf_reg(stddeb,"RegEnumValue(%ld,%ld,%p,%p,%p,%p,%p,%p)\n", + dprintf_reg(stddeb,"RegEnumValue(%x,%ld,%p,%p,%p,%p,%p,%p)\n", hkey,iValue,lpszValue,lpcchValue,lpdReserved,lpdwType,lpbData,lpcbData ); return RegEnumValueA( @@ -1825,9 +1795,8 @@ RegEnumValue( * Close registry key */ /* RegCloseKey [SHELL.3] [KERNEL.220] [ADVAPI32.126] */ -WINAPI DWORD -RegCloseKey(HKEY hkey) { - dprintf_reg(stddeb,"RegCloseKey(%ld)\n",hkey); +DWORD RegCloseKey(HKEY hkey) { + dprintf_reg(stddeb,"RegCloseKey(%x)\n",hkey); remove_handle(hkey); return ERROR_SUCCESS; } @@ -1838,13 +1807,12 @@ RegCloseKey(HKEY hkey) { * RegDeleteKey -> RegDeleteKeyA -> RegDeleteKeyW */ /* RegDeleteKeyW [ADVAPI32.134] */ -WINAPI DWORD -RegDeleteKeyW(HKEY hkey,LPWSTR lpszSubKey) { +DWORD RegDeleteKeyW(HKEY hkey,LPWSTR lpszSubKey) { LPKEYSTRUCT *lplpPrevKey,lpNextKey,lpxkey; LPWSTR *wps; int wpc,i; - dprintf_reg(stddeb,"RegDeleteKeyW(%ld,%s)\n", + dprintf_reg(stddeb,"RegDeleteKeyW(%x,%s)\n", hkey,W2C(lpszSubKey,0) ); lpNextKey = lookup_hkey(hkey); @@ -1895,12 +1863,11 @@ RegDeleteKeyW(HKEY hkey,LPWSTR lpszSubKey) { } /* RegDeleteKeyA [ADVAPI32.133] */ -WINAPI DWORD -RegDeleteKeyA(HKEY hkey,LPCSTR lpszSubKey) { +DWORD RegDeleteKeyA(HKEY hkey,LPCSTR lpszSubKey) { LPWSTR lpszSubKeyW; DWORD ret; - dprintf_reg(stddeb,"RegDeleteKeyA(%ld,%s)\n", + dprintf_reg(stddeb,"RegDeleteKeyA(%x,%s)\n", hkey,lpszSubKey ); lpszSubKeyW=strdupA2W(lpszSubKey); @@ -1910,9 +1877,8 @@ RegDeleteKeyA(HKEY hkey,LPCSTR lpszSubKey) { } /* RegDeleteKey [SHELL.4] [KERNEL.219] */ -WINAPI DWORD -RegDeleteKey(HKEY hkey,LPCSTR lpszSubKey) { - dprintf_reg(stddeb,"RegDeleteKey(%ld,%s)\n", +DWORD RegDeleteKey(HKEY hkey,LPCSTR lpszSubKey) { + dprintf_reg(stddeb,"RegDeleteKey(%x,%s)\n", hkey,lpszSubKey ); return RegDeleteKeyA(hkey,lpszSubKey); @@ -1925,13 +1891,12 @@ RegDeleteKey(HKEY hkey,LPCSTR lpszSubKey) { * RegDeleteValue -> RegDeleteValueA -> RegDeleteValueW */ /* RegDeleteValueW [ADVAPI32.136] */ -WINAPI DWORD -RegDeleteValueW(HKEY hkey,LPWSTR lpszValue) { +DWORD RegDeleteValueW(HKEY hkey,LPWSTR lpszValue) { DWORD i; LPKEYSTRUCT lpkey; LPKEYVALUE val; - dprintf_reg(stddeb,"RegDeleteValueW(%ld,%s)\n", + dprintf_reg(stddeb,"RegDeleteValueW(%x,%s)\n", hkey,W2C(lpszValue,0) ); lpkey=lookup_hkey(hkey); @@ -1965,14 +1930,11 @@ RegDeleteValueW(HKEY hkey,LPWSTR lpszValue) { } /* RegDeleteValueA [ADVAPI32.135] */ -WINAPI DWORD -RegDeleteValueA(HKEY hkey,LPSTR lpszValue) { +DWORD RegDeleteValueA(HKEY hkey,LPSTR lpszValue) { LPWSTR lpszValueW; DWORD ret; - dprintf_reg(stddeb,"RegDeleteValueA(%ld,%s)\n", - hkey,lpszValue - ); + dprintf_reg( stddeb, "RegDeleteValueA(%x,%s)\n", hkey,lpszValue ); if (lpszValue) lpszValueW=strdupA2W(lpszValue); else @@ -1984,26 +1946,21 @@ RegDeleteValueA(HKEY hkey,LPSTR lpszValue) { } /* RegDeleteValue [KERNEL.222] */ -WINAPI DWORD -RegDeleteValue(HKEY hkey,LPSTR lpszValue) { - dprintf_reg(stddeb,"RegDeleteValue(%ld,%s)\n", - hkey,lpszValue - ); +DWORD RegDeleteValue(HKEY hkey,LPSTR lpszValue) { + dprintf_reg( stddeb,"RegDeleteValue(%x,%s)\n", hkey,lpszValue ); return RegDeleteValueA(hkey,lpszValue); } /* RegFlushKey [ADVAPI32.143] [KERNEL.227] */ -WINAPI DWORD -RegFlushKey(HKEY hkey) { - dprintf_reg(stddeb,"RegFlushKey(%ld), STUB.\n",hkey); +DWORD RegFlushKey(HKEY hkey) { + dprintf_reg(stddeb,"RegFlushKey(%x), STUB.\n",hkey); return SHELL_ERROR_SUCCESS; } /* FIXME: lpcchXXXX ... is this counting in WCHARS or in BYTEs ?? */ /* RegQueryInfoKeyW [ADVAPI32.153] */ -WINAPI DWORD -RegQueryInfoKeyW( +DWORD RegQueryInfoKeyW( HKEY hkey, LPWSTR lpszClass, LPDWORD lpcchClass, @@ -2021,7 +1978,7 @@ RegQueryInfoKeyW( int nrofkeys,maxsubkey,maxclass,maxvalues,maxvname,maxvdata; int i; - dprintf_reg(stddeb,"RegQueryInfoKeyW(%lx,......)\n",hkey); + dprintf_reg(stddeb,"RegQueryInfoKeyW(%x,......)\n",hkey); lpkey=lookup_hkey(hkey); if (!lpkey) return SHELL_ERROR_BADKEY; @@ -2079,8 +2036,7 @@ RegQueryInfoKeyW( } /* RegQueryInfoKeyA [ADVAPI32.152] */ -WINAPI DWORD -RegQueryInfoKeyA( +DWORD RegQueryInfoKeyA( HKEY hkey, LPSTR lpszClass, LPDWORD lpcchClass, @@ -2097,7 +2053,7 @@ RegQueryInfoKeyA( LPWSTR lpszClassW; DWORD ret; - dprintf_reg(stddeb,"RegQueryInfoKeyA(%lx,......)\n",hkey); + dprintf_reg(stddeb,"RegQueryInfoKeyA(%x,......)\n",hkey); if (lpszClass) { *lpcchClass*= 2; lpszClassW = (LPWSTR)xmalloc(*lpcchClass); diff --git a/misc/shell.c b/misc/shell.c index 66fd258a2d9..dd2d591eeba 100644 --- a/misc/shell.c +++ b/misc/shell.c @@ -50,7 +50,7 @@ UINT DragQueryFile(HDROP hDrop, WORD wFile, LPSTR lpszFile, WORD wLength) dprintf_reg(stddeb,"DragQueryFile(%04x, %i, %p, %u)\n", hDrop,wFile,lpszFile,wLength); - lpDropFileStruct = (LPDROPFILESTRUCT) GlobalLock(hDrop); + lpDropFileStruct = (LPDROPFILESTRUCT) GlobalLock16(hDrop); if(!lpDropFileStruct) { dprintf_reg(stddeb,"DragQueryFile: unable to lock handle!\n"); @@ -73,7 +73,7 @@ UINT DragQueryFile(HDROP hDrop, WORD wFile, LPSTR lpszFile, WORD wLength) strncpy(lpszFile, lpCurrent, i); lpszFile[i] = '\0'; - GlobalUnlock(hDrop); + GlobalUnlock16(hDrop); return i; } @@ -83,24 +83,24 @@ UINT DragQueryFile(HDROP hDrop, WORD wFile, LPSTR lpszFile, WORD wLength) */ void DragFinish(HDROP h) { - GlobalFree((HGLOBAL)h); + GlobalFree16((HGLOBAL16)h); } /************************************************************************* * DragQueryPoint [SHELL.13] */ -BOOL DragQueryPoint(HDROP hDrop, POINT FAR *p) +BOOL DragQueryPoint(HDROP hDrop, POINT *p) { LPDROPFILESTRUCT lpDropFileStruct; BOOL bRet; - lpDropFileStruct = (LPDROPFILESTRUCT) GlobalLock(hDrop); + lpDropFileStruct = (LPDROPFILESTRUCT) GlobalLock16(hDrop); memcpy(p,&lpDropFileStruct->ptMousePos,sizeof(POINT)); bRet = lpDropFileStruct->fInNonClientArea; - GlobalUnlock(hDrop); + GlobalUnlock16(hDrop); return bRet; } @@ -179,11 +179,11 @@ HINSTANCE ShellExecute(HWND hWnd, LPCSTR lpOperation, LPCSTR lpFile, LPSTR lpPar } } else { fprintf(stddeb,"ShellExecute: No %s\\shell\\%s\\command found for \"%s\" suffix.\n",subclass,lpOperation,p); - return (HINSTANCE)14; /* unknown type */ + return (HINSTANCE)31; /* unknown type */ } } else { fprintf(stddeb,"ShellExecute: No operation found for \"%s\" suffix.\n",p); - return (HINSTANCE)14; /* file not found */ + return (HINSTANCE)31; /* file not found */ } } dprintf_exec(stddeb,"ShellExecute:starting %s\n",cmd); @@ -202,7 +202,7 @@ HINSTANCE FindExecutable(LPCSTR lpFile, LPCSTR lpDirectory, LPSTR lpResult) return 31; /* no association */ } -static char AppName[128], AppMisc[906]; +static char AppName[128], AppMisc[1536]; /************************************************************************* * AboutDlgProc [SHELL.33] @@ -313,7 +313,7 @@ HANDLE SHELL_LoadResource(HINSTANCE hInst, HFILE hFile, NE_NAMEINFO* pNInfo, WOR BYTE* ptr; HANDLE handle = DirectResAlloc( hInst, 0x10, (DWORD)pNInfo->length << sizeShift); - if( (ptr = (BYTE*)GlobalLock( handle )) ) + if( (ptr = (BYTE*)GlobalLock16( handle )) ) { _llseek( hFile, (DWORD)pNInfo->offset << sizeShift, SEEK_SET); FILE_Read( hFile, (char*)ptr, pNInfo->length << sizeShift); @@ -340,8 +340,8 @@ HICON InternalExtractIcon(HINSTANCE hInstance, LPCSTR lpszExeFileName, UINT nIco if( hFile == HFILE_ERROR || !n ) return 0; - hRet = GlobalAlloc( GMEM_MOVEABLE, sizeof(HICON)*n); - RetPtr = (HICON*)GlobalLock(hRet); + hRet = GlobalAlloc16( GMEM_FIXED, sizeof(HICON)*n); + RetPtr = (HICON*)GlobalLock16(hRet); *RetPtr = (n == 0xFFFF)? 0: 1; /* error return values */ @@ -397,7 +397,7 @@ HICON InternalExtractIcon(HINSTANCE hInstance, LPCSTR lpszExeFileName, UINT nIco hIcon = SHELL_LoadResource( hInstance, hFile, pIconDir + (i - nIconIndex), *(WORD*)pData ); RetPtr[i-nIconIndex] = GetIconID( hIcon, 3 ); - GlobalFree(hIcon); + GlobalFree16(hIcon); } for( icon = nIconIndex; icon < nIconIndex + n; icon++ ) @@ -429,10 +429,10 @@ HICON ExtractIcon(HINSTANCE hInstance, LPCSTR lpszExeFileName, WORD nIconIndex) if( handle ) { - HICON* ptr = (HICON*)GlobalLock(handle); + HICON* ptr = (HICON*)GlobalLock16(handle); HICON hIcon = *ptr; - GlobalFree(handle); + GlobalFree16(handle); return hIcon; } return 0; diff --git a/misc/sound.c b/misc/sound.c index 990bb727b91..9b72416ab68 100644 --- a/misc/sound.c +++ b/misc/sound.c @@ -83,7 +83,7 @@ INT CountVoiceNotes(INT x) return 0; } -LPINT GetThresholdEvent(void) +LPINT16 GetThresholdEvent(void) { fprintf(stderr, "GetThresholdEvent()\n"); return NULL; diff --git a/misc/user.c b/misc/user.c index dc8dc8dede7..fbaa8979b77 100644 --- a/misc/user.c +++ b/misc/user.c @@ -12,15 +12,15 @@ #include "user.h" #include "task.h" #include "queue.h" -#include "class.h" #include "win.h" #include "hook.h" #include "debug.h" #include "toolhelp.h" -#ifndef WINELIB WORD USER_HeapSel = 0; +#ifndef WINELIB + extern void TIMER_NukeTimers(HWND, HQUEUE ); extern HTASK TASK_GetNextTask(HTASK); diff --git a/misc/winsocket.c b/misc/winsocket.c index f52c588daff..0ebfaca5d99 100644 --- a/misc/winsocket.c +++ b/misc/winsocket.c @@ -1104,8 +1104,8 @@ static void send_message( HWND hWnd, u_int wMsg, HANDLE handle, long lParam) } -HANDLE WSAAsyncGetHostByAddr(HWND hWnd, u_int wMsg, const char *addr, - INT len, INT type, char *buf, INT buflen) +HANDLE WSAAsyncGetHostByAddr(HWND hWnd, u_int wMsg, LPCSTR addr, + INT len, INT type, LPSTR buf, INT buflen) { HANDLE handle; struct hostent *host; @@ -1139,8 +1139,8 @@ HANDLE WSAAsyncGetHostByAddr(HWND hWnd, u_int wMsg, const char *addr, } -HANDLE WSAAsyncGetHostByName(HWND hWnd, u_int wMsg, const char *name, - char *buf, INT buflen) +HANDLE WSAAsyncGetHostByName(HWND hWnd, u_int wMsg, LPCSTR name, + LPSTR buf, INT buflen) { HANDLE handle; struct hostent *host; @@ -1174,8 +1174,8 @@ HANDLE WSAAsyncGetHostByName(HWND hWnd, u_int wMsg, const char *name, } -HANDLE WSAAsyncGetProtoByName(HWND hWnd, u_int wMsg, const char *name, - char *buf, INT buflen) +HANDLE WSAAsyncGetProtoByName(HWND hWnd, u_int wMsg, LPCSTR name, + LPSTR buf, INT buflen) { HANDLE handle; struct protoent *proto; @@ -1210,7 +1210,7 @@ HANDLE WSAAsyncGetProtoByName(HWND hWnd, u_int wMsg, const char *name, HANDLE WSAAsyncGetProtoByNumber(HWND hWnd, u_int wMsg, INT number, - char *buf, INT buflen) + LPSTR buf, INT buflen) { HANDLE handle; struct protoent *proto; @@ -1244,8 +1244,8 @@ HANDLE WSAAsyncGetProtoByNumber(HWND hWnd, u_int wMsg, INT number, } -HANDLE WSAAsyncGetServByName(HWND hWnd, u_int wMsg, const char *name, - const char *proto, char *buf, INT buflen) +HANDLE WSAAsyncGetServByName(HWND hWnd, u_int wMsg, LPCSTR name, + LPCSTR proto, LPSTR buf, INT buflen) { HANDLE handle; struct servent *service; @@ -1279,8 +1279,8 @@ HANDLE WSAAsyncGetServByName(HWND hWnd, u_int wMsg, const char *name, } -HANDLE WSAAsyncGetServByPort(HWND hWnd, u_int wMsg, INT port, const char - *proto, char *buf, INT buflen) +HANDLE WSAAsyncGetServByPort(HWND hWnd, u_int wMsg, INT port, LPCSTR proto, + LPSTR buf, INT buflen) { HANDLE handle; struct servent *service; @@ -1508,10 +1508,10 @@ INT WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData) /* alloc winsock heap */ - if ((HeapHandle = GlobalAlloc(GMEM_FIXED,sizeof(struct WinSockHeap))) == 0) + if ((HeapHandle = GlobalAlloc16(GMEM_FIXED,sizeof(struct WinSockHeap))) == 0) return WSASYSNOTREADY; - Heap = (struct WinSockHeap *) GlobalLock(HeapHandle); + Heap = (struct WinSockHeap *) GlobalLock16(HeapHandle); /* return winsock information */ memcpy(lpWSAData, &WINSOCK_data, sizeof(WINSOCK_data)); diff --git a/miscemu/dosmem.c b/miscemu/dosmem.c index 6fd52e297fd..9bcf31108fe 100644 --- a/miscemu/dosmem.c +++ b/miscemu/dosmem.c @@ -154,7 +154,7 @@ void DOSMEM_Tick(void) */ void DOSMEM_FillBiosSegment(void) { - pBiosData = (BIOSDATA *)GlobalLock( DOSMEM_BiosSeg ); + pBiosData = (BIOSDATA *)GlobalLock16( DOSMEM_BiosSeg ); /* Clear all unused values */ memset( pBiosData, 0, sizeof(*pBiosData) ); diff --git a/miscemu/dpmi.c b/miscemu/dpmi.c index 2f9319d1bce..291af759e6b 100644 --- a/miscemu/dpmi.c +++ b/miscemu/dpmi.c @@ -178,7 +178,7 @@ void INT_Int31Handler( struct sigcontext_struct context ) case 0x0205: /* Set protected mode interrupt vector */ INT_SetHandler( BL_reg(&context), - (SEGPTR)MAKELONG( DX_reg(&context), CX_reg(&context) )); + PTR_SEG_OFF_TO_SEGPTR(CX_reg(&context),DX_reg(&context))); break; case 0x0300: /* Simulate real mode interrupt diff --git a/miscemu/int21.c b/miscemu/int21.c index 53e0769f1c9..7d00ee2b271 100644 --- a/miscemu/int21.c +++ b/miscemu/int21.c @@ -85,7 +85,7 @@ extern char TempDirectory[]; BYTE *GetCurrentDTA(void) { - TDB *pTask = (TDB *)GlobalLock( GetCurrentTask() ); + TDB *pTask = (TDB *)GlobalLock16( GetCurrentTask() ); return (BYTE *)PTR_SEG_TO_LIN( pTask->dta ); } @@ -1009,8 +1009,8 @@ void DOS3Call( struct sigcontext_struct context ) case 0x1a: /* SET DISK TRANSFER AREA ADDRESS */ { - TDB *pTask = (TDB *)GlobalLock( GetCurrentTask() ); - pTask->dta = MAKELONG( DX_reg(&context), DS_reg(&context) ); + TDB *pTask = (TDB *)GlobalLock16( GetCurrentTask() ); + pTask->dta = PTR_SEG_OFF_TO_SEGPTR(DS_reg(&context),DX_reg(&context)); dprintf_int(stddeb, "int21: Set DTA: %08lx\n", pTask->dta); } break; @@ -1030,7 +1030,7 @@ void DOS3Call( struct sigcontext_struct context ) case 0x25: /* SET INTERRUPT VECTOR */ INT_SetHandler( AL_reg(&context), - MAKELONG( DX_reg(&context), DS_reg(&context) ) ); + PTR_SEG_OFF_TO_SEGPTR( DS_reg(&context), DX_reg(&context))); break; case 0x2a: /* GET SYSTEM DATE */ @@ -1056,7 +1056,7 @@ void DOS3Call( struct sigcontext_struct context ) case 0x2f: /* GET DISK TRANSFER AREA ADDRESS */ { - TDB *pTask = (TDB *)GlobalLock( GetCurrentTask() ); + TDB *pTask = (TDB *)GlobalLock16( GetCurrentTask() ); ES_reg(&context) = SELECTOROF( pTask->dta ); BX_reg(&context) = OFFSETOF( pTask->dta ); } @@ -1175,8 +1175,8 @@ void DOS3Call( struct sigcontext_struct context ) case 0x3f: /* "READ" - READ FROM FILE OR DEVICE */ { LONG result = _hread( BX_reg(&context), - (SEGPTR)MAKELONG( DX_reg(&context), - DS_reg(&context) ), + PTR_SEG_OFF_TO_SEGPTR( DS_reg(&context), + DX_reg(&context) ), CX_reg(&context) ); if (result == -1) { @@ -1608,15 +1608,15 @@ void DOS3Call( struct sigcontext_struct context ) BOOL INT21_Init(void) { - if ((DosHeapHandle = GlobalAlloc(GMEM_FIXED,sizeof(struct DosHeap))) == 0) + if (!(DosHeapHandle = GlobalAlloc16(GMEM_FIXED,sizeof(struct DosHeap)))) { fprintf( stderr, "INT21_Init: Out of memory\n"); return FALSE; } - heap = (struct DosHeap *) GlobalLock(DosHeapHandle); + heap = (struct DosHeap *) GlobalLock16(DosHeapHandle); dpb = &heap->dpb; - dpbsegptr = MAKELONG( (int)&heap->dpb - (int)heap, DosHeapHandle ); + dpbsegptr = PTR_SEG_OFF_TO_SEGPTR(DosHeapHandle,(int)&heap->dpb-(int)heap); heap->InDosFlag = 0; strcpy(heap->biosdate, "01/01/80"); return TRUE; diff --git a/multimedia/audio.c b/multimedia/audio.c index ce8da4c32c2..b97ca585e75 100644 --- a/multimedia/audio.c +++ b/multimedia/audio.c @@ -289,8 +289,8 @@ static DWORD WAVE_mciPlay(UINT wDevID, DWORD dwFlags, LPMCI_PLAY_PARMS lpParms) #endif bufsize = 64000; lpWaveHdr = &MCIWavDev[wDevID].WaveHdr; - hData = GlobalAlloc(GMEM_MOVEABLE, bufsize); - lpWaveHdr->lpData = (LPSTR) WIN16_GlobalLock(hData); + hData = GlobalAlloc16(GMEM_MOVEABLE, bufsize); + lpWaveHdr->lpData = (LPSTR) WIN16_GlobalLock16(hData); lpWaveHdr->dwUser = 0L; lpWaveHdr->dwFlags = 0L; lpWaveHdr->dwLoops = 0L; @@ -312,8 +312,8 @@ static DWORD WAVE_mciPlay(UINT wDevID, DWORD dwFlags, LPMCI_PLAY_PARMS lpParms) } dwRet = wodMessage(0, WODM_UNPREPARE, 0, (DWORD)lp16WaveHdr, sizeof(WAVEHDR)); if (lpWaveHdr->lpData != NULL) { - GlobalUnlock(hData); - GlobalFree(hData); + GlobalUnlock16(hData); + GlobalFree16(hData); lpWaveHdr->lpData = NULL; } USER_HEAP_FREE(hWaveHdr); @@ -358,8 +358,8 @@ static DWORD WAVE_mciRecord(UINT wDevID, DWORD dwFlags, LPMCI_RECORD_PARMS lpPar } bufsize = 64000; lpWaveHdr = &MCIWavDev[wDevID].WaveHdr; - hData = GlobalAlloc(GMEM_MOVEABLE, bufsize); - lpWaveHdr->lpData = (LPSTR) WIN16_GlobalLock(hData); + hData = GlobalAlloc16(GMEM_MOVEABLE, bufsize); + lpWaveHdr->lpData = (LPSTR) WIN16_GlobalLock16(hData); lpWaveHdr->dwBufferLength = bufsize; lpWaveHdr->dwUser = 0L; lpWaveHdr->dwFlags = 0L; @@ -382,8 +382,8 @@ static DWORD WAVE_mciRecord(UINT wDevID, DWORD dwFlags, LPMCI_RECORD_PARMS lpPar dwRet = widMessage(0, WIDM_UNPREPARE, 0, (DWORD)lp16WaveHdr, sizeof(WAVEHDR)); dprintf_mciwave(stddeb,"WAVE_mciRecord // after WIDM_UNPREPARE \n"); if (lpWaveHdr->lpData != NULL) { - GlobalUnlock(hData); - GlobalFree(hData); + GlobalUnlock16(hData); + GlobalFree16(hData); lpWaveHdr->lpData = NULL; } USER_HEAP_FREE(hWaveHdr); diff --git a/multimedia/mcistring.c b/multimedia/mcistring.c index de0fb0efd07..4630c7dff4b 100644 --- a/multimedia/mcistring.c +++ b/multimedia/mcistring.c @@ -2161,7 +2161,7 @@ DWORD mciSendString (LPCSTR lpstrCommand, LPSTR lpstrReturnString, if (!STRCMP(MCISTR_cmdtable[i].cmd,cmd)) { res=MCISTR_cmdtable[i].fun( wDevID,uDevTyp,lpstrReturnString, - uReturnLength,dev,keywords,nrofkeywords, + uReturnLength,dev,(LPSTR*)keywords,nrofkeywords, dwFlags ); break; diff --git a/multimedia/midi.c b/multimedia/midi.c index c571c9c4ea4..84a5210f993 100644 --- a/multimedia/midi.c +++ b/multimedia/midi.c @@ -107,7 +107,7 @@ static DWORD MIDI_NotifyClient(UINT wDevID, WORD wMsg, /************************************************************************** * MIDI_ReadByte [internal] */ -static DWORD MIDI_ReadByte(UINT wDevID, BYTE FAR *lpbyt) +static DWORD MIDI_ReadByte(UINT wDevID, BYTE *lpbyt) { #ifdef linux if (lpbyt != NULL) { diff --git a/multimedia/mmsystem.c b/multimedia/mmsystem.c index a7fc32d580d..a449909f1c8 100644 --- a/multimedia/mmsystem.c +++ b/multimedia/mmsystem.c @@ -145,8 +145,8 @@ ErrSND: if (hmmio != 0) mmioClose(hmmio, 0); lpWaveHdr = (LPWAVEHDR) USER_HEAP_LIN_ADDR(hWaveHdr); lp16WaveHdr = (LPWAVEHDR) USER_HEAP_SEG_ADDR(hWaveHdr); bufsize = 64000; - hData = GlobalAlloc(GMEM_MOVEABLE, bufsize); - lpWaveHdr->lpData = (LPSTR) WIN16_GlobalLock(hData); + hData = GlobalAlloc16(GMEM_MOVEABLE, bufsize); + lpWaveHdr->lpData = (LPSTR) WIN16_GlobalLock16(hData); lpWaveHdr->dwBufferLength = bufsize; lpWaveHdr->dwUser = 0L; lpWaveHdr->dwFlags = 0L; @@ -154,8 +154,8 @@ ErrSND: if (hmmio != 0) mmioClose(hmmio, 0); dwRet = wodMessage(0, WODM_PREPARE, 0, (DWORD)lp16WaveHdr, sizeof(WAVEHDR)); if (dwRet != MMSYSERR_NOERROR) { dprintf_mmsys(stddeb, "sndPlaySound // can't prepare WaveOut device !\n"); - GlobalUnlock(hData); - GlobalFree(hData); + GlobalUnlock16(hData); + GlobalFree16(hData); USER_HEAP_FREE(hDesc); USER_HEAP_FREE(hWaveHdr); goto ErrSND; @@ -169,8 +169,8 @@ ErrSND: if (hmmio != 0) mmioClose(hmmio, 0); } wodMessage(0, WODM_UNPREPARE, 0, (DWORD)lp16WaveHdr, sizeof(WAVEHDR)); wodMessage(0, WODM_CLOSE, 0, 0L, 0L); - GlobalUnlock(hData); - GlobalFree(hData); + GlobalUnlock16(hData); + GlobalFree16(hData); USER_HEAP_FREE(hDesc); USER_HEAP_FREE(hWaveHdr); if (hmmio != 0) mmioClose(hmmio, 0); @@ -243,7 +243,7 @@ UINT auxGetNumDevs() /************************************************************************** * auxGetDevCaps [MMSYSTEM.351] */ -UINT auxGetDevCaps(UINT uDeviceID, AUXCAPS FAR* lpCaps, UINT uSize) +UINT auxGetDevCaps(UINT uDeviceID, AUXCAPS * lpCaps, UINT uSize) { dprintf_mmsys(stddeb, "auxGetDevCaps(%04X, %p, %d) !\n", uDeviceID, lpCaps, uSize); @@ -254,7 +254,7 @@ UINT auxGetDevCaps(UINT uDeviceID, AUXCAPS FAR* lpCaps, UINT uSize) /************************************************************************** * auxGetVolume [MMSYSTEM.352] */ -UINT auxGetVolume(UINT uDeviceID, DWORD FAR* lpdwVolume) +UINT auxGetVolume(UINT uDeviceID, DWORD * lpdwVolume) { dprintf_mmsys(stddeb, "auxGetVolume(%04X, %p) !\n", uDeviceID, lpdwVolume); return auxMessage(uDeviceID, AUXDM_GETVOLUME, 0L, (DWORD)lpdwVolume, 0L); @@ -811,7 +811,7 @@ UINT mciGetDeviceIDFromElementID(DWORD dwElementID, LPCSTR lpstrType) /************************************************************************** * mciGetYieldProc [MMSYSTEM.716] */ -YIELDPROC mciGetYieldProc(UINT uDeviceID, DWORD FAR* lpdwYieldData) +YIELDPROC mciGetYieldProc(UINT uDeviceID, DWORD * lpdwYieldData) { return NULL; } @@ -839,7 +839,7 @@ UINT midiOutGetNumDevs(void) /************************************************************************** * midiOutGetDevCaps [MMSYSTEM.202] */ -UINT midiOutGetDevCaps(UINT uDeviceID, MIDIOUTCAPS FAR* lpCaps, UINT uSize) +UINT midiOutGetDevCaps(UINT uDeviceID, MIDIOUTCAPS * lpCaps, UINT uSize) { dprintf_mmsys(stddeb, "midiOutGetDevCaps\n"); return 0; @@ -903,7 +903,7 @@ msg# 343 : There are no MIDI devices installed on the system. Use the Drivers op /************************************************************************** * midiOutOpen [MMSYSTEM.204] */ -UINT midiOutOpen(HMIDIOUT FAR* lphMidiOut, UINT uDeviceID, +UINT midiOutOpen(HMIDIOUT * lphMidiOut, UINT uDeviceID, DWORD dwCallback, DWORD dwInstance, DWORD dwFlags) { HMIDI hMidiOut; @@ -954,7 +954,7 @@ UINT midiOutClose(HMIDIOUT hMidiOut) * midiOutPrepareHeader [MMSYSTEM.206] */ UINT midiOutPrepareHeader(HMIDIOUT hMidiOut, - MIDIHDR FAR* lpMidiOutHdr, UINT uSize) + MIDIHDR * lpMidiOutHdr, UINT uSize) { LPMIDIOPENDESC lpDesc; dprintf_mmsys(stddeb, "midiOutPrepareHeader(%04X, %p, %d)\n", @@ -969,7 +969,7 @@ UINT midiOutPrepareHeader(HMIDIOUT hMidiOut, * midiOutUnprepareHeader [MMSYSTEM.207] */ UINT midiOutUnprepareHeader(HMIDIOUT hMidiOut, - MIDIHDR FAR* lpMidiOutHdr, UINT uSize) + MIDIHDR * lpMidiOutHdr, UINT uSize) { LPMIDIOPENDESC lpDesc; dprintf_mmsys(stddeb, "midiOutUnprepareHeader(%04X, %p, %d)\n", @@ -996,7 +996,7 @@ UINT midiOutShortMsg(HMIDIOUT hMidiOut, DWORD dwMsg) * midiOutLongMsg [MMSYSTEM.209] */ UINT midiOutLongMsg(HMIDIOUT hMidiOut, - MIDIHDR FAR* lpMidiOutHdr, UINT uSize) + MIDIHDR * lpMidiOutHdr, UINT uSize) { LPMIDIOPENDESC lpDesc; dprintf_mmsys(stddeb, "midiOutLongMsg(%04X, %p, %d)\n", @@ -1022,7 +1022,7 @@ UINT midiOutReset(HMIDIOUT hMidiOut) /************************************************************************** * midiOutGetVolume [MMSYSTEM.211] */ -UINT midiOutGetVolume(UINT uDeviceID, DWORD FAR* lpdwVolume) +UINT midiOutGetVolume(UINT uDeviceID, DWORD * lpdwVolume) { dprintf_mmsys(stddeb, "midiOutGetVolume(%04X, %p);\n", uDeviceID, lpdwVolume); return modMessage(uDeviceID, MODM_GETVOLUME, 0L, (DWORD)lpdwVolume, 0L); @@ -1043,7 +1043,7 @@ UINT midiOutSetVolume(UINT uDeviceID, DWORD dwVolume) * midiOutCachePatches [MMSYSTEM.213] */ UINT midiOutCachePatches(HMIDIOUT hMidiOut, - UINT uBank, WORD FAR* lpwPatchArray, UINT uFlags) + UINT uBank, WORD * lpwPatchArray, UINT uFlags) { /* not really necessary to support this */ fprintf(stdnimp, "midiOutCachePatches: not supported yet\n"); @@ -1054,7 +1054,7 @@ UINT midiOutCachePatches(HMIDIOUT hMidiOut, * midiOutCacheDrumPatches [MMSYSTEM.214] */ UINT midiOutCacheDrumPatches(HMIDIOUT hMidiOut, - UINT uPatch, WORD FAR* lpwKeyArray, UINT uFlags) + UINT uPatch, WORD * lpwKeyArray, UINT uFlags) { fprintf(stdnimp, "midiOutCacheDrumPatchesi: not supported yet\n"); return MMSYSERR_NOTSUPPORTED; @@ -1063,7 +1063,7 @@ UINT midiOutCacheDrumPatches(HMIDIOUT hMidiOut, /************************************************************************** * midiOutGetID [MMSYSTEM.215] */ -UINT midiOutGetID(HMIDIOUT hMidiOut, UINT FAR* lpuDeviceID) +UINT midiOutGetID(HMIDIOUT hMidiOut, UINT * lpuDeviceID) { dprintf_mmsys(stddeb, "midiOutGetID\n"); return 0; @@ -1118,7 +1118,7 @@ UINT midiInGetErrorText(UINT uError, LPSTR lpText, UINT uSize) /************************************************************************** * midiInOpen [MMSYSTEM.304] */ -UINT midiInOpen(HMIDIIN FAR* lphMidiIn, UINT uDeviceID, +UINT midiInOpen(HMIDIIN * lphMidiIn, UINT uDeviceID, DWORD dwCallback, DWORD dwInstance, DWORD dwFlags) { HMIDI hMidiIn; @@ -1169,7 +1169,7 @@ UINT midiInClose(HMIDIIN hMidiIn) * midiInPrepareHeader [MMSYSTEM.306] */ UINT midiInPrepareHeader(HMIDIIN hMidiIn, - MIDIHDR FAR* lpMidiInHdr, UINT uSize) + MIDIHDR * lpMidiInHdr, UINT uSize) { LPMIDIOPENDESC lpDesc; dprintf_mmsys(stddeb, "midiInPrepareHeader(%04X, %p, %d)\n", @@ -1184,7 +1184,7 @@ UINT midiInPrepareHeader(HMIDIIN hMidiIn, * midiInUnprepareHeader [MMSYSTEM.307] */ UINT midiInUnprepareHeader(HMIDIIN hMidiIn, - MIDIHDR FAR* lpMidiInHdr, UINT uSize) + MIDIHDR * lpMidiInHdr, UINT uSize) { LPMIDIOPENDESC lpDesc; dprintf_mmsys(stddeb, "midiInUnprepareHeader(%04X, %p, %d)\n", @@ -1199,7 +1199,7 @@ UINT midiInUnprepareHeader(HMIDIIN hMidiIn, * midiInAddBuffer [MMSYSTEM.308] */ UINT midiInAddBuffer(HMIDIIN hMidiIn, - MIDIHDR FAR* lpMidiInHdr, UINT uSize) + MIDIHDR * lpMidiInHdr, UINT uSize) { dprintf_mmsys(stddeb, "midiInAddBuffer\n"); return 0; @@ -1235,7 +1235,7 @@ UINT midiInReset(HMIDIIN hMidiIn) /************************************************************************** * midiInGetID [MMSYSTEM.312] */ -UINT midiInGetID(HMIDIIN hMidiIn, UINT FAR* lpuDeviceID) +UINT midiInGetID(HMIDIIN hMidiIn, UINT * lpuDeviceID) { dprintf_mmsys(stddeb, "midiInGetID\n"); return 0; @@ -1271,7 +1271,7 @@ UINT waveOutGetNumDevs() /************************************************************************** * waveOutGetDevCaps [MMSYSTEM.402] */ -UINT waveOutGetDevCaps(UINT uDeviceID, WAVEOUTCAPS FAR* lpCaps, UINT uSize) +UINT waveOutGetDevCaps(UINT uDeviceID, WAVEOUTCAPS * lpCaps, UINT uSize) { dprintf_mmsys(stddeb, "waveOutGetDevCaps\n"); return wodMessage(uDeviceID, WODM_GETDEVCAPS, 0L, (DWORD)lpCaps, uSize); @@ -1356,7 +1356,7 @@ UINT waveGetErrorText(UINT uError, LPSTR lpText, UINT uSize) /************************************************************************** * waveOutOpen [MMSYSTEM.404] */ -UINT waveOutOpen(HWAVEOUT FAR* lphWaveOut, UINT uDeviceID, +UINT waveOutOpen(HWAVEOUT * lphWaveOut, UINT uDeviceID, const LPWAVEFORMAT lpFormat, DWORD dwCallback, DWORD dwInstance, DWORD dwFlags) { HWAVE hWaveOut; @@ -1415,7 +1415,7 @@ UINT waveOutClose(HWAVEOUT hWaveOut) * waveOutPrepareHeader [MMSYSTEM.406] */ UINT waveOutPrepareHeader(HWAVEOUT hWaveOut, - WAVEHDR FAR* lpWaveOutHdr, UINT uSize) + WAVEHDR * lpWaveOutHdr, UINT uSize) { LPWAVEOPENDESC lpDesc; dprintf_mmsys(stddeb, "waveOutPrepareHeader(%04X, %p, %u);\n", @@ -1430,7 +1430,7 @@ UINT waveOutPrepareHeader(HWAVEOUT hWaveOut, * waveOutUnprepareHeader [MMSYSTEM.407] */ UINT waveOutUnprepareHeader(HWAVEOUT hWaveOut, - WAVEHDR FAR* lpWaveOutHdr, UINT uSize) + WAVEHDR * lpWaveOutHdr, UINT uSize) { LPWAVEOPENDESC lpDesc; dprintf_mmsys(stddeb, "waveOutUnprepareHeader(%04X, %p, %u);\n", @@ -1444,7 +1444,7 @@ UINT waveOutUnprepareHeader(HWAVEOUT hWaveOut, /************************************************************************** * waveOutWrite [MMSYSTEM.408] */ -UINT waveOutWrite(HWAVEOUT hWaveOut, WAVEHDR FAR* lpWaveOutHdr, UINT uSize) +UINT waveOutWrite(HWAVEOUT hWaveOut, WAVEHDR * lpWaveOutHdr, UINT uSize) { LPWAVEOPENDESC lpDesc; dprintf_mmsys(stddeb, "waveOutWrite(%04X, %p, %u);\n", hWaveOut, lpWaveOutHdr, uSize); @@ -1493,7 +1493,7 @@ UINT waveOutReset(HWAVEOUT hWaveOut) /************************************************************************** * waveOutGetPosition [MMSYSTEM.412] */ -UINT waveOutGetPosition(HWAVEOUT hWaveOut, MMTIME FAR* lpTime, UINT uSize) +UINT waveOutGetPosition(HWAVEOUT hWaveOut, MMTIME * lpTime, UINT uSize) { LPWAVEOPENDESC lpDesc; dprintf_mmsys(stddeb, "waveOutGetPosition(%04X, %p, %u);\n", hWaveOut, lpTime, uSize); @@ -1506,7 +1506,7 @@ UINT waveOutGetPosition(HWAVEOUT hWaveOut, MMTIME FAR* lpTime, UINT uSize) /************************************************************************** * waveOutGetPitch [MMSYSTEM.413] */ -UINT waveOutGetPitch(HWAVEOUT hWaveOut, DWORD FAR* lpdwPitch) +UINT waveOutGetPitch(HWAVEOUT hWaveOut, DWORD * lpdwPitch) { LPWAVEOPENDESC lpDesc; dprintf_mmsys(stddeb, "waveOutGetPitch(%04X, %p);\n", hWaveOut, lpdwPitch); @@ -1531,7 +1531,7 @@ UINT waveOutSetPitch(HWAVEOUT hWaveOut, DWORD dwPitch) /************************************************************************** * waveOutGetVolume [MMSYSTEM.415] */ -UINT waveOutGetVolume(UINT uDeviceID, DWORD FAR* lpdwVolume) +UINT waveOutGetVolume(UINT uDeviceID, DWORD * lpdwVolume) { dprintf_mmsys(stddeb, "waveOutGetVolume(%04X, %p);\n", uDeviceID, lpdwVolume); return wodMessage(uDeviceID, WODM_GETVOLUME, 0L, (DWORD)lpdwVolume, 0L); @@ -1549,7 +1549,7 @@ UINT waveOutSetVolume(UINT uDeviceID, DWORD dwVolume) /************************************************************************** * waveOutGetPlaybackRate [MMSYSTEM.417] */ -UINT waveOutGetPlaybackRate(HWAVEOUT hWaveOut, DWORD FAR* lpdwRate) +UINT waveOutGetPlaybackRate(HWAVEOUT hWaveOut, DWORD * lpdwRate) { LPWAVEOPENDESC lpDesc; dprintf_mmsys(stddeb, "waveOutGetPlaybackRate(%04X, %p);\n", hWaveOut, lpdwRate); @@ -1584,7 +1584,7 @@ UINT waveOutBreakLoop(HWAVEOUT hWaveOut) /************************************************************************** * waveOutGetID [MMSYSTEM.420] */ -UINT waveOutGetID(HWAVEOUT hWaveOut, UINT FAR* lpuDeviceID) +UINT waveOutGetID(HWAVEOUT hWaveOut, UINT * lpuDeviceID) { LPWAVEOPENDESC lpDesc; dprintf_mmsys(stddeb, "waveOutGetID(%04X, %p);\n", hWaveOut, lpuDeviceID); @@ -1627,7 +1627,7 @@ UINT waveInGetNumDevs() /************************************************************************** * waveInGetDevCaps [MMSYSTEM.502] */ -UINT waveInGetDevCaps(UINT uDeviceID, WAVEINCAPS FAR* lpCaps, UINT uSize) +UINT waveInGetDevCaps(UINT uDeviceID, WAVEINCAPS * lpCaps, UINT uSize) { dprintf_mmsys(stddeb, "waveInGetDevCaps\n"); return widMessage(uDeviceID, WIDM_GETDEVCAPS, 0L, (DWORD)lpCaps, uSize); @@ -1647,7 +1647,7 @@ UINT waveInGetErrorText(UINT uError, LPSTR lpText, UINT uSize) /************************************************************************** * waveInOpen [MMSYSTEM.504] */ -UINT waveInOpen(HWAVEIN FAR* lphWaveIn, UINT uDeviceID, +UINT waveInOpen(HWAVEIN * lphWaveIn, UINT uDeviceID, const LPWAVEFORMAT lpFormat, DWORD dwCallback, DWORD dwInstance, DWORD dwFlags) { HWAVE hWaveIn; @@ -1708,7 +1708,7 @@ UINT waveInClose(HWAVEIN hWaveIn) * waveInPrepareHeader [MMSYSTEM.506] */ UINT waveInPrepareHeader(HWAVEIN hWaveIn, - WAVEHDR FAR* lpWaveInHdr, UINT uSize) + WAVEHDR * lpWaveInHdr, UINT uSize) { LPWAVEOPENDESC lpDesc; LPWAVEHDR lp32WaveInHdr; @@ -1731,7 +1731,7 @@ UINT waveInPrepareHeader(HWAVEIN hWaveIn, * waveInUnprepareHeader [MMSYSTEM.507] */ UINT waveInUnprepareHeader(HWAVEIN hWaveIn, - WAVEHDR FAR* lpWaveInHdr, UINT uSize) + WAVEHDR * lpWaveInHdr, UINT uSize) { LPWAVEOPENDESC lpDesc; LPWAVEHDR lp32WaveInHdr; @@ -1753,7 +1753,7 @@ UINT waveInUnprepareHeader(HWAVEIN hWaveIn, * waveInAddBuffer [MMSYSTEM.508] */ UINT waveInAddBuffer(HWAVEIN hWaveIn, - WAVEHDR FAR* lpWaveInHdr, UINT uSize) + WAVEHDR * lpWaveInHdr, UINT uSize) { LPWAVEOPENDESC lpDesc; LPWAVEHDR lp32WaveInHdr; @@ -1813,7 +1813,7 @@ UINT waveInReset(HWAVEIN hWaveIn) /************************************************************************** * waveInGetPosition [MMSYSTEM.512] */ -UINT waveInGetPosition(HWAVEIN hWaveIn, MMTIME FAR* lpTime, UINT uSize) +UINT waveInGetPosition(HWAVEIN hWaveIn, MMTIME * lpTime, UINT uSize) { LPWAVEOPENDESC lpDesc; dprintf_mmsys(stddeb, "waveInGetPosition(%04X, %p, %u);\n", hWaveIn, lpTime, uSize); @@ -1827,7 +1827,7 @@ UINT waveInGetPosition(HWAVEIN hWaveIn, MMTIME FAR* lpTime, UINT uSize) /************************************************************************** * waveInGetID [MMSYSTEM.513] */ -UINT waveInGetID(HWAVEIN hWaveIn, UINT FAR* lpuDeviceID) +UINT waveInGetID(HWAVEIN hWaveIn, UINT * lpuDeviceID) { dprintf_mmsys(stddeb, "waveInGetID\n"); if (lpuDeviceID == NULL) return MMSYSERR_INVALPARAM; @@ -1853,7 +1853,7 @@ DWORD waveInMessage(HWAVEIN hWaveIn, UINT uMessage, /************************************************************************** * mmioOpen [MMSYSTEM.1210] */ -HMMIO mmioOpen(LPSTR szFileName, MMIOINFO FAR* lpmmioinfo, DWORD dwOpenFlags) +HMMIO mmioOpen(LPSTR szFileName, MMIOINFO * lpmmioinfo, DWORD dwOpenFlags) { int hFile; HANDLE hmmio; @@ -1862,13 +1862,13 @@ HMMIO mmioOpen(LPSTR szFileName, MMIOINFO FAR* lpmmioinfo, DWORD dwOpenFlags) dprintf_mmsys(stddeb, "mmioOpen('%s', %p, %08lX);\n", szFileName, lpmmioinfo, dwOpenFlags); hFile = OpenFile(szFileName, &ofs, dwOpenFlags); if (hFile == -1) return 0; - hmmio = GlobalAlloc(GMEM_MOVEABLE, sizeof(MMIOINFO)); - lpmminfo = (LPMMIOINFO)GlobalLock(hmmio); + hmmio = GlobalAlloc16(GMEM_MOVEABLE, sizeof(MMIOINFO)); + lpmminfo = (LPMMIOINFO)GlobalLock16(hmmio); if (lpmminfo == NULL) return 0; memset(lpmminfo, 0, sizeof(MMIOINFO)); lpmminfo->hmmio = hmmio; lpmminfo->dwReserved2 = MAKELONG(hFile, 0); - GlobalUnlock(hmmio); + GlobalUnlock16(hmmio); dprintf_mmsys(stddeb, "mmioOpen // return hmmio=%04X\n", hmmio); return hmmio; } @@ -1881,11 +1881,11 @@ UINT mmioClose(HMMIO hmmio, UINT uFlags) { LPMMIOINFO lpmminfo; dprintf_mmsys(stddeb, "mmioClose(%04X, %04X);\n", hmmio, uFlags); - lpmminfo = (LPMMIOINFO)GlobalLock(hmmio); + lpmminfo = (LPMMIOINFO)GlobalLock16(hmmio); if (lpmminfo == NULL) return 0; _lclose(LOWORD(lpmminfo->dwReserved2)); - GlobalUnlock(hmmio); - GlobalFree(hmmio); + GlobalUnlock16(hmmio); + GlobalFree16(hmmio); return 0; } @@ -1899,10 +1899,10 @@ LONG mmioRead(HMMIO hmmio, HPSTR pch, LONG cch) LONG count; LPMMIOINFO lpmminfo; dprintf_mmio(stddeb, "mmioRead(%04X, %p, %ld);\n", hmmio, pch, cch); - lpmminfo = (LPMMIOINFO)GlobalLock(hmmio); + lpmminfo = (LPMMIOINFO)GlobalLock16(hmmio); if (lpmminfo == NULL) return 0; count = FILE_Read(LOWORD(lpmminfo->dwReserved2), pch, cch); - GlobalUnlock(hmmio); + GlobalUnlock16(hmmio); dprintf_mmio(stddeb, "mmioRead // count=%ld\n", count); return count; } @@ -1917,10 +1917,10 @@ LONG mmioWrite(HMMIO hmmio, HPCSTR pch, LONG cch) LONG count; LPMMIOINFO lpmminfo; dprintf_mmsys(stddeb, "mmioWrite(%04X, %p, %ld);\n", hmmio, pch, cch); - lpmminfo = (LPMMIOINFO)GlobalLock(hmmio); + lpmminfo = (LPMMIOINFO)GlobalLock16(hmmio); if (lpmminfo == NULL) return 0; count = _lwrite(LOWORD(lpmminfo->dwReserved2), (LPSTR)pch, cch); - GlobalUnlock(hmmio); + GlobalUnlock16(hmmio); return count; } @@ -1932,40 +1932,40 @@ LONG mmioSeek(HMMIO hmmio, LONG lOffset, int iOrigin) int count; LPMMIOINFO lpmminfo; dprintf_mmsys(stddeb, "mmioSeek(%04X, %08lX, %d);\n", hmmio, lOffset, iOrigin); - lpmminfo = (LPMMIOINFO)GlobalLock(hmmio); + lpmminfo = (LPMMIOINFO)GlobalLock16(hmmio); if (lpmminfo == NULL) { dprintf_mmsys(stddeb, "mmioSeek // can't lock hmmio=%04X !\n", hmmio); return 0; } count = _llseek(LOWORD(lpmminfo->dwReserved2), lOffset, iOrigin); - GlobalUnlock(hmmio); + GlobalUnlock16(hmmio); return count; } /************************************************************************** * mmioGetInfo [MMSYSTEM.1215] */ -UINT mmioGetInfo(HMMIO hmmio, MMIOINFO FAR* lpmmioinfo, UINT uFlags) +UINT mmioGetInfo(HMMIO hmmio, MMIOINFO * lpmmioinfo, UINT uFlags) { LPMMIOINFO lpmminfo; dprintf_mmsys(stddeb, "mmioGetInfo\n"); - lpmminfo = (LPMMIOINFO)GlobalLock(hmmio); + lpmminfo = (LPMMIOINFO)GlobalLock16(hmmio); if (lpmminfo == NULL) return 0; memcpy(lpmmioinfo, lpmminfo, sizeof(MMIOINFO)); - GlobalUnlock(hmmio); + GlobalUnlock16(hmmio); return 0; } /************************************************************************** * mmioSetInfo [MMSYSTEM.1216] */ -UINT mmioSetInfo(HMMIO hmmio, const MMIOINFO FAR* lpmmioinfo, UINT uFlags) +UINT mmioSetInfo(HMMIO hmmio, const MMIOINFO * lpmmioinfo, UINT uFlags) { LPMMIOINFO lpmminfo; dprintf_mmsys(stddeb, "mmioSetInfo\n"); - lpmminfo = (LPMMIOINFO)GlobalLock(hmmio); + lpmminfo = (LPMMIOINFO)GlobalLock16(hmmio); if (lpmminfo == NULL) return 0; - GlobalUnlock(hmmio); + GlobalUnlock16(hmmio); return 0; } @@ -1986,21 +1986,21 @@ UINT mmioFlush(HMMIO hmmio, UINT uFlags) { LPMMIOINFO lpmminfo; dprintf_mmsys(stddeb, "mmioFlush(%04X, %04X)\n", hmmio, uFlags); - lpmminfo = (LPMMIOINFO)GlobalLock(hmmio); + lpmminfo = (LPMMIOINFO)GlobalLock16(hmmio); if (lpmminfo == NULL) return 0; - GlobalUnlock(hmmio); + GlobalUnlock16(hmmio); return 0; } /************************************************************************** * mmioAdvance [MMSYSTEM.1219] */ -UINT mmioAdvance(HMMIO hmmio, MMIOINFO FAR* lpmmioinfo, UINT uFlags) +UINT mmioAdvance(HMMIO hmmio, MMIOINFO * lpmmioinfo, UINT uFlags) { int count = 0; LPMMIOINFO lpmminfo; dprintf_mmsys(stddeb, "mmioAdvance\n"); - lpmminfo = (LPMMIOINFO)GlobalLock(hmmio); + lpmminfo = (LPMMIOINFO)GlobalLock16(hmmio); if (lpmminfo == NULL) return 0; if (uFlags == MMIO_READ) { count = FILE_Read(LOWORD(lpmminfo->dwReserved2), @@ -2011,7 +2011,7 @@ UINT mmioAdvance(HMMIO hmmio, MMIOINFO FAR* lpmmioinfo, UINT uFlags) lpmmioinfo->pchBuffer, lpmmioinfo->cchBuffer); } lpmmioinfo->pchNext += count; - GlobalUnlock(hmmio); + GlobalUnlock16(hmmio); lpmminfo->lDiskOffset = _llseek(LOWORD(lpmminfo->dwReserved2), 0, SEEK_CUR); return 0; } @@ -2048,15 +2048,15 @@ LRESULT mmioSendMessage(HMMIO hmmio, UINT uMessage, /************************************************************************** * mmioDescend [MMSYSTEM.1223] */ -UINT mmioDescend(HMMIO hmmio, MMCKINFO FAR* lpck, - const MMCKINFO FAR* lpckParent, UINT uFlags) +UINT mmioDescend(HMMIO hmmio, MMCKINFO * lpck, + const MMCKINFO * lpckParent, UINT uFlags) { DWORD dwfcc, dwOldPos; LPMMIOINFO lpmminfo; dprintf_mmio(stddeb, "mmioDescend(%04X, %p, %p, %04X);\n", hmmio, lpck, lpckParent, uFlags); if (lpck == NULL) return 0; - lpmminfo = (LPMMIOINFO)GlobalLock(hmmio); + lpmminfo = (LPMMIOINFO)GlobalLock16(hmmio); if (lpmminfo == NULL) return 0; dwfcc = lpck->ckid; dprintf_mmio(stddeb, "mmioDescend // dwfcc=%08lX\n", dwfcc); @@ -2074,7 +2074,7 @@ UINT mmioDescend(HMMIO hmmio, MMCKINFO FAR* lpck, if (FILE_Read(LOWORD(lpmminfo->dwReserved2), (LPSTR)lpck, sizeof(MMCKINFO)) < sizeof(MMCKINFO)) { _llseek(LOWORD(lpmminfo->dwReserved2), dwOldPos, SEEK_SET); - GlobalUnlock(hmmio); + GlobalUnlock16(hmmio); return MMIOERR_CHUNKNOTFOUND; } dprintf_mmio(stddeb, "mmioDescend // dwfcc=%08lX ckid=%08lX cksize=%08lX !\n", @@ -2090,7 +2090,7 @@ UINT mmioDescend(HMMIO hmmio, MMCKINFO FAR* lpck, if (FILE_Read(LOWORD(lpmminfo->dwReserved2), (LPSTR)lpck, sizeof(MMCKINFO)) < sizeof(MMCKINFO)) { _llseek(LOWORD(lpmminfo->dwReserved2), dwOldPos, SEEK_SET); - GlobalUnlock(hmmio); + GlobalUnlock16(hmmio); return MMIOERR_CHUNKNOTFOUND; } } @@ -2099,7 +2099,7 @@ UINT mmioDescend(HMMIO hmmio, MMCKINFO FAR* lpck, lpck->dwDataOffset += sizeof(DWORD); lpmminfo->lDiskOffset = _llseek(LOWORD(lpmminfo->dwReserved2), lpck->dwDataOffset, SEEK_SET); - GlobalUnlock(hmmio); + GlobalUnlock16(hmmio); dprintf_mmio(stddeb, "mmioDescend // lpck->ckid=%08lX lpck->cksize=%ld !\n", lpck->ckid, lpck->cksize); dprintf_mmsys(stddeb, "mmioDescend // lpck->fccType=%08lX !\n", lpck->fccType); @@ -2109,7 +2109,7 @@ UINT mmioDescend(HMMIO hmmio, MMCKINFO FAR* lpck, /************************************************************************** * mmioAscend [MMSYSTEM.1224] */ -UINT mmioAscend(HMMIO hmmio, MMCKINFO FAR* lpck, UINT uFlags) +UINT mmioAscend(HMMIO hmmio, MMCKINFO * lpck, UINT uFlags) { dprintf_mmsys(stddeb, "mmioAscend // empty stub !\n"); return 0; @@ -2118,7 +2118,7 @@ UINT mmioAscend(HMMIO hmmio, MMCKINFO FAR* lpck, UINT uFlags) /************************************************************************** * mmioCreateChunk [MMSYSTEM.1225] */ -UINT mmioCreateChunk(HMMIO hmmio, MMCKINFO FAR* lpck, UINT uFlags) +UINT mmioCreateChunk(HMMIO hmmio, MMCKINFO * lpck, UINT uFlags) { dprintf_mmsys(stddeb, "mmioCreateChunk // empty stub \n"); return 0; @@ -2129,7 +2129,7 @@ UINT mmioCreateChunk(HMMIO hmmio, MMCKINFO FAR* lpck, UINT uFlags) * mmioRename [MMSYSTEM.1226] */ UINT mmioRename(LPCSTR szFileName, LPCSTR szNewFileName, - MMIOINFO FAR* lpmmioinfo, DWORD dwRenameFlags) + MMIOINFO * lpmmioinfo, DWORD dwRenameFlags) { dprintf_mmsys(stddeb, "mmioRename('%s', '%s', %p, %08lX); // empty stub \n", szFileName, szNewFileName, lpmmioinfo, dwRenameFlags); diff --git a/objects/brush.c b/objects/brush.c index cd55bd35396..e5ee9b0554b 100644 --- a/objects/brush.c +++ b/objects/brush.c @@ -200,7 +200,7 @@ HBRUSH CreateDIBPatternBrush( HGLOBAL hbitmap, UINT coloruse ) /* Make a copy of the bitmap */ - if (!(info = (BITMAPINFO *) GlobalLock( hbitmap ))) return 0; + if (!(info = (BITMAPINFO *) GlobalLock16( hbitmap ))) return 0; size = info->bmiHeader.biSizeImage; if (!size) @@ -208,15 +208,15 @@ HBRUSH CreateDIBPatternBrush( HGLOBAL hbitmap, UINT coloruse ) * 8 * info->bmiHeader.biHeight; size += DIB_BitmapInfoSize( info, coloruse ); - if (!(logbrush.lbHatch = (INT)GlobalAlloc( GMEM_MOVEABLE, size ))) + if (!(logbrush.lbHatch = (INT)GlobalAlloc16( GMEM_MOVEABLE, size ))) { - GlobalUnlock( hbitmap ); + GlobalUnlock16( hbitmap ); return 0; } - newInfo = (BITMAPINFO *) GlobalLock( (HANDLE)logbrush.lbHatch ); + newInfo = (BITMAPINFO *) GlobalLock16( (HANDLE)logbrush.lbHatch ); memcpy( newInfo, info, size ); - GlobalUnlock( (HANDLE)logbrush.lbHatch ); - GlobalUnlock( hbitmap ); + GlobalUnlock16( (HANDLE)logbrush.lbHatch ); + GlobalUnlock16( hbitmap ); return CreateBrushIndirect( &logbrush ); } @@ -265,7 +265,7 @@ BOOL BRUSH_DeleteObject( HBRUSH hbrush, BRUSHOBJ * brush ) DeleteObject( (HANDLE)brush->logbrush.lbHatch ); break; case BS_DIBPATTERN: - GlobalFree( (HANDLE)brush->logbrush.lbHatch ); + GlobalFree16( (HANDLE)brush->logbrush.lbHatch ); break; } return GDI_FreeObject( hbrush ); @@ -397,7 +397,7 @@ HBRUSH BRUSH_SelectObject( HDC hdc, DC * dc, HBRUSH hbrush, BRUSHOBJ * brush ) case BS_DIBPATTERN: dprintf_gdi( stddeb, "BS_DIBPATTERN\n"); - if ((bmpInfo = (BITMAPINFO *) GlobalLock( (HANDLE)brush->logbrush.lbHatch ))) + if ((bmpInfo = (BITMAPINFO *) GlobalLock16( (HANDLE)brush->logbrush.lbHatch ))) { int size = DIB_BitmapInfoSize( bmpInfo, brush->logbrush.lbColor ); hBitmap = CreateDIBitmap( hdc, &bmpInfo->bmiHeader, CBM_INIT, @@ -405,7 +405,7 @@ HBRUSH BRUSH_SelectObject( HDC hdc, DC * dc, HBRUSH hbrush, BRUSHOBJ * brush ) (WORD) brush->logbrush.lbColor ); BRUSH_SelectPatternBrush( dc, hBitmap ); DeleteObject( hBitmap ); - GlobalUnlock( (HANDLE)brush->logbrush.lbHatch ); + GlobalUnlock16( (HANDLE)brush->logbrush.lbHatch ); } break; diff --git a/objects/cursoricon.c b/objects/cursoricon.c index b645f0e6635..7668967c85a 100644 --- a/objects/cursoricon.c +++ b/objects/cursoricon.c @@ -331,8 +331,8 @@ HANDLE CURSORICON_LoadHandler( HANDLE handle, HINSTANCE hInstance, sizeXor = bmpXor->bitmap.bmHeight * bmpXor->bitmap.bmWidthBytes; sizeAnd = bmpAnd->bitmap.bmHeight * bmpAnd->bitmap.bmWidthBytes; - if (!(handle = GlobalAlloc( GMEM_MOVEABLE, - sizeof(CURSORICONINFO) + sizeXor + sizeAnd))) + if (!(handle = GlobalAlloc16( GMEM_MOVEABLE, + sizeof(CURSORICONINFO) + sizeXor + sizeAnd))) { DeleteObject( hXorBits ); DeleteObject( hAndBits ); @@ -342,7 +342,7 @@ HANDLE CURSORICON_LoadHandler( HANDLE handle, HINSTANCE hInstance, /* Make it owned by the module */ if (hInstance) FarSetOwner( handle, GetExePtr(hInstance) ); - info = (CURSORICONINFO *)GlobalLock( handle ); + info = (CURSORICONINFO *)GlobalLock16( handle ); info->ptHotSpot.x = hotspot.x; info->ptHotSpot.y = hotspot.y; info->nWidth = bmpXor->bitmap.bmWidth; @@ -357,7 +357,7 @@ HANDLE CURSORICON_LoadHandler( HANDLE handle, HINSTANCE hInstance, GetBitmapBits( hXorBits, sizeXor, (char *)(info + 1) + sizeAnd ); DeleteObject( hXorBits ); DeleteObject( hAndBits ); - GlobalUnlock( handle ); + GlobalUnlock16( handle ); return handle; } @@ -413,15 +413,15 @@ static HANDLE CURSORICON_Copy( HANDLE hInstance, HANDLE handle ) int size; HANDLE hNew; - if (!(ptrOld = (char *)GlobalLock( handle ))) return 0; + if (!(ptrOld = (char *)GlobalLock16( handle ))) return 0; if (!(hInstance = GetExePtr( hInstance ))) return 0; - size = GlobalSize( handle ); - hNew = GlobalAlloc( GMEM_MOVEABLE, size ); + size = GlobalSize16( handle ); + hNew = GlobalAlloc16( GMEM_MOVEABLE, size ); FarSetOwner( hNew, hInstance ); - ptrNew = (char *)GlobalLock( hNew ); + ptrNew = (char *)GlobalLock16( hNew ); memcpy( ptrNew, ptrOld, size ); - GlobalUnlock( handle ); - GlobalUnlock( hNew ); + GlobalUnlock16( handle ); + GlobalUnlock16( hNew ); return hNew; } @@ -437,7 +437,7 @@ HCURSOR CURSORICON_IconToCursor(HICON hIcon) CURSORICONINFO *ptr = NULL; if(hIcon) - if (!(ptr = (CURSORICONINFO*)GlobalLock( hIcon ))) return FALSE; + if (!(ptr = (CURSORICONINFO*)GlobalLock16( hIcon ))) return FALSE; if (ptr->bPlanes * ptr->bBitsPerPixel == 1) { return hIcon; /* assuming it's a cursor */ @@ -447,7 +447,7 @@ HCURSOR CURSORICON_IconToCursor(HICON hIcon) /* kludge */ HTASK hTask = GetCurrentTask(); - TDB* pTask = (TDB *)GlobalLock(hTask); + TDB* pTask = (TDB *)GlobalLock16(hTask); if(!pTask) return 0; @@ -542,11 +542,11 @@ HANDLE CreateCursorIconIndirect( HANDLE hInstance, CURSORICONINFO *info, if (!(handle = DirectResAlloc(hInstance, 0x10, sizeof(CURSORICONINFO) + sizeXor + sizeAnd))) return 0; - ptr = (char *)GlobalLock( handle ); + ptr = (char *)GlobalLock16( handle ); memcpy( ptr, info, sizeof(*info) ); memcpy( ptr + sizeof(CURSORICONINFO), lpANDbits, sizeAnd ); memcpy( ptr + sizeof(CURSORICONINFO) + sizeAnd, lpXORbits, sizeXor ); - GlobalUnlock( handle ); + GlobalUnlock16( handle ); return handle; } @@ -594,7 +594,7 @@ BOOL DestroyIcon( HICON hIcon ) { dprintf_icon( stddeb, "DestroyIcon: %04x\n", hIcon ); /* FIXME: should check for OEM icon here */ - return (GlobalFree( hIcon ) != 0); + return (GlobalFree16( hIcon ) != 0); } @@ -605,7 +605,7 @@ BOOL DestroyCursor( HCURSOR hCursor ) { dprintf_cursor( stddeb, "DestroyCursor: %04x\n", hCursor ); /* FIXME: should check for OEM cursor here */ - return (GlobalFree( hCursor ) != 0); + return (GlobalFree16( hCursor ) != 0); } @@ -619,7 +619,7 @@ BOOL DrawIcon( HDC hdc, INT x, INT y, HICON hIcon ) HBITMAP hXorBits, hAndBits; COLORREF oldFg, oldBg; - if (!(ptr = (CURSORICONINFO *)GlobalLock( hIcon ))) return FALSE; + if (!(ptr = (CURSORICONINFO *)GlobalLock16( hIcon ))) return FALSE; if (!(hMemDC = CreateCompatibleDC( hdc ))) return FALSE; hAndBits = CreateBitmap( ptr->nWidth, ptr->nHeight, 1, 1, (char *)(ptr+1)); hXorBits = CreateBitmap( ptr->nWidth, ptr->nHeight, ptr->bPlanes, @@ -639,7 +639,7 @@ BOOL DrawIcon( HDC hdc, INT x, INT y, HICON hIcon ) DeleteDC( hMemDC ); if (hXorBits) DeleteObject( hXorBits ); if (hAndBits) DeleteObject( hAndBits ); - GlobalUnlock( hIcon ); + GlobalUnlock16( hIcon ); SetTextColor( hdc, oldFg ); SetBkColor( hdc, oldBg ); return TRUE; @@ -694,7 +694,7 @@ static BOOL CURSORICON_SetCursor( HCURSOR hCursor ) CURSORICONINFO *ptr; XImage *image; - if (!(ptr = (CURSORICONINFO*)GlobalLock( hCursor ))) return FALSE; + if (!(ptr = (CURSORICONINFO*)GlobalLock16( hCursor ))) return FALSE; if (ptr->bPlanes * ptr->bBitsPerPixel != 1) { fprintf( stderr, "Cursor %04x has more than 1 bpp!\n", hCursor ); @@ -778,7 +778,7 @@ static BOOL CURSORICON_SetCursor( HCURSOR hCursor ) if (pixmapAll) XFreePixmap( display, pixmapAll ); if (pixmapBits) XFreePixmap( display, pixmapBits ); if (pixmapMask) XFreePixmap( display, pixmapMask ); - GlobalUnlock( hCursor ); + GlobalUnlock16( hCursor ); } if (cursor == None) return FALSE; diff --git a/objects/dc.c b/objects/dc.c index d2ee88c730f..8094756ecc0 100644 --- a/objects/dc.c +++ b/objects/dc.c @@ -456,7 +456,7 @@ BOOL RestoreDC( HDC hdc, short level ) /*********************************************************************** * CreateDC (GDI.53) */ -HDC CreateDC( LPCTSTR driver, LPCTSTR device, LPCTSTR output, const DEVMODE* initData ) +HDC CreateDC( LPCSTR driver, LPCSTR device, LPCSTR output, const DEVMODE* initData ) { DC * dc; HANDLE handle; @@ -500,7 +500,7 @@ HDC CreateDC( LPCTSTR driver, LPCTSTR device, LPCTSTR output, const DEVMODE* ini /*********************************************************************** * CreateIC (GDI.153) */ -HDC CreateIC( LPCTSTR driver, LPCTSTR device, LPCTSTR output, const DEVMODE* initData ) +HDC CreateIC( LPCSTR driver, LPCSTR device, LPCSTR output, const DEVMODE* initData ) { /* Nothing special yet for ICs */ return CreateDC( driver, device, output, initData ); diff --git a/objects/font.c b/objects/font.c index e1e1bb071c9..7917a53db3f 100644 --- a/objects/font.c +++ b/objects/font.c @@ -695,7 +695,7 @@ BOOL GetCharABCWidths(HDC hdc, UINT wFirstChar, UINT wLastChar, LPABC lpABC) /*********************************************************************** * GetCharWidth (GDI.350) */ -BOOL GetCharWidth(HDC hdc, WORD wFirstChar, WORD wLastChar, LPINT lpBuffer) +BOOL GetCharWidth(HDC hdc, WORD wFirstChar, WORD wLastChar, LPINT16 lpBuffer) { int i, j; XFontStruct *xfont; @@ -857,7 +857,7 @@ void InitFontsList(void) /************************************************************************* * EnumFonts [GDI.70] */ -INT EnumFonts(HDC hDC, LPCTSTR lpFaceName, FONTENUMPROC lpEnumFunc, LPARAM lpData) +INT EnumFonts(HDC hDC, LPCSTR lpFaceName, FONTENUMPROC lpEnumFunc, LPARAM lpData) { HANDLE hLog; HANDLE hMet; @@ -927,7 +927,7 @@ INT EnumFonts(HDC hDC, LPCTSTR lpFaceName, FONTENUMPROC lpEnumFunc, LPARAM lpDat /************************************************************************* * EnumFontFamilies [GDI.330] */ -INT EnumFontFamilies(HDC hDC, LPCTSTR lpszFamily, FONTENUMPROC lpEnumFunc, LPARAM lpData) +INT EnumFontFamilies(HDC hDC, LPCSTR lpszFamily, FONTENUMPROC lpEnumFunc, LPARAM lpData) { HANDLE hLog; HANDLE hMet; diff --git a/objects/gdiobj.c b/objects/gdiobj.c index d677e5dca8b..e957f7e4094 100644 --- a/objects/gdiobj.c +++ b/objects/gdiobj.c @@ -442,3 +442,34 @@ BOOL IsGDIObject(HANDLE handle) /* FIXME: should check magic here */ return (object != NULL); } + + +/*********************************************************************** + * MulDiv16 (GDI.128) + */ +INT16 MulDiv16( INT16 foo, INT16 bar, INT16 baz ) +{ + INT32 ret; + if (!baz) return -32768; + ret = (foo * bar) / baz; + if ((ret > 32767) || (ret < -32767)) return -32768; + return ret; +} + + +/*********************************************************************** + * MulDiv32 (KERNEL32.391) + */ +INT32 MulDiv32( INT32 foo, INT32 bar, INT32 baz ) +{ +#ifdef __GNUC__ + long long ret; + if (!baz) return -1; + ret = ((long long)foo * bar) / baz; + if ((ret > 2147483647) || (ret < -2147483647)) return -1; + return ret; +#else + if (!baz) return -1; + return (foo * bar) / baz; +#endif +} diff --git a/objects/metafile.c b/objects/metafile.c index 8cb460e4f10..6ca814ab4e2 100644 --- a/objects/metafile.c +++ b/objects/metafile.c @@ -37,48 +37,48 @@ HMETAFILE GetMetaFile(LPSTR lpFilename) if (!lpFilename) return 0; - hmf = GlobalAlloc(GMEM_MOVEABLE, MFHEADERSIZE); - mh = (METAHEADER *)GlobalLock(hmf); + hmf = GlobalAlloc16(GMEM_MOVEABLE, MFHEADERSIZE); + mh = (METAHEADER *)GlobalLock16(hmf); if (!mh) { - GlobalFree(hmf); + GlobalFree16(hmf); return 0; } if ((hFile = _lopen(lpFilename, OF_READ)) == HFILE_ERROR) { - GlobalFree(hmf); + GlobalFree16(hmf); return 0; } if (FILE_Read(hFile, (char *)mh, MFHEADERSIZE) == HFILE_ERROR) { - GlobalFree(hmf); + GlobalFree16(hmf); return 0; } size = mh->mtSize * 2; /* alloc memory for whole metafile */ - GlobalUnlock(hmf); - hmf = GlobalReAlloc(hmf,size,GMEM_MOVEABLE); - mh = (METAHEADER *)GlobalLock(hmf); + GlobalUnlock16(hmf); + hmf = GlobalReAlloc16(hmf,size,GMEM_MOVEABLE); + mh = (METAHEADER *)GlobalLock16(hmf); if (!mh) { - GlobalFree(hmf); + GlobalFree16(hmf); return 0; } if (FILE_Read(hFile, (char*)mh + mh->mtHeaderSize * 2, size - mh->mtHeaderSize * 2) == HFILE_ERROR) { - GlobalFree(hmf); + GlobalFree16(hmf); return 0; } _lclose(hFile); if (mh->mtType != 1) { - GlobalFree(hmf); + GlobalFree16(hmf); return 0; } - GlobalUnlock(hmf); + GlobalUnlock16(hmf); return hmf; } @@ -87,7 +87,7 @@ HMETAFILE GetMetaFile(LPSTR lpFilename) * CreateMetafile GDI.125 */ -HANDLE CreateMetaFile(LPCTSTR lpFilename) +HANDLE CreateMetaFile(LPCSTR lpFilename) { DC *dc; HANDLE handle; @@ -103,12 +103,12 @@ HANDLE CreateMetaFile(LPCTSTR lpFilename) dc = (DC *)GDI_HEAP_LIN_ADDR(handle); - if (!(dc->w.hMetaFile = GlobalAlloc(GMEM_MOVEABLE, sizeof(METAHEADER)))) { + if (!(dc->w.hMetaFile = GlobalAlloc16(GMEM_MOVEABLE, sizeof(METAHEADER)))) { GDI_FreeObject(handle); return 0; } - mh = (METAHEADER *)GlobalLock(dc->w.hMetaFile); + mh = (METAHEADER *)GlobalLock16(dc->w.hMetaFile); mh->mtHeaderSize = MFHEADERSIZE / 2; mh->mtVersion = MFVERSION; @@ -123,7 +123,7 @@ HANDLE CreateMetaFile(LPCTSTR lpFilename) hFile = _lcreat(lpFilename, 0); if (_lwrite(hFile, (char *)mh, MFHEADERSIZE) == -1) { - GlobalFree(dc->w.hMetaFile); + GlobalFree16(dc->w.hMetaFile); return 0; } mh->mtNoParameters = hFile; /* store file descriptor here */ @@ -134,10 +134,10 @@ HANDLE CreateMetaFile(LPCTSTR lpFilename) /* create the handle table */ HTLen = HTINCR; - hHT = GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, + hHT = GlobalAlloc16(GMEM_MOVEABLE | GMEM_ZEROINIT, sizeof(HANDLETABLE) * HTLen); - GlobalUnlock(dc->w.hMetaFile); + GlobalUnlock16(dc->w.hMetaFile); dprintf_metafile(stddeb,"CreateMetaFile: returning %04x\n", handle); return handle; } @@ -156,7 +156,7 @@ HMETAFILE CopyMetaFile(HMETAFILE hSrcMetaFile, LPCSTR lpFilename) dprintf_metafile(stddeb,"CopyMetaFile: %s\n", lpFilename); - mh = (METAHEADER *)GlobalLock(hSrcMetaFile); + mh = (METAHEADER *)GlobalLock16(hSrcMetaFile); if (!mh) return 0; @@ -173,10 +173,10 @@ HMETAFILE CopyMetaFile(HMETAFILE hSrcMetaFile, LPCSTR lpFilename) } else /* memory based metafile */ { - handle = GlobalAlloc(GMEM_MOVEABLE,mh->mtSize * 2); - mh2 = (METAHEADER *)GlobalLock(handle); + handle = GlobalAlloc16(GMEM_MOVEABLE,mh->mtSize * 2); + mh2 = (METAHEADER *)GlobalLock16(handle); memcpy(mh2,mh, mh->mtSize * 2); - GlobalUnlock(handle); + GlobalUnlock16(handle); } return handle; @@ -201,7 +201,7 @@ HMETAFILE CloseMetaFile(HDC hdc) if (!dc) return 0; - mh = (METAHEADER *)GlobalLock(dc->w.hMetaFile); + mh = (METAHEADER *)GlobalLock16(dc->w.hMetaFile); /* Construct the end of metafile record - this is documented * in SDK Knowledgebase Q99334. @@ -209,7 +209,7 @@ HMETAFILE CloseMetaFile(HDC hdc) if (!MF_MetaParam0(dc, META_EOF)) { - GlobalFree(dc->w.hMetaFile); + GlobalFree16(dc->w.hMetaFile); return 0; } @@ -219,22 +219,22 @@ HMETAFILE CloseMetaFile(HDC hdc) mh->mtNoParameters = 0; if (_llseek(hFile, 0L, 0) == -1) { - GlobalFree(dc->w.hMetaFile); + GlobalFree16(dc->w.hMetaFile); return 0; } if (_lwrite(hFile, (char *)mh, MFHEADERSIZE) == -1) { - GlobalFree(dc->w.hMetaFile); + GlobalFree16(dc->w.hMetaFile); return 0; } _lclose(hFile); } /* delete the handle table */ - GlobalFree(hHT); + GlobalFree16(hHT); hmf = dc->w.hMetaFile; - GlobalUnlock(hmf); + GlobalUnlock16(hmf); GDI_FreeObject(hdc); return hmf; } @@ -246,12 +246,12 @@ HMETAFILE CloseMetaFile(HDC hdc) BOOL DeleteMetaFile(HMETAFILE hmf) { - METAHEADER *mh = (METAHEADER *)GlobalLock(hmf); + METAHEADER *mh = (METAHEADER *)GlobalLock16(hmf); if (!mh) return FALSE; - GlobalFree(hmf); + GlobalFree16(hmf); return TRUE; } @@ -262,7 +262,7 @@ BOOL DeleteMetaFile(HMETAFILE hmf) BOOL PlayMetaFile(HDC hdc, HMETAFILE hmf) { - METAHEADER *mh = (METAHEADER *)GlobalLock(hmf); + METAHEADER *mh = (METAHEADER *)GlobalLock16(hmf); METARECORD *mr; HANDLETABLE *ht; int offset = 0; @@ -271,9 +271,9 @@ BOOL PlayMetaFile(HDC hdc, HMETAFILE hmf) dprintf_metafile(stddeb,"PlayMetaFile(%04x %04x)\n",hdc,hmf); /* create the handle table */ - hHT = GlobalAlloc(GMEM_MOVEABLE|GMEM_ZEROINIT, + hHT = GlobalAlloc16(GMEM_MOVEABLE|GMEM_ZEROINIT, sizeof(HANDLETABLE) * mh->mtNoObjects); - ht = (HANDLETABLE *)GlobalLock(hHT); + ht = (HANDLETABLE *)GlobalLock16(hHT); /* loop through metafile playing records */ offset = mh->mtHeaderSize * 2; @@ -292,7 +292,7 @@ BOOL PlayMetaFile(HDC hdc, HMETAFILE hmf) DeleteObject(*(ht->objectHandle + i)); /* free handle table */ - GlobalFree(hHT); + GlobalFree16(hHT); return TRUE; } @@ -305,7 +305,7 @@ BOOL PlayMetaFile(HDC hdc, HMETAFILE hmf) BOOL EnumMetaFile(HDC hdc, HMETAFILE hmf, MFENUMPROC lpEnumFunc,LPARAM lpData) { - METAHEADER *mh = (METAHEADER *)GlobalLock(hmf); + METAHEADER *mh = (METAHEADER *)GlobalLock16(hmf); METARECORD *mr; HANDLETABLE *ht; int offset = 0; @@ -315,9 +315,9 @@ BOOL EnumMetaFile(HDC hdc, HMETAFILE hmf, MFENUMPROC lpEnumFunc,LPARAM lpData) /* create the handle table */ - hHT = GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, + hHT = GlobalAlloc16(GMEM_MOVEABLE | GMEM_ZEROINIT, sizeof(HANDLETABLE) * mh->mtNoObjects); - ht = (HANDLETABLE *)GlobalLock(hHT); + ht = (HANDLETABLE *)GlobalLock16(hHT); offset = mh->mtHeaderSize * 2; @@ -335,7 +335,7 @@ BOOL EnumMetaFile(HDC hdc, HMETAFILE hmf, MFENUMPROC lpEnumFunc,LPARAM lpData) } /* free handle table */ - GlobalFree(hHT); + GlobalFree16(hHT); return TRUE; } @@ -515,7 +515,7 @@ void PlayMetaFileRecord(HDC hdc, HANDLETABLE *ht, METARECORD *mr, case META_POLYPOLYGON: PolyPolygon(hdc, (LPPOINT)(mr->rdParam + *(mr->rdParam) + 1), - (LPINT)(mr->rdParam + 1), *(mr->rdParam)); + (LPINT16)(mr->rdParam + 1), *(mr->rdParam)); break; case META_POLYLINE: @@ -552,13 +552,13 @@ void PlayMetaFileRecord(HDC hdc, HANDLETABLE *ht, METARECORD *mr, case BS_DIBPATTERN: s1 = mr->rdSize * 2 - sizeof(METARECORD) - 2; - hndl = GlobalAlloc(GMEM_MOVEABLE, s1); - ptr = GlobalLock(hndl); + hndl = GlobalAlloc16(GMEM_MOVEABLE, s1); + ptr = GlobalLock16(hndl); memcpy(ptr, mr->rdParam + 2, s1); - GlobalUnlock(hndl); + GlobalUnlock16(hndl); MF_AddHandle(ht, nHandles, CreateDIBPatternBrush(hndl, *(mr->rdParam + 1))); - GlobalFree(hndl); + GlobalFree16(hndl); } break; @@ -705,14 +705,14 @@ HMETAFILE SetMetaFileBits(HANDLE hMem) HMETAFILE MF_WriteRecord(HMETAFILE hmf, METARECORD *mr, WORD rlen) { DWORD len; - METAHEADER *mh = (METAHEADER *)GlobalLock(hmf); + METAHEADER *mh = (METAHEADER *)GlobalLock16(hmf); if (mh->mtType == 0) /* memory based metafile */ { len = mh->mtSize * 2 + rlen; - GlobalUnlock(hmf); - hmf = GlobalReAlloc(hmf, len, GMEM_MOVEABLE); /* hmf can change */ - mh = (METAHEADER *)GlobalLock(hmf); + GlobalUnlock16(hmf); + hmf = GlobalReAlloc16(hmf, len, GMEM_MOVEABLE); /* hmf can change */ + mh = (METAHEADER *)GlobalLock16(hmf); memcpy((WORD *)mh + mh->mtSize, mr, rlen); } else if (mh->mtType == 1) /* disk based metafile */ @@ -720,19 +720,19 @@ HMETAFILE MF_WriteRecord(HMETAFILE hmf, METARECORD *mr, WORD rlen) dprintf_metafile(stddeb,"Writing record to disk\n"); if (_lwrite(mh->mtNoParameters, (char *)mr, rlen) == -1) { - GlobalUnlock(hmf); + GlobalUnlock16(hmf); return 0; } } else { - GlobalUnlock(hmf); + GlobalUnlock16(hmf); return 0; } mh->mtSize += rlen / 2; mh->mtMaxRecord = MAX(mh->mtMaxRecord, rlen / 2); - GlobalUnlock(hmf); + GlobalUnlock16(hmf); return hmf; } @@ -768,24 +768,24 @@ int MF_AddHandle(HANDLETABLE *ht, WORD htlen, HANDLE hobj) int MF_AddHandleInternal(HANDLE hobj) { int i; - HANDLETABLE *ht = (HANDLETABLE *)GlobalLock(hHT); + HANDLETABLE *ht = (HANDLETABLE *)GlobalLock16(hHT); for (i = 0; i < HTLen; i++) { if (*(ht->objectHandle + i) == 0) { *(ht->objectHandle + i) = hobj; - GlobalUnlock(hHT); + GlobalUnlock16(hHT); return i; } } - GlobalUnlock(hHT); - if (!(hHT = GlobalReAlloc(hHT, HTINCR, GMEM_MOVEABLE | GMEM_ZEROINIT))) + GlobalUnlock16(hHT); + if (!(hHT = GlobalReAlloc16(hHT, HTINCR, GMEM_MOVEABLE | GMEM_ZEROINIT))) return -1; HTLen += HTINCR; - ht = (HANDLETABLE *)GlobalLock(hHT); + ht = (HANDLETABLE *)GlobalLock16(hHT); *(ht->objectHandle + i) = hobj; - GlobalUnlock(hHT); + GlobalUnlock16(hHT); return i; } @@ -951,12 +951,12 @@ BOOL MF_CreateBrushIndirect(DC *dc, HBRUSH hBrush, LOGBRUSH *logbrush) if ((index = MF_AddHandleInternal(hBrush)) == -1) return FALSE; - mh = (METAHEADER *)GlobalLock(dc->w.hMetaFile); + mh = (METAHEADER *)GlobalLock16(dc->w.hMetaFile); *(mr->rdParam) = index; if (index >= mh->mtNoObjects) mh->mtNoObjects++; - GlobalUnlock(dc->w.hMetaFile); + GlobalUnlock16(dc->w.hMetaFile); handle = MF_WriteRecord(dc->w.hMetaFile, mr, mr->rdSize * 2); dc->w.hMetaFile = handle; @@ -988,9 +988,9 @@ BOOL MF_CreatePatternBrush(DC *dc, HBRUSH hBrush, LOGBRUSH *logbrush) if (!bmp) return FALSE; len = sizeof(METARECORD) + sizeof(BITMAPINFOHEADER) + (bmp->bitmap.bmHeight * bmp->bitmap.bmWidthBytes) + 6; - if (!(hmr = GlobalAlloc(GMEM_MOVEABLE, len))) + if (!(hmr = GlobalAlloc16(GMEM_MOVEABLE, len))) return FALSE; - mr = (METARECORD *)GlobalLock(hmr); + mr = (METARECORD *)GlobalLock16(hmr); memset(mr, 0, len); mr->rdFunction = META_DIBCREATEPATTERNBRUSH; mr->rdSize = len / 2; @@ -1008,16 +1008,16 @@ BOOL MF_CreatePatternBrush(DC *dc, HBRUSH hBrush, LOGBRUSH *logbrush) break; case BS_DIBPATTERN: - info = (BITMAPINFO *)GlobalLock((HANDLE)logbrush->lbHatch); + info = (BITMAPINFO *)GlobalLock16((HANDLE)logbrush->lbHatch); bmSize = info->bmiHeader.biSizeImage; if (!bmSize) bmSize = (info->bmiHeader.biWidth * info->bmiHeader.biBitCount + 31) / 32 * 8 * info->bmiHeader.biHeight; biSize = DIB_BitmapInfoSize(info, LOWORD(logbrush->lbColor)); len = sizeof(METARECORD) + biSize + bmSize + 2; - if (!(hmr = GlobalAlloc(GMEM_MOVEABLE, len))) + if (!(hmr = GlobalAlloc16(GMEM_MOVEABLE, len))) return FALSE; - mr = (METARECORD *)GlobalLock(hmr); + mr = (METARECORD *)GlobalLock16(hmr); memset(mr, 0, len); mr->rdFunction = META_DIBCREATEPATTERNBRUSH; mr->rdSize = len / 2; @@ -1030,11 +1030,11 @@ BOOL MF_CreatePatternBrush(DC *dc, HBRUSH hBrush, LOGBRUSH *logbrush) } if (!(dc->w.hMetaFile = MF_WriteRecord(dc->w.hMetaFile, mr, len))) { - GlobalFree(hmr); + GlobalFree16(hmr); return FALSE; } - GlobalFree(hmr); + GlobalFree16(hmr); mr = (METARECORD *)&buffer; mr->rdSize = sizeof(METARECORD) / 2; @@ -1042,11 +1042,11 @@ BOOL MF_CreatePatternBrush(DC *dc, HBRUSH hBrush, LOGBRUSH *logbrush) if ((index = MF_AddHandleInternal(hBrush)) == -1) return FALSE; - mh = (METAHEADER *)GlobalLock(dc->w.hMetaFile); + mh = (METAHEADER *)GlobalLock16(dc->w.hMetaFile); *(mr->rdParam) = index; if (index >= mh->mtNoObjects) mh->mtNoObjects++; - GlobalUnlock(dc->w.hMetaFile); + GlobalUnlock16(dc->w.hMetaFile); handle = MF_WriteRecord(dc->w.hMetaFile, mr, mr->rdSize * 2); dc->w.hMetaFile = handle; @@ -1079,11 +1079,11 @@ BOOL MF_CreatePenIndirect(DC *dc, HPEN hPen, LOGPEN *logpen) if ((index = MF_AddHandleInternal(hPen)) == -1) return FALSE; - mh = (METAHEADER *)GlobalLock(dc->w.hMetaFile); + mh = (METAHEADER *)GlobalLock16(dc->w.hMetaFile); *(mr->rdParam) = index; if (index >= mh->mtNoObjects) mh->mtNoObjects++; - GlobalUnlock(dc->w.hMetaFile); + GlobalUnlock16(dc->w.hMetaFile); handle = MF_WriteRecord(dc->w.hMetaFile, mr, mr->rdSize * 2); dc->w.hMetaFile = handle; @@ -1116,11 +1116,11 @@ BOOL MF_CreateFontIndirect(DC *dc, HFONT hFont, LOGFONT *logfont) if ((index = MF_AddHandleInternal(hFont)) == -1) return FALSE; - mh = (METAHEADER *)GlobalLock(dc->w.hMetaFile); + mh = (METAHEADER *)GlobalLock16(dc->w.hMetaFile); *(mr->rdParam) = index; if (index >= mh->mtNoObjects) mh->mtNoObjects++; - GlobalUnlock(dc->w.hMetaFile); + GlobalUnlock16(dc->w.hMetaFile); handle = MF_WriteRecord(dc->w.hMetaFile, mr, mr->rdSize * 2); dc->w.hMetaFile = handle; @@ -1139,9 +1139,9 @@ BOOL MF_TextOut(DC *dc, short x, short y, LPSTR str, short count) METARECORD *mr; len = sizeof(METARECORD) + (((count + 1) >> 1) * 2) + 4; - if (!(hmr = GlobalAlloc(GMEM_MOVEABLE, len))) + if (!(hmr = GlobalAlloc16(GMEM_MOVEABLE, len))) return FALSE; - mr = (METARECORD *)GlobalLock(hmr); + mr = (METARECORD *)GlobalLock16(hmr); memset(mr, 0, len); mr->rdSize = len / 2; @@ -1152,7 +1152,7 @@ BOOL MF_TextOut(DC *dc, short x, short y, LPSTR str, short count) *(mr->rdParam + ((count + 1) >> 1) + 2) = x; handle = MF_WriteRecord(dc->w.hMetaFile, mr, mr->rdSize * 2); dc->w.hMetaFile = handle; - GlobalFree(hmr); + GlobalFree16(hmr); return handle; } @@ -1168,9 +1168,9 @@ BOOL MF_MetaPoly(DC *dc, short func, LPPOINT pt, short count) METARECORD *mr; len = sizeof(METARECORD) + (count * 4); - if (!(hmr = GlobalAlloc(GMEM_MOVEABLE, len))) + if (!(hmr = GlobalAlloc16(GMEM_MOVEABLE, len))) return FALSE; - mr = (METARECORD *)GlobalLock(hmr); + mr = (METARECORD *)GlobalLock16(hmr); memset(mr, 0, len); mr->rdSize = len / 2; @@ -1179,7 +1179,7 @@ BOOL MF_MetaPoly(DC *dc, short func, LPPOINT pt, short count) memcpy(mr->rdParam + 1, pt, count * 4); handle = MF_WriteRecord(dc->w.hMetaFile, mr, mr->rdSize * 2); dc->w.hMetaFile = handle; - GlobalFree(hmr); + GlobalFree16(hmr); return handle; } diff --git a/objects/oembitmap.c b/objects/oembitmap.c index 04867fadb94..ca330ce9f77 100644 --- a/objects/oembitmap.c +++ b/objects/oembitmap.c @@ -442,15 +442,15 @@ HANDLE OBM_LoadCursorIcon( WORD id, BOOL fCursor ) sizeXor = bmpXor->bitmap.bmHeight * bmpXor->bitmap.bmWidthBytes; sizeAnd = bmpXor->bitmap.bmHeight * ((bmpXor->bitmap.bmWidth+15) / 16 * 2); - if (!(handle = GlobalAlloc( GMEM_MOVEABLE, - sizeof(CURSORICONINFO) + sizeXor + sizeAnd))) + if (!(handle = GlobalAlloc16( GMEM_MOVEABLE, + sizeof(CURSORICONINFO) + sizeXor + sizeAnd))) { DeleteObject( hXorBits ); DeleteObject( hAndBits ); return 0; } - pInfo = (CURSORICONINFO *)GlobalLock( handle ); + pInfo = (CURSORICONINFO *)GlobalLock16( handle ); pInfo->ptHotSpot.x = hotspot.x; pInfo->ptHotSpot.y = hotspot.y; pInfo->nWidth = bmpXor->bitmap.bmWidth; diff --git a/objects/region.c b/objects/region.c index f994a91d8e3..935b99665c6 100644 --- a/objects/region.c +++ b/objects/region.c @@ -249,7 +249,7 @@ HRGN CreatePolygonRgn( const POINT * points, INT count, INT mode ) /*********************************************************************** * CreatePolyPolygonRgn (GDI.451) */ -HRGN CreatePolyPolygonRgn( const POINT * points, const INT * count, +HRGN CreatePolyPolygonRgn( const POINT * points, const INT16 * count, INT nbpolygons, INT mode ) { RGNOBJ * obj; diff --git a/objects/text.c b/objects/text.c index 6ad5d4e670e..3e62c84e91d 100644 --- a/objects/text.c +++ b/objects/text.c @@ -184,7 +184,7 @@ static const char *TEXT_NextLine( HDC hdc, const char *str, int *count, /*********************************************************************** * DrawText (USER.85) */ -INT DrawText( HDC hdc, LPCTSTR str, INT i_count, LPRECT rect, UINT flags ) +INT DrawText( HDC hdc, LPCSTR str, INT i_count, LPRECT rect, UINT flags ) { SIZE size; const char *strPtr; @@ -286,7 +286,7 @@ INT DrawText( HDC hdc, LPCTSTR str, INT i_count, LPRECT rect, UINT flags ) * ExtTextOut (GDI.351) */ BOOL ExtTextOut( HDC hdc, short x, short y, WORD flags, LPRECT lprect, - LPSTR str, WORD count, LPINT lpDx ) + LPSTR str, WORD count, LPINT16 lpDx ) { int dir, ascent, descent, i; XCharStruct info; @@ -518,7 +518,7 @@ BOOL GrayString(HDC hdc, HBRUSH hbr, FARPROC gsprc, LPARAM lParam, * than TA_LEFT|TA_TOP. But we want bug-for-bug compatibility :-) */ LONG TEXT_TabbedTextOut( HDC hdc, int x, int y, LPSTR lpstr, int count, - int cTabStops, LPINT lpTabPos, int nTabOrg, + int cTabStops, LPINT16 lpTabPos, int nTabOrg, BOOL fDisplayText) { WORD defWidth; @@ -574,7 +574,7 @@ LONG TEXT_TabbedTextOut( HDC hdc, int x, int y, LPSTR lpstr, int count, * TabbedTextOut (USER.196) */ LONG TabbedTextOut( HDC hdc, short x, short y, LPSTR lpstr, short count, - short cTabStops, LPINT lpTabPos, short nTabOrg ) + short cTabStops, LPINT16 lpTabPos, short nTabOrg ) { dprintf_text( stddeb, "TabbedTextOut: %04x %d,%d '%*.*s' %d\n", hdc, x, y, count, count, lpstr, count ); @@ -587,7 +587,7 @@ LONG TabbedTextOut( HDC hdc, short x, short y, LPSTR lpstr, short count, * GetTabbedTextExtent (USER.197) */ DWORD GetTabbedTextExtent( HDC hdc, LPSTR lpstr, int count, - int cTabStops, LPINT lpTabPos ) + int cTabStops, LPINT16 lpTabPos ) { dprintf_text( stddeb, "GetTabbedTextExtent: %04x '%*.*s' %d\n", hdc, count, count, lpstr, count ); diff --git a/programs/Makefile.in b/programs/Makefile.in index a954a5f0e99..c42928de273 100644 --- a/programs/Makefile.in +++ b/programs/Makefile.in @@ -1,4 +1,4 @@ -SUBDIRS = progman +SUBDIRS = progman winhelp all: $(SUBDIRS) @@ -8,6 +8,9 @@ $(SUBDIRS): dummy depend: for i in $(SUBDIRS); do (cd $$i; $(MAKE) depend); done +install: + for i in $(SUBDIRS); do (cd $$i; $(MAKE) install); done + clean: for i in $(SUBDIRS); do (cd $$i; $(MAKE) clean); done diff --git a/programs/progman/Makefile.in b/programs/progman/Makefile.in index 37af3941f76..8db65d25e19 100644 --- a/programs/progman/Makefile.in +++ b/programs/progman/Makefile.in @@ -6,6 +6,19 @@ ALL_LIBS = $(WINELIB) $(X_LIBS) $(XPM_LIB) $(XLIB) $(LDLIBS) LANGUAGES = En De Fr LICENSELANG = En +# Installation infos + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +bindir = @bindir@ +libdir = @libdir@ +sysconfdir = @sysconfdir@ +mandir = @mandir@/man1 +manext = .1 + MOSTOBJS = \ dialog.o \ group.o \ @@ -30,10 +43,15 @@ all: check_winerc $(PROGRAMS) progman: $(MOSTOBJS) $(STRINGOBJS) $(WINELIB) $(CC) -o progman $(MOSTOBJS) $(LDOPTIONS) $(ALL_LIBS) $(STRINGOBJS) +install: dummy + $(INSTALL_PROGRAM) progman $(bindir)/progman + clean:: $(RM) accel.c accel.h $(LANGUAGES:%=%.c) $(LANGUAGES:%=%.h) progman accel.c accel.h: $(WINERC) Xx.rc $(LANGUAGES:%=%.c) $(LANGUAGES:%=%.h): $(WINERC) Xx.rc +dummy: + ### Dependencies: diff --git a/programs/winhelp/ChangeLog b/programs/winhelp/ChangeLog new file mode 100644 index 00000000000..9ba2f946e03 --- /dev/null +++ b/programs/winhelp/ChangeLog @@ -0,0 +1,7 @@ +Mon Apr 29 19:48:15 1996 Ulrich Schmid + + * [winhelp.c] [winhelp.h] [hlpfile.c] [hlpfile.h] + [macro.c] [macro.h] [macro.lex.l] [macro.yacc.y] + [string.c] [En.rc] [De.rc] [Xx.rc] [hlp2sgml.c] + Original by Ulrich Schmid + diff --git a/programs/winhelp/De.rc b/programs/winhelp/De.rc new file mode 100644 index 00000000000..38a0c17b692 --- /dev/null +++ b/programs/winhelp/De.rc @@ -0,0 +1,48 @@ +/* + * Help Viewer + * + * Copyright 1996 Ulrich Schmid + */ + +/* This file is not yet complete !! */ + +#define LANGUAGE_ID De +#define LANGUAGE_NUMBER 2 + +/* Menu */ + +#define MENU_FILE "&Datei" +#define MENU_FILE_OPEN "Ö&ffnen..." +#define MENU_FILE_PRINT "Thema &drucken" +#define MENU_FILE_PRINTER_SETUP "Drucker&einrichtung..." +#define MENU_FILE_EXIT "&Beenden" + +#define MENU_EDIT "&Bearbeiten" +#define MENU_EDIT_COPY_DIALOG "&Kopieren..." +#define MENU_EDIT_ANNOTATE "&Anmerken..." + +#define MENU_BOOKMARK "&Lesezeichen" +#define MENU_BOOKMARK_DEFINE "&Definieren..." + +#define MENU_HELP "&Hilfe" +#define MENU_HELP_ON_HELP "&Hilfe benutzen" +#define MENU_HELP_ON_TOP "Immer im &Vordergrund" +#define MENU_HELP_INFO "Inf&o..." +#define MENU_HELP_ABOUT_WINE "&Über WINE" + +/* Strings */ + +#define STRING_WINE_HELP "WINE Hilfe" +#define STRING_ERROR "FEHLER" +#define STRING_WARNING "ACHTUNG" +#define STRING_INFO "Information" +#define STRING_NOT_IMPLEMENTED "Nicht implementiert" +#define STRING_HLPFILE_ERROR_s "Fehler beim Lesen der Hilfe-Datei `%s'" +#define STRING_CONTENTS "&Inhalt" +#define STRING_SEARCH "&Suchen" +#define STRING_BACK "&Zurück" +#define STRING_HISTORY "&Bisher" +#define STRING_ALL_FILES "Alle Dateien (*.*)" +#define STRING_HELP_FILES_HLP "Hilfe-Dateien (*.hlp)" + +#include "Xx.rc" diff --git a/programs/winhelp/En.rc b/programs/winhelp/En.rc new file mode 100644 index 00000000000..b14389b7ef4 --- /dev/null +++ b/programs/winhelp/En.rc @@ -0,0 +1,48 @@ +/* + * Help Viewer + * + * Copyright 1996 Ulrich Schmid + */ + +/* This file is not yet complete !! */ + +#define LANGUAGE_ID En +#define LANGUAGE_NUMBER 0 + +/* Menu */ + +#define MENU_FILE "&File" +#define MENU_FILE_OPEN "&Open..." +#define MENU_FILE_PRINT "&Print" +#define MENU_FILE_PRINTER_SETUP "Printer &setup..." +#define MENU_FILE_EXIT "&Exit" + +#define MENU_EDIT "&Edit" +#define MENU_EDIT_COPY_DIALOG "&Copy..." +#define MENU_EDIT_ANNOTATE "&Annotate..." + +#define MENU_BOOKMARK "&Bookmark" +#define MENU_BOOKMARK_DEFINE "&Define..." + +#define MENU_HELP "&Help" +#define MENU_HELP_ON_HELP "Help &on help" +#define MENU_HELP_ON_TOP "Always on &top" +#define MENU_HELP_INFO "&Info..." +#define MENU_HELP_ABOUT_WINE "&About WINE" + +/* Strings */ + +#define STRING_WINE_HELP "WINE Help" +#define STRING_ERROR "ERROR" +#define STRING_WARNING "WARNING" +#define STRING_INFO "Information" +#define STRING_NOT_IMPLEMENTED "Not implemented" +#define STRING_HLPFILE_ERROR_s "Error while reading the help file `%s'" +#define STRING_CONTENTS "&Contents" +#define STRING_SEARCH "&Search" +#define STRING_BACK "&Back" +#define STRING_HISTORY "&History" +#define STRING_ALL_FILES "All files (*.*)" +#define STRING_HELP_FILES_HLP "Help files (*.hlp)" + +#include "Xx.rc" diff --git a/programs/winhelp/Makefile.in b/programs/winhelp/Makefile.in new file mode 100644 index 00000000000..96a5fcb3cb5 --- /dev/null +++ b/programs/winhelp/Makefile.in @@ -0,0 +1,63 @@ +TOPSRC = @top_srcdir@ +MODULE = none +PROGRAMS = winhelp hlp2sgml +ALL_LIBS = $(WINELIB) $(X_LIBS) $(XPM_LIB) $(XLIB) $(LDLIBS) + +LANGUAGES = En De + +# Installation infos + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +bindir = @bindir@ +libdir = @libdir@ +sysconfdir = @sysconfdir@ +mandir = @mandir@/man1 +manext = .1 + +MOSTOBJS = \ + winhelp.o \ + hlpfile.o \ + macro.o \ + y.tab.o \ + lex.yy.o + +STRINGOBJS = \ + string.o \ + $(LANGUAGES:%=%.o) + +C_SRCS = $(MOSTOBJS:.o=.c) $(STRINGOBJS:.o=.c) hlp2sgml.c + +all: check_winerc $(PROGRAMS) + +@MAKE_RULES@ + +# Some strings need addresses >= 0x10000 +winhelp: $(MOSTOBJS) $(STRINGOBJS) $(WINELIB) + $(CC) -o winhelp $(MOSTOBJS) $(LDOPTIONS) $(ALL_LIBS) $(STRINGOBJS) + +hlp2sgml: hlp2sgml.o hlpfile.o + $(CC) -o hlp2sgml hlp2sgml.o hlpfile.o + +install: dummy + $(INSTALL_PROGRAM) winhelp $(bindir)/winhelp + $(INSTALL_PROGRAM) hlp2sgml $(bindir)/hlp2sgml + +clean:: + $(RM) $(PROGRAMS) lex.yy.c y.tab.c y.tab.h + $(RM) $(LANGUAGES:%=%.c) $(LANGUAGES:%=%.h) + +y.tab.c y.tab.h: macro.yacc.y + $(YACC) -d -t macro.yacc.y + +lex.yy.c: macro.lex.l + $(LEX) -8 -I macro.lex.l + +$(LANGUAGES:%=%.c) $(LANGUAGES:%=%.h): $(WINERC) Xx.rc + +dummy: + +### Dependencies: diff --git a/programs/winhelp/Xx.rc b/programs/winhelp/Xx.rc new file mode 100644 index 00000000000..d2e713b3490 --- /dev/null +++ b/programs/winhelp/Xx.rc @@ -0,0 +1,80 @@ +/* + * Help Viewer + * + * Copyright 1996 Ulrich Schmid + */ + +#include "winhelp.h" + +#define CONCAT(a, b) CONCAT1(a, b) +#define CONCAT1(a, b) a##b + +/* Menu */ + +CONCAT(MENU_, LANGUAGE_ID) MENU +{ + POPUP MENU_FILE { + MENUITEM MENU_FILE_OPEN, WH_OPEN + MENUITEM SEPARATOR + MENUITEM MENU_FILE_PRINT, WH_PRINT + MENUITEM MENU_FILE_PRINTER_SETUP, WH_PRINTER_SETUP + MENUITEM SEPARATOR + MENUITEM MENU_FILE_EXIT, WH_EXIT + } + POPUP MENU_EDIT { + MENUITEM MENU_EDIT_COPY_DIALOG, WH_COPY_DIALOG + MENUITEM SEPARATOR + MENUITEM MENU_EDIT_ANNOTATE, WH_ANNOTATE + } + POPUP MENU_BOOKMARK { + MENUITEM MENU_BOOKMARK_DEFINE, WH_BOOKMARK_DEFINE + } + POPUP MENU_HELP { + MENUITEM MENU_HELP_ON_HELP, WH_HELP_ON_HELP + MENUITEM MENU_HELP_ON_TOP, WH_HELP_ON_TOP + MENUITEM SEPARATOR + MENUITEM MENU_HELP_INFO, WH_ABOUT +#ifdef WINELIB + MENUITEM MENU_HELP_ABOUT_WINE, WH_ABOUT_WINE +#endif + } +} + +/* Dialogs */ + +DIALOG_TEST DIALOG 0, 0, 150, 22 +STYLE DS_MODALFRAME +CAPTION "Macro Test" +{ +GROUPBOX "", IDIGNORE, 4, 4, 102, 12 +EDITTEXT 99, 5, 7, 100, 8 +DEFPUSHBUTTON "OK", IDOK, 110, 5, 35, 12 +} + +/* Strings */ + +#define ADDSTRING(str) ADDSTRING1(LANGUAGE_NUMBER, IDS_ ## str) STRING_ ## str +#define ADDSTRING1(langnum, ids) ADDSTRING2(langnum, ids) +#define ADDSTRING2(langnum, ids) 0x ## langnum ## ids + +#define STRINGIFY(str) STRINGIFY1(str) +#define STRINGIFY1(str) #str + +#define STRING_LANGUAGE_ID STRINGIFY(LANGUAGE_ID) + +STRINGTABLE +{ +ADDSTRING(LANGUAGE_ID) +ADDSTRING(WINE_HELP) +ADDSTRING(ERROR) +ADDSTRING(WARNING) +ADDSTRING(INFO) +ADDSTRING(NOT_IMPLEMENTED) +ADDSTRING(HLPFILE_ERROR_s) +ADDSTRING(CONTENTS) +ADDSTRING(SEARCH) +ADDSTRING(BACK) +ADDSTRING(HISTORY) +ADDSTRING(ALL_FILES) +ADDSTRING(HELP_FILES_HLP) +} diff --git a/programs/winhelp/hlp2sgml.c b/programs/winhelp/hlp2sgml.c new file mode 100644 index 00000000000..7df018463d7 --- /dev/null +++ b/programs/winhelp/hlp2sgml.c @@ -0,0 +1,333 @@ +/* + * Copyright 1996 Ulrich Schmid + */ + +#include +#include +#include +#include +#include +#include +#include "windows.h" +#include "hlpfile.h" + +typedef struct +{ + const char *header1; + const char *header2; + const char *section; + const char *first_paragraph; + const char *newline; + const char *next_paragraph; + const char *special_char; + const char *begin_italic; + const char *end_italic; + const char *begin_boldface; + const char *end_boldface; + const char *begin_typewriter; + const char *end_typewriter; + const char *tail; +} FORMAT; + +typedef struct +{ + const char ch; + const char *subst; +} CHARMAP[]; + + +FORMAT format = +{ + "\n" + "
\n" + "\n", + + "\n<author>\n%s\n" + "<date>\n%s\n", + + "\n<sect>\n", + "\n<p>\n", + "\n<newline>\n", + "\n\n", + + "&%s;", + + "<em>", + "</em>", + "<bf>", + "</bf>", + "<tt>", + "</tt>", + + "\n</article>\n" +}; + +CHARMAP charmap = + {{'Æ', "AElig"}, + {'Á', "Aacute"}, + {'Â', "Acirc"}, + {'À', "Agrave"}, + {'Ã', "Atilde"}, + {'Ç', "Ccedil"}, + {'É', "Eacute"}, + {'È', "Egrave"}, + {'Ë', "Euml"}, + {'Í', "Iacute"}, + {'Î', "Icirc"}, + {'Ì', "Igrave"}, + {'Ï', "Iuml"}, + {'Ñ', "Ntilde"}, + {'Ó', "Oacute"}, + {'Ô', "Ocirc"}, + {'Ò', "Ograve"}, + {'Ø', "Oslash"}, + {'Ú', "Uacute"}, + {'Ù', "Ugrave"}, + {'Ý', "Yacute"}, + {'á', "aacute"}, + {'â', "acirc"}, + {'æ', "aelig"}, + {'à', "agrave"}, + {'å', "aring"}, + {'ã', "atilde"}, + {'ç', "ccedil"}, + {'é', "eacute"}, + {'ê', "ecirc"}, + {'è', "egrave"}, + {'ë', "euml"}, + {'í', "iacute"}, + {'î', "icirc"}, + {'ì', "igrave"}, + {'ï', "iuml"}, + {'ñ', "ntilde"}, + {'ó', "oacute"}, + {'ÿ', "yuml"}, + {'ô', "ocirc"}, + {'ò', "ograve"}, + {'ø', "oslash"}, + {'õ', "otilde"}, + {'ú', "uacute"}, + {'û', "ucirc"}, + {'ù', "ugrave"}, + {'ý', "yacute"}, + {'<', "lt"}, + {'&', "amp"}, + {'"', "dquot"}, + {'#', "num"}, + {'%', "percnt"}, + {'\'', "quot"}, +#if 0 + {'(', "lpar"}, + {')', "rpar"}, + {'*', "ast"}, + {'+', "plus"}, + {',', "comma"}, + {'-', "hyphen"}, + {':', "colon"}, + {';', "semi"}, + {'=', "equals"}, + {'@', "commat"}, + {'[', "lsqb"}, + {']', "rsqb"}, + {'^', "circ"}, + {'_', "lowbar"}, + {'{', "lcub"}, + {'|', "verbar"}, + {'}', "rcub"}, + {'~', "tilde"}, +#endif + {'\\', "bsol"}, + {'$', "dollar"}, + {'Ä', "Auml"}, + {'ä', "auml"}, + {'Ö', "Ouml"}, + {'ö', "ouml"}, + {'Ü', "Uuml"}, + {'ü', "uuml"}, + {'ß', "szlig"}, + {'>', "gt"}, + {'§', "sect"}, + {'¶', "para"}, + {'©', "copy"}, + {'¡', "iexcl"}, + {'¿', "iquest"}, + {'¢', "cent"}, + {'£', "pound"}, + {'×', "times"}, + {'±', "plusmn"}, + {'÷', "divide"}, + {'¬', "not"}, + {'µ', "mu"}, + {0,0}}; + +/*********************************************************************** + * + * print_text + */ + +static void print_text(const char *p) +{ + int i; + + for (; *p; p++) + { + for (i = 0; charmap[i].ch; i++) + if (*p == charmap[i].ch) + { + printf(format.special_char, charmap[i].subst); + break; + } + if (!charmap[i].ch) + printf("%c", *p); + } +} + +/*********************************************************************** + * + * main + */ + +int main(int argc, char **argv) +{ + HLPFILE *hlpfile; + HLPFILE_PAGE *page; + HLPFILE_PARAGRAPH *paragraph; + time_t t; + char date[50]; + char *filename; + + hlpfile = HLPFILE_ReadHlpFile(argc > 1 ? argv[1] : ""); + + if (!hlpfile) return(2); + + time(&t); + strftime(date, sizeof(date), "%x", localtime(&t)); + filename = strrchr(hlpfile->lpszPath, '/'); + if (filename) filename++; + else filename = hlpfile->lpszPath; + + /* Header */ + printf(format.header1); + print_text(hlpfile->lpszTitle); + printf(format.header2, filename, date); + + for (page = hlpfile->first_page; page; page = page->next) + { + paragraph = page->first_paragraph; + if (!paragraph) continue; + + /* Section */ + printf(format.section); + for (; paragraph && !paragraph->wVSpace; paragraph = paragraph->next) + print_text(paragraph->lpszText); + printf(format.first_paragraph); + + for (; paragraph; paragraph = paragraph->next) + { + /* New line; new paragraph */ + if (paragraph->wVSpace == 1) + printf(format.newline); + else if (paragraph->wVSpace > 1) + printf(format.next_paragraph); + + if (paragraph->wFont) + printf(format.begin_boldface); + + print_text(paragraph->lpszText); + + if (paragraph->wFont) + printf(format.end_boldface); + } + } + + printf(format.tail); + + return(0); +} + +/*********************************************************************** + * + * Substitutions for some WINELIB functions + */ + +HFILE OpenFile( LPCSTR path, OFSTRUCT *ofs, UINT mode ) +{ + FILE *file; + + if (!*path) return (HFILE) stdin; + + file = fopen(path, "r"); + if (!file) return HFILE_ERROR; + return (HFILE) file; +} + +HFILE _lclose( HFILE hFile ) +{ + fclose((FILE*) hFile); + return 0; +} + +LONG _hread( HFILE hFile, SEGPTR buffer, LONG count ) +{ + return fread(buffer, 1, count, (FILE*) hFile); +} + +HGLOBAL GlobalAlloc( WORD flags, DWORD size ) +{ + return (HGLOBAL) malloc(size); +} + +LPVOID GlobalLock( HGLOBAL handle ) +{ + return (LPVOID) handle; +} + +HGLOBAL GlobalFree( HGLOBAL handle ) +{ + free((VOID*) handle); + return(0); +} + +/* + * String functions + * + * Copyright 1993 Yngvi Sigurjonsson (yngvi@hafro.is) + */ + +INT lstrcmp(LPCSTR str1,LPCSTR str2) +{ + return strcmp( str1, str2 ); +} + +INT lstrcmpi( LPCSTR str1, LPCSTR str2 ) +{ + INT res; + + while (*str1) + { + if ((res = toupper(*str1) - toupper(*str2)) != 0) return res; + str1++; + str2++; + } + return toupper(*str1) - toupper(*str2); +} + +INT lstrlen(LPCSTR str) +{ + return strlen(str); +} + +SEGPTR lstrcpy( SEGPTR target, SEGPTR source ) +{ + strcpy( (char *)target, (char *)source ); + return target; +} + +void hmemcpy(LPVOID hpvDest, LPCVOID hpvSource, LONG cbCopy) +{ + memcpy(hpvDest, hpvSource, cbCopy); +} + +/* Local Variables: */ +/* c-file-style: "GNU" */ +/* End: */ diff --git a/programs/winhelp/hlpfile.c b/programs/winhelp/hlpfile.c new file mode 100644 index 00000000000..80232d949d9 --- /dev/null +++ b/programs/winhelp/hlpfile.c @@ -0,0 +1,989 @@ +/* + * Help Viewer + * + * Copyright 1996 Ulrich Schmid + */ + +#include <stdio.h> +#include <windows.h> +#include "winhelp.h" + +static void Report(LPCSTR str) +{ +#if 0 + fprintf(stderr, "%s\n", str); +#endif +} + +#define GET_USHORT(buffer, i)\ +(((BYTE)((buffer)[(i)]) + 0x100 * (BYTE)((buffer)[(i)+1]))) +#define GET_SHORT(buffer, i)\ +(((BYTE)((buffer)[(i)]) + 0x100 * (signed char)((buffer)[(i)+1]))) +#define GET_UINT(buffer, i)\ +GET_USHORT(buffer, i) + 0x10000 * GET_USHORT(buffer, i+2) + +static BOOL HLPFILE_DoReadHlpFile(HLPFILE*, LPCSTR); +static BOOL HLPFILE_ReadFileToBuffer(HFILE); +static BOOL HLPFILE_FindSubFile(LPCSTR name, BYTE**, BYTE**); +static VOID HLPFILE_SystemCommands(HLPFILE*); +static BOOL HLPFILE_Uncompress1_Phrases(); +static BOOL HLPFILE_Uncompress1_Topic(); +static BOOL HLPFILE_GetContext(HLPFILE*); +static BOOL HLPFILE_AddPage(HLPFILE*, BYTE*, BYTE*); +static BOOL HLPFILE_AddParagraph(HLPFILE*, BYTE *, BYTE*); +static UINT HLPFILE_Uncompressed2_Size(BYTE*, BYTE*); +static VOID HLPFILE_Uncompress2(BYTE**, BYTE*, BYTE*); + +static HLPFILE *first_hlpfile = 0; +static HGLOBAL hFileBuffer; +static BYTE *file_buffer; + +static struct +{ + UINT num; + BYTE *buf; + HGLOBAL hBuffer; +} phrases; + +static struct +{ + BYTE **map; + BYTE *end; + UINT wMapLen; + HGLOBAL hMap; + HGLOBAL hBuffer; +} topic; + +static struct +{ + UINT bDebug; + UINT wFont; + UINT wIndent; + UINT wHSpace; + UINT wVSpace; + UINT wVBackSpace; + HLPFILE_LINK link; +} attributes; + +/*********************************************************************** + * + * HLPFILE_Contents + */ + +HLPFILE_PAGE *HLPFILE_Contents(LPCSTR lpszPath) +{ + HLPFILE *hlpfile = HLPFILE_ReadHlpFile(lpszPath); + + if (!hlpfile) return(0); + + return(hlpfile->first_page); +} + +/*********************************************************************** + * + * HLPFILE_PageByNumber + */ + +HLPFILE_PAGE *HLPFILE_PageByNumber(LPCSTR lpszPath, UINT wNum) +{ + HLPFILE_PAGE *page; + HLPFILE *hlpfile = HLPFILE_ReadHlpFile(lpszPath); + + if (!hlpfile) return(0); + + for (page = hlpfile->first_page; page && wNum; page = page->next) wNum--; + + return page; +} + +/*********************************************************************** + * + * HLPFILE_HlpFilePageByHash + */ + +HLPFILE_PAGE *HLPFILE_PageByHash(LPCSTR lpszPath, LONG lHash) +{ + INT i; + UINT wNum; + HLPFILE_PAGE *page; + HLPFILE *hlpfile = HLPFILE_ReadHlpFile(lpszPath); + + if (!hlpfile) return(0); + + for (i = 0; i < hlpfile->wContextLen; i++) + if (hlpfile->Context[i].lHash == lHash) break; + + if (i >= hlpfile->wContextLen) + { + HLPFILE_FreeHlpFile(hlpfile); + return(0); + } + + wNum = hlpfile->Context[i].wPage; + for (page = hlpfile->first_page; page && wNum; page = page->next) wNum--; + + return page; +} + +/*********************************************************************** + * + * HLPFILE_Hash + */ + +LONG HLPFILE_Hash(LPCSTR lpszContext) +{ + LONG lHash = 0; + CHAR c; + while((c = *lpszContext++)) + { + CHAR x = 0; + if (c >= 'A' && c <= 'Z') x = c - 'A' + 17; + if (c >= 'a' && c <= 'z') x = c - 'a' + 17; + if (c >= '1' && c <= '9') x = c - '0'; + if (c == '0') x = 10; + if (c == '.') x = 12; + if (c == '_') x = 13; + if (x) lHash = lHash * 43 + x; + } + return lHash; +} + +/*********************************************************************** + * + * HLPFILE_ReadHlpFile + */ + +HLPFILE *HLPFILE_ReadHlpFile(LPCSTR lpszPath) +{ + HGLOBAL hHlpFile; + HLPFILE *hlpfile; + + for (hlpfile = first_hlpfile; hlpfile; hlpfile = hlpfile->next) + if (!lstrcmp(hlpfile->lpszPath, lpszPath)) + { + hlpfile->wRefCount++; + return(hlpfile); + } + + hHlpFile = GlobalAlloc(GMEM_FIXED, sizeof(HLPFILE) + lstrlen(lpszPath) + 1); + if (!hHlpFile) return(0); + + hlpfile = GlobalLock(hHlpFile); + hlpfile->hSelf = hHlpFile; + hlpfile->wRefCount = 1; + hlpfile->hTitle = 0; + hlpfile->hContext = 0; + hlpfile->wContextLen = 0; + hlpfile->first_page = 0; + hlpfile->first_macro = 0; + hlpfile->prev = 0; + hlpfile->next = first_hlpfile; + first_hlpfile = hlpfile; + if (hlpfile->next) hlpfile->next->prev = hlpfile; + + hlpfile->lpszPath = GlobalLock(hHlpFile); + hlpfile->lpszPath += sizeof(HLPFILE); + lstrcpy(hlpfile->lpszPath, (SEGPTR) lpszPath); + + phrases.hBuffer = topic.hBuffer = hFileBuffer = 0; + + if (!HLPFILE_DoReadHlpFile(hlpfile, lpszPath)) + { + HLPFILE_FreeHlpFile(hlpfile); + hlpfile = 0; + } + + if (phrases.hBuffer) GlobalFree(phrases.hBuffer); + if (topic.hBuffer) GlobalFree(topic.hBuffer); + if (topic.hMap) GlobalFree(topic.hMap); + if (hFileBuffer) GlobalFree(hFileBuffer); + + return(hlpfile); +} + +/*********************************************************************** + * + * HLPFILE_DoReadHlpFile + */ + +static BOOL HLPFILE_DoReadHlpFile(HLPFILE *hlpfile, LPCSTR lpszPath) +{ + BOOL ret; + HFILE hFile; + OFSTRUCT ofs; + BYTE *buf; + + hFile=OpenFile(lpszPath, &ofs, OF_READ | OF_SEARCH); + if (hFile == HFILE_ERROR) return FALSE; + + ret = HLPFILE_ReadFileToBuffer(hFile); + _lclose(hFile); + if (!ret) return FALSE; + + HLPFILE_SystemCommands(hlpfile); + if (!HLPFILE_Uncompress1_Phrases()) return FALSE; + if (!HLPFILE_Uncompress1_Topic()) return FALSE; + + buf = topic.map[0] + 0xc; + while(buf + 0xc < topic.end) + { + BYTE *end = MIN(buf + GET_UINT(buf, 0), topic.end); + UINT next, index, offset; + + switch (buf[0x14]) + { + case 0x02: + if (!HLPFILE_AddPage(hlpfile, buf, end)) return(FALSE); + break; + + case 0x20: + if (!HLPFILE_AddParagraph(hlpfile, buf, end)) return(FALSE); + break; + + case 0x23: + if (!HLPFILE_AddParagraph(hlpfile, buf, end)) return(FALSE); + break; + + default: + fprintf(stderr, "buf[0x14] = %x\n", buf[0x14]); + } + + next = GET_UINT(buf, 0xc); + if (next == 0xffffffff) break; + + index = next >> 14; + offset = next & 0x3fff; + if (index > topic.wMapLen) {Report("maplen"); break;} + buf = topic.map[index] + offset; + } + + return(HLPFILE_GetContext(hlpfile)); +} + +/*********************************************************************** + * + * HLPFILE_AddPage + */ + +static BOOL HLPFILE_AddPage(HLPFILE *hlpfile, BYTE *buf, BYTE *end) +{ + HGLOBAL hPage; + HLPFILE_PAGE *page, **pageptr; + BYTE *title; + UINT titlesize; + + for (pageptr = &hlpfile->first_page; *pageptr; pageptr = &(*pageptr)->next) + /* Nothing */; + + if (buf + 0x31 > end) {Report("page1"); return(FALSE);}; + title = buf + GET_UINT(buf, 0x10); + if (title > end) {Report("page2"); return(FALSE);}; + + titlesize = HLPFILE_Uncompressed2_Size(title, end); + hPage = GlobalAlloc(GMEM_FIXED, sizeof(HLPFILE_PAGE) + titlesize); + if (!hPage) return FALSE; + page = *pageptr = GlobalLock(hPage); + pageptr = &page->next; + page->hSelf = hPage; + page->file = hlpfile; + page->next = 0; + page->first_paragraph = 0; + + page->lpszTitle = GlobalLock(hPage); + page->lpszTitle += sizeof(HLPFILE_PAGE); + HLPFILE_Uncompress2(&title, end, page->lpszTitle); + + page->wNumber = GET_UINT(buf, 0x21); + + attributes.bDebug = 0; + attributes.wFont = 0; + attributes.wVSpace = 0; + attributes.wVBackSpace = 0; + attributes.wHSpace = 0; + attributes.wIndent = 0; + attributes.link.lpszPath = 0; + + return TRUE; +} + +/*********************************************************************** + * + * HLPFILE_AddParagraph + */ + +static BOOL HLPFILE_AddParagraph(HLPFILE *hlpfile, BYTE *buf, BYTE *end) +{ + HGLOBAL hParagraph; + HLPFILE_PAGE *page; + HLPFILE_PARAGRAPH *paragraph, **paragraphptr; + UINT textsize; + BYTE *format, *text; + BOOL format_header = TRUE; + BOOL format_end = FALSE; + UINT mask, i; + + if (!hlpfile->first_page) {Report("paragraph1"); return(FALSE);}; + + for (page = hlpfile->first_page; page->next; page = page->next) /* Nothing */; + for (paragraphptr = &page->first_paragraph; *paragraphptr; + paragraphptr = &(*paragraphptr)->next) /* Nothing */; + + if (buf + 0x19 > end) {Report("paragraph2"); return(FALSE);}; + + if (buf[0x14] == 0x02) return TRUE; + + text = buf + GET_UINT(buf, 0x10); + + switch (buf[0x14]) + { + case 0x20: + format = buf + 0x18; + while (*format) format++; + format += 4; + break; + + case 0x23: + format = buf + 0x2b; + if (buf[0x17] & 1) format++; + break; + + default: + Report("paragraph3"); + return FALSE; + } + + while (text < end) + { + if (format_header) + { + format_header = FALSE; + + mask = GET_USHORT(format, 0); + mask &= 0x3ff; + format += 2; + + for (i = 0; i < 10; i++, mask = mask >> 1) + { + if (mask & 1) + { + BOOL twoargs = FALSE; + CHAR prefix0 = ' '; + CHAR prefix1 = '*'; + + if (i == 9 && !twoargs) + { + switch (*format++) + { + default: + prefix0 = prefix1 = '?'; + break; + + case 0x82: + prefix0 = prefix1 = 'x'; + break; + + case 0x84: + prefix0 = prefix1 = 'X'; + twoargs = TRUE; + } + } + + if (*format & 1) + switch(*format) + { + default: + format += 2; + break; + } + else + switch(*format) + { + + default: + format++; + break; + + case 0x08: + format += 3; + break; + } + + if (twoargs) format += (*format & 1) ? 2 : 1; + } + } + } + + for (; !format_header && text < end && format < end && !*text; text++) + { + switch(*format) + { + case 0x80: + attributes.wFont = GET_USHORT(format, 1); + format += 3; + break; + + case 0x81: + attributes.wVSpace++; + format += 1; + break; + + case 0x82: + attributes.wVSpace += 2 - attributes.wVBackSpace; + attributes.wVBackSpace = 0; + attributes.wIndent = 0; + format += 1; + break; + + case 0x83: + attributes.wIndent++; + format += 1; + break; + + case 0x84: + format += 3; + break; + + case 0x86: + case 0x87: + case 0x88: + format += 9; + break; + + case 0x89: + attributes.wVBackSpace++; + format += 1; + break; + + case 0xa9: + format += 2; + break; + + case 0xe2: + case 0xe3: + attributes.link.lpszPath = hlpfile->lpszPath; + attributes.link.lHash = GET_UINT(format, 1); + attributes.link.bPopup = !(*format & 1); + format += 5; + break; + + case 0xea: + attributes.link.lpszPath = format + 8; + attributes.link.lHash = GET_UINT(format, 4); + attributes.link.bPopup = !(*format & 1); + format += 3 + GET_USHORT(format, 1); + break; + + case 0xff: + if (buf[0x14] != 0x23 || GET_USHORT(format, 1) == 0xffff) + { + if (format_end) Report("format_end"); + format_end = TRUE; + break; + } + else + { + format_header = TRUE; + format += 10; + break; + } + + default: + Report("format"); + format++; + } + } + + if (text > end || format > end) {Report("paragraph_end"); return(FALSE);}; + if (text == end && !format_end) Report("text_end"); + + if (text == end) break; + + textsize = HLPFILE_Uncompressed2_Size(text, end); + hParagraph = GlobalAlloc(GMEM_FIXED, sizeof(HLPFILE_PARAGRAPH) + textsize); + if (!hParagraph) return FALSE; + paragraph = *paragraphptr = GlobalLock(hParagraph); + paragraphptr = ¶graph->next; + paragraph->hSelf = hParagraph; + paragraph->next = 0; + paragraph->link = 0; + + paragraph->lpszText = GlobalLock(hParagraph); + paragraph->lpszText += sizeof(HLPFILE_PARAGRAPH); + HLPFILE_Uncompress2(&text, end, paragraph->lpszText); + + paragraph->bDebug = attributes.bDebug; + paragraph->wFont = attributes.wFont; + paragraph->wVSpace = attributes.wVSpace; + paragraph->wHSpace = attributes.wHSpace; + paragraph->wIndent = attributes.wIndent; + if (attributes.link.lpszPath) + { + LPSTR ptr; + HGLOBAL handle = GlobalAlloc(GMEM_FIXED, sizeof(HLPFILE_LINK) + + strlen(attributes.link.lpszPath) + 1); + if (!handle) return FALSE; + paragraph->link = GlobalLock(handle); + paragraph->link->hSelf = handle; + + ptr = GlobalLock(handle); + ptr += sizeof(HLPFILE_LINK); + lstrcpy(ptr, (LPSTR) attributes.link.lpszPath); + + paragraph->link->lpszPath = ptr; + paragraph->link->lHash = attributes.link.lHash; + paragraph->link->bPopup = attributes.link.bPopup; + } + + attributes.bDebug = 0; + attributes.wVSpace = 0; + attributes.wHSpace = 0; + attributes.link.lpszPath = 0; + } + + return TRUE; +} + +/*********************************************************************** + * + * HLPFILE_ReadFileToBuffer + */ + +static BOOL HLPFILE_ReadFileToBuffer(HFILE hFile) +{ + BYTE header[16], dummy[1]; + UINT size; + + if (_hread(hFile, header, 16) != 16) {Report("header"); return(FALSE);}; + + size = GET_UINT(header, 12); + hFileBuffer = GlobalAlloc(GMEM_FIXED, size + 1); + if (!hFileBuffer) return FALSE; + file_buffer = GlobalLock(hFileBuffer); + + memcpy(file_buffer, header, 16); + if (_hread(hFile, file_buffer + 16, size - 16) != size - 16) + {Report("filesize1"); return(FALSE);}; + + if (_hread(hFile, dummy, 1) != 0) Report("filesize2"); + + file_buffer[size] = '0'; + + return TRUE; +} + +/*********************************************************************** + * + * HLPFILE_FindSubFile + */ + +static BOOL HLPFILE_FindSubFile(LPCSTR name, BYTE **subbuf, BYTE **subend) +{ + BYTE *root = file_buffer + GET_UINT(file_buffer, 4); + BYTE *end = file_buffer + GET_UINT(file_buffer, 12); + BYTE *ptr = root + 0x37; + + while (ptr < end && ptr[0] == 0x7c) + { + BYTE *fname = ptr + 1; + ptr += strlen(ptr) + 1; + if (!lstrcmpi(fname, name)) + { + *subbuf = file_buffer + GET_UINT(ptr, 0); + *subend = *subbuf + GET_UINT(*subbuf, 0); + if (file_buffer > *subbuf || *subbuf > *subend || *subend >= end) + { + Report("subfile"); + return FALSE; + } + return TRUE; + } + else ptr += 4; + } + return FALSE; +} + +/*********************************************************************** + * + * HLPFILE_SystemCommands + */ +static VOID HLPFILE_SystemCommands(HLPFILE* hlpfile) +{ + BYTE *buf, *ptr, *end; + HGLOBAL handle; + HLPFILE_MACRO *macro, **m; + LPSTR p; + + hlpfile->lpszTitle = ""; + + if (!HLPFILE_FindSubFile("SYSTEM", &buf, &end)) return; + + for (ptr = buf + 0x15; ptr + 4 <= end; ptr += GET_USHORT(ptr, 2) + 4) + { + switch (GET_USHORT(ptr, 0)) + { + case 1: + if (hlpfile->hTitle) {Report("title"); break;} + hlpfile->hTitle = GlobalAlloc(GMEM_FIXED, strlen(ptr + 4) + 1); + if (!hlpfile->hTitle) return; + hlpfile->lpszTitle = GlobalLock(hlpfile->hTitle); + lstrcpy(hlpfile->lpszTitle, ptr + 4); + break; + + case 2: + if (GET_USHORT(ptr, 2) != 1 || ptr[4] != 0) Report("system2"); + break; + + case 3: + if (GET_USHORT(ptr, 2) != 4 || GET_UINT(ptr, 4) != 0) Report("system3"); + break; + + case 4: + handle = GlobalAlloc(GMEM_FIXED, sizeof(HLPFILE_MACRO) + lstrlen(ptr + 4) + 1); + if (!handle) break; + macro = GlobalLock(handle); + macro->hSelf = handle; + p = GlobalLock(handle); + p += sizeof(HLPFILE_MACRO); + lstrcpy(p, (LPSTR) ptr + 4); + macro->lpszMacro = p; + macro->next = 0; + for (m = &hlpfile->first_macro; *m; m = &(*m)->next); + *m = macro; + break; + + default: + Report("system"); + } + } +} + +/*********************************************************************** + * + * HLPFILE_Uncompressed1_Size + */ + +static INT HLPFILE_Uncompressed1_Size(BYTE *ptr, BYTE *end) +{ + INT i, newsize = 0; + + while (ptr < end) + { + INT mask=*ptr++; + for (i = 0; i < 8 && ptr < end; i++, mask = mask >> 1) + { + if (mask & 1) + { + INT code = GET_USHORT(ptr, 0); + INT len = 3 + (code >> 12); + newsize += len; + ptr += 2; + } + else newsize++, ptr++; + } + } + + return(newsize); +} + +/*********************************************************************** + * + * HLPFILE_Uncompress1 + */ + +static BYTE *HLPFILE_Uncompress1(BYTE *ptr, BYTE *end, BYTE *newptr) +{ + INT i; + + while (ptr < end) + { + INT mask=*ptr++; + for (i = 0; i < 8 && ptr < end; i++, mask = mask >> 1) + { + if (mask & 1) + { + INT code = GET_USHORT(ptr, 0); + INT len = 3 + (code >> 12); + INT offset = code & 0xfff; + hmemcpy(newptr, newptr - offset - 1, len); + newptr += len; + ptr += 2; + } + else *newptr++ = *ptr++; + } + } + + return(newptr); +} + +/*********************************************************************** + * + * HLPFILE_Uncompress1_Phrases + */ + +static BOOL HLPFILE_Uncompress1_Phrases() +{ + UINT i, num, newsize; + BYTE *buf, *end, *newbuf; + + if (!HLPFILE_FindSubFile("Phrases", &buf, &end)) {Report("phrases0"); return FALSE;} + + num = phrases.num = GET_USHORT(buf, 9); + if (buf + 2 * num + 0x13 >= end) {Report("uncompress1a"); return(FALSE);}; + + newsize = 2 * num + 2; + newsize += HLPFILE_Uncompressed1_Size(buf + 0x13 + 2 * num, end); + phrases.hBuffer = GlobalAlloc(GMEM_FIXED, newsize); + if (!phrases.hBuffer) return FALSE; + newbuf = phrases.buf = GlobalLock(phrases.hBuffer); + + hmemcpy(newbuf, buf + 0x11, 2 * num + 2); + HLPFILE_Uncompress1(buf + 0x13 + 2 * num, end, newbuf + 2 * num + 2); + + for (i = 0; i < num; i++) + { + INT i0 = GET_USHORT(newbuf, 2 * i); + INT i1 = GET_USHORT(newbuf, 2 * i + 2); + if (i1 < i0 || i1 > newsize) {Report("uncompress1b"); return(FALSE);}; + } + return TRUE; +} + +/*********************************************************************** + * + * HLPFILE_Uncompress1_Topic + */ + +static BOOL HLPFILE_Uncompress1_Topic() +{ + BYTE *buf, *ptr, *end, *newptr; + INT i, newsize = 0; + + if (!HLPFILE_FindSubFile("TOPIC", &buf, &end)) {Report("topic0"); return FALSE;} + + buf += 9; + topic.wMapLen = (end - buf - 1) / 0x1000 + 1; + + for (i = 0; i < topic.wMapLen; i++) + { + ptr = buf + i * 0x1000; + + /* I don't know why, it's necessary for printman.hlp */ + if (ptr + 0x44 > end) ptr = end - 0x44; + + newsize += HLPFILE_Uncompressed1_Size(ptr + 0xc, MIN(end, ptr + 0x1000)); + } + + topic.hMap = GlobalAlloc(GMEM_FIXED, topic.wMapLen * sizeof(topic.map[0])); + topic.hBuffer = GlobalAlloc(GMEM_FIXED, newsize); + if (!topic.hMap || !topic.hBuffer) return FALSE; + topic.map = GlobalLock(topic.hMap); + newptr = GlobalLock(topic.hBuffer); + topic.end = newptr + newsize; + + for (i = 0; i < topic.wMapLen; i++) + { + ptr = buf + i * 0x1000; + if (ptr + 0x44 > end) ptr = end - 0x44; + + topic.map[i] = newptr - 0xc; + newptr = HLPFILE_Uncompress1(ptr + 0xc, MIN(end, ptr + 0x1000), newptr); + } + + return TRUE; +} + +/*********************************************************************** + * + * HLPFILE_Uncompressed2_Size + */ + +static UINT HLPFILE_Uncompressed2_Size(BYTE *ptr, BYTE *end) +{ + UINT wSize = 0; + + while (ptr < end && *ptr) + { + if (*ptr >= 0x20) + wSize++, ptr++; + else + { + BYTE *phptr, *phend; + UINT code = 0x100 * ptr[0] + ptr[1]; + UINT index = (code - 0x100) / 2; + BOOL space = code & 1; + + if (index < phrases.num) + { + phptr = phrases.buf + GET_USHORT(phrases.buf, 2 * index); + phend = phrases.buf + GET_USHORT(phrases.buf, 2 * index + 2); + + if (phend < phptr) Report("uncompress2a"); + + wSize += phend - phptr; + if (space) wSize++; + } + else Report("uncompress2b"); + + ptr += 2; + } + } + + return(wSize + 1); +} + +/*********************************************************************** + * + * HLPFILE_Uncompress2 + */ + +static VOID HLPFILE_Uncompress2(BYTE **pptr, BYTE *end, BYTE *newptr) +{ + BYTE *ptr = *pptr; + + while (ptr < end && *ptr) + { + if (*ptr >= 0x20) + *newptr++ = *ptr++; + else + { + BYTE *phptr, *phend; + UINT code = 0x100 * ptr[0] + ptr[1]; + UINT index = (code - 0x100) / 2; + BOOL space = code & 1; + + phptr = phrases.buf + GET_USHORT(phrases.buf, 2 * index); + phend = phrases.buf + GET_USHORT(phrases.buf, 2 * index + 2); + + hmemcpy(newptr, phptr, phend - phptr); + newptr += phend - phptr; + if (space) *newptr++ = ' '; + + ptr += 2; + } + } + *newptr = '\0'; + *pptr = ptr; +} + +/*********************************************************************** + * + * HLPFILE_GetContext + */ + +static BOOL HLPFILE_GetContext(HLPFILE *hlpfile) +{ + UINT i, j, clen, tlen; + BYTE *cbuf, *cptr, *cend, *tbuf, *tptr, *tend; + + if (!HLPFILE_FindSubFile("CONTEXT", &cbuf, &cend)) {Report("context0"); return FALSE;} + if (cbuf + 0x37 > cend) {Report("context1"); return(FALSE);}; + clen = GET_UINT(cbuf, 0x2b); + if (cbuf + 0x37 + 8 * hlpfile->wContextLen > cend) {Report("context2"); return(FALSE);}; + + if (!HLPFILE_FindSubFile("TTLBTREE", &tbuf, &tend)) {Report("ttlb0"); return FALSE;} + if (tbuf + 0x37 > tend) {Report("ttlb1"); return(FALSE);}; + tlen = GET_UINT(tbuf, 0x2b); + + hlpfile->hContext = GlobalAlloc(GMEM_FIXED, clen * sizeof(HLPFILE_CONTEXT)); + if (!hlpfile->hContext) return FALSE; + hlpfile->Context = GlobalLock(hlpfile->hContext); + hlpfile->wContextLen = clen; + + cptr = cbuf + 0x37; + for (i = 0; i < clen; i++, cptr += 8) + { + tptr = tbuf + 0x37; + for (j = 0; j < tlen; j++, tptr += 5 + strlen(tptr + 4)) + { + if (tptr + 4 >= tend) {Report("ttlb2"); return(FALSE);}; + if (GET_UINT(tptr, 0) == GET_UINT(cptr, 4)) break; + } + if (j >= tlen) + { + Report("ttlb3"); + j = 0; + } + hlpfile->Context[i].lHash = GET_UINT(cptr, 0); + hlpfile->Context[i].wPage = j; + } + + return TRUE; +} + +/*********************************************************************** + * + * HLPFILE_DeleteParagraph + */ + +static VOID HLPFILE_DeleteParagraph(HLPFILE_PARAGRAPH* paragraph) +{ + if (!paragraph) return; + + if (paragraph->link) GlobalFree(paragraph->link->hSelf); + + HLPFILE_DeleteParagraph(paragraph->next); + GlobalFree(paragraph->hSelf); +} + +/*********************************************************************** + * + * DeletePage + */ + +static VOID HLPFILE_DeletePage(HLPFILE_PAGE* page) +{ + if (!page) return; + + HLPFILE_DeletePage(page->next); + HLPFILE_DeleteParagraph(page->first_paragraph); + GlobalFree(page->hSelf); +} + +/*********************************************************************** + * + * DeleteMacro + */ + +static VOID HLPFILE_DeleteMacro(HLPFILE_MACRO* macro) +{ + if (!macro) return; + + HLPFILE_DeleteMacro(macro->next); + GlobalFree(macro->hSelf); +} + +/*********************************************************************** + * + * HLPFILE_FreeHlpFile + */ + +VOID HLPFILE_FreeHlpFile(HLPFILE* hlpfile) +{ + if (!hlpfile) return; + if (--hlpfile->wRefCount) return; + + if (hlpfile->next) hlpfile->next->prev = hlpfile->prev; + if (hlpfile->prev) hlpfile->prev->next = hlpfile->next; + else first_hlpfile = 0; + + HLPFILE_DeletePage(hlpfile->first_page); + HLPFILE_DeleteMacro(hlpfile->first_macro); + GlobalFree(hlpfile->hContext); + GlobalFree(hlpfile->hTitle); + GlobalFree(hlpfile->hSelf); +} + +/*********************************************************************** + * + * FreeHlpFilePage + */ + +VOID HLPFILE_FreeHlpFilePage(HLPFILE_PAGE* page) +{ + if (!page) return; + HLPFILE_FreeHlpFile(page->file); +} + +/* Local Variables: */ +/* c-file-style: "GNU" */ +/* End: */ diff --git a/programs/winhelp/hlpfile.h b/programs/winhelp/hlpfile.h new file mode 100644 index 00000000000..fb525dba75d --- /dev/null +++ b/programs/winhelp/hlpfile.h @@ -0,0 +1,90 @@ +/* + * Help Viewer + * + * Copyright 1996 Ulrich Schmid + */ + +struct tagHelpFile; + +typedef struct +{ + LPCSTR lpszPath; + LONG lHash; + BOOL bPopup; + + HGLOBAL hSelf; +} HLPFILE_LINK; + +typedef struct tagHlpFileParagraph +{ + LPSTR lpszText; + + UINT bDebug; + UINT wFont; + UINT wIndent; + UINT wHSpace; + UINT wVSpace; + + HLPFILE_LINK *link; + + struct tagHlpFileParagraph *next; + + HGLOBAL hSelf; +} HLPFILE_PARAGRAPH; + +typedef struct tagHlpFilePage +{ + LPSTR lpszTitle; + HLPFILE_PARAGRAPH *first_paragraph; + + UINT wNumber; + + struct tagHlpFilePage *next; + struct tagHlpFileFile *file; + + HGLOBAL hSelf; +} HLPFILE_PAGE; + +typedef struct +{ + LONG lHash; + UINT wPage; +} HLPFILE_CONTEXT; + +typedef struct tagHlpFileMacro +{ + LPCSTR lpszMacro; + + HGLOBAL hSelf; + struct tagHlpFileMacro *next; +} HLPFILE_MACRO; + +typedef struct tagHlpFileFile +{ + LPSTR lpszPath; + LPSTR lpszTitle; + HLPFILE_PAGE *first_page; + HLPFILE_MACRO *first_macro; + UINT wContextLen; + HLPFILE_CONTEXT *Context; + + struct tagHlpFileFile *prev; + struct tagHlpFileFile *next; + + UINT wRefCount; + + HGLOBAL hTitle; + HGLOBAL hContext; + HGLOBAL hSelf; +} HLPFILE; + +HLPFILE *HLPFILE_ReadHlpFile(LPCSTR lpszPath); +HLPFILE_PAGE *HLPFILE_Contents(LPCSTR lpszPath); +HLPFILE_PAGE *HLPFILE_PageByHash(LPCSTR lpszPath, LONG wNum); +LONG HLPFILE_Hash(LPCSTR lpszContext); +VOID HLPFILE_FreeHlpFilePage(HLPFILE_PAGE*); +VOID HLPFILE_FreeHlpFile(HLPFILE*); + +/* Local Variables: */ +/* c-file-style: "GNU" */ +/* End: */ diff --git a/programs/winhelp/macro.c b/programs/winhelp/macro.c new file mode 100644 index 00000000000..73552708daf --- /dev/null +++ b/programs/winhelp/macro.c @@ -0,0 +1,555 @@ +/* + * Help Viewer + * + * Copyright 1996 Ulrich Schmid + */ + +#include <stdio.h> +#include <windows.h> +#include <commdlg.h> +#ifdef WINELIB +#include <shell.h> +#endif +#include "winhelp.h" +#include "macro.h" + +VOID MACRO_About(VOID) +{ + fprintf(stderr, "About()\n"); +} + +VOID MACRO_AddAccelerator(LONG u1, LONG u2, LPCSTR str) +{ + fprintf(stderr, "AddAccelerator(%lu, %lu, \"%s\")\n", u1, u2, str); +} + +VOID MACRO_ALink(LPCSTR str1, LONG u, LPCSTR str2) +{ + fprintf(stderr, "ALink(\"%s\", %lu, \"%s\")\n", str1, u, str2); +} + +VOID MACRO_Annotate(VOID) +{ + fprintf(stderr, "Annotate()\n"); +} + +VOID MACRO_AppendItem(LPCSTR str1, LPCSTR str2, LPCSTR str3, LPCSTR str4) +{ + fprintf(stderr, "AppendItem(\"%s\", \"%s\", \"%s\", \"%s\")\n", str1, str2, str3, str4); +} + +VOID MACRO_Back(VOID) +{ + fprintf(stderr, "Back()\n"); +} + +VOID MACRO_BackFlush(VOID) +{ + fprintf(stderr, "BackFlush()\n"); +} + +VOID MACRO_BookmarkDefine(VOID) +{ + fprintf(stderr, "BookmarkDefine()\n"); +} + +VOID MACRO_BookmarkMore(VOID) +{ + fprintf(stderr, "BookmarkMore()\n"); +} + +VOID MACRO_BrowseButtons(VOID) +{ + MACRO_CreateButton("BTN_PREV", "&<<", "Prev()"); + MACRO_CreateButton("BTN_NEXT", "&>>", "Next()"); +} + +VOID MACRO_ChangeButtonBinding(LPCSTR str1, LPCSTR str2) +{ + fprintf(stderr, "ChangeButtonBinding(\"%s\", \"%s\")\n", str1, str2); +} + +VOID MACRO_ChangeEnable(LPCSTR str1, LPCSTR str2) +{ + fprintf(stderr, "ChangeEnable(\"%s\", \"%s\")\n", str1, str2); +} + +VOID MACRO_ChangeItemBinding(LPCSTR str1, LPCSTR str2) +{ + fprintf(stderr, "ChangeItemBinding(\"%s\", \"%s\")\n", str1, str2); +} + +VOID MACRO_CheckItem(LPCSTR str) +{ + fprintf(stderr, "CheckItem(\"%s\")\n", str); +} + +VOID MACRO_CloseSecondarys(VOID) +{ + WINHELP_WINDOW *win; + for (win = Globals.win_list; win; win = win->next) + if (win->lpszName && lstrcmpi(win->lpszName, "main")) + DestroyWindow(win->hMainWnd); +} + +VOID MACRO_CloseWindow(LPCSTR lpszWindow) +{ + WINHELP_WINDOW *win; + if (!lpszWindow || !lpszWindow[0]) lpszWindow = "main"; + + for (win = Globals.win_list; win; win = win->next) + if (win->lpszName && !lstrcmpi(win->lpszName, lpszWindow)) + DestroyWindow(win->hMainWnd); +} + +VOID MACRO_Compare(LPCSTR str) +{ + fprintf(stderr, "Compare(\"%s\")\n", str); +} + +VOID MACRO_Contents(VOID) +{ + if (Globals.active_win->page) + MACRO_JumpContents(Globals.active_win->page->file->lpszPath, NULL); +} + +VOID MACRO_ControlPanel(LPCSTR str1, LPCSTR str2, LONG u) +{ + fprintf(stderr, "ControlPanel(\"%s\", \"%s\", %lu)\n", str1, str2, u); +} + +VOID MACRO_CopyDialog(VOID) +{ + fprintf(stderr, "CopyDialog()\n"); +} + +VOID MACRO_CopyTopic(VOID) +{ + fprintf(stderr, "CopyTopic()\n"); +} + +VOID MACRO_CreateButton(LPCSTR id, LPCSTR name, LPCSTR macro) +{ + WINHELP_WINDOW *win = Globals.active_win; + WINHELP_BUTTON *button, **b; + LONG size; + HGLOBAL handle; + LPSTR ptr; + + size = sizeof(WINHELP_BUTTON) + lstrlen(id) + lstrlen(name) + lstrlen(macro) + 3; + handle = GlobalAlloc(GMEM_FIXED, size); + if (!handle) return; + + button = GlobalLock(handle); + button->hSelf = handle; + button->next = 0; + button->hWnd = 0; + + ptr = GlobalLock(handle); + ptr += sizeof(WINHELP_BUTTON); + + lstrcpy(ptr, (LPSTR) id); + button->lpszID = ptr; + ptr += lstrlen(id) + 1; + + lstrcpy(ptr, (LPSTR) name); + button->lpszName = ptr; + ptr += lstrlen(name) + 1; + + lstrcpy(ptr, (LPSTR) macro); + button->lpszMacro = ptr; + + button->wParam = WH_FIRST_BUTTON; + for (b = &win->first_button; *b; b = &(*b)->next) + button->wParam = MAX(button->wParam, (*b)->wParam + 1); + *b = button; + + SendMessage(win->hMainWnd, WM_USER, 0, 0); +} + +VOID MACRO_DeleteItem(LPCSTR str) +{ + fprintf(stderr, "DeleteItem(\"%s\")\n", str); +} + +VOID MACRO_DeleteMark(LPCSTR str) +{ + fprintf(stderr, "DeleteMark(\"%s\")\n", str); +} + +VOID MACRO_DestroyButton(LPCSTR str) +{ + fprintf(stderr, "DestroyButton(\"%s\")\n", str); +} + +VOID MACRO_DisableButton(LPCSTR str) +{ + fprintf(stderr, "DisableButton(\"%s\")\n", str); +} + +VOID MACRO_DisableItem(LPCSTR str) +{ + fprintf(stderr, "DisableItem(\"%s\")\n", str); +} + +VOID MACRO_EnableButton(LPCSTR str) +{ + fprintf(stderr, "EnableButton(\"%s\")\n", str); +} + +VOID MACRO_EnableItem(LPCSTR str) +{ + fprintf(stderr, "EnableItem(\"%s\")\n", str); +} + +VOID MACRO_EndMPrint(VOID) +{ + fprintf(stderr, "EndMPrint()\n"); +} + +VOID MACRO_ExecFile(LPCSTR str1, LPCSTR str2, LONG u, LPCSTR str3) +{ + fprintf(stderr, "ExecFile(\"%s\", \"%s\", %lu, \"%s\")\n", str1, str2, u, str3); +} + +VOID MACRO_ExecProgram(LPCSTR str, LONG u) +{ + fprintf(stderr, "ExecProgram(\"%s\", %lu)\n", str, u); +} + +VOID MACRO_Exit(VOID) +{ + while(Globals.win_list) + DestroyWindow(Globals.win_list->hMainWnd); +} + +VOID MACRO_ExtAbleItem(LPCSTR str, LONG u) +{ + fprintf(stderr, "ExtAbleItem(\"%s\", %lu)\n", str, u); +} + +VOID MACRO_ExtInsertItem(LPCSTR str1, LPCSTR str2, LPCSTR str3, LPCSTR str4, LONG u1, LONG u2) +{ + fprintf(stderr, "ExtInsertItem(\"%s\", \"%s\", \"%s\", \"%s\", %lu, %lu)\n", str1, str2, str3, str4, u1, u2); +} + +VOID MACRO_ExtInsertMenu(LPCSTR str1, LPCSTR str2, LPCSTR str3, LONG u1, LONG u2) +{ + fprintf(stderr, "ExtInsertMenu(\"%s\", \"%s\", \"%s\", %lu, %lu)\n", str1, str2, str3, u1, u2); +} + +BOOL MACRO_FileExist(LPCSTR str) +{ + fprintf(stderr, "FileExist(\"%s\")\n", str); + return TRUE; +} + +VOID MACRO_FileOpen(VOID) +{ + OPENFILENAME openfilename; + CHAR szPath[MAX_PATHNAME_LEN]; + CHAR szDir[MAX_PATHNAME_LEN]; + CHAR szzFilter[2 * MAX_STRING_LEN + 100]; + LPSTR p = szzFilter; + + LoadString(Globals.hInstance, IDS_HELP_FILES_HLP, p, MAX_STRING_LEN); + p += strlen(p) + 1; + lstrcpy(p, "*.hlp"); + p += strlen(p) + 1; + LoadString(Globals.hInstance, IDS_ALL_FILES, p, MAX_STRING_LEN); + p += strlen(p) + 1; + lstrcpy(p, "*.*"); + p += strlen(p) + 1; + *p = '\0'; + + GetWindowsDirectory(szDir, sizeof(szDir)); + + openfilename.lStructSize = 0; + openfilename.hwndOwner = Globals.active_win->hMainWnd; + openfilename.hInstance = Globals.hInstance; + openfilename.lpstrFilter = szzFilter; + openfilename.lpstrCustomFilter = 0; + openfilename.nMaxCustFilter = 0; + openfilename.nFilterIndex = 0; + openfilename.lpstrFile = szPath; + openfilename.nMaxFile = sizeof(szPath); + openfilename.lpstrFileTitle = 0; + openfilename.nMaxFileTitle = 0; + openfilename.lpstrInitialDir = szDir; + openfilename.lpstrTitle = 0; + openfilename.Flags = 0; + openfilename.nFileOffset = 0; + openfilename.nFileExtension = 0; + openfilename.lpstrDefExt = 0; + openfilename.lCustData = 0; + openfilename.lpfnHook = 0; + openfilename.lpTemplateName = 0; + + if (GetOpenFileName(&openfilename)) + WINHELP_CreateHelpWindow(szPath, 0, "main", FALSE, NULL, NULL, SW_SHOWNORMAL); +} + +VOID MACRO_Find(VOID) +{ + fprintf(stderr, "Find()\n"); +} + +VOID MACRO_Finder(VOID) +{ + fprintf(stderr, "Finder()\n"); +} + +VOID MACRO_FloatingMenu(VOID) +{ + fprintf(stderr, "FloatingMenu()\n"); +} + +VOID MACRO_Flush(VOID) +{ + fprintf(stderr, "Flush()\n"); +} + +VOID MACRO_FocusWindow(LPCSTR str) +{ + fprintf(stderr, "FocusWindow(\"%s\")\n", str); +} + +VOID MACRO_Generate(LPCSTR str, WPARAM w, LPARAM l) +{ + fprintf(stderr, "Generate(\"%s\", %x, %lx)\n", str, w, l); +} + +VOID MACRO_GotoMark(LPCSTR str) +{ + fprintf(stderr, "GotoMark(\"%s\")\n", str); +} + +VOID MACRO_HelpOn(VOID) +{ + MACRO_JumpContents((Globals.wVersion > 4) ? "winhelp32.hlp" : "winhelp.hlp", NULL); +} + +VOID MACRO_HelpOnTop(VOID) +{ + fprintf(stderr, "HelpOnTop()\n"); +} + +VOID MACRO_History(VOID) +{ + fprintf(stderr, "History()\n"); +} + +BOOL MACRO_InitMPrint(VOID) +{ + fprintf(stderr, "InitMPrint()\n"); + return FALSE; +} + +VOID MACRO_InsertItem(LPCSTR str1, LPCSTR str2, LPCSTR str3, LPCSTR str4, LONG u) +{ + fprintf(stderr, "InsertItem(\"%s\", \"%s\", \"%s\", \"%s\", %lu)\n", str1, str2, str3, str4, u); +} + +VOID MACRO_InsertMenu(LPCSTR str1, LPCSTR str2, LONG u) +{ + fprintf(stderr, "InsertMenu(\"%s\", \"%s\", %lu)\n", str1, str2, u); +} + +BOOL MACRO_IsBook(VOID) +{ + fprintf(stderr, "IsBook()\n"); + return TRUE; +} + +BOOL MACRO_IsMark(LPCSTR str) +{ + fprintf(stderr, "IsMark(\"%s\")\n", str); + return FALSE; +} + +BOOL MACRO_IsNotMark(LPCSTR str) +{ + fprintf(stderr, "IsNotMark(\"%s\")\n", str); + return TRUE; +} + +VOID MACRO_JumpContents(LPCSTR lpszPath, LPCSTR lpszWindow) +{ + WINHELP_CreateHelpWindow(lpszPath, 0, lpszWindow, FALSE, NULL, NULL, SW_NORMAL); +} + +VOID MACRO_JumpContext(LPCSTR lpszPath, LPCSTR lpszWindow, LONG context) +{ + fprintf(stderr, "JumpContext(\"%s\", \"%s\", %lu)\n", lpszPath, lpszWindow, context); +} + +VOID MACRO_JumpHash(LPCSTR lpszPath, LPCSTR lpszWindow, LONG lHash) +{ + WINHELP_CreateHelpWindow(lpszPath, lHash, lpszWindow, FALSE, NULL, NULL, SW_NORMAL); +} + +VOID MACRO_JumpHelpOn(VOID) +{ + fprintf(stderr, "JumpHelpOn()\n"); +} + +VOID MACRO_JumpID(LPCSTR lpszPath, LPCSTR lpszWindow, LPCSTR topic_id) +{ + MACRO_JumpHash(lpszPath, lpszWindow, HLPFILE_Hash(topic_id)); +} + +VOID MACRO_JumpKeyword(LPCSTR lpszPath, LPCSTR lpszWindow, LPCSTR keyword) +{ + fprintf(stderr, "JumpKeyword(\"%s\", \"%s\", \"%s\")\n", lpszPath, lpszWindow, keyword); +} + +VOID MACRO_KLink(LPCSTR str1, LONG u, LPCSTR str2, LPCSTR str3) +{ + fprintf(stderr, "KLink(\"%s\", %lu, \"%s\", \"%s\")\n", str1, u, str2, str3); +} + +VOID MACRO_Menu(VOID) +{ + fprintf(stderr, "Menu()\n"); +} + +VOID MACRO_MPrintHash(LONG u) +{ + fprintf(stderr, "MPrintHash(%lu)\n", u); +} + +VOID MACRO_MPrintID(LPCSTR str) +{ + fprintf(stderr, "MPrintID(\"%s\")\n", str); +} + +VOID MACRO_Next(VOID) +{ + fprintf(stderr, "Next()\n"); +} + +VOID MACRO_NoShow(VOID) +{ + fprintf(stderr, "NoShow()\n"); +} + +VOID MACRO_PopupContext(LPCSTR str, LONG u) +{ + fprintf(stderr, "PopupContext(\"%s\", %lu)\n", str, u); +} + +VOID MACRO_PopupHash(LPCSTR str, LONG u) +{ + fprintf(stderr, "PopupHash(\"%s\", %lu)\n", str, u); +} + +VOID MACRO_PopupId(LPCSTR str1, LPCSTR str2) +{ + fprintf(stderr, "PopupId(\"%s\", \"%s\")\n", str1, str2); +} + +VOID MACRO_PositionWindow(LONG i1, LONG i2, LONG u1, LONG u2, LONG u3, LPCSTR str) +{ + fprintf(stderr, "PositionWindow(%li, %li, %lu, %lu, %lu, \"%s\")\n", i1, i2, u1, u2, u3, str); +} + +VOID MACRO_Prev(VOID) +{ + fprintf(stderr, "Prev()\n"); +} + +VOID MACRO_Print(VOID) +{ + fprintf(stderr, "Print()\n"); +} + +VOID MACRO_PrinterSetup(VOID) +{ + fprintf(stderr, "PrinterSetup()\n"); +} + +VOID MACRO_RegisterRoutine(LPCSTR str1, LPCSTR str2, LPCSTR str3) +{ + fprintf(stderr, "RegisterRoutine(\"%s\", \"%s\", \"%s\")\n", str1, str2, str3); +} + +VOID MACRO_RemoveAccelerator(LONG u1, LONG u2) +{ + fprintf(stderr, "RemoveAccelerator(%lu, %lu)\n", u1, u2); +} + +VOID MACRO_ResetMenu(VOID) +{ + fprintf(stderr, "ResetMenu()\n"); +} + +VOID MACRO_SaveMark(LPCSTR str) +{ + fprintf(stderr, "SaveMark(\"%s\")\n", str); +} + +VOID MACRO_Search(VOID) +{ + fprintf(stderr, "Search()\n"); +} + +VOID MACRO_SetContents(LPCSTR str, LONG u) +{ + fprintf(stderr, "SetContents(\"%s\", %lu)\n", str, u); +} + +VOID MACRO_SetHelpOnFile(LPCSTR str) +{ + fprintf(stderr, "SetHelpOnFile(\"%s\")\n", str); +} + +VOID MACRO_SetPopupColor(LONG u1, LONG u2, LONG u3) +{ + fprintf(stderr, "SetPopupColor(%lu, %lu, %lu)\n", u1, u2, u3); +} + +VOID MACRO_ShellExecute(LPCSTR str1, LPCSTR str2, LONG u1, LONG u2, LPCSTR str3, LPCSTR str4) +{ + fprintf(stderr, "ShellExecute(\"%s\", \"%s\", %lu, %lu, \"%s\", \"%s\")\n", str1, str2, u1, u2, str3, str4); +} + +VOID MACRO_ShortCut(LPCSTR str1, LPCSTR str2, WPARAM w, LPARAM l, LPCSTR str) +{ + fprintf(stderr, "ShortCut(\"%s\", \"%s\", %x, %lx, \"%s\")\n", str1, str2, w, l, str); +} + +VOID MACRO_TCard(LONG u) +{ + fprintf(stderr, "TCard(%lu)\n", u); +} + +VOID MACRO_Test(LONG u) +{ + fprintf(stderr, "Test(%lu)\n", u); +} + +BOOL MACRO_TestALink(LPCSTR str) +{ + fprintf(stderr, "TestALink(\"%s\")\n", str); + return FALSE; +} + +BOOL MACRO_TestKLink(LPCSTR str) +{ + fprintf(stderr, "TestKLink(\"%s\")\n", str); + return FALSE; +} + +VOID MACRO_UncheckItem(LPCSTR str) +{ + fprintf(stderr, "UncheckItem(\"%s\")\n", str); +} + +VOID MACRO_UpdateWindow(LPCSTR str1, LPCSTR str2) +{ + fprintf(stderr, "UpdateWindow(\"%s\", \"%s\")\n", str1, str2); +} + +/* Local Variables: */ +/* c-file-style: "GNU" */ +/* End: */ diff --git a/programs/winhelp/macro.h b/programs/winhelp/macro.h new file mode 100644 index 00000000000..b09e8ddc451 --- /dev/null +++ b/programs/winhelp/macro.h @@ -0,0 +1,108 @@ +/* + * Help Viewer + * + * Copyright 1996 Ulrich Schmid + */ + +#include <windows.h> + +VOID MACRO_ExecuteMacro(LPCSTR); + +INT yyparse(VOID); +INT yylex(VOID); +VOID yyerror(LPCSTR); +extern CHAR MACRO_extra_separator; + +VOID MACRO_About(VOID); +VOID MACRO_AddAccelerator(LONG, LONG, LPCSTR); +VOID MACRO_ALink(LPCSTR, LONG, LPCSTR); +VOID MACRO_Annotate(VOID); +VOID MACRO_AppendItem(LPCSTR, LPCSTR, LPCSTR, LPCSTR); +VOID MACRO_Back(VOID); +VOID MACRO_BackFlush(VOID); +VOID MACRO_BookmarkDefine(VOID); +VOID MACRO_BookmarkMore(VOID); +VOID MACRO_BrowseButtons(VOID); +VOID MACRO_ChangeButtonBinding(LPCSTR, LPCSTR); +VOID MACRO_ChangeEnable(LPCSTR, LPCSTR); +VOID MACRO_ChangeItemBinding(LPCSTR, LPCSTR); +VOID MACRO_CheckItem(LPCSTR); +VOID MACRO_CloseSecondarys(VOID); +VOID MACRO_CloseWindow(LPCSTR); +VOID MACRO_Compare(LPCSTR); +VOID MACRO_Contents(VOID); +VOID MACRO_ControlPanel(LPCSTR, LPCSTR, LONG); +VOID MACRO_CopyDialog(VOID); +VOID MACRO_CopyTopic(VOID); +VOID MACRO_CreateButton(LPCSTR, LPCSTR, LPCSTR); +VOID MACRO_DeleteItem(LPCSTR); +VOID MACRO_DeleteMark(LPCSTR); +VOID MACRO_DestroyButton(LPCSTR); +VOID MACRO_DisableButton(LPCSTR); +VOID MACRO_DisableItem(LPCSTR); +VOID MACRO_EnableButton(LPCSTR); +VOID MACRO_EnableItem(LPCSTR); +VOID MACRO_EndMPrint(VOID); +VOID MACRO_ExecFile(LPCSTR, LPCSTR, LONG, LPCSTR); +VOID MACRO_ExecProgram(LPCSTR, LONG); +VOID MACRO_Exit(VOID); +VOID MACRO_ExtAbleItem(LPCSTR, LONG); +VOID MACRO_ExtInsertItem(LPCSTR, LPCSTR, LPCSTR, LPCSTR, LONG, LONG); +VOID MACRO_ExtInsertMenu(LPCSTR, LPCSTR, LPCSTR, LONG, LONG); +BOOL MACRO_FileExist(LPCSTR); +VOID MACRO_FileOpen(VOID); +VOID MACRO_Find(VOID); +VOID MACRO_Finder(VOID); +VOID MACRO_FloatingMenu(VOID); +VOID MACRO_Flush(VOID); +VOID MACRO_FocusWindow(LPCSTR); +VOID MACRO_Generate(LPCSTR, WPARAM, LPARAM); +VOID MACRO_GotoMark(LPCSTR); +VOID MACRO_HelpOn(VOID); +VOID MACRO_HelpOnTop(VOID); +VOID MACRO_History(VOID); +BOOL MACRO_InitMPrint(VOID); +VOID MACRO_InsertItem(LPCSTR, LPCSTR, LPCSTR, LPCSTR, LONG); +VOID MACRO_InsertMenu(LPCSTR, LPCSTR, LONG); +BOOL MACRO_IsBook(VOID); +BOOL MACRO_IsMark(LPCSTR); +BOOL MACRO_IsNotMark(LPCSTR); +VOID MACRO_JumpContents(LPCSTR, LPCSTR); +VOID MACRO_JumpContext(LPCSTR, LPCSTR, LONG); +VOID MACRO_JumpHash(LPCSTR, LPCSTR, LONG); +VOID MACRO_JumpHelpOn(VOID); +VOID MACRO_JumpID(LPCSTR, LPCSTR, LPCSTR); +VOID MACRO_JumpKeyword(LPCSTR, LPCSTR, LPCSTR); +VOID MACRO_KLink(LPCSTR, LONG, LPCSTR, LPCSTR); +VOID MACRO_Menu(VOID); +VOID MACRO_MPrintHash(LONG); +VOID MACRO_MPrintID(LPCSTR); +VOID MACRO_Next(VOID); +VOID MACRO_NoShow(VOID); +VOID MACRO_PopupContext(LPCSTR, LONG); +VOID MACRO_PopupHash(LPCSTR, LONG); +VOID MACRO_PopupId(LPCSTR, LPCSTR); +VOID MACRO_PositionWindow(LONG, LONG, LONG, LONG, LONG, LPCSTR); +VOID MACRO_Prev(VOID); +VOID MACRO_Print(VOID); +VOID MACRO_PrinterSetup(VOID); +VOID MACRO_RegisterRoutine(LPCSTR, LPCSTR, LPCSTR); +VOID MACRO_RemoveAccelerator(LONG, LONG); +VOID MACRO_ResetMenu(VOID); +VOID MACRO_SaveMark(LPCSTR); +VOID MACRO_Search(VOID); +VOID MACRO_SetContents(LPCSTR, LONG); +VOID MACRO_SetHelpOnFile(LPCSTR); +VOID MACRO_SetPopupColor(LONG, LONG, LONG); +VOID MACRO_ShellExecute(LPCSTR, LPCSTR, LONG, LONG, LPCSTR, LPCSTR); +VOID MACRO_ShortCut(LPCSTR, LPCSTR, WPARAM, LPARAM, LPCSTR); +VOID MACRO_TCard(LONG); +VOID MACRO_Test(LONG); +BOOL MACRO_TestALink(LPCSTR); +BOOL MACRO_TestKLink(LPCSTR); +VOID MACRO_UncheckItem(LPCSTR); +VOID MACRO_UpdateWindow(LPCSTR, LPCSTR); + +/* Local Variables: */ +/* c-file-style: "GNU" */ +/* End: */ diff --git a/programs/winhelp/macro.lex.l b/programs/winhelp/macro.lex.l new file mode 100644 index 00000000000..146c8eafe3b --- /dev/null +++ b/programs/winhelp/macro.lex.l @@ -0,0 +1,235 @@ +%{ +/* + * Help Viewer + * + * Copyright 1996 Ulrich Schmid + */ +%} +%x quote dquote +%x null_string +%{ +#include "macro.h" +#include "y.tab.h" + +static LPCSTR macroptr, firsttoken, thistoken, nexttoken, current_string; +static LPSTR strptr; +static HGLOBAL hStringBuffer = 0; + +CHAR MACRO_extra_separator = 0; + +#define YY_INPUT(buf,result,max_size)\ + if ((result = *macroptr ? 1 : 0)) buf[0] = *macroptr++; + +#define YY_USER_ACTION\ + if (YY_START == INITIAL) thistoken = nexttoken, nexttoken = macroptr; + +#define YY_NO_UNPUT +#define YY_NO_TOP_STATE +%} +%% +About yylval = MACRO_About; return VOID_FUNCTION_VOID; +AddAccelerator|AA yylval = MACRO_AddAccelerator; return VOID_FUNCTION_2UINT_STRING; +ALink|AL yylval = MACRO_ALink; return VOID_FUNCTION_STRING_UINT_STRING; +Annotate yylval = MACRO_Annotate; return VOID_FUNCTION_VOID; +AppendItem yylval = MACRO_AppendItem; return VOID_FUNCTION_4STRING; +Back yylval = MACRO_Back; return VOID_FUNCTION_VOID; +BackFlush|BF yylval = MACRO_BackFlush; return VOID_FUNCTION_VOID; +BookmarkDefine yylval = MACRO_BookmarkDefine; return VOID_FUNCTION_VOID; +BookmarkMore yylval = MACRO_BookmarkMore; return VOID_FUNCTION_VOID; +BrowseButtons yylval = MACRO_BrowseButtons; return VOID_FUNCTION_VOID; +ChangeButtonBinding|CBB yylval = MACRO_ChangeButtonBinding; return VOID_FUNCTION_2STRING; +ChangeEnable|CE yylval = MACRO_ChangeEnable; return VOID_FUNCTION_2STRING; +ChangeItemBinding|CIB yylval = MACRO_ChangeItemBinding; return VOID_FUNCTION_2STRING; +CheckItem|CI yylval = MACRO_CheckItem; return VOID_FUNCTION_STRING; +CloseSecondarys|CS yylval = MACRO_CloseSecondarys; return VOID_FUNCTION_VOID; +CloseWindow|CW yylval = MACRO_CloseWindow; return VOID_FUNCTION_STRING; +Compare yylval = MACRO_Compare; return VOID_FUNCTION_STRING; +Contents yylval = MACRO_Contents; return VOID_FUNCTION_VOID; +ControlPanel yylval = MACRO_ControlPanel; return VOID_FUNCTION_2STRING_UINT; +CopyDialog yylval = MACRO_CopyDialog; return VOID_FUNCTION_VOID; +CopyTopic|CT yylval = MACRO_CopyTopic; return VOID_FUNCTION_VOID; +CreateButton|CB yylval = MACRO_CreateButton; return VOID_FUNCTION_3STRING; +DeleteItem yylval = MACRO_DeleteItem; return VOID_FUNCTION_STRING; +DeleteMark yylval = MACRO_DeleteMark; return VOID_FUNCTION_STRING; +DestroyButton yylval = MACRO_DestroyButton; return VOID_FUNCTION_STRING; +DisableButton|DB yylval = MACRO_DisableButton; return VOID_FUNCTION_STRING; +DisableItem|DI yylval = MACRO_DisableItem; return VOID_FUNCTION_STRING; +EnableButton|EB yylval = MACRO_EnableButton; return VOID_FUNCTION_STRING; +EnableItem|EI yylval = MACRO_EnableItem; return VOID_FUNCTION_STRING; +EndMPrint yylval = MACRO_EndMPrint; return VOID_FUNCTION_VOID; +ExecFile|EF yylval = MACRO_ExecFile; return VOID_FUNCTION_2STRING_UINT_STRING; +ExecProgram|EP yylval = MACRO_ExecProgram; return VOID_FUNCTION_STRING_UINT; +Exit yylval = MACRO_Exit; return VOID_FUNCTION_VOID; +ExtAbleItem yylval = MACRO_ExtAbleItem; return VOID_FUNCTION_STRING_UINT; +ExtInsertItem yylval = MACRO_ExtInsertItem; return VOID_FUNCTION_4STRING_2UINT; +ExtInsertMenu yylval = MACRO_ExtInsertMenu; return VOID_FUNCTION_3STRING_2UINT; +FileExist|FE yylval = MACRO_FileExist; return BOOL_FUNCTION_STRING; +FileOpen|FO yylval = MACRO_FileOpen; return VOID_FUNCTION_VOID; +Find yylval = MACRO_Find; return VOID_FUNCTION_VOID; +Finder|FD yylval = MACRO_Finder; return VOID_FUNCTION_VOID; +FloatingMenu yylval = MACRO_FloatingMenu; return VOID_FUNCTION_VOID; +Flush|FH yylval = MACRO_Flush; return VOID_FUNCTION_VOID; +FocusWindow yylval = MACRO_FocusWindow; return VOID_FUNCTION_STRING; +Generate yylval = MACRO_Generate; return VOID_FUNCTION_STRING_WPARAM_LPARAM; +GotoMark yylval = MACRO_GotoMark; return VOID_FUNCTION_STRING; +HelpOn yylval = MACRO_HelpOn; return VOID_FUNCTION_VOID; +HelpOnTop yylval = MACRO_HelpOnTop; return VOID_FUNCTION_VOID; +History yylval = MACRO_History; return VOID_FUNCTION_VOID; +IfThen|IF return IF_THEN; +IfThenElse|IE return IF_THEN_ELSE; +InitMPrint yylval = MACRO_InitMPrint; return BOOL_FUNCTION_VOID; +InsertItem yylval = MACRO_InsertItem; return VOID_FUNCTION_4STRING_UINT; +InsertMenu yylval = MACRO_InsertMenu; return VOID_FUNCTION_2STRING_UINT; +IsBook yylval = MACRO_IsBook; return BOOL_FUNCTION_VOID; +IsMark yylval = MACRO_IsMark; return BOOL_FUNCTION_STRING; +IsNotMark|NM yylval = MACRO_IsNotMark; return BOOL_FUNCTION_STRING; +JumpContents yylval = MACRO_JumpContents; return VOID_FUNCTION_FILE_WIN; +JumpContext|JC yylval = MACRO_JumpContext; return VOID_FUNCTION_FILE_WIN_UINT; +JumpHash|JH yylval = MACRO_JumpHash; return VOID_FUNCTION_FILE_WIN_UINT; +JumpHelpOn yylval = MACRO_JumpHelpOn; return VOID_FUNCTION_VOID; +JumpID|JI yylval = MACRO_JumpID; return VOID_FUNCTION_FILE_WIN_STRING; +JumpKeyword|JK yylval = MACRO_JumpKeyword; return VOID_FUNCTION_FILE_WIN_STRING; +KLink|KL yylval = MACRO_KLink; return VOID_FUNCTION_STRING_UINT_2STRING; +Menu|MU yylval = MACRO_Menu; return VOID_FUNCTION_VOID; +MPrintHash yylval = MACRO_MPrintHash; return VOID_FUNCTION_UINT; +MPrintID yylval = MACRO_MPrintID; return VOID_FUNCTION_STRING; +Next yylval = MACRO_Next; return VOID_FUNCTION_VOID; +NoShow yylval = MACRO_NoShow; return VOID_FUNCTION_VOID; +Not return NOT; +PopupContext|PC yylval = MACRO_PopupContext; return VOID_FUNCTION_STRING_UINT; +PopupHash yylval = MACRO_PopupHash; return VOID_FUNCTION_STRING_UINT; +PopupId|PI yylval = MACRO_PopupId; return VOID_FUNCTION_2STRING; +PositionWindow|PW yylval = MACRO_PositionWindow; return VOID_FUNCTION_2INT_3UINT_STRING; +Prev yylval = MACRO_Prev; return VOID_FUNCTION_VOID; +Print yylval = MACRO_Print; return VOID_FUNCTION_VOID; +PrinterSetup yylval = MACRO_PrinterSetup; return VOID_FUNCTION_VOID; +RegisterRoutine|RR yylval = MACRO_RegisterRoutine; return VOID_FUNCTION_3STRING; +RemoveAccelerator|RA yylval = MACRO_RemoveAccelerator; return VOID_FUNCTION_2UINT; +ResetMenu yylval = MACRO_ResetMenu; return VOID_FUNCTION_VOID; +SaveMark yylval = MACRO_SaveMark; return VOID_FUNCTION_STRING; +Search yylval = MACRO_Search; return VOID_FUNCTION_VOID; +SetContents yylval = MACRO_SetContents; return VOID_FUNCTION_STRING_UINT; +SetHelpOnFile yylval = MACRO_SetHelpOnFile; return VOID_FUNCTION_STRING; +SetPopupColor|SPC yylval = MACRO_SetPopupColor; return VOID_FUNCTION_3UINT; +ShellExecute|SE yylval = MACRO_ShellExecute; return VOID_FUNCTION_2STRING_2UINT_2STRING; +ShortCut|SH yylval = MACRO_ShortCut; return VOID_FUNCTION_2STRING_WPARAM_LPARAM_STRING; +TCard yylval = MACRO_TCard; return VOID_FUNCTION_UINT; +Test yylval = MACRO_Test; return VOID_FUNCTION_UINT; +TestALink yylval = MACRO_TestALink; return BOOL_FUNCTION_STRING; +TestKLink yylval = MACRO_TestKLink; return BOOL_FUNCTION_STRING; +UncheckItem|UI yylval = MACRO_UncheckItem; return VOID_FUNCTION_STRING; +UpdateWindow|UW yylval = MACRO_UpdateWindow; return VOID_FUNCTION_2STRING; + +[-+]?[0-9]+ yylval.integer = strtol(yytext, NULL, 10); return INTEGER; +[-+]?0[xX][0-9a-f]+ yylval.integer = strtol(yytext, NULL, 16); return INTEGER; + +\` | +\" { + if (!hStringBuffer) + { + hStringBuffer = GlobalAlloc(GMEM_FIXED, strlen(macroptr)); + strptr = GlobalLock(hStringBuffer); + } + current_string = strptr; + yy_push_state(yytext[0] == '`' ? quote : dquote); + } + +<quote>\` { + *strptr++ = yytext[0]; + yy_push_state(quote); + } + +<quote>\' | +<dquote>\" { + yy_pop_state(); + if (YY_START == INITIAL) + { + *strptr++ = '\0'; + if (MACRO_extra_separator) + { + yy_push_state(null_string); + MACRO_extra_separator = 0; + } + yylval = current_string; + return STRING; + } + else *strptr++ = yytext[0]; + } + +<quote,dquote>{ + +. { + if (MACRO_extra_separator == (CHAR) yytext[0]) + { + *strptr++ = '\0'; + MACRO_extra_separator = 0; + yylval = current_string; + current_string = strptr; + return STRING; + } + else *strptr++ = yytext[0]; + } + +\\. *strptr++ = yytext[1]; + +<<EOF>> return 0; +} + +<null_string>"" { + yy_pop_state(); + yylval = (LPCSTR) 0; + return STRING; + } + +" " + +. return yytext[0]; +%% +#include "winhelp.h" +static CHAR szTestMacro[256]; + +static LRESULT MACRO_TestDialogProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + if (msg == WM_COMMAND && wParam == IDOK) + { + GetDlgItemText(hDlg, 99, szTestMacro, sizeof(szTestMacro)); + EndDialog(hDlg, IDCANCEL); + return TRUE; + } + return FALSE; +} + +VOID MACRO_ExecuteMacro(LPCSTR macro) +{ + static BOOL init = TRUE; + + if (init) init = FALSE; + else + { + YY_FLUSH_BUFFER; + while (YY_START != INITIAL) + yy_pop_state(); + } + + if (!lstrcmpi(macro, "MacroTest")) + { + WNDPROC lpfnDlg = MakeProcInstance(MACRO_TestDialogProc, Globals.hInstance); + DialogBox(Globals.hInstance, STRING_DIALOG_TEST, Globals.active_win->hMainWnd, lpfnDlg); + FreeProcInstance(lpfnDlg); + macro = szTestMacro; + } + + macroptr = firsttoken = thistoken = nexttoken = macro; + + yyparse(); + + if (hStringBuffer) GlobalFree(hStringBuffer); + hStringBuffer = 0; +} + +void yyerror (const char *s) +{ + fprintf(stderr, "%s\n%.*s\n%*s%s\n", s, + thistoken - firsttoken, firsttoken, + thistoken - firsttoken, "", thistoken); +} diff --git a/programs/winhelp/macro.yacc.y b/programs/winhelp/macro.yacc.y new file mode 100644 index 00000000000..66bce6eff2f --- /dev/null +++ b/programs/winhelp/macro.yacc.y @@ -0,0 +1,170 @@ +%{ +/* + * Help Viewer + * + * Copyright 1996 Ulrich Schmid + */ + +#include "macro.h" +static int skip = 0; +%} +%union + { + BOOL bool; + LPCSTR string; + LONG integer; + VOID (*void_function_void)(VOID); + BOOL (*bool_function_void)(VOID); + VOID (*void_function_string)(LPCSTR); + BOOL (*bool_function_string)(LPCSTR); + + BOOL (*bool_funktion_string)(LPCSTR); + BOOL (*bool_funktion_void)(VOID); + VOID (*void_funktion_2int_3uint_string)(LONG,LONG,LONG,LONG,LONG,LPCSTR); + VOID (*void_funktion_2string)(LPCSTR,LPCSTR); + VOID (*void_funktion_2string_2uint_2string)(LPCSTR,LPCSTR,LONG,LONG,LPCSTR,LPCSTR); + VOID (*void_funktion_2string_uint)(LPCSTR,LPCSTR,LONG); + VOID (*void_funktion_2string_uint_string)(LPCSTR,LPCSTR,LONG,LPCSTR); + VOID (*void_funktion_2string_wparam_lparam_string)(LPCSTR,LPCSTR,WPARAM,LPARAM,LPCSTR); + VOID (*void_funktion_2uint)(LONG,LONG); + VOID (*void_funktion_2uint_string)(LONG,LONG,LPCSTR); + VOID (*void_funktion_3string)(LPCSTR,LPCSTR,LPCSTR); + VOID (*void_funktion_3string_2uint)(LPCSTR,LPCSTR,LPCSTR,LONG,LONG); + VOID (*void_funktion_3uint)(LONG,LONG,LONG); + VOID (*void_funktion_4string)(LPCSTR,LPCSTR,LPCSTR,LPCSTR); + VOID (*void_funktion_4string_2uint)(LPCSTR,LPCSTR,LPCSTR,LPCSTR,LONG,LONG); + VOID (*void_funktion_4string_uint)(LPCSTR,LPCSTR,LPCSTR,LPCSTR,LONG); + VOID (*void_funktion_string)(LPCSTR); + VOID (*void_funktion_string_uint)(LPCSTR,LONG); + VOID (*void_funktion_string_uint_2string)(LPCSTR,LONG,LPCSTR,LPCSTR); + VOID (*void_funktion_string_uint_string)(LPCSTR,LONG,LPCSTR); + VOID (*void_funktion_string_wparam_lparam)(LPCSTR,WPARAM,LPARAM); + VOID (*void_funktion_uint)(LONG); + VOID (*void_funktion_void)(VOID); + } +%token NOT +%token IF_THEN +%token IF_THEN_ELSE +%token <string> STRING +%token <integer> INTEGER +%token <bool_funktion_string> BOOL_FUNCTION_STRING +%token <bool_funktion_void> BOOL_FUNCTION_VOID +%token <void_funktion_2int_3uint_string> VOID_FUNCTION_2INT_3UINT_STRING +%token <void_funktion_2string> VOID_FUNCTION_2STRING +%token <void_funktion_2string_2uint_2string> VOID_FUNCTION_2STRING_2UINT_2STRING +%token <void_funktion_2string_uint> VOID_FUNCTION_2STRING_UINT +%token <void_funktion_2string_uint_string> VOID_FUNCTION_2STRING_UINT_STRING +%token <void_funktion_2string_wparam_lparam_string> VOID_FUNCTION_2STRING_WPARAM_LPARAM_STRING +%token <void_funktion_2uint> VOID_FUNCTION_2UINT +%token <void_funktion_2uint_string> VOID_FUNCTION_2UINT_STRING +%token <void_funktion_3string> VOID_FUNCTION_3STRING +%token <void_funktion_3string_2uint> VOID_FUNCTION_3STRING_2UINT +%token <void_funktion_3uint> VOID_FUNCTION_3UINT +%token <void_funktion_4string> VOID_FUNCTION_4STRING +%token <void_funktion_4string_2uint> VOID_FUNCTION_4STRING_2UINT +%token <void_funktion_4string_uint> VOID_FUNCTION_4STRING_UINT +%token <void_funktion_string> VOID_FUNCTION_STRING +%token <void_funktion_string_uint> VOID_FUNCTION_STRING_UINT +%token <void_funktion_string_uint_2string> VOID_FUNCTION_STRING_UINT_2STRING +%token <void_funktion_string_uint_string> VOID_FUNCTION_STRING_UINT_STRING +%token <void_funktion_string_wparam_lparam> VOID_FUNCTION_STRING_WPARAM_LPARAM +%token <void_funktion_uint> VOID_FUNCTION_UINT +%token <void_funktion_void> VOID_FUNCTION_VOID +%token <void_funktion_2string> VOID_FUNCTION_FILE_WIN +%token <void_funktion_3string> VOID_FUNCTION_FILE_WIN_STRING +%token <void_funktion_2string_uint> VOID_FUNCTION_FILE_WIN_UINT +%type <bool> bool_macro +%type <string> filename +%% + +macrostring: macro | + macro macrosep macrostring ; + +macrosep: ';' | + ':' ; + +macro: /* Empty */ | + IF_THEN '(' bool_macro ',' {if (! $3) skip++;} + macrostring ')' {if (! $3) skip--;} | + IF_THEN_ELSE '(' bool_macro ',' {if (! $3) skip++;} + macrostring ',' {if (! $3) skip--; else skip++;} + macrostring ')' {if ( $3) skip--;} | + VOID_FUNCTION_VOID + '(' ')' + {if (! skip) (*$1)();} | + VOID_FUNCTION_STRING + '(' STRING ')' + {if (! skip) (*$1)($3);} | + VOID_FUNCTION_2STRING + '(' STRING ',' STRING ')' + {if (! skip) (*$1)($3, $5);} | + VOID_FUNCTION_2STRING_UINT + '(' STRING ',' STRING ',' INTEGER ')' + {if (! skip) (*$1)($3, $5, $7);} | + VOID_FUNCTION_2STRING_UINT_STRING + '(' STRING ',' STRING ',' INTEGER ',' STRING ')' + {if (! skip) (*$1)($3, $5, $7, $9);} | + VOID_FUNCTION_2STRING_2UINT_2STRING + '(' STRING ',' STRING ',' INTEGER ',' INTEGER ',' STRING ',' STRING ')' + {if (! skip) (*$1)($3, $5, $7, $9, $11, $13);} | + VOID_FUNCTION_2STRING_WPARAM_LPARAM_STRING + '(' STRING ',' STRING ',' INTEGER ',' INTEGER ',' STRING ')' + {if (! skip) (*$1)($3, $5, $7, $9, $11);} | + VOID_FUNCTION_3STRING + '(' STRING ',' STRING ',' STRING ')' + {if (! skip) (*$1)($3, $5, $7);} | + VOID_FUNCTION_3STRING_2UINT + '(' STRING ',' STRING ',' STRING ',' INTEGER ',' INTEGER ')' + {if (! skip) (*$1)($3, $5, $7, $9, $11);} | + VOID_FUNCTION_4STRING + '(' STRING ',' STRING ',' STRING ',' STRING ')' + {if (! skip) (*$1)($3, $5, $7, $9);} | + VOID_FUNCTION_4STRING_UINT + '(' STRING ',' STRING ',' STRING ',' STRING ',' INTEGER')' + {if (! skip) (*$1)($3, $5, $7, $9, $11);} | + VOID_FUNCTION_4STRING_2UINT + '(' STRING ',' STRING ',' STRING ',' STRING ',' INTEGER ',' INTEGER')' + {if (! skip) (*$1)($3, $5, $7, $9, $11, $13);} | + VOID_FUNCTION_STRING_UINT + '(' STRING ',' INTEGER ')' + {if (! skip) (*$1)($3, $5);} | + VOID_FUNCTION_STRING_UINT_STRING + '(' STRING ',' INTEGER ',' STRING ')' + {if (! skip) (*$1)($3, $5, $7);} | + VOID_FUNCTION_STRING_UINT_2STRING + '(' STRING ',' INTEGER ',' STRING ',' STRING ')' + {if (! skip) (*$1)($3, $5, $7, $9);} | + VOID_FUNCTION_STRING_WPARAM_LPARAM + '(' STRING ',' INTEGER ',' INTEGER ')' + {if (! skip) (*$1)($3, $5, $7);} | + VOID_FUNCTION_UINT + '(' INTEGER ')' + {if (! skip) (*$1)($3);} | + VOID_FUNCTION_2UINT + '(' INTEGER ',' INTEGER ')' + {if (! skip) (*$1)($3, $5);} | + VOID_FUNCTION_2UINT_STRING + '(' INTEGER ',' INTEGER ',' STRING ')' + {if (! skip) (*$1)($3, $5, $7);} | + VOID_FUNCTION_3UINT + '(' INTEGER ',' INTEGER ',' INTEGER ')' + {if (! skip) (*$1)($3, $5, $7);} | + VOID_FUNCTION_2INT_3UINT_STRING + '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ',' STRING ')' + {if (! skip) (*$1)($3, $5, $7, $9, $11, $13);} | + VOID_FUNCTION_FILE_WIN + '(' filename STRING ')' + {if (! skip) (*$1)($3, $4);} | + VOID_FUNCTION_FILE_WIN_STRING + '(' filename STRING ',' STRING ')' + {if (! skip) (*$1)($3, $4, $6);} | + VOID_FUNCTION_FILE_WIN_UINT + '(' filename STRING ',' INTEGER ')' + {if (! skip) (*$1)($3, $4, $6);} ; + +filename: {MACRO_extra_separator = '>'} STRING {$$ = $2;} ; + +bool_macro: NOT '(' bool_macro ')' {$$ = ! $3;} | + STRING {$$ = MACRO_IsMark($1);} | + BOOL_FUNCTION_VOID '(' ')' {$$ = (*$1)();} | + BOOL_FUNCTION_STRING '(' STRING ')' {$$ = (*$1)($3);} ; diff --git a/programs/winhelp/string.c b/programs/winhelp/string.c new file mode 100644 index 00000000000..647b9689b3b --- /dev/null +++ b/programs/winhelp/string.c @@ -0,0 +1,25 @@ +/* + * Help Viewer + * + * Copyright 1996 Ulrich Schmid + */ + +#include <windows.h> +#include "winhelp.h" + +/* Class names */ + +CHAR MAIN_WIN_CLASS_NAME[] = "WHMain"; +CHAR BUTTON_BOX_WIN_CLASS_NAME[] = "WHButtonBox"; +CHAR TEXT_WIN_CLASS_NAME[] = "WHText"; +CHAR SHADOW_WIN_CLASS_NAME[] = "WHShadow"; +CHAR STRING_BUTTON[] = "BUTTON"; + +/* Resource names */ +/* Xx will be overwritten with En, ... */ +CHAR STRING_MENU_Xx[] = "MENU_Xx"; +CHAR STRING_DIALOG_TEST[] = "DIALOG_TEST"; + +/* Local Variables: */ +/* c-file-style: "GNU" */ +/* End: */ diff --git a/programs/winhelp/winhelp.c b/programs/winhelp/winhelp.c new file mode 100644 index 00000000000..c7244b0fd82 --- /dev/null +++ b/programs/winhelp/winhelp.c @@ -0,0 +1,1069 @@ +/* + * Help Viewer + * + * Copyright 1996 Ulrich Schmid <uschmid@mail.hh.provi.de> + */ + +#include <stdio.h> +#include <windows.h> +#ifdef WINELIB +#include <resource.h> +#include <options.h> +#include <shell.h> +extern const char people[]; +#endif +#include "winhelp.h" + +VOID LIBWINE_Register_De(void); +VOID LIBWINE_Register_En(void); + +static BOOL WINHELP_RegisterWinClasses(); +static LRESULT WINHELP_MainWndProc(HWND, UINT, WPARAM, LPARAM); +static LRESULT WINHELP_TextWndProc(HWND, UINT, WPARAM, LPARAM); +static LRESULT WINHELP_ButtonBoxWndProc(HWND, UINT, WPARAM, LPARAM); +static VOID WINHELP_CheckPopup(UINT); +static BOOL WINHELP_SplitLines(HWND hWnd, LPSIZE); +static VOID WINHELP_InitFonts(HWND hWnd); +static VOID WINHELP_DeleteLines(WINHELP_WINDOW*); +static VOID WINHELP_DeleteWindow(WINHELP_WINDOW*); +static VOID WINHELP_SetupText(HWND hWnd); +static BOOL WINHELP_AppendText(WINHELP_LINE***, WINHELP_LINE_PART***, + LPSIZE, LPSIZE, INT*, INT, LPCSTR, UINT, + HFONT, COLORREF, HLPFILE_LINK*); + +WINHELP_GLOBALS Globals = {3, 0, 0, 0, 0, 0}; + +static BOOL MacroTest = FALSE; + +/*********************************************************************** + * + * WinMain + */ + +int PASCAL WinMain (HANDLE hInstance, HANDLE prev, LPSTR cmdline, int show) +{ + LPCSTR opt_lang = "En"; + CHAR lang[3]; + MSG msg; + LONG lHash = 0; + INT langnum; + +#if defined(WINELIB) && !defined(HAVE_WINE_CONSTRUCTOR) + /* Register resources */ + LIBWINE_Register_De(); + LIBWINE_Register_En(); +#endif + + Globals.hInstance = hInstance; + + /* Get options */ + while (*cmdline && (*cmdline == ' ' || *cmdline == '-')) + { + CHAR option; + LPCSTR topic_id; + if (*cmdline++ == ' ') continue; + + option = *cmdline; + if (option) cmdline++; + while (*cmdline && *cmdline == ' ') cmdline++; + switch(option) + { + case 'i': + case 'I': + topic_id = cmdline; + while (*cmdline && *cmdline != ' ') cmdline++; + if (*cmdline) *cmdline++ = '\0'; + lHash = HLPFILE_Hash(topic_id); + break; + + case '3': + case '4': + Globals.wVersion = option - '0'; + break; + + case 't': + MacroTest = TRUE; + break; + } + } + +#ifdef WINELIB + opt_lang = langNames[Options.language]; +#endif + + /* Find language specific string table */ + for (langnum = 0; langnum <= MAX_LANGUAGE_NUMBER; langnum++) + { + Globals.wStringTableOffset = langnum * 0x100; + if (LoadString(hInstance, IDS_LANGUAGE_ID, lang, sizeof(lang)) && + !lstrcmp(opt_lang, lang)) + break; + } + if (langnum > MAX_LANGUAGE_NUMBER) + { + /* Find fallback language */ + for (langnum = 0; langnum <= MAX_LANGUAGE_NUMBER; langnum++) + { + Globals.wStringTableOffset = langnum * 0x100; + if (LoadString(hInstance, IDS_LANGUAGE_ID, lang, sizeof(lang))) + break; + } + if (langnum > MAX_LANGUAGE_NUMBER) + { + MessageBox(0, "No language found", "FATAL ERROR", MB_OK); + return(1); + } + } + + /* Change Resource names */ + lstrcpyn(STRING_MENU_Xx + lstrlen(STRING_MENU_Xx) - 2, lang, 3); + + /* Create primary window */ + WINHELP_RegisterWinClasses(); + WINHELP_CreateHelpWindow(cmdline, lHash, "main", FALSE, NULL, NULL, show); + + /* Message loop */ + while (GetMessage (&msg, 0, 0, 0)) + { + TranslateMessage (&msg); + DispatchMessage (&msg); + } + return 0; +} + +/*********************************************************************** + * + * RegisterWinClasses + */ + +static BOOL WINHELP_RegisterWinClasses() +{ + WNDCLASS class_main, class_button_box, class_text, class_shadow; + + class_main.style = CS_HREDRAW | CS_VREDRAW; + class_main.lpfnWndProc = WINHELP_MainWndProc; + class_main.cbClsExtra = 0; + class_main.cbWndExtra = sizeof(LONG); + class_main.hInstance = Globals.hInstance; + class_main.hIcon = LoadIcon (0, IDI_APPLICATION); + class_main.hCursor = LoadCursor (0, IDC_ARROW); + class_main.hbrBackground = GetStockObject (WHITE_BRUSH); + class_main.lpszMenuName = 0; + class_main.lpszClassName = MAIN_WIN_CLASS_NAME; + + class_button_box = class_main; + class_button_box.lpfnWndProc = WINHELP_ButtonBoxWndProc; + class_button_box.hbrBackground = GetStockObject(GRAY_BRUSH); + class_button_box.lpszClassName = BUTTON_BOX_WIN_CLASS_NAME; + + class_text = class_main; + class_text.lpfnWndProc = WINHELP_TextWndProc; + class_text.lpszClassName = TEXT_WIN_CLASS_NAME; + + class_shadow = class_main; + class_shadow.lpfnWndProc = DefWindowProc; + class_shadow.hbrBackground = GetStockObject(GRAY_BRUSH); + class_shadow.lpszClassName = SHADOW_WIN_CLASS_NAME; + + return (RegisterClass(&class_main) && + RegisterClass(&class_button_box) && + RegisterClass(&class_text) && + RegisterClass(&class_shadow)); +} + +/*********************************************************************** + * + * WINHELP_CreateHelpWindow + */ + +VOID WINHELP_CreateHelpWindow(LPCSTR lpszFile, LONG lHash, LPCSTR lpszWindow, + BOOL bPopup, HWND hParentWnd, LPPOINT mouse, INT nCmdShow) +{ + CHAR szCaption[MAX_STRING_LEN]; + CHAR szContents[MAX_STRING_LEN]; + CHAR szSearch[MAX_STRING_LEN]; + CHAR szBack[MAX_STRING_LEN]; + CHAR szHistory[MAX_STRING_LEN]; + SIZE size = {CW_USEDEFAULT, CW_USEDEFAULT}; + POINT origin = {240, 0}; + LPSTR ptr; + HGLOBAL handle; + WINHELP_WINDOW *win, *oldwin; + HLPFILE_PAGE *page; + HLPFILE_MACRO *macro; + HWND hWnd; + BOOL bPrimary; + + if (bPopup) + lpszWindow = NULL; + else if (!lpszWindow) + lpszWindow = Globals.active_win->lpszName; + bPrimary = lpszWindow && !lstrcmpi(lpszWindow, "main"); + + /* Read help file */ + if (lpszFile[0]) + { + page = lHash ? HLPFILE_PageByHash(lpszFile, lHash) : HLPFILE_Contents(lpszFile); + + /* Add Suffix `.hlp' */ + if (!page && lstrcmpi(lpszFile + strlen(lpszFile) - 4, ".hlp")) + { + CHAR szFile_hlp[MAX_PATHNAME_LEN]; + + lstrcpyn(szFile_hlp, lpszFile, sizeof(szFile_hlp) - 4); + szFile_hlp[sizeof(szFile_hlp) - 5] = '\0'; + lstrcat(szFile_hlp, ".hlp"); + + page = lHash ? HLPFILE_PageByHash(szFile_hlp, lHash) : HLPFILE_Contents(szFile_hlp); + if (!page) + { + WINHELP_MessageBoxIDS_s(IDS_HLPFILE_ERROR_s, lpszFile, IDS_ERROR, MB_OK); + if (Globals.win_list) return; + } + } + } + else page = 0; + + /* Calculate horizontal size and position of a popup window */ + if (bPopup) + { + RECT parent_rect; + GetWindowRect(hParentWnd, &parent_rect); + size.cx = (parent_rect.right - parent_rect.left) / 2; + + origin = *mouse; + ClientToScreen(hParentWnd, &origin); + origin.x -= size.cx / 2; + origin.x = MIN(origin.x, GetSystemMetrics(SM_CXSCREEN) - size.cx); + origin.x = MAX(origin.x, 0); + } + + /* Initialize WINHELP_WINDOW struct */ + handle = GlobalAlloc(GMEM_FIXED, sizeof(WINHELP_WINDOW) + + (lpszWindow ? strlen(lpszWindow) + 1 : 0)); + if (!handle) return; + win = GlobalLock(handle); + win->hSelf = handle; + win->next = Globals.win_list; + Globals.win_list = win; + if (lpszWindow) + { + ptr = GlobalLock(handle); + ptr += sizeof(WINHELP_WINDOW); + lstrcpy(ptr, (LPSTR) lpszWindow); + win->lpszName = ptr; + } + else win->lpszName = NULL; + win->page = page; + win->first_button = 0; + win->first_line = 0; + win->hMainWnd = 0; + win->hButtonBoxWnd = 0; + win->hTextWnd = 0; + win->hShadowWnd = 0; + + Globals.active_win = win; + + /* Initialize default pushbuttons */ + if (MacroTest && !bPopup) + MACRO_CreateButton("BTN_TEST", "&Test", "MacroTest"); + if (bPrimary && page) + { + LoadString(Globals.hInstance, IDS_CONTENTS, szContents, sizeof(szContents)); + LoadString(Globals.hInstance, IDS_SEARCH, szSearch, sizeof(szSearch)); + LoadString(Globals.hInstance, IDS_BACK, szBack, sizeof(szBack)); + LoadString(Globals.hInstance, IDS_HISTORY, szHistory, sizeof(szHistory)); + MACRO_CreateButton("BTN_CONTENTS", szContents, "Contents()"); + MACRO_CreateButton("BTN_SEARCH", szSearch, "Search()"); + MACRO_CreateButton("BTN_BACK", szBack, "Back()"); + MACRO_CreateButton("BTN_HISTORY", szHistory, "History()"); + } + + /* Initialize file specific pushbuttons */ + if (!bPopup && page) + for (macro = page->file->first_macro; macro; macro = macro->next) + MACRO_ExecuteMacro(macro->lpszMacro); + + /* Reuse existing window */ + if (lpszWindow) + for (oldwin = win->next; oldwin; oldwin = oldwin->next) + if (oldwin->lpszName && !lstrcmpi(oldwin->lpszName, lpszWindow)) + { + WINHELP_BUTTON *button; + + win->hMainWnd = oldwin->hMainWnd; + win->hButtonBoxWnd = oldwin->hButtonBoxWnd; + win->hTextWnd = oldwin->hTextWnd; + oldwin->hMainWnd = oldwin->hButtonBoxWnd = oldwin->hTextWnd = 0; + + SetWindowLong(win->hMainWnd, 0, (LONG) win); + SetWindowLong(win->hButtonBoxWnd, 0, (LONG) win); + SetWindowLong(win->hTextWnd, 0, (LONG) win); + + WINHELP_InitFonts(win->hMainWnd); + + SetWindowText(win->hMainWnd, page->file->lpszTitle); + + WINHELP_SetupText(win->hTextWnd); + InvalidateRect(win->hTextWnd, NULL, TRUE); + SendMessage(win->hMainWnd, WM_USER, 0, 0); + UpdateWindow(win->hTextWnd); + + + for (button = oldwin->first_button; button; button = button->next) + DestroyWindow(button->hWnd); + + WINHELP_DeleteWindow(oldwin); + return; + } + + /* Create main Window */ + if (!page) LoadString(Globals.hInstance, IDS_WINE_HELP, szCaption, sizeof(szCaption)); + hWnd = CreateWindow (bPopup ? TEXT_WIN_CLASS_NAME : MAIN_WIN_CLASS_NAME, + page ? (SEGPTR) page->file->lpszTitle : (SEGPTR) szCaption, + bPopup ? WS_POPUPWINDOW | WS_BORDER : WS_OVERLAPPEDWINDOW, + origin.x, origin.y, size.cx, size.cy, + 0, bPrimary ? LoadMenu(Globals.hInstance, STRING_MENU_Xx) : 0, + Globals.hInstance, (SEGPTR) win); + + ShowWindow (hWnd, nCmdShow); + UpdateWindow (hWnd); +} + +/*********************************************************************** + * + * WINHELP_MainWndProc + */ + +static LRESULT WINHELP_MainWndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + WINHELP_WINDOW *win; + WINHELP_BUTTON *button; + RECT rect, button_box_rect; + INT text_top; + + WINHELP_CheckPopup(msg); + + switch (msg) + { + case WM_NCCREATE: + win = (WINHELP_WINDOW*) ((LPCREATESTRUCT) lParam)->lpCreateParams; + SetWindowLong(hWnd, 0, (LONG) win); + win->hMainWnd = hWnd; + break; + + case WM_CREATE: + win = (WINHELP_WINDOW*) GetWindowLong(hWnd, 0); + + /* Create button box and text Window */ + CreateWindow(BUTTON_BOX_WIN_CLASS_NAME, "", WS_CHILD | WS_VISIBLE, + 0, 0, 0, 0, hWnd, 0, Globals.hInstance, (SEGPTR) win); + + CreateWindow(TEXT_WIN_CLASS_NAME, "", WS_CHILD | WS_VISIBLE, + 0, 0, 0, 0, hWnd, 0, Globals.hInstance, (SEGPTR) win); + + /* Fall through */ + case WM_USER: + case WM_WINDOWPOSCHANGED: + win = (WINHELP_WINDOW*) GetWindowLong(hWnd, 0); + GetClientRect(hWnd, &rect); + + /* Update button box and text Window */ + SetWindowPos(win->hButtonBoxWnd, HWND_TOP, + rect.left, rect.top, + rect.right - rect.left, + rect.bottom - rect.top, 0); + + GetWindowRect(win->hButtonBoxWnd, &button_box_rect); + text_top = rect.top + button_box_rect.bottom - button_box_rect.top; + + SetWindowPos(win->hTextWnd, HWND_TOP, + rect.left, text_top, + rect.right - rect.left, + rect.bottom - text_top, 0); + + break; + + case WM_COMMAND: + Globals.active_win = win = (WINHELP_WINDOW*) GetWindowLong(hWnd, 0); + switch (wParam) + { + /* Menu FILE */ + case WH_OPEN: MACRO_FileOpen(); break; + case WH_PRINT: MACRO_Print(); break; + case WH_PRINTER_SETUP: MACRO_PrinterSetup(); break; + case WH_EXIT: MACRO_Exit(); break; + + /* Menu EDIT */ + case WH_COPY_DIALOG: MACRO_CopyDialog(); break; + case WH_ANNOTATE: MACRO_Annotate(); break; + + /* Menu Bookmark */ + case WH_BOOKMARK_DEFINE: MACRO_BookmarkDefine(); break; + + /* Menu Help */ + case WH_HELP_ON_HELP: MACRO_HelpOn(); break; + case WH_HELP_ON_TOP: MACRO_HelpOnTop(); break; + + /* Menu Info */ + case WH_ABOUT: MACRO_About(); break; +#ifdef WINELIB + case WH_ABOUT_WINE: + ShellAbout(hWnd, "WINE", people, 0); + break; +#endif + + default: + /* Buttons */ + for (button = win->first_button; button; button = button->next) + if (wParam == button->wParam) break; + if (button) + MACRO_ExecuteMacro(button->lpszMacro); + else + WINHELP_MessageBoxIDS(IDS_NOT_IMPLEMENTED, IDS_ERROR, MB_OK); + break; + } + break; + } + + return DefWindowProc (hWnd, msg, wParam, lParam); +} + +/*********************************************************************** + * + * WINHELP_ButtonBoxWndProc + */ + +static LRESULT WINHELP_ButtonBoxWndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + WINDOWPOS *winpos; + WINHELP_WINDOW *win; + WINHELP_BUTTON *button; + SIZE button_size; + INT x, y; + + WINHELP_CheckPopup(msg); + + switch(msg) + { + case WM_NCCREATE: + win = (WINHELP_WINDOW*) ((LPCREATESTRUCT) lParam)->lpCreateParams; + SetWindowLong(hWnd, 0, (LONG) win); + win->hButtonBoxWnd = hWnd; + break; + + case WM_WINDOWPOSCHANGING: + winpos = (WINDOWPOS*) lParam; + win = (WINHELP_WINDOW*) GetWindowLong(hWnd, 0); + + /* Update buttons */ + button_size.cx = 0; + button_size.cy = 0; + for (button = win->first_button; button; button = button->next) + { + HDC hDc; + SIZE textsize; + if (!button->hWnd) + button->hWnd = CreateWindow(STRING_BUTTON, (LPSTR) button->lpszName, + WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, + 0, 0, 0, 0, + hWnd, (HMENU) button->wParam, + Globals.hInstance, 0); + hDc = GetDC(button->hWnd); + GetTextExtentPoint(hDc, button->lpszName, + lstrlen(button->lpszName), &textsize); + ReleaseDC(button->hWnd, hDc); + + button_size.cx = MAX(button_size.cx, textsize.cx + BUTTON_CX); + button_size.cy = MAX(button_size.cy, textsize.cy + BUTTON_CY); + } + + x = 0; + y = 0; + for (button = win->first_button; button; button = button->next) + { + SetWindowPos(button->hWnd, HWND_TOP, x, y, button_size.cx, button_size.cy, 0); + + if (x + 2 * button_size.cx <= winpos->cx) + x += button_size.cx; + else + x = 0, y += button_size.cy; + } + winpos->cy = y + (x ? button_size.cy : 0); + break; + + case WM_COMMAND: + SendMessage(GetParent(hWnd), msg, wParam, lParam); + break; + } + + return(DefWindowProc(hWnd, msg, wParam, lParam)); +} + +/*********************************************************************** + * + * WINHELP_TextWndProc + */ + +static LRESULT WINHELP_TextWndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + WINHELP_WINDOW *win; + WINHELP_LINE *line; + WINHELP_LINE_PART *part; + WINDOWPOS *winpos; + PAINTSTRUCT ps; + HDC hDc; + POINT mouse; + INT scroll_pos; + HWND hPopupWnd; + BOOL bExit; + + if (msg != WM_LBUTTONDOWN) + WINHELP_CheckPopup(msg); + + switch (msg) + { + case WM_NCCREATE: + win = (WINHELP_WINDOW*) ((LPCREATESTRUCT) lParam)->lpCreateParams; + SetWindowLong(hWnd, 0, (LONG) win); + win->hTextWnd = hWnd; + if (!win->lpszName) Globals.hPopupWnd = win->hMainWnd = hWnd; + WINHELP_InitFonts(hWnd); + break; + + case WM_CREATE: + win = (WINHELP_WINDOW*) GetWindowLong(hWnd, 0); + + /* Calculate vertical size and position of a popup window */ + if (!win->lpszName) + { + POINT origin; + RECT old_window_rect; + RECT old_client_rect; + SIZE old_window_size; + SIZE old_client_size; + SIZE new_client_size; + SIZE new_window_size; + + GetWindowRect(hWnd, &old_window_rect); + origin.x = old_window_rect.left; + origin.y = old_window_rect.top; + old_window_size.cx = old_window_rect.right - old_window_rect.left; + old_window_size.cy = old_window_rect.bottom - old_window_rect.top; + + GetClientRect(hWnd, &old_client_rect); + old_client_size.cx = old_client_rect.right - old_client_rect.left; + old_client_size.cy = old_client_rect.bottom - old_client_rect.top; + + new_client_size = old_client_size; + WINHELP_SplitLines(hWnd, &new_client_size); + + if (origin.y + POPUP_YDISTANCE + new_client_size.cy <= GetSystemMetrics(SM_CYSCREEN)) + origin.y += POPUP_YDISTANCE; + else + origin.y -= POPUP_YDISTANCE + new_client_size.cy; + + new_window_size.cx = old_window_size.cx - old_client_size.cx + new_client_size.cx; + new_window_size.cy = old_window_size.cy - old_client_size.cy + new_client_size.cy; + + win->hShadowWnd = + CreateWindow(SHADOW_WIN_CLASS_NAME, "", WS_POPUP | WS_VISIBLE, + origin.x + SHADOW_DX, origin.y + SHADOW_DY, + new_window_size.cx, new_window_size.cy, + 0, 0, Globals.hInstance, 0); + + SetWindowPos(hWnd, HWND_TOP, origin.x, origin.y, + new_window_size.cx, new_window_size.cy, + SWP_NOZORDER | SWP_NOACTIVATE); + ShowWindow(win->hShadowWnd, SW_NORMAL); + } + break; + + case WM_WINDOWPOSCHANGED: + winpos = (WINDOWPOS*) lParam; + if (!(winpos->flags & SWP_NOSIZE)) WINHELP_SetupText(hWnd); + break; + + case WM_VSCROLL: + { + BOOL update = TRUE; + RECT rect; + INT Min, Max; + INT CurPos = GetScrollPos(hWnd, SB_VERT); + GetScrollRange(hWnd, SB_VERT, &Min, &Max); + GetClientRect(hWnd, &rect); + + switch (wParam & 0xffff) + { + case SB_THUMBTRACK: + case SB_THUMBPOSITION: CurPos = wParam >> 16; break; + case SB_TOP: CurPos = Min; break; + case SB_BOTTOM: CurPos = Max; break; + case SB_PAGEUP: CurPos -= (rect.bottom - rect.top) / 2; break; + case SB_PAGEDOWN: CurPos += (rect.bottom - rect.top) / 2; break; + case SB_LINEUP: CurPos -= GetSystemMetrics(SM_CXVSCROLL); break; + case SB_LINEDOWN: CurPos += GetSystemMetrics(SM_CXVSCROLL); break; + default: update = FALSE; + } + if (update) + { + INT dy = GetScrollPos(hWnd, SB_VERT) - CurPos; + SetScrollPos(hWnd, SB_VERT, CurPos, TRUE); + ScrollWindow(hWnd, 0, dy, NULL, NULL); + UpdateWindow(hWnd); + } + } + break; + + case WM_PAINT: + hDc = BeginPaint (hWnd, &ps); + win = (WINHELP_WINDOW*) GetWindowLong(hWnd, 0); + scroll_pos = GetScrollPos(hWnd, SB_VERT); + + for (line = win->first_line; line; line = line->next) + for (part = &line->first_part; part; part = part->next) + { + SelectObject(hDc, part->hFont); + SetTextColor(hDc, part->color); + TextOut(hDc, part->rect.left, part->rect.top - scroll_pos, + (LPSTR) part->lpsText, part->wTextLen); + } + + EndPaint (hWnd, &ps); + break; + + case WM_LBUTTONDOWN: + win = (WINHELP_WINDOW*) GetWindowLong(hWnd, 0); + scroll_pos = GetScrollPos(hWnd, SB_VERT); + + hPopupWnd = Globals.hPopupWnd; + Globals.hPopupWnd = 0; + + mouse.x = LOWORD(lParam); + mouse.y = HIWORD(lParam); + for (line = win->first_line; line; line = line->next) + for (part = &line->first_part; part; part = part->next) + if (part->link.lpszPath && + part->rect.left <= mouse.x && + part->rect.right >= mouse.x && + part->rect.top <= mouse.y + scroll_pos && + part->rect.bottom >= mouse.y + scroll_pos) + WINHELP_CreateHelpWindow(part->link.lpszPath, part->link.lHash, NULL, + part->link.bPopup, hWnd, &mouse, SW_NORMAL); + if (hPopupWnd) + DestroyWindow(hPopupWnd); + break; + + case WM_NCDESTROY: + win = (WINHELP_WINDOW*) GetWindowLong(hWnd, 0); + + if (hWnd == Globals.hPopupWnd) Globals.hPopupWnd = 0; + + bExit = (Globals.wVersion >= 4 && !lstrcmpi(win->lpszName, "main")); + + WINHELP_DeleteWindow(win); + + if (bExit) MACRO_Exit(); + + if (!Globals.win_list) + PostQuitMessage (0); + break; + } + + return DefWindowProc (hWnd, msg, wParam, lParam); +} + +/*********************************************************************** + * + * SetupText + */ + +static VOID WINHELP_SetupText(HWND hWnd) +{ + HDC hDc = GetDC(hWnd); + RECT rect; + SIZE newsize; + + ShowScrollBar(hWnd, SB_VERT, FALSE); + if (!WINHELP_SplitLines(hWnd, NULL)) + { + ShowScrollBar(hWnd, SB_VERT, TRUE); + GetClientRect(hWnd, &rect); + + WINHELP_SplitLines(hWnd, &newsize); + SetScrollRange(hWnd, SB_VERT, 0, rect.top + newsize.cy - rect.bottom, TRUE); + } + else SetScrollPos(hWnd, SB_VERT, 0, FALSE); + + ReleaseDC(hWnd, hDc); +} + +/*********************************************************************** + * + * WINHELP_SplitLines + */ + +static BOOL WINHELP_SplitLines(HWND hWnd, LPSIZE newsize) +{ + WINHELP_WINDOW *win = (WINHELP_WINDOW*) GetWindowLong(hWnd, 0); + HLPFILE_PARAGRAPH *p; + WINHELP_LINE **line = &win->first_line; + WINHELP_LINE_PART **part = 0; + INT line_ascent = 0; + SIZE space; + RECT rect; + HDC hDc; + + if (newsize) newsize->cx = newsize->cy = 0; + + if (!win->page) return TRUE; + + WINHELP_DeleteLines(win); + + GetClientRect(hWnd, &rect); + + rect.top += INTERNAL_BORDER_WIDTH; + rect.left += INTERNAL_BORDER_WIDTH; + rect.right -= INTERNAL_BORDER_WIDTH; + rect.bottom -= INTERNAL_BORDER_WIDTH; + + + space.cy = rect.top; + space.cx = rect.left; + + hDc = GetDC(hWnd); + + for (p = win->page->first_paragraph; p; p = p->next) + { + TEXTMETRIC tm; + SIZE textsize = {0, 0}; + LPCSTR text = p->lpszText; + UINT len = strlen(text); + UINT indent = 0; + + UINT wFont = (p->wFont < win->fonts_len) ? p->wFont : 0; + BOOL bUnderline = p->link && !p->link->bPopup; + HFONT hFont = win->fonts[wFont][bUnderline ? 1 : 0]; + + COLORREF color = RGB(0, 0, 0); + if (p->link) color = RGB(0, 0x80, 0); + if (p->bDebug) color = RGB(0xff, 0, 0); + + SelectObject(hDc, hFont); + + GetTextMetrics (hDc, &tm); + + if (p->wIndent) + { + indent = p->wIndent * 5 * tm.tmAveCharWidth; + if (!part) + space.cx = rect.left + indent - 2 * tm.tmAveCharWidth; + } + + if (p->wVSpace) + { + part = 0; + space.cx = rect.left + indent; + space.cy += (p->wVSpace - 1) * tm.tmHeight; + } + + if (p->wHSpace) + { + space.cx += p->wHSpace * 2 * tm.tmAveCharWidth; + } + + while (len) + { + INT free_width = rect.right - (part ? (*line)->rect.right : rect.left) - space.cx; + UINT low = 0, curr = len, high = len, textlen; + + if (free_width > 0) + { + while (1) + { + GetTextExtentPoint(hDc, text, curr, &textsize); + + if (textsize.cx <= free_width) low = curr; + else high = curr; + + if (high <= low + 1) break; + + if (textsize.cx) curr = (curr * free_width) / textsize.cx; + if (curr <= low) curr = low + 1; + else if (curr >= high) curr = high - 1; + } + textlen = low; + while (textlen && text[textlen] && text[textlen] != ' ') textlen--; + } + if (!part && !textlen) textlen = MAX(low, 1); + + if (free_width <= 0 || !textlen) + { + part = 0; + space.cx = rect.left + indent; + space.cx = MIN(space.cx, rect.right - rect.left - 1); + continue; + } + + if (!WINHELP_AppendText(&line, &part, &space, &textsize, + &line_ascent, tm.tmAscent, + text, textlen, hFont, color, p->link) || + (!newsize && (*line)->rect.bottom > rect.bottom)) + { + ReleaseDC(hWnd, hDc); + return FALSE; + } + + if (newsize) + newsize->cx = MAX(newsize->cx, (*line)->rect.right + INTERNAL_BORDER_WIDTH); + + len -= textlen; + text += textlen; + if (text[0] == ' ') text++, len--; + } + } + + if (newsize) + newsize->cy = (*line)->rect.bottom + INTERNAL_BORDER_WIDTH; + + ReleaseDC(hWnd, hDc); + return TRUE; +} + +/*********************************************************************** + * + * WINHELP_AppendText + */ + +static BOOL WINHELP_AppendText(WINHELP_LINE ***linep, WINHELP_LINE_PART ***partp, + LPSIZE space, LPSIZE textsize, + INT *line_ascent, INT ascent, + LPCSTR text, UINT textlen, + HFONT font, COLORREF color, HLPFILE_LINK *link) +{ + HGLOBAL handle; + WINHELP_LINE *line; + WINHELP_LINE_PART *part; + LPSTR ptr; + + if (!*partp) /* New line */ + { + *line_ascent = ascent; + + handle = GlobalAlloc(GMEM_FIXED, sizeof(WINHELP_LINE) + textlen + + (link ? lstrlen(link->lpszPath) + 1 : 0)); + if (!handle) return FALSE; + line = GlobalLock(handle); + line->next = 0; + part = &line->first_part; + ptr = GlobalLock(handle); + ptr += sizeof(WINHELP_LINE); + + line->rect.top = (**linep ? (**linep)->rect.bottom : 0) + space->cy; + line->rect.bottom = line->rect.top; + line->rect.left = space->cx; + line->rect.right = space->cx; + + if (**linep) *linep = &(**linep)->next; + **linep = line; + space->cy = 0; + } + else /* Same line */ + { + line = **linep; + + if (*line_ascent < ascent) + { + WINHELP_LINE_PART *p; + for (p = &line->first_part; p; p = p->next) + { + p->rect.top += ascent - *line_ascent; + p->rect.bottom += ascent - *line_ascent; + } + line->rect.bottom += ascent - *line_ascent; + *line_ascent = ascent; + } + + handle = GlobalAlloc(GMEM_FIXED, sizeof(WINHELP_LINE_PART) + textlen + + (link ? lstrlen(link->lpszPath) + 1 : 0)); + if (!handle) return FALSE; + part = GlobalLock(handle); + **partp = part; + ptr = GlobalLock(handle); + ptr += sizeof(WINHELP_LINE_PART); + } + + hmemcpy(ptr, text, textlen); + part->rect.left = line->rect.right + (*partp ? space->cx : 0); + part->rect.right = part->rect.left + textsize->cx; + line->rect.right = part->rect.right; + part->rect.top = + ((*partp) ? line->rect.top : line->rect.bottom) + *line_ascent - ascent; + part->rect.bottom = part->rect.top + textsize->cy; + line->rect.bottom = MAX(line->rect.bottom, part->rect.bottom); + part->hSelf = handle; + part->lpsText = ptr; + part->wTextLen = textlen; + part->hFont = font; + part->color = color; + if (link) + { + strcpy(ptr + textlen, link->lpszPath); + part->link.lpszPath = ptr + textlen; + part->link.lHash = link->lHash; + part->link.bPopup = link->bPopup; + } + else part->link.lpszPath = 0; + + part->next = 0; + *partp = &part->next; + + space->cx = 0; + + return TRUE; +} + +/*********************************************************************** + * + * WINHELP_CheckPopup + */ + +static VOID WINHELP_CheckPopup(UINT msg) +{ + if (!Globals.hPopupWnd) return; + + switch (msg) + { + case WM_COMMAND: + case WM_LBUTTONDOWN: + case WM_MBUTTONDOWN: + case WM_RBUTTONDOWN: + case WM_NCLBUTTONDOWN: + case WM_NCMBUTTONDOWN: + case WM_NCRBUTTONDOWN: + DestroyWindow(Globals.hPopupWnd); + Globals.hPopupWnd = 0; + } +} + +/*********************************************************************** + * + * WINHELP_DeleteLines + */ + +static VOID WINHELP_DeleteLines(WINHELP_WINDOW *win) +{ + WINHELP_LINE *line, *next_line; + WINHELP_LINE_PART *part, *next_part; + for(line = win->first_line; line; line = next_line) + { + next_line = line->next; + for(part = &line->first_part; part; part = next_part) + { + next_part = part->next; + GlobalFree(part->hSelf); + } + } + win->first_line = 0; +} + +/*********************************************************************** + * + * WINHELP_DeleteWindow + */ + +static VOID WINHELP_DeleteWindow(WINHELP_WINDOW *win) +{ + WINHELP_WINDOW **w; + + for (w = &Globals.win_list; *w; w = &(*w)->next) + if (*w == win) + { + *w = win->next; + break; + } + + if (win->hShadowWnd) DestroyWindow(win->hShadowWnd); + HLPFILE_FreeHlpFilePage(win->page); + WINHELP_DeleteLines(win); + GlobalFree(win->hSelf); +} + +/*********************************************************************** + * + * WINHELP_InitFonts + */ + +static VOID WINHELP_InitFonts(HWND hWnd) +{ + WINHELP_WINDOW *win = (WINHELP_WINDOW*) GetWindowLong(hWnd, 0); + LOGFONT logfontlist[] = { + {-10, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 32, "Helv"}, + {-12, 0, 0, 0, 700, 0, 0, 0, 0, 0, 0, 0, 32, "Helv"}, + {-12, 0, 0, 0, 700, 0, 0, 0, 0, 0, 0, 0, 32, "Helv"}, + {-12, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 32, "Helv"}, + {-12, 0, 0, 0, 700, 0, 0, 0, 0, 0, 0, 0, 32, "Helv"}, + {-10, 0, 0, 0, 700, 0, 0, 0, 0, 0, 0, 0, 32, "Helv"}, + { -8, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 32, "Helv"}}; +#define FONTS_LEN (sizeof(logfontlist)/sizeof(*logfontlist)) + + static HFONT fonts[FONTS_LEN][2]; + static BOOL init = 0; + + win->fonts_len = FONTS_LEN; + win->fonts = fonts; + + if (!init) + { + INT i; + + for(i = 0; i < FONTS_LEN; i++) + { + LOGFONT logfont = logfontlist[i]; + + fonts[i][0] = CreateFontIndirect(&logfont); + logfont.lfUnderline = 1; + fonts[i][1] = CreateFontIndirect(&logfont); + } + + init = 1; + } +} + +/*********************************************************************** + * + * WINHELP_MessageBoxIDS + */ + +INT WINHELP_MessageBoxIDS(UINT ids_text, UINT ids_title, WORD type) +{ + CHAR text[MAX_STRING_LEN]; + CHAR title[MAX_STRING_LEN]; + + LoadString(Globals.hInstance, ids_text, text, sizeof(text)); + LoadString(Globals.hInstance, ids_title, title, sizeof(title)); + + return(MessageBox(0, text, title, type)); +} + +/*********************************************************************** + * + * MAIN_MessageBoxIDS_s + */ + +INT WINHELP_MessageBoxIDS_s(UINT ids_text, LPCSTR str, UINT ids_title, WORD type) +{ + CHAR text[MAX_STRING_LEN]; + CHAR title[MAX_STRING_LEN]; + CHAR newtext[MAX_STRING_LEN + MAX_PATHNAME_LEN]; + + LoadString(Globals.hInstance, ids_text, text, sizeof(text)); + LoadString(Globals.hInstance, ids_title, title, sizeof(title)); + wsprintf(newtext, text, str); + + return(MessageBox(0, newtext, title, type)); +} + +/* Local Variables: */ +/* c-file-style: "GNU" */ +/* End: */ diff --git a/programs/winhelp/winhelp.h b/programs/winhelp/winhelp.h new file mode 100644 index 00000000000..debf695b2cb --- /dev/null +++ b/programs/winhelp/winhelp.h @@ -0,0 +1,156 @@ +/* + * Help Viewer + * + * Copyright 1996 Ulrich Schmid + */ + +#define MAX_LANGUAGE_NUMBER 255 +#define MAX_PATHNAME_LEN 1024 +#define MAX_STRING_LEN 255 + +#define INTERNAL_BORDER_WIDTH 5 +#define POPUP_YDISTANCE 20 +#define SHADOW_DX 20 +#define SHADOW_DY 20 +#define BUTTON_CX 6 +#define BUTTON_CY 6 + +#ifndef RC_INVOKED + +#include "hlpfile.h" +#include "macro.h" + +typedef struct tagHelpLinePart +{ + RECT rect; + LPCSTR lpsText; + UINT wTextLen; + HFONT hFont; + COLORREF color; + + struct + { + LPCSTR lpszPath; + LONG lHash; + BOOL bPopup; + } link; + + HGLOBAL hSelf; + struct tagHelpLinePart *next; +} WINHELP_LINE_PART; + +typedef struct tagHelpLine +{ + RECT rect; + WINHELP_LINE_PART first_part; + struct tagHelpLine *next; +} WINHELP_LINE; + +typedef struct tagHelpButton +{ + HWND hWnd; + + LPCSTR lpszID; + LPCSTR lpszName; + LPCSTR lpszMacro; + + WPARAM wParam; + + RECT rect; + + HGLOBAL hSelf; + struct tagHelpButton *next; +} WINHELP_BUTTON; + +typedef struct tagWinHelp +{ + LPCSTR lpszName; + + WINHELP_BUTTON *first_button; + HLPFILE_PAGE *page; + WINHELP_LINE *first_line; + + HWND hMainWnd; + HWND hButtonBoxWnd; + HWND hTextWnd; + HWND hShadowWnd; + + HFONT (*fonts)[2]; + UINT fonts_len; + + HGLOBAL hSelf; + struct tagWinHelp *next; +} WINHELP_WINDOW; + +typedef struct +{ + UINT wVersion; + HANDLE hInstance; + HWND hPopupWnd; + UINT wStringTableOffset; + WINHELP_WINDOW *active_win; + WINHELP_WINDOW *win_list; +} WINHELP_GLOBALS; + +extern WINHELP_GLOBALS Globals; + +VOID WINHELP_CreateHelpWindow(LPCSTR, LONG, LPCSTR, BOOL, HWND, LPPOINT, INT); +INT WINHELP_MessageBoxIDS(UINT, UINT, WORD); +INT WINHELP_MessageBoxIDS_s(UINT, LPCSTR, UINT, WORD); + +extern CHAR MAIN_WIN_CLASS_NAME[]; +extern CHAR BUTTON_BOX_WIN_CLASS_NAME[]; +extern CHAR TEXT_WIN_CLASS_NAME[]; +extern CHAR SHADOW_WIN_CLASS_NAME[]; +extern CHAR STRING_BUTTON[]; +extern CHAR STRING_MENU_Xx[]; +extern CHAR STRING_DIALOG_TEST[]; + +#define STRINGID(id) (0x##id + Globals.wStringTableOffset) + +#else /* RC_INVOKED */ + +#define STRINGID(id) id + +#endif + +/* Stringtable index */ +#define IDS_LANGUAGE_ID STRINGID(00) +#define IDS_WINE_HELP STRINGID(01) +#define IDS_ERROR STRINGID(02) +#define IDS_WARNING STRINGID(03) +#define IDS_INFO STRINGID(04) +#define IDS_NOT_IMPLEMENTED STRINGID(05) +#define IDS_HLPFILE_ERROR_s STRINGID(06) +#define IDS_CONTENTS STRINGID(07) +#define IDS_SEARCH STRINGID(08) +#define IDS_BACK STRINGID(09) +#define IDS_HISTORY STRINGID(0a) +#define IDS_ALL_FILES STRINGID(0b) +#define IDS_HELP_FILES_HLP STRINGID(0c) + +/* Menu `File' */ +#define WH_OPEN 11 +#define WH_PRINT 12 +#define WH_PRINTER_SETUP 13 +#define WH_EXIT 14 + +/* Menu `Edit' */ +#define WH_COPY_DIALOG 21 +#define WH_ANNOTATE 22 + +/* Menu `Bookmark' */ +#define WH_BOOKMARK_DEFINE 31 + +/* Menu `Help' */ +#define WH_HELP_ON_HELP 41 +#define WH_HELP_ON_TOP 42 +#define WH_ABOUT 43 +#define WH_ABOUT_WINE 44 + +/* Buttons */ +#define WH_FIRST_BUTTON 500 + +/* Local Variables: */ +/* c-file-style: "GNU" */ +/* End: */ diff --git a/resources/TODO b/resources/TODO index eff85ce08e5..dbd7c26112d 100644 --- a/resources/TODO +++ b/resources/TODO @@ -46,9 +46,29 @@ Today it works well for: * English * German * French +* Italian +* Korean ...to be continued...... Thank you. Albrecht Kleine kleine@ak.sax.de + +************************************************************** +1996, May, 2nd + +Subject ChooseFont + +Just like ChooseColor, please copy CHOSEFONT from sysres_EN.rc, +and translate it to your language. It's okay for: + +* English +* German +..... + +Thank you. + +Albrecht Kleine +kleine@ak.sax.de + diff --git a/resources/sysres_Cz.rc b/resources/sysres_Cz.rc index e7129d6ae9f..9ddbc1c8a3e 100644 --- a/resources/sysres_Cz.rc +++ b/resources/sysres_Cz.rc @@ -27,14 +27,14 @@ BEGIN PUSHBUTTON "&Ne", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP END -SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 223, 200 +SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 223, 270 STYLE DS_LOCALEDIT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "O aplikaci %s" FONT 10, "System" { - DEFPUSHBUTTON "OK", 1, 91, 180, 40, 14 - CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 215, 140 - LTEXT "Text", 100, 11, 40, 200, 130, SS_NOPREFIX | WS_GROUP + DEFPUSHBUTTON "OK", 1, 91, 250, 40, 14 + CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 215, 210 + LTEXT "Text", 100, 11, 40, 200, 200, SS_NOPREFIX | WS_GROUP ICON "", 1088, 195, 10, 18, 20 } diff --git a/resources/sysres_Da.rc b/resources/sysres_Da.rc index 9a7c7002eed..99425c5e316 100644 --- a/resources/sysres_Da.rc +++ b/resources/sysres_Da.rc @@ -27,14 +27,14 @@ BEGIN PUSHBUTTON "&Nej", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP END -SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 223, 200 +SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 223, 270 STYLE DS_LOCALEDIT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Om %s" FONT 10, "System" { - DEFPUSHBUTTON "Ok", 1, 91, 180, 40, 14 - CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 215, 140 - LTEXT "Tekst", 100, 11, 40, 200, 130, SS_NOPREFIX | WS_GROUP + DEFPUSHBUTTON "Ok", 1, 91, 250, 40, 14 + CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 215, 210 + LTEXT "Tekst", 100, 11, 40, 200, 200, SS_NOPREFIX | WS_GROUP ICON "", 1088, 195, 10, 18, 20 } diff --git a/resources/sysres_De.rc b/resources/sysres_De.rc index b20f6b8b7c9..13e5c1a4057 100644 --- a/resources/sysres_De.rc +++ b/resources/sysres_De.rc @@ -27,14 +27,14 @@ BEGIN PUSHBUTTON "&Nein", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP END -SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 223, 200 +SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 223, 270 STYLE DS_LOCALEDIT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Info über %s" FONT 10, "System" { - DEFPUSHBUTTON "OK", 1, 91, 180, 40, 14 - CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 215, 140 - LTEXT "Text", 100, 11, 40, 200, 130, SS_NOPREFIX | WS_GROUP + DEFPUSHBUTTON "OK", 1, 91, 250, 40, 14 + CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 215, 210 + LTEXT "Text", 100, 11, 40, 200, 200, SS_NOPREFIX | WS_GROUP ICON "", 1088, 195, 10, 18, 20 } @@ -132,15 +132,32 @@ FONT 8, "Helv" } -CHOOSE_FONT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +CHOOSE_FONT DIALOG DISCARDABLE 13, 54, 264, 147 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Font" FONT 8, "Helv" { - LTEXT "Font:", 1088, 6, 6, 40, 9 - LTEXT "", 1089, 60, 6, 150, 9 - DEFPUSHBUTTON "Ok", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP - PUSHBUTTON "Abbrechen", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "Schrift&art:",1088 ,6,3,40,9 + COMBOBOX 1136 ,6,13,94,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "Schrift&stil:",1089 ,108,3,44,9 + COMBOBOX 1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "Schrift&größe:",1090,179,3,30,9 + COMBOBOX 1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT + DEFPUSHBUTTON "OK",IDOK,218,6,40,14,WS_GROUP + PUSHBUTTON "Abbrechen",IDCANCEL,218,23,40,14,WS_GROUP + PUSHBUTTON "&Zuweisen", 1026,218,40,40,14,WS_GROUP + PUSHBUTTON "&Hilfe" , 1038,218,57,40,14,WS_GROUP + GROUPBOX "Darstellung",1072,6,72,84,34,WS_GROUP + CHECKBOX "&Durchgestrichen", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "&Unterstrichen", 1041, 10,94,50,10, BS_AUTOCHECKBOX + LTEXT "&Farbe:", 1091 ,6,110,30,9 + COMBOBOX 1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Muster",1073,98,72,160,49,WS_GROUP + CTEXT "AaBbYyZz",1093,104,81,149,37,SS_NOPREFIX | WS_VISIBLE } diff --git a/resources/sysres_En.rc b/resources/sysres_En.rc index aba679af859..ebe8dba62b4 100644 --- a/resources/sysres_En.rc +++ b/resources/sysres_En.rc @@ -27,14 +27,14 @@ BEGIN PUSHBUTTON "&No", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP END -SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 223, 200 +SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 223, 270 STYLE DS_LOCALEDIT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "About %s" FONT 10, "System" { - DEFPUSHBUTTON "OK", 1, 91, 180, 40, 14 - CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 215, 140 - LTEXT "Text", 100, 11, 40, 200, 130, SS_NOPREFIX | WS_GROUP + DEFPUSHBUTTON "OK", 1, 91, 250, 40, 14 + CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 215, 210 + LTEXT "Text", 100, 11, 40, 200, 200, SS_NOPREFIX | WS_GROUP ICON "", 1088, 195, 10, 18, 20 } @@ -132,15 +132,32 @@ FONT 8, "Helv" } -CHOOSE_FONT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 +CHOOSE_FONT DIALOG DISCARDABLE 13, 54, 264, 147 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Font" FONT 8, "Helv" { - LTEXT "Font:", 1088, 6, 6, 40, 9 - LTEXT "", 1089, 60, 6, 150, 9 - DEFPUSHBUTTON "Ok", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP - PUSHBUTTON "Cancel", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "&Font:",1088 ,6,3,40,9 + COMBOBOX 1136 ,6,13,94,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "Font St&yle:",1089 ,108,3,44,9 + COMBOBOX 1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE + LTEXT "&Size:",1090,179,3,30,9 + COMBOBOX 1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | + WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT + DEFPUSHBUTTON "OK",IDOK,218,6,40,14,WS_GROUP + PUSHBUTTON "Cancel",IDCANCEL,218,23,40,14,WS_GROUP + PUSHBUTTON "&Apply", 1026,218,40,40,14,WS_GROUP + PUSHBUTTON "&Help" , 1038,218,57,40,14,WS_GROUP + GROUPBOX "Effects",1072,6,72,84,34,WS_GROUP + CHECKBOX "Stri&keout", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "&Underline", 1041, 10,94,50,10, BS_AUTOCHECKBOX + LTEXT "&Color:", 1091 ,6,110,30,9 + COMBOBOX 1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | + CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Sample",1073,98,72,160,49,WS_GROUP + CTEXT "AaBbYyZz",1093,104,81,149,37,SS_NOPREFIX | WS_VISIBLE } diff --git a/resources/sysres_Eo.rc b/resources/sysres_Eo.rc index da223ee88d3..bb3d7d075d1 100644 --- a/resources/sysres_Eo.rc +++ b/resources/sysres_Eo.rc @@ -27,14 +27,14 @@ BEGIN PUSHBUTTON "N&e", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP END -SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 223, 200 +SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 223, 270 STYLE DS_LOCALEDIT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Pri %s" FONT 10, "System" { - DEFPUSHBUTTON "Enorde", 1, 91, 180, 40, 14 - CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 215, 140 - LTEXT "Text", 100, 11, 40, 200, 130, SS_NOPREFIX | WS_GROUP + DEFPUSHBUTTON "Enorde", 1, 91, 250, 40, 14 + CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 215, 210 + LTEXT "Text", 100, 11, 40, 200, 200, SS_NOPREFIX | WS_GROUP ICON "", 1088, 195, 10, 18, 20 } diff --git a/resources/sysres_Es.rc b/resources/sysres_Es.rc index 235fdd94b13..7380894fec2 100644 --- a/resources/sysres_Es.rc +++ b/resources/sysres_Es.rc @@ -28,14 +28,14 @@ BEGIN PUSHBUTTON "&No", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP END -SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 223, 200 +SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 223, 270 STYLE DS_LOCALEDIT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Acerca de %s" FONT 10, "System" { - DEFPUSHBUTTON "Aceptar", 1, 91, 180, 40, 14 - CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 215, 140 - LTEXT "Text", 100, 11, 40, 200, 130, SS_NOPREFIX | WS_GROUP + DEFPUSHBUTTON "Aceptar", 1, 91, 250, 40, 14 + CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 215, 210 + LTEXT "Text", 100, 11, 40, 200, 200, SS_NOPREFIX | WS_GROUP ICON "", 1088, 195, 10, 18, 20 } diff --git a/resources/sysres_Fi.rc b/resources/sysres_Fi.rc index 447f42673e4..8b5ddc0c47e 100644 --- a/resources/sysres_Fi.rc +++ b/resources/sysres_Fi.rc @@ -27,14 +27,14 @@ BEGIN PUSHBUTTON "&Ei", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP END -SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 223, 200 +SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 223, 270 STYLE DS_LOCALEDIT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Tietoja: %s" FONT 10, "System" { - DEFPUSHBUTTON "OK", 1, 91, 180, 40, 14 - CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 215, 140 - LTEXT "Teksti", 100, 11, 40, 200, 130, SS_NOPREFIX | WS_GROUP + DEFPUSHBUTTON "OK", 1, 91, 250, 40, 14 + CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 215, 210 + LTEXT "Teksti", 100, 11, 40, 200, 200, SS_NOPREFIX | WS_GROUP ICON "", 1088, 195, 10, 18, 20 } diff --git a/resources/sysres_Fr.rc b/resources/sysres_Fr.rc index 3df4265e0c3..13843e1fdc4 100644 --- a/resources/sysres_Fr.rc +++ b/resources/sysres_Fr.rc @@ -28,14 +28,14 @@ BEGIN PUSHBUTTON "&Non", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP END -SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 213, 179 +SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 223, 270 STYLE DS_LOCALEDIT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "A propos de %s" FONT 10, "System" { - DEFPUSHBUTTON "OK", 1, 86, 160, 40, 14 - CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 205, 120 - LTEXT "Text", 100, 11, 40, 190, 110, SS_NOPREFIX | WS_GROUP + DEFPUSHBUTTON "OK", 1, 91, 250, 40, 14 + CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 215, 210 + LTEXT "Text", 100, 11, 40, 200, 200, SS_NOPREFIX | WS_GROUP ICON "", 1088, 185, 10, 18, 20 } diff --git a/resources/sysres_It.rc b/resources/sysres_It.rc index 5fab00a13c3..35a562601c9 100644 --- a/resources/sysres_It.rc +++ b/resources/sysres_It.rc @@ -27,14 +27,14 @@ BEGIN PUSHBUTTON "&No", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP END -SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 223, 200 +SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 223, 270 STYLE DS_LOCALEDIT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Informazioni su %s" FONT 10, "System" { - DEFPUSHBUTTON "OK", 1, 91, 180, 40, 14 - CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 215, 140 - LTEXT "Text", 100, 11, 40, 200, 130, SS_NOPREFIX | WS_GROUP + DEFPUSHBUTTON "OK", 1, 91, 250, 40, 14 + CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 215, 210 + LTEXT "Text", 100, 11, 40, 200, 200, SS_NOPREFIX | WS_GROUP ICON "", 1088, 195, 10, 18, 20 } diff --git a/resources/sysres_Ko.rc b/resources/sysres_Ko.rc index b6588a5ffac..24dfb4ed52d 100644 --- a/resources/sysres_Ko.rc +++ b/resources/sysres_Ko.rc @@ -27,14 +27,14 @@ BEGIN PUSHBUTTON "¾Æ´Ï¿À(&N)", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP END -SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 223, 200 +SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 223, 270 STYLE DS_LOCALEDIT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "%s¿¡ °üÇÏ¿©" FONT 10, "System" { - DEFPUSHBUTTON "½ÂÀÎ", 1, 91, 180, 40, 14 - CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 215, 140 - LTEXT "Text", 100, 11, 40, 200, 130, SS_NOPREFIX | WS_GROUP + DEFPUSHBUTTON "½ÂÀÎ", 1, 91, 250, 40, 14 + CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 215, 210 + LTEXT "Text", 100, 11, 40, 200, 200, SS_NOPREFIX | WS_GROUP ICON "", 1088, 195, 10, 18, 20 } diff --git a/resources/sysres_No.rc b/resources/sysres_No.rc index f208f752d87..41921426fc2 100644 --- a/resources/sysres_No.rc +++ b/resources/sysres_No.rc @@ -27,14 +27,14 @@ BEGIN PUSHBUTTON "&Nei", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP END -SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 223, 200 +SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 223, 270 STYLE DS_LOCALEDIT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Om %s" FONT 10, "System" { - DEFPUSHBUTTON "OK", 1, 91, 180, 40, 14 - CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 215, 140 - LTEXT "Tekst", 100, 11, 40, 200, 130, SS_NOPREFIX | WS_GROUP + DEFPUSHBUTTON "OK", 1, 91, 250, 40, 14 + CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 215, 210 + LTEXT "Tekst", 100, 11, 40, 200, 200, SS_NOPREFIX | WS_GROUP ICON "", 1088, 195, 10, 18, 20 } diff --git a/tools/build.c b/tools/build.c index ac2af32376b..8de854517b7 100644 --- a/tools/build.c +++ b/tools/build.c @@ -1057,11 +1057,13 @@ static void BuildSpec16Files(void) printf( "/* %s.%d */\n", DLLName, i); printf( "\tpushw %%bp\n" ); printf( "\tpushl $" PREFIX "%s\n", fdp->internal_name ); - printf( "\tlcall $0x%04x, $" PREFIX "CallFrom16_%s_%s\n", - WINE_CODE_SELECTOR, + /* FreeBSD does not understand lcall, so do it the hard way */ + printf( "\t.byte 0x9a /*lcall*/\n" ); + printf( "\t.long " PREFIX "CallFrom16_%s_%s\n", (odp->type == TYPE_REGISTER) ? "regs" : (odp->type == TYPE_PASCAL) ? "long" : "word", fdp->arg_types ); + printf( "\t.word 0x%04x\n", WINE_CODE_SELECTOR ); printf( "\tnop\n" ); printf( "\tnop\n\n" ); odp->offset = code_offset; @@ -1411,8 +1413,11 @@ static void BuildCallFrom16Func( char *profile ) /* Save 16-bit ds and es */ - printf( "\tmovw %%ds,-10(%%ebp)\n" ); - printf( "\tmovw %%es,-6(%%ebp)\n" ); + /* Stupid FreeBSD assembler doesn't know these either */ + /* printf( "\tmovw %%ds,-10(%%ebp)\n" ); */ + printf( "\t.byte 0x66,0x8c,0x5d,0xf6\n" ); + /* printf( "\tmovw %%es,-6(%%ebp)\n" ); */ + printf( "\t.byte 0x66,0x8c,0x45,0xfa\n" ); /* Restore 32-bit ds and es */ diff --git a/win32/advapi.c b/win32/advapi.c index c6fc1373e6b..4b37d55f392 100644 --- a/win32/advapi.c +++ b/win32/advapi.c @@ -16,7 +16,7 @@ * GetUserNameA [ADVAPI32.67] */ -BOOL WINAPI GetUserNameA(LPSTR lpszName, LPDWORD lpSize) +BOOL GetUserNameA(LPSTR lpszName, LPDWORD lpSize) { size_t len; char *name; diff --git a/win32/cursoricon32.c b/win32/cursoricon32.c index e5a102d6874..f5d8262c6c4 100644 --- a/win32/cursoricon32.c +++ b/win32/cursoricon32.c @@ -368,7 +368,7 @@ static HANDLE CURSORICON32_LoadHandler( HANDLE32 handle, HINSTANCE hInstance, sizeXor = bmpXor->bitmap.bmHeight * bmpXor->bitmap.bmWidthBytes; sizeAnd = bmpAnd->bitmap.bmHeight * bmpAnd->bitmap.bmWidthBytes; - if (!(hRes = GlobalAlloc( GMEM_MOVEABLE, + if (!(hRes = GlobalAlloc16( GMEM_MOVEABLE, sizeof(CURSORICONINFO) + sizeXor + sizeAnd))) { DeleteObject( hXorBits ); @@ -379,7 +379,7 @@ static HANDLE CURSORICON32_LoadHandler( HANDLE32 handle, HINSTANCE hInstance, /* Make it owned by the module */ if (hInstance) FarSetOwner( hRes, (WORD)(DWORD)GetExePtr(hInstance) ); - info = (CURSORICONINFO *)GlobalLock( hRes ); + info = (CURSORICONINFO *)GlobalLock16( hRes ); info->ptHotSpot.x = hotspot.x; info->ptHotSpot.y = hotspot.y; info->nWidth = bmpXor->bitmap.bmWidth; @@ -394,7 +394,7 @@ static HANDLE CURSORICON32_LoadHandler( HANDLE32 handle, HINSTANCE hInstance, GetBitmapBits( hXorBits, sizeXor, (char *)(info + 1) + sizeAnd ); DeleteObject( hXorBits ); DeleteObject( hAndBits ); - GlobalUnlock( hRes ); + GlobalUnlock16( hRes ); return hRes; } diff --git a/win32/environment.c b/win32/environment.c index eff905022fe..57e6b004ccf 100644 --- a/win32/environment.c +++ b/win32/environment.c @@ -23,7 +23,7 @@ LPSTR GetCommandLineA(void) { static char buffer[256]; char *cp; - PDB *pdb = (PDB *)GlobalLock( GetCurrentPDB() ); + PDB *pdb = (PDB *)GlobalLock16( GetCurrentPDB() ); #ifndef WINELIB strcpy(buffer, MODULE_GetModuleName( GetExePtr(GetCurrentTask()) ) ); diff --git a/win32/except.c b/win32/except.c index 93de02f1d50..e98ce4a1ccb 100644 --- a/win32/except.c +++ b/win32/except.c @@ -175,7 +175,7 @@ VOID EXC_RaiseException(DWORD dwExceptionCode, * fancy debugging information. It does nothing now! */ -DWORD WINAPI UnhandledExceptionFilter(PEXCEPTION_POINTERS epointers) +DWORD UnhandledExceptionFilter(PEXCEPTION_POINTERS epointers) { PEXCEPTION_RECORD pRecord; PCONTEXT pContext; @@ -206,7 +206,7 @@ DWORD WINAPI UnhandledExceptionFilter(PEXCEPTION_POINTERS epointers) * */ -WINAPI LPTOP_LEVEL_EXCEPTION_FILTER +LPTOP_LEVEL_EXCEPTION_FILTER SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER efilter) { pTopExcHandler=efilter; diff --git a/win32/file.c b/win32/file.c index a14d6db9176..ab338534c54 100644 --- a/win32/file.c +++ b/win32/file.c @@ -38,7 +38,7 @@ static int TranslateAccessFlags(DWORD access_flags); * OpenFileMappingA (KERNEL32.397) * */ -WINAPI HANDLE32 OpenFileMapping(DWORD access, BOOL inherit,const char *fname) +HANDLE32 OpenFileMapping(DWORD access, BOOL inherit,const char *fname) { return 0; } @@ -47,7 +47,7 @@ WINAPI HANDLE32 OpenFileMapping(DWORD access, BOOL inherit,const char *fname) * */ int TranslateProtectionFlags(DWORD); -WINAPI HANDLE32 CreateFileMapping(HANDLE32 h,SECURITY_ATTRIBUTES *ats, +HANDLE32 CreateFileMapping(HANDLE32 h,SECURITY_ATTRIBUTES *ats, DWORD pot, DWORD sh, DWORD hlow, const char * lpName ) { FILE_OBJECT *file_obj; @@ -94,8 +94,8 @@ WINAPI HANDLE32 CreateFileMapping(HANDLE32 h,SECURITY_ATTRIBUTES *ats, * MapViewOfFileEx (KERNEL32.386) * */ -WINAPI void *MapViewOfFileEx(HANDLE32 handle, DWORD access, DWORD offhi, - DWORD offlo, DWORD size, DWORD st) +void *MapViewOfFileEx(HANDLE32 handle, DWORD access, DWORD offhi, + DWORD offlo, DWORD size, DWORD st) { if (!size) size = ((FILEMAP_OBJECT *)handle)->size; return mmap ((caddr_t)st, size, ((FILEMAP_OBJECT *)handle)->prot, @@ -108,8 +108,8 @@ WINAPI void *MapViewOfFileEx(HANDLE32 handle, DWORD access, DWORD offhi, * GetFileInformationByHandle (KERNEL32.219) * */ -DWORD WINAPI GetFileInformationByHandle(FILE_OBJECT *hFile, - BY_HANDLE_FILE_INFORMATION *lpfi) +DWORD GetFileInformationByHandle(FILE_OBJECT *hFile, + BY_HANDLE_FILE_INFORMATION *lpfi) { struct stat file_stat; int rc; diff --git a/win32/init.c b/win32/init.c index bf38b1d1541..09578227e46 100644 --- a/win32/init.c +++ b/win32/init.c @@ -80,7 +80,7 @@ HMODULE WIN32_GetModuleHandle(char *module) /* Freecell uses the result of GetModuleHandleA(0) as the hInstance in all calls to e.g. CreateWindowEx. */ if (module == NULL) { - TDB *pTask = (TDB *)GlobalLock( GetCurrentTask() ); + TDB *pTask = (TDB *)GlobalLock16( GetCurrentTask() ); hModule = pTask->hInstance; } else hModule = GetModuleHandle(module); diff --git a/win32/memory.c b/win32/memory.c index 67455e4efc1..349a3682e4b 100644 --- a/win32/memory.c +++ b/win32/memory.c @@ -316,3 +316,12 @@ BOOL WIN32_IsBadWritePtr(void* ptr, unsigned int bytes) /* FIXME: Should make check based on actual mappings, here */ return FALSE; } +/****************************************************************** + * IsBadWritePtr + */ +BOOL WIN32_IsBadCodePtr(void* ptr, unsigned int bytes) +{ + dprintf_global(stddeb,"IsBadCodePtr(%x,%x)\n",ptr,bytes); + /* FIXME: Should make check based on actual mappings, here */ + return FALSE; +} diff --git a/win32/param32.c b/win32/param32.c index a5323d2c4d6..b9696487032 100644 --- a/win32/param32.c +++ b/win32/param32.c @@ -28,7 +28,7 @@ BOOL WIN32_MoveToEx(HDC hdc,int x,int y,POINT32* p32) } } -BOOL WIN32_GetTextExtentPointA(HDC hdc, LPCTSTR str, int length, SIZE32* lpsize) +BOOL WIN32_GetTextExtentPointA(HDC hdc, LPCSTR str, int length, SIZE32* lpsize) { SIZE s; @@ -40,7 +40,7 @@ BOOL WIN32_GetTextExtentPointA(HDC hdc, LPCTSTR str, int length, SIZE32* lpsize) return retval; } -ATOM WIN32_GlobalAddAtomA(LPCTSTR str) +ATOM WIN32_GlobalAddAtomA(LPCSTR str) { char buffer[256]; /* 16-bit atoms are limited to 255 anyway */ lstrcpyn( buffer, str, sizeof(buffer) ); diff --git a/win32/process.c b/win32/process.c index 2901524249d..4ed4c7e0870 100644 --- a/win32/process.c +++ b/win32/process.c @@ -14,6 +14,8 @@ #include "stddebug.h" #include "debug.h" +static HANDLE32 ProcessHeap = 0; /* FIXME: should be in process database */ + /*********************************************************************** * ExitProcess (KERNEL32.100) */ @@ -26,7 +28,7 @@ void ExitProcess(DWORD status) /*********************************************************************** * CreateMutexA (KERNEL32.52) */ -WINAPI HANDLE32 CreateMutexA (SECURITY_ATTRIBUTES *sa, BOOL on, const char *a) +HANDLE32 CreateMutexA (SECURITY_ATTRIBUTES *sa, BOOL on, const char *a) { return 0; } @@ -34,7 +36,7 @@ WINAPI HANDLE32 CreateMutexA (SECURITY_ATTRIBUTES *sa, BOOL on, const char *a) /*********************************************************************** * ReleaseMutex (KERNEL32.435) */ -WINAPI BOOL ReleaseMutex (HANDLE32 h) +BOOL ReleaseMutex (HANDLE32 h) { return 0; } @@ -42,7 +44,7 @@ WINAPI BOOL ReleaseMutex (HANDLE32 h) /*********************************************************************** * CreateEventA (KERNEL32.43) */ -WINAPI HANDLE32 CreateEventA (SECURITY_ATTRIBUTES *sa, BOOL au, BOOL on, const char +HANDLE32 CreateEventA (SECURITY_ATTRIBUTES *sa, BOOL au, BOOL on, const char *name) { return 0; @@ -50,28 +52,28 @@ WINAPI HANDLE32 CreateEventA (SECURITY_ATTRIBUTES *sa, BOOL au, BOOL on, const c /*********************************************************************** * SetEvent (KERNEL32.487) */ -WINAPI BOOL SetEvent (HANDLE32 h) +BOOL SetEvent (HANDLE32 h) { return 0; } /*********************************************************************** * ResetEvent (KERNEL32.439) */ -WINAPI BOOL ResetEvent (HANDLE32 h) +BOOL ResetEvent (HANDLE32 h) { return 0; } /*********************************************************************** * WaitForSingleObject (KERNEL32.561) */ -DWORD WINAPI WaitForSingleObject(HANDLE32 h, DWORD a) +DWORD WaitForSingleObject(HANDLE32 h, DWORD a) { return 0; } /*********************************************************************** * DuplicateHandle (KERNEL32.78) */ -BOOL WINAPI DuplicateHandle(HANDLE32 a, HANDLE32 b, HANDLE32 c, HANDLE32 * d, DWORD e, BOOL f, DWORD g) +BOOL DuplicateHandle(HANDLE32 a, HANDLE32 b, HANDLE32 c, HANDLE32 * d, DWORD e, BOOL f, DWORD g) { *d = b; return 1; @@ -79,17 +81,26 @@ BOOL WINAPI DuplicateHandle(HANDLE32 a, HANDLE32 b, HANDLE32 c, HANDLE32 * d, DW /*********************************************************************** * GetCurrentProcess (KERNEL32.198) */ -HANDLE32 WINAPI GetCurrentProcess(void) +HANDLE32 GetCurrentProcess(void) { return 0; } /*********************************************************************** + * GetProcessHeap (KERNEL32.259) + */ +HANDLE32 GetProcessHeap(void) +{ + if (!ProcessHeap) ProcessHeap = HeapCreate( 0, 0x10000, 0 ); + return ProcessHeap; +} + +/*********************************************************************** * LoadLibraryA (KERNEL32.365) * copied from LoadLibrary * This does not currently support built-in libraries */ -HANDLE32 WINAPI LoadLibraryA(char *libname) +HANDLE32 LoadLibraryA(char *libname) { HANDLE handle; dprintf_module( stddeb, "LoadLibrary: (%08x) %s\n", (int)libname, libname); @@ -113,7 +124,7 @@ HANDLE32 WINAPI LoadLibraryA(char *libname) /*********************************************************************** * WIN32_GetProcAddress */ -void* WINAPI WIN32_GetProcAddress(HANDLE32 hModule, char* function) +void* WIN32_GetProcAddress(HANDLE32 hModule, char* function) { dprintf_module( stddeb, "WIN32_GetProcAddress(%08x,%s)\n", hModule, function); diff --git a/win32/resource.c b/win32/resource.c index dfe55370ea7..74ff0af1890 100644 --- a/win32/resource.c +++ b/win32/resource.c @@ -221,9 +221,9 @@ HANDLE32 WIN32_LoadAcceleratorsW(HINSTANCE instance, LPCWSTR lpTableName) lp = (BYTE *)LockResource32(rsc_mem); n = SizeofResource( instance, hRsrc ) / sizeof(ACCELENTRY); - hAccel = GlobalAlloc(GMEM_MOVEABLE, + hAccel = GlobalAlloc16(GMEM_MOVEABLE, sizeof(ACCELHEADER) + (n + 1)*sizeof(ACCELENTRY)); - lpAccelTbl = (LPACCELHEADER)GlobalLock(hAccel); + lpAccelTbl = (LPACCELHEADER)GlobalLock16(hAccel); lpAccelTbl->wCount = 0; for (i = 0; i < n; i++) { lpAccelTbl->tbl[i].type = *(lp++); @@ -238,7 +238,7 @@ HANDLE32 WIN32_LoadAcceleratorsW(HINSTANCE instance, LPCWSTR lpTableName) lpAccelTbl->tbl[i].type); lpAccelTbl->wCount++; } - GlobalUnlock(hAccel); + GlobalUnlock16(hAccel); FreeResource( rsc_mem ); return hAccel; #else @@ -249,9 +249,15 @@ HANDLE32 WIN32_LoadAcceleratorsW(HINSTANCE instance, LPCWSTR lpTableName) HANDLE32 WIN32_LoadAcceleratorsA(HINSTANCE instance, LPCSTR lpTableName) { - LPWSTR uni=STRING32_DupAnsiToUni(lpTableName); - HANDLE32 result=WIN32_LoadAcceleratorsW(instance,uni); - free(uni); + LPWSTR uni; + HANDLE32 result; + if (HIWORD(lpTableName)) + uni=STRING32_DupAnsiToUni(lpTableName); + else + uni=(LPWSTR)lpTableName; + result=WIN32_LoadAcceleratorsW(instance,uni); + if (HIWORD(uni)) + free(uni); return result; } @@ -317,13 +323,13 @@ WIN32_LoadStringA(HINSTANCE instance, DWORD resource_id, LPSTR buffer, int bufle return retval; } -HICON LoadIconW32(HINSTANCE hisnt, LPCTSTR lpszIcon) +HICON LoadIconW32(HINSTANCE hisnt, LPCWSTR lpszIcon) { return LoadIcon(0, IDI_APPLICATION); } -HICON LoadIconA32(HINSTANCE hinst, LPCTSTR lpszIcon) +HICON LoadIconA32(HINSTANCE hinst, LPCSTR lpszIcon) { return LoadIconW32(hinst, lpszIcon); diff --git a/win32/thread.c b/win32/thread.c index 5aa0ad5ad24..b538002ee2a 100644 --- a/win32/thread.c +++ b/win32/thread.c @@ -34,7 +34,7 @@ BOOL GetThreadContext(HANDLE hThread, void *lpContext) /*********************************************************************** * GetCurrentThread (KERNEL32.200) */ -HANDLE WINAPI GetCurrentThread(void) +HANDLE GetCurrentThread(void) { return 0; } @@ -42,12 +42,12 @@ HANDLE WINAPI GetCurrentThread(void) /********************************************************************** * Critical Sections are currently ignored */ -void WINAPI InitializeCriticalSection(CRITICAL_SECTION *lpCrit) +void InitializeCriticalSection(CRITICAL_SECTION *lpCrit) { memset(lpCrit,0,sizeof(CRITICAL_SECTION)); } -void WINAPI EnterCriticalSection(CRITICAL_SECTION* lpCrit) +void EnterCriticalSection(CRITICAL_SECTION* lpCrit) { if (lpCrit->LockCount) fprintf( stderr, "Error: re-entering critical section %08lx\n", @@ -55,7 +55,7 @@ void WINAPI EnterCriticalSection(CRITICAL_SECTION* lpCrit) lpCrit->LockCount++; } -void WINAPI LeaveCriticalSection(CRITICAL_SECTION* lpCrit) +void LeaveCriticalSection(CRITICAL_SECTION* lpCrit) { if (!lpCrit->LockCount) fprintf( stderr, "Error: leaving critical section %08lx again\n", @@ -63,7 +63,7 @@ void WINAPI LeaveCriticalSection(CRITICAL_SECTION* lpCrit) lpCrit->LockCount--; } -void WINAPI DeleteCriticalSection(CRITICAL_SECTION* lpCrit) +void DeleteCriticalSection(CRITICAL_SECTION* lpCrit) { return; } @@ -74,7 +74,7 @@ void WINAPI DeleteCriticalSection(CRITICAL_SECTION* lpCrit) static LPVOID* Tls=0; static int TlsCount=0; -DWORD WINAPI TlsAlloc() +DWORD TlsAlloc() { if(!Tls){ TlsCount++; diff --git a/win32/user32.c b/win32/user32.c index b9a9db5c05e..1a6fa92415d 100644 --- a/win32/user32.c +++ b/win32/user32.c @@ -26,53 +26,6 @@ #include "stddebug.h" /*********************************************************************** - * RegisterClassA (USER32.426) - */ -ATOM USER32_RegisterClassA(WNDCLASSA* wndclass) -{ - WNDCLASS copy; - HANDLE classh = 0, menuh = 0; - SEGPTR classsegp, menusegp; - char *classbuf, *menubuf; - - ATOM retval; - copy.style=wndclass->style; - ALIAS_RegisterAlias(0,0,(DWORD)wndclass->lpfnWndProc); - copy.lpfnWndProc=wndclass->lpfnWndProc; - copy.cbClsExtra=wndclass->cbClsExtra; - copy.cbWndExtra=wndclass->cbWndExtra; - copy.hInstance=(HINSTANCE)wndclass->hInstance; - copy.hIcon=(HICON)wndclass->hIcon; - copy.hCursor=(HCURSOR)wndclass->hCursor; - copy.hbrBackground=(HBRUSH)wndclass->hbrBackground; - - /* FIXME: There has to be a better way of doing this - but neither - malloc nor alloca will work */ - - if(wndclass->lpszMenuName) - { - menuh = GlobalAlloc(0, strlen(wndclass->lpszMenuName)+1); - menusegp = WIN16_GlobalLock(menuh); - menubuf = PTR_SEG_TO_LIN(menusegp); - strcpy( menubuf, wndclass->lpszMenuName); - copy.lpszMenuName=menusegp; - }else - copy.lpszMenuName=0; - if(wndclass->lpszClassName) - { - classh = GlobalAlloc(0, strlen(wndclass->lpszClassName)+1); - classsegp = WIN16_GlobalLock(classh); - classbuf = PTR_SEG_TO_LIN(classsegp); - strcpy( classbuf, wndclass->lpszClassName); - copy.lpszClassName=classsegp; - } - retval = RegisterClass(©); - GlobalFree(menuh); - GlobalFree(classh); - return retval; -} - -/*********************************************************************** * GetMessageA (USER32.269) */ BOOL USER32_GetMessageA(MSG32* lpmsg,DWORD hwnd,DWORD min,DWORD max) @@ -145,23 +98,24 @@ BOOL USER32_TranslateMessage(MSG32* lpmsg) } /*********************************************************************** - * CreateWindowExA (USER32.82) + * CreateWindowEx32A (USER32.82) */ -DWORD USER32_CreateWindowExA(long flags,char* class,char *title, - long style,int x,int y,int width,int height,DWORD parent,DWORD menu, - DWORD instance,DWORD param) +HWND32 CreateWindowEx32A( DWORD flags, LPCSTR class, LPCSTR title, + DWORD style, INT32 x, INT32 y, INT32 width, + INT32 height, HWND32 parent, HMENU32 menu, + HINSTANCE32 instance, LPVOID param ) { - DWORD retval; + HWND32 retval; HANDLE classh=0, titleh=0; SEGPTR classsegp=0, titlesegp=0; char *classbuf, *titlebuf; int usec,uset; /*Have to translate CW_USEDEFAULT */ - if(x==CW_USEDEFAULT32)x=CW_USEDEFAULT; - if(y==CW_USEDEFAULT32)y=CW_USEDEFAULT; - if(width==CW_USEDEFAULT32)width=CW_USEDEFAULT; - if(height==CW_USEDEFAULT32)height=CW_USEDEFAULT; + if(x==CW_USEDEFAULT32)x=CW_USEDEFAULT16; + if(y==CW_USEDEFAULT32)y=CW_USEDEFAULT16; + if(width==CW_USEDEFAULT32)width=CW_USEDEFAULT16; + if(height==CW_USEDEFAULT32)height=CW_USEDEFAULT16; /* FIXME: There has to be a better way of doing this - but neither malloc nor alloca will work */ @@ -169,39 +123,40 @@ DWORD USER32_CreateWindowExA(long flags,char* class,char *title, uset = HIWORD(title); if(usec){ - classh = GlobalAlloc(0, strlen(class)+1); - classsegp = WIN16_GlobalLock(classh); + classh = GlobalAlloc16(0, strlen(class)+1); + classsegp = WIN16_GlobalLock16(classh); classbuf = PTR_SEG_TO_LIN(classsegp); strcpy( classbuf, class ); } if(uset){ - titleh = GlobalAlloc(0, strlen(title)+1); - titlesegp = WIN16_GlobalLock(titleh); + titleh = GlobalAlloc16(0, strlen(title)+1); + titlesegp = WIN16_GlobalLock16(titleh); titlebuf = PTR_SEG_TO_LIN(titlesegp); strcpy( titlebuf, title ); } - retval = (DWORD) CreateWindowEx(flags,(usec ? classsegp : (SEGPTR)class), + retval = (HWND32)CreateWindowEx16(flags,(usec ? classsegp : (SEGPTR)class), (uset ? titlesegp : (SEGPTR)title),style,x,y,width,height, (HWND)parent,(HMENU)menu,(HINSTANCE)instance, (DWORD)param); - if(usec)GlobalFree(classh); - if(uset)GlobalFree(titleh); + if(usec)GlobalFree16(classh); + if(uset)GlobalFree16(titleh); return retval; } -DWORD USER32_CreateWindowExW(long flags,LPCWSTR class,LPCWSTR title, - long style,int x,int y,int width,int height,DWORD parent,DWORD menu, - DWORD instance,DWORD param) +HWND32 CreateWindowEx32W( DWORD flags, LPCWSTR class, LPCWSTR title, + DWORD style, INT32 x, INT32 y, INT32 width, + INT32 height, HWND32 parent, HMENU32 menu, + HINSTANCE32 instance, LPVOID param ) { - HWND hwnd; + HWND32 hwnd; LPSTR c,t; int usec,uset; usec=HIWORD(class); uset=HIWORD(title); c = usec ? STRING32_DupUniToAnsi(class) : (LPSTR)class; t = uset ? STRING32_DupUniToAnsi(title) : (LPSTR)title; - hwnd=USER32_CreateWindowExA(flags,c,t,style,x,y,width,height,parent,menu, + hwnd=CreateWindowEx32A(flags,c,t,style,x,y,width,height,parent,menu, instance,param); if(usec)free(c); if(uset)free(t); @@ -328,8 +283,8 @@ HWND USER32_CreateDialogIndirectParamAorW(HINSTANCE hInst,LPVOID templ, rect.right -= rect.left; rect.bottom -= rect.top; - if(dlgTempl->x == CW_USEDEFAULT) - rect.left = rect.top = CW_USEDEFAULT; + if(dlgTempl->x == CW_USEDEFAULT16) + rect.left = rect.top = CW_USEDEFAULT16; else{ rect.left += dlgTempl->x * xUnit / 4; rect.top += dlgTempl->y * yUnit / 8; @@ -338,7 +293,7 @@ HWND USER32_CreateDialogIndirectParamAorW(HINSTANCE hInst,LPVOID templ, } /* FIXME: Here is the place to consider A */ - hwnd = USER32_CreateWindowExW(exStyle, (LPWSTR)ClassName, (LPWSTR)szCaption, + hwnd = CreateWindowEx32W(exStyle, (LPWSTR)ClassName, (LPWSTR)szCaption, dlgTempl->style & ~WS_VISIBLE, rect.left, rect.top, rect.right, rect.bottom, hWndParent, hMenu, hInst, 0); @@ -407,7 +362,7 @@ HWND USER32_CreateDialogIndirectParamAorW(HINSTANCE hInst,LPVOID templ, fprintf(stderr,"having data\n"); } ptr++; - hwndCtrl = USER32_CreateWindowExW(WS_EX_NOPARENTNOTIFY, + hwndCtrl = CreateWindowEx32W(WS_EX_NOPARENTNOTIFY, (LPWSTR)ClassId, (LPWSTR)Text, dlgitem->style | WS_CHILD, dlgitem->x * xUnit / 4, diff --git a/windows/Makefile.in b/windows/Makefile.in index 0bb67990a35..10d6206ae7e 100644 --- a/windows/Makefile.in +++ b/windows/Makefile.in @@ -26,7 +26,6 @@ C_SRCS = \ syscolor.c \ sysmetrics.c \ timer.c \ - utility.c \ win.c \ winpos.c diff --git a/windows/class.c b/windows/class.c index 1a97140cf1b..c05eb390f1e 100644 --- a/windows/class.c +++ b/windows/class.c @@ -8,6 +8,7 @@ #include <stdio.h> #include <string.h> #include "class.h" +#include "heap.h" #include "user.h" #include "win.h" #include "dce.h" @@ -31,8 +32,7 @@ void CLASS_DumpClass( CLASS *ptr ) char className[80]; int i; - if (((CLASS *)USER_HEAP_LIN_ADDR(ptr->self) != ptr) || - (ptr->wMagic != CLASS_MAGIC)) + if (ptr->magic != CLASS_MAGIC) { fprintf( stderr, "%p is not a class\n", ptr ); return; @@ -42,17 +42,17 @@ void CLASS_DumpClass( CLASS *ptr ) fprintf( stderr, "Class %p:\n", ptr ); fprintf( stderr, - "next=%p name=%04x '%s' style=%04x wndProc=%08lx\n" + "next=%p name=%04x '%s' style=%08x wndProc=%08lx\n" "inst=%04x hdce=%04x icon=%04x cursor=%04x bkgnd=%04x\n" "clsExtra=%d winExtra=%d #windows=%d\n", - ptr->next, ptr->atomName, className, ptr->wc.style, - (DWORD)ptr->wc.lpfnWndProc, ptr->wc.hInstance, ptr->hdce, - ptr->wc.hIcon, ptr->wc.hCursor, ptr->wc.hbrBackground, - ptr->wc.cbClsExtra, ptr->wc.cbWndExtra, ptr->cWindows ); - if (ptr->wc.cbClsExtra) + ptr->next, ptr->atomName, className, ptr->style, + (DWORD)ptr->lpfnWndProc, ptr->hInstance, ptr->hdce, + ptr->hIcon, ptr->hCursor, ptr->hbrBackground, + ptr->cbClsExtra, ptr->cbWndExtra, ptr->cWindows ); + if (ptr->cbClsExtra) { fprintf( stderr, "extra bytes:" ); - for (i = 0; i < ptr->wc.cbClsExtra; i++) + for (i = 0; i < ptr->cbClsExtra; i++) fprintf( stderr, " %02x", *((BYTE *)ptr->wExtra+i) ); fprintf( stderr, "\n" ); } @@ -70,12 +70,12 @@ void CLASS_WalkClasses(void) CLASS *ptr; char className[80]; - fprintf( stderr, " Class Name Style WndProc\n" ); + fprintf( stderr, " Class Name Style WndProc\n" ); for (ptr = firstClass; ptr; ptr = ptr->next) { GlobalGetAtomName( ptr->atomName, className, sizeof(className) ); - fprintf( stderr, "%08lx %-20.20s %04x %08lx\n", (DWORD)ptr, className, - ptr->wc.style, (DWORD)ptr->wc.lpfnWndProc ); + fprintf( stderr, "%08lx %-20.20s %08x %08lx\n", (DWORD)ptr, className, + ptr->style, (DWORD)ptr->lpfnWndProc ); } fprintf( stderr, "\n" ); } @@ -104,11 +104,11 @@ static void CLASS_FreeClass( CLASS *classPtr ) /* Delete the class */ if (classPtr->hdce) DCE_FreeDCE( classPtr->hdce ); - if (classPtr->wc.hbrBackground) DeleteObject( classPtr->wc.hbrBackground ); + if (classPtr->hbrBackground) DeleteObject( classPtr->hbrBackground ); GlobalDeleteAtom( classPtr->atomName ); - if (HIWORD(classPtr->wc.lpszMenuName)) - USER_HEAP_FREE( (HANDLE)classPtr->wc.lpszMenuName ); - USER_HEAP_FREE( classPtr->self ); + if (HIWORD(classPtr->lpszMenuName)) + USER_HEAP_FREE( (HANDLE)classPtr->lpszMenuName ); + HeapFree( SystemHeap, 0, classPtr ); } @@ -122,38 +122,35 @@ void CLASS_FreeModuleClasses( HMODULE hModule ) for (ptr = firstClass; ptr; ptr = next) { next = ptr->next; - if (ptr->wc.hInstance == hModule) CLASS_FreeClass( ptr ); + if (ptr->hInstance == hModule) CLASS_FreeClass( ptr ); } } /*********************************************************************** - * CLASS_FindClassByName + * CLASS_FindClassByAtom * * Return a pointer to the class. */ -CLASS *CLASS_FindClassByName( SEGPTR name, HINSTANCE hinstance ) +CLASS *CLASS_FindClassByAtom( ATOM atom, HINSTANCE16 hinstance ) { - ATOM atom; CLASS * class; - if (!(atom = GlobalFindAtom( name ))) return 0; - /* First search task-specific classes */ for (class = firstClass; (class); class = class->next) { - if (class->wc.style & CS_GLOBALCLASS) continue; + if (class->style & CS_GLOBALCLASS) continue; if ((class->atomName == atom) && - ((hinstance==(HINSTANCE)0xffff) || - (hinstance == class->wc.hInstance))) return class; + ((hinstance==(HINSTANCE16)0xffff) || + (hinstance == class->hInstance))) return class; } /* Then search global classes */ for (class = firstClass; (class); class = class->next) { - if (!(class->wc.style & CS_GLOBALCLASS)) continue; + if (!(class->style & CS_GLOBALCLASS)) continue; if (class->atomName == atom) return class; } @@ -162,66 +159,83 @@ CLASS *CLASS_FindClassByName( SEGPTR name, HINSTANCE hinstance ) /*********************************************************************** - * RegisterClass (USER.57) + * CLASS_FindClassByName + * + * Return a pointer to the class. + */ +CLASS *CLASS_FindClassByName( SEGPTR name, HINSTANCE hinstance ) +{ + ATOM atom; + + if (!(atom = GlobalFindAtom( name ))) return 0; + return CLASS_FindClassByAtom( atom, hinstance ); +} + + +/*********************************************************************** + * RegisterClass16 (USER.57) */ -ATOM RegisterClass( LPWNDCLASS class ) +ATOM RegisterClass16( const WNDCLASS16 *wc ) { CLASS * newClass, * prevClass; - HCLASS handle; + HANDLE16 hInstance; int classExtra; dprintf_class( stddeb, "RegisterClass: wndproc=%08lx hinst=%04x name='%s' background %04x\n", - (DWORD)class->lpfnWndProc, class->hInstance, - HIWORD(class->lpszClassName) ? - (char *)PTR_SEG_TO_LIN(class->lpszClassName) : "(int)", - class->hbrBackground ); + (DWORD)wc->lpfnWndProc, wc->hInstance, + HIWORD(wc->lpszClassName) ? + (char *)PTR_SEG_TO_LIN(wc->lpszClassName) : "(int)", + wc->hbrBackground ); dprintf_class(stddeb," style=%04x clsExtra=%d winExtra=%d\n", - class->style, class->cbClsExtra, class->cbWndExtra ); + wc->style, wc->cbClsExtra, wc->cbWndExtra ); /* Window classes are owned by modules, not instances */ - class->hInstance = GetExePtr( class->hInstance ); + hInstance = GetExePtr( wc->hInstance ); /* Check if a class with this name already exists */ - prevClass = CLASS_FindClassByName( class->lpszClassName, class->hInstance); + prevClass = CLASS_FindClassByName( wc->lpszClassName, hInstance ); if (prevClass) { /* Class can be created only if it is local and */ /* if the class with the same name is global. */ - if (class->style & CS_GLOBALCLASS) return 0; - if (!(prevClass->wc.style & CS_GLOBALCLASS)) return 0; + if (wc->style & CS_GLOBALCLASS) return 0; + if (!(prevClass->style & CS_GLOBALCLASS)) return 0; } /* Create class */ - classExtra = (class->cbClsExtra < 0) ? 0 : class->cbClsExtra; - handle = USER_HEAP_ALLOC( sizeof(CLASS) + classExtra ); - if (!handle) return 0; - newClass = (CLASS *) USER_HEAP_LIN_ADDR( handle ); - newClass->self = handle; + classExtra = (wc->cbClsExtra < 0) ? 0 : wc->cbClsExtra; + newClass = (CLASS *)HeapAlloc( SystemHeap, 0, sizeof(CLASS) + classExtra ); + if (!newClass) return 0; newClass->next = firstClass; - newClass->wMagic = CLASS_MAGIC; + newClass->magic = CLASS_MAGIC; newClass->cWindows = 0; - newClass->wc = *class; - newClass->wc.cbWndExtra = (class->cbWndExtra < 0) ? 0 : class->cbWndExtra; - newClass->wc.cbClsExtra = classExtra; - - newClass->atomName = GlobalAddAtom( class->lpszClassName ); - newClass->wc.lpszClassName = 0; - - if (newClass->wc.style & CS_CLASSDC) + newClass->style = wc->style; + newClass->lpfnWndProc = wc->lpfnWndProc; + newClass->cbWndExtra = (wc->cbWndExtra < 0) ? 0 : wc->cbWndExtra; + newClass->cbClsExtra = classExtra; + newClass->lpszMenuName = wc->lpszMenuName; + newClass->hInstance = hInstance; + newClass->hIcon = wc->hIcon; + newClass->hCursor = wc->hCursor; + newClass->hbrBackground = wc->hbrBackground; + + newClass->atomName = GlobalAddAtom( wc->lpszClassName ); + + if (newClass->style & CS_CLASSDC) newClass->hdce = DCE_AllocDCE( DCE_CLASS_DC ); else newClass->hdce = 0; /* Make a copy of the menu name (only if it is a string) */ - if (HIWORD(class->lpszMenuName)) + if (HIWORD(wc->lpszMenuName)) { - char *menuname = PTR_SEG_TO_LIN( class->lpszMenuName ); + char *menuname = PTR_SEG_TO_LIN( wc->lpszMenuName ); HANDLE hname = USER_HEAP_ALLOC( strlen(menuname)+1 ); if (hname) { - newClass->wc.lpszMenuName = (SEGPTR)USER_HEAP_SEG_ADDR( hname ); + newClass->lpszMenuName = (SEGPTR)USER_HEAP_SEG_ADDR( hname ); strcpy( USER_HEAP_LIN_ADDR( hname ), menuname ); } } @@ -233,9 +247,57 @@ ATOM RegisterClass( LPWNDCLASS class ) /*********************************************************************** - * UnregisterClass (USER.403) + * RegisterClass32A (USER32.426) + */ +ATOM RegisterClass32A( const WNDCLASS32A* wc ) +{ + WNDCLASS16 copy; + HANDLE classh = 0, menuh = 0; + SEGPTR classsegp, menusegp; + char *classbuf, *menubuf; + + ATOM retval; + copy.style=wc->style; + ALIAS_RegisterAlias(0,0,(DWORD)wc->lpfnWndProc); + copy.lpfnWndProc=wc->lpfnWndProc; + copy.cbClsExtra=wc->cbClsExtra; + copy.cbWndExtra=wc->cbWndExtra; + copy.hInstance=(HINSTANCE)wc->hInstance; + copy.hIcon=(HICON)wc->hIcon; + copy.hCursor=(HCURSOR)wc->hCursor; + copy.hbrBackground=(HBRUSH)wc->hbrBackground; + + /* FIXME: There has to be a better way of doing this - but neither + malloc nor alloca will work */ + + if(wc->lpszMenuName) + { + menuh = GlobalAlloc16(0, strlen(wc->lpszMenuName)+1); + menusegp = WIN16_GlobalLock16(menuh); + menubuf = PTR_SEG_TO_LIN(menusegp); + strcpy( menubuf, wc->lpszMenuName); + copy.lpszMenuName=menusegp; + }else + copy.lpszMenuName=0; + if(wc->lpszClassName) + { + classh = GlobalAlloc16(0, strlen(wc->lpszClassName)+1); + classsegp = WIN16_GlobalLock16(classh); + classbuf = PTR_SEG_TO_LIN(classsegp); + strcpy( classbuf, wc->lpszClassName); + copy.lpszClassName=classsegp; + } + retval = RegisterClass16(©); + GlobalFree16(menuh); + GlobalFree16(classh); + return retval; +} + + +/*********************************************************************** + * UnregisterClass16 (USER.403) */ -BOOL UnregisterClass( SEGPTR className, HANDLE hinstance ) +BOOL UnregisterClass16( SEGPTR className, HINSTANCE16 hinstance ) { CLASS *classPtr; @@ -244,7 +306,7 @@ BOOL UnregisterClass( SEGPTR className, HANDLE hinstance ) /* Check if we can remove this class */ if (!(classPtr = CLASS_FindClassByName( className, hinstance ))) return FALSE; - if ((classPtr->wc.hInstance != hinstance) || (classPtr->cWindows > 0)) + if ((classPtr->hInstance != hinstance) || (classPtr->cWindows > 0)) return FALSE; CLASS_FreeClass( classPtr ); return TRUE; @@ -263,14 +325,15 @@ WORD GetClassWord( HWND hwnd, short offset ) return *(WORD *)(((char *)wndPtr->class->wExtra) + offset); switch(offset) { - case GCW_HBRBACKGROUND: return wndPtr->class->wc.hbrBackground; - case GCW_HCURSOR: return wndPtr->class->wc.hCursor; - case GCW_HICON: return wndPtr->class->wc.hIcon; - case GCW_HMODULE: return wndPtr->class->wc.hInstance; - case GCW_CBWNDEXTRA: return wndPtr->class->wc.cbWndExtra; - case GCW_CBCLSEXTRA: return wndPtr->class->wc.cbClsExtra; - case GCW_STYLE: return wndPtr->class->wc.style; + case GCW_HBRBACKGROUND: return wndPtr->class->hbrBackground; + case GCW_HCURSOR: return wndPtr->class->hCursor; + case GCW_HICON: return wndPtr->class->hIcon; + case GCW_HMODULE: return wndPtr->class->hInstance; case GCW_ATOM: return wndPtr->class->atomName; + case GCW_STYLE: + case GCW_CBWNDEXTRA: + case GCW_CBCLSEXTRA: + return (WORD)GetClassLong( hwnd, offset ); } fprintf(stderr, "Warning: invalid offset %d for GetClassWord()\n", offset); return 0; @@ -289,14 +352,15 @@ WORD SetClassWord( HWND hwnd, short offset, WORD newval ) if (offset >= 0) ptr = (WORD *)(((char *)wndPtr->class->wExtra) + offset); else switch(offset) { - case GCW_HBRBACKGROUND: ptr = &wndPtr->class->wc.hbrBackground; break; - case GCW_HCURSOR: ptr = &wndPtr->class->wc.hCursor; break; - case GCW_HICON: ptr = &wndPtr->class->wc.hIcon; break; - case GCW_HMODULE: ptr = &wndPtr->class->wc.hInstance; break; - case GCW_CBWNDEXTRA: ptr = &wndPtr->class->wc.cbWndExtra; break; - case GCW_CBCLSEXTRA: ptr = &wndPtr->class->wc.cbClsExtra; break; - case GCW_STYLE: ptr = &wndPtr->class->wc.style; break; + case GCW_HBRBACKGROUND: ptr = &wndPtr->class->hbrBackground; break; + case GCW_HCURSOR: ptr = &wndPtr->class->hCursor; break; + case GCW_HICON: ptr = &wndPtr->class->hIcon; break; + case GCW_HMODULE: ptr = &wndPtr->class->hInstance; break; case GCW_ATOM: ptr = &wndPtr->class->atomName; break; + case GCW_STYLE: + case GCW_CBWNDEXTRA: + case GCW_CBCLSEXTRA: + return (WORD)SetClassLong( hwnd, offset, (LONG)newval ); default: fprintf( stderr, "Warning: invalid offset %d for SetClassWord()\n", offset); @@ -320,8 +384,11 @@ LONG GetClassLong( HWND hwnd, short offset ) return *(WORD *)(((char *)wndPtr->class->wExtra) + offset); switch(offset) { - case GCL_MENUNAME: return (LONG)wndPtr->class->wc.lpszMenuName; - case GCL_WNDPROC: return (LONG)wndPtr->class->wc.lpfnWndProc; + case GCL_STYLE: return (LONG)wndPtr->class->style; + case GCL_CBWNDEXTRA: return (LONG)wndPtr->class->cbWndExtra; + case GCL_CBCLSEXTRA: return (LONG)wndPtr->class->cbClsExtra; + case GCL_MENUNAME: return (LONG)wndPtr->class->lpszMenuName; + case GCL_WNDPROC: return (LONG)wndPtr->class->lpfnWndProc; } fprintf(stderr, "Warning: invalid offset %d for GetClassLong()\n", offset); return 0; @@ -340,8 +407,11 @@ LONG SetClassLong( HWND hwnd, short offset, LONG newval ) if (offset >= 0) ptr = (LONG *)(((char *)wndPtr->class->wExtra) + offset); else switch(offset) { - case GCL_MENUNAME: ptr = (LONG*)&wndPtr->class->wc.lpszMenuName; break; - case GCL_WNDPROC: ptr = (LONG*)&wndPtr->class->wc.lpfnWndProc; break; + case GCL_STYLE: ptr = (LONG*)&wndPtr->class->style; break; + case GCL_CBWNDEXTRA: ptr = (LONG*)&wndPtr->class->cbWndExtra; break; + case GCL_CBCLSEXTRA: ptr = (LONG*)&wndPtr->class->cbClsExtra; break; + case GCL_MENUNAME: ptr = (LONG*)&wndPtr->class->lpszMenuName; break; + case GCL_WNDPROC: ptr = (LONG*)&wndPtr->class->lpfnWndProc; break; default: fprintf( stderr, "Warning: invalid offset %d for SetClassLong()\n", offset); @@ -371,7 +441,7 @@ int GetClassName(HWND hwnd, LPSTR lpClassName, short maxCount) /*********************************************************************** * GetClassInfo (USER.404) */ -BOOL GetClassInfo( HANDLE hInstance, SEGPTR name, LPWNDCLASS lpWndClass ) +BOOL GetClassInfo( HANDLE hInstance, SEGPTR name, WNDCLASS16 *lpWndClass ) { CLASS *classPtr; @@ -382,9 +452,19 @@ BOOL GetClassInfo( HANDLE hInstance, SEGPTR name, LPWNDCLASS lpWndClass ) hInstance = GetExePtr( hInstance ); if (!(classPtr = CLASS_FindClassByName( name, hInstance ))) return FALSE; - if (hInstance && (hInstance != classPtr->wc.hInstance)) return FALSE; + if (hInstance && (hInstance != classPtr->hInstance)) return FALSE; + + lpWndClass->style = (UINT16)classPtr->style; + lpWndClass->lpfnWndProc = classPtr->lpfnWndProc; + lpWndClass->cbClsExtra = (INT16)classPtr->cbClsExtra; + lpWndClass->cbWndExtra = (INT16)classPtr->cbWndExtra; + lpWndClass->hInstance = classPtr->hInstance; + lpWndClass->hIcon = classPtr->hIcon; + lpWndClass->hCursor = classPtr->hCursor; + lpWndClass->hbrBackground = classPtr->hbrBackground; + lpWndClass->lpszMenuName = classPtr->lpszMenuName; + lpWndClass->lpszClassName = 0; - memcpy(lpWndClass, &(classPtr->wc), sizeof(WNDCLASS)); return TRUE; } @@ -414,7 +494,7 @@ BOOL ClassNext( CLASSENTRY *pClassEntry ) pClassEntry->wNext = 0; return FALSE; } - pClassEntry->hInst = class->wc.hInstance; + pClassEntry->hInst = class->hInstance; pClassEntry->wNext++; GlobalGetAtomName( class->atomName, pClassEntry->szClassName, sizeof(pClassEntry->szClassName) ); diff --git a/windows/dce.c b/windows/dce.c index afdf32e9603..359ce9b5f01 100644 --- a/windows/dce.c +++ b/windows/dce.c @@ -310,9 +310,9 @@ HDC GetDCEx( HWND hwnd, HRGN hrgnClip, DWORD flags ) DCX_CLIPSIBLINGS | DCX_PARENTCLIP); if (wndPtr) { - if (!(wndPtr->class->wc.style & (CS_OWNDC | CS_CLASSDC))) + if (!(wndPtr->class->style & (CS_OWNDC | CS_CLASSDC))) flags |= DCX_CACHE; - if (wndPtr->class->wc.style & CS_PARENTDC) flags |= DCX_PARENTCLIP; + if (wndPtr->class->style & CS_PARENTDC) flags |= DCX_PARENTCLIP; if (wndPtr->dwStyle & WS_CLIPCHILDREN) flags |= DCX_CLIPCHILDREN; if (wndPtr->dwStyle & WS_CLIPSIBLINGS) flags |= DCX_CLIPSIBLINGS; } diff --git a/windows/defdlg.c b/windows/defdlg.c index 9191ba8ec98..fa6f2755028 100644 --- a/windows/defdlg.c +++ b/windows/defdlg.c @@ -147,8 +147,8 @@ LRESULT DefDlgProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) /* Free dialog heap (if created) */ if (dlgInfo->hDialogHeap) { - GlobalUnlock(dlgInfo->hDialogHeap); - GlobalFree(dlgInfo->hDialogHeap); + GlobalUnlock16(dlgInfo->hDialogHeap); + GlobalFree16(dlgInfo->hDialogHeap); dlgInfo->hDialogHeap = 0; } diff --git a/windows/defwnd.c b/windows/defwnd.c index cce73112e7e..dfa64785010 100644 --- a/windows/defwnd.c +++ b/windows/defwnd.c @@ -28,6 +28,30 @@ static short iF10Key = 0; static short iMenuSysKey = 0; /*********************************************************************** + * DEFWND_InitSysMenuPopup + * + * Handle the WM_INITMENUPOPUP message on the system menu. + */ +static void DEFWND_InitSysMenuPopup( HMENU hmenu, DWORD style, DWORD clsStyle ) +{ + BOOL gray; + + gray = !(style & WS_THICKFRAME) || (style & (WS_MAXIMIZE | WS_MINIMIZE)); + EnableMenuItem( hmenu, SC_SIZE, (gray ? MF_GRAYED : MF_ENABLED) ); + gray = ((style & WS_MAXIMIZE) != 0); + EnableMenuItem( hmenu, SC_MOVE, (gray ? MF_GRAYED : MF_ENABLED) ); + gray = !(style & WS_MINIMIZEBOX) || (style & WS_MINIMIZE); + EnableMenuItem( hmenu, SC_MINIMIZE, (gray ? MF_GRAYED : MF_ENABLED) ); + gray = !(style & WS_MAXIMIZEBOX) || (style & WS_MAXIMIZE); + EnableMenuItem( hmenu, SC_MAXIMIZE, (gray ? MF_GRAYED : MF_ENABLED) ); + gray = !(style & (WS_MAXIMIZE | WS_MINIMIZE)); + EnableMenuItem( hmenu, SC_RESTORE, (gray ? MF_GRAYED : MF_ENABLED) ); + gray = (clsStyle & CS_NOCLOSE) != 0; + EnableMenuItem( hmenu, SC_CLOSE, (gray ? MF_GRAYED : MF_ENABLED) ); +} + + +/*********************************************************************** * DEFWND_SetText * * Set the window text. @@ -87,7 +111,7 @@ LRESULT DefWindowProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) case WM_LBUTTONDBLCLK: case WM_NCLBUTTONDBLCLK: - return NC_HandleNCLButtonDblClk( hwnd, wParam, lParam ); + return NC_HandleNCLButtonDblClk( wndPtr, wParam, lParam ); case WM_NCACTIVATE: return NC_HandleNCActivate( hwnd, wParam ); @@ -162,18 +186,18 @@ LRESULT DefWindowProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) case WM_ERASEBKGND: case WM_ICONERASEBKGND: { - if (!wndPtr->class->wc.hbrBackground) return 0; - if (wndPtr->class->wc.hbrBackground <= (HBRUSH)(COLOR_MAX+1)) + if (!wndPtr->class->hbrBackground) return 0; + if (wndPtr->class->hbrBackground <= (HBRUSH)(COLOR_MAX+1)) { HBRUSH hbrush; hbrush = CreateSolidBrush( - GetSysColor(((DWORD)wndPtr->class->wc.hbrBackground)-1)); + GetSysColor(((DWORD)wndPtr->class->hbrBackground)-1)); FillWindow( GetParent(hwnd), hwnd, (HDC)wParam, hbrush); DeleteObject (hbrush); } else FillWindow( GetParent(hwnd), hwnd, (HDC)wParam, - wndPtr->class->wc.hbrBackground ); + wndPtr->class->hbrBackground ); return 1; } @@ -338,6 +362,13 @@ LRESULT DefWindowProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) ShowWindow(hwnd,(wParam)? SW_SHOWNOACTIVATE: SW_HIDE); break; + case WM_INITMENUPOPUP: + /* Not absolutely sure this belongs here -- AJ */ + if (HIWORD(lParam)) /* system menu */ + DEFWND_InitSysMenuPopup( (HMENU)wParam, wndPtr->dwStyle, + wndPtr->class->style ); + break; + case WM_CANCELMODE: /* EndMenu() should be called if in menu state but currently it's @@ -378,5 +409,3 @@ LRESULT DefWindowProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) } return 0; } - - diff --git a/windows/dialog.c b/windows/dialog.c index ee3f402f383..33a93b47a89 100644 --- a/windows/dialog.c +++ b/windows/dialog.c @@ -311,8 +311,8 @@ HWND CreateDialogIndirectParam( HINSTANCE hInst, SEGPTR dlgTemplate, rect.right -= rect.left; rect.bottom -= rect.top; - if ((INT)template.x == CW_USEDEFAULT) - rect.left = rect.top = CW_USEDEFAULT; + if ((INT16)template.x == CW_USEDEFAULT16) + rect.left = rect.top = CW_USEDEFAULT16; else { rect.left += template.x * xUnit / 4; @@ -321,7 +321,7 @@ HWND CreateDialogIndirectParam( HINSTANCE hInst, SEGPTR dlgTemplate, ClientToScreen( owner, (POINT *)&rect ); } - hwnd = CreateWindowEx( exStyle, template.className, template.caption, + hwnd = CreateWindowEx16( exStyle, template.className, template.caption, template.style & ~WS_VISIBLE, rect.left, rect.top, rect.right, rect.bottom, owner, hMenu, hInst, (SEGPTR)0 ); @@ -333,23 +333,6 @@ HWND CreateDialogIndirectParam( HINSTANCE hInst, SEGPTR dlgTemplate, } wndPtr = WIN_FindWndPtr( hwnd ); - /* Purge junk from system menu */ - /* FIXME: this doesn't belong here */ - - DeleteMenu(wndPtr->hSysMenu,SC_SIZE,MF_BYCOMMAND); - if (!(wndPtr->dwStyle & WS_MAXIMIZEBOX) ) - { - DeleteMenu(wndPtr->hSysMenu,SC_MAXIMIZE,MF_BYCOMMAND); - if( !(wndPtr->dwStyle & WS_MINIMIZEBOX) ) - { - DeleteMenu(wndPtr->hSysMenu,SC_MINIMIZE,MF_BYCOMMAND); - DeleteMenu(wndPtr->hSysMenu,SC_RESTORE,MF_BYCOMMAND); - } - } - else - if (!(wndPtr->dwStyle & WS_MINIMIZEBOX) ) - DeleteMenu(wndPtr->hSysMenu,SC_MINIMIZE,MF_BYCOMMAND); - /* Create control windows */ dprintf_dialog(stddeb, " BEGIN\n" ); @@ -400,7 +383,7 @@ HWND CreateDialogIndirectParam( HINSTANCE hInst, SEGPTR dlgTemplate, { if (!dlgInfo->hDialogHeap) { - dlgInfo->hDialogHeap = GlobalAlloc(GMEM_FIXED, 0x10000); + dlgInfo->hDialogHeap = GlobalAlloc16(GMEM_FIXED, 0x10000); if (!dlgInfo->hDialogHeap) { fprintf(stderr,"CreateDialogIndirectParam: Insufficient memory to create heap for edit control\n"); @@ -408,7 +391,7 @@ HWND CreateDialogIndirectParam( HINSTANCE hInst, SEGPTR dlgTemplate, } LocalInit(dlgInfo->hDialogHeap, 0, 0xffff); } - hwndCtrl = CreateWindowEx(WS_EX_NOPARENTNOTIFY, className, winName, + hwndCtrl = CreateWindowEx16(WS_EX_NOPARENTNOTIFY, className, winName, header.style | WS_CHILD, header.x * xUnit / 4, header.y * yUnit / 8, @@ -419,14 +402,15 @@ HWND CreateDialogIndirectParam( HINSTANCE hInst, SEGPTR dlgTemplate, } else { - hwndCtrl = CreateWindowEx(WS_EX_NOPARENTNOTIFY, className, winName, - header.style | WS_CHILD, - header.x * xUnit / 4, - header.y * yUnit / 8, - header.cx * xUnit / 4, - header.cy * yUnit / 8, - hwnd, (HMENU)header.id, - hInst, (SEGPTR)0 ); + hwndCtrl = CreateWindowEx16( WS_EX_NOPARENTNOTIFY, className, + winName, + header.style | WS_CHILD, + header.x * xUnit / 4, + header.y * yUnit / 8, + header.cx * xUnit / 4, + header.cy * yUnit / 8, + hwnd, (HMENU)header.id, + hInst, (SEGPTR)0 ); } /* Make the control last one in Z-order, so that controls remain @@ -553,9 +537,9 @@ INT DialogBoxIndirectParam( HINSTANCE hInst, HANDLE dlgTemplate, HWND hwnd; SEGPTR ptr; - if (!(ptr = (SEGPTR)WIN16_GlobalLock( dlgTemplate ))) return -1; + if (!(ptr = (SEGPTR)WIN16_GlobalLock16( dlgTemplate ))) return -1; hwnd = CreateDialogIndirectParam( hInst, ptr, owner, dlgProc, param ); - GlobalUnlock( dlgTemplate ); + GlobalUnlock16( dlgTemplate ); if (hwnd) return DIALOG_DoDialogBox( hwnd, owner ); return -1; } diff --git a/windows/event.c b/windows/event.c index 098d8766a7e..2924ffcaf18 100644 --- a/windows/event.c +++ b/windows/event.c @@ -562,7 +562,7 @@ static void EVENT_ConfigureNotify( HWND hwnd, XConfigureEvent *event ) WINPOS_SendNCCalcSize( winpos.hwnd, TRUE, &newWindowRect, &wndPtr->rectWindow, &wndPtr->rectClient, - &winpos, &newClientRect ); + MAKE_SEGPTR(&winpos), &newClientRect ); /* Set new size and position */ wndPtr->rectWindow = newWindowRect; @@ -593,10 +593,10 @@ static void EVENT_SelectionRequest( HWND hwnd, XSelectionRequestEvent *event ) /* Don't worry if we can't open */ BOOL couldOpen=OpenClipboard(hwnd); hText=GetClipboardData(CF_TEXT); - text=GlobalLock(hText); + text=GlobalLock16(hText); XChangeProperty(display,request,rprop,XA_STRING, 8,PropModeReplace,text,strlen(text)); - GlobalUnlock(hText); + GlobalUnlock16(hText); /* close only if we opened before */ if(couldOpen)CloseClipboard(); } diff --git a/windows/graphics.c b/windows/graphics.c index 0a68479ff77..bb2919af3cc 100644 --- a/windows/graphics.c +++ b/windows/graphics.c @@ -808,7 +808,7 @@ BOOL Polygon (HDC hdc, LPPOINT pt, int count) /********************************************************************** * PolyPolygon (GDI.450) */ -BOOL PolyPolygon( HDC hdc, LPPOINT pt, LPINT counts, WORD polygons ) +BOOL PolyPolygon( HDC hdc, LPPOINT pt, LPINT16 counts, WORD polygons ) { HRGN hrgn; DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); @@ -999,8 +999,8 @@ BOOL FloodFill( HDC hdc, INT x, INT y, COLORREF color ) /********************************************************************** * DrawEdge (USER.659) */ -BOOL WINAPI -DrawEdge(HDC hdc, LPRECT qrc, UINT edge, UINT flags) { +BOOL DrawEdge(HDC hdc, LPRECT qrc, UINT edge, UINT flags) +{ fprintf(stdnimp,"DrawEdge(%x,%p,%d,%x), empty stub!\n", hdc,qrc,edge,flags ); @@ -1010,8 +1010,8 @@ DrawEdge(HDC hdc, LPRECT qrc, UINT edge, UINT flags) { /********************************************************************** * DrawFrameControl (USER.656) */ -BOOL WINAPI -DrawFrameControl(HDC hdc, LPRECT qrc, UINT edge, UINT flags) { +BOOL DrawFrameControl(HDC hdc, LPRECT qrc, UINT edge, UINT flags) +{ fprintf(stdnimp,"DrawFrameControl(%x,%p,%d,%x), empty stub!\n", hdc,qrc,edge,flags ); diff --git a/windows/hook.c b/windows/hook.c index d68e0382873..3b46e9f8bc1 100644 --- a/windows/hook.c +++ b/windows/hook.c @@ -50,7 +50,7 @@ static HANDLE HOOK_GetHook( short id , HQUEUE hQueue ) MESSAGEQUEUE *queue; HANDLE hook = 0; - if ((queue = (MESSAGEQUEUE *)GlobalLock( GetTaskQueue(hQueue) )) != NULL) + if ((queue = (MESSAGEQUEUE *)GlobalLock16( GetTaskQueue(hQueue) )) != NULL) hook = queue->hooks[id - WH_FIRST_HOOK]; if (!hook) hook = HOOK_systemHooks[id - WH_FIRST_HOOK]; return hook; @@ -103,7 +103,7 @@ HANDLE HOOK_SetHook( short id, HOOKPROC proc, HINSTANCE hInst, HTASK hTask ) if (hQueue) { - MESSAGEQUEUE *queue = (MESSAGEQUEUE *)GlobalLock( hQueue ); + MESSAGEQUEUE *queue = (MESSAGEQUEUE *)GlobalLock16( hQueue ); data->next = queue->hooks[id - WH_FIRST_HOOK]; queue->hooks[id - WH_FIRST_HOOK] = handle; } @@ -141,7 +141,7 @@ static BOOL HOOK_RemoveHook( HANDLE hook ) if (data->ownerQueue) { - MESSAGEQUEUE *queue = (MESSAGEQUEUE *)GlobalLock( data->ownerQueue ); + MESSAGEQUEUE *queue = (MESSAGEQUEUE *)GlobalLock16( data->ownerQueue ); if (!queue) return FALSE; prevHook = &queue->hooks[data->id - WH_FIRST_HOOK]; } @@ -182,7 +182,7 @@ static DWORD HOOK_CallHook( HANDLE hook, short code, /* Now call it */ - if (!(queue = (MESSAGEQUEUE *)GlobalLock( GetTaskQueue(0) ))) return 0; + if (!(queue = (MESSAGEQUEUE *)GlobalLock16( GetTaskQueue(0) ))) return 0; prevHook = queue->hCurHook; queue->hCurHook = hook; data->inHookProc = 1; @@ -326,7 +326,7 @@ DWORD DefHookProc( short code, WORD wParam, DWORD lParam, HHOOK *hhook ) MESSAGEQUEUE *queue; HANDLE next; - if (!(queue = (MESSAGEQUEUE *)GlobalLock( GetTaskQueue(0) ))) return 0; + if (!(queue = (MESSAGEQUEUE *)GlobalLock16( GetTaskQueue(0) ))) return 0; if (!(next = HOOK_GetNextHook( queue->hCurHook ))) return 0; return HOOK_CallHook( next, code, wParam, lParam ); } diff --git a/windows/keyboard.c b/windows/keyboard.c index 7dae63072d1..ac6cc0f256d 100644 --- a/windows/keyboard.c +++ b/windows/keyboard.c @@ -37,7 +37,7 @@ INT GetKeyState(INT keycode) /********************************************************************** * GetKeyboardState [USER.222] */ -void GetKeyboardState(BYTE FAR *lpKeyState) +void GetKeyboardState(BYTE *lpKeyState) { if (lpKeyState != NULL) { KeyStateTable[VK_LBUTTON] = MouseButtonsStates[0] >> 8; @@ -50,7 +50,7 @@ void GetKeyboardState(BYTE FAR *lpKeyState) /********************************************************************** * SetKeyboardState [USER.223] */ -void SetKeyboardState(BYTE FAR *lpKeyState) +void SetKeyboardState(BYTE *lpKeyState) { if (lpKeyState != NULL) { memcpy(KeyStateTable, lpKeyState, 256); diff --git a/windows/mdi.c b/windows/mdi.c index ea7a4507375..a97cfcf3e23 100644 --- a/windows/mdi.c +++ b/windows/mdi.c @@ -312,7 +312,7 @@ HWND MDICreateChild(WND *w, MDICLIENTINFO *ci, HWND parent, LPARAM lParam ) ci->nActiveChildren++; - hwnd = CreateWindow( cs->szClass, cs->szTitle, + hwnd = CreateWindow16( cs->szClass, cs->szTitle, WS_CHILD | WS_BORDER | WS_CAPTION | WS_CLIPSIBLINGS | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU | WS_THICKFRAME | WS_VISIBLE | cs->style, @@ -1433,8 +1433,8 @@ void ScrollChildren(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) short newPos=-1; short curPos; short length; - INT minPos; - INT maxPos; + INT16 minPos; + INT16 maxPos; short shift; if( !wndPtr ) return; diff --git a/windows/message.c b/windows/message.c index 1237a8eb051..c33ad1fd7be 100644 --- a/windows/message.c +++ b/windows/message.c @@ -127,7 +127,7 @@ static BOOL MSG_TranslateMouseMsg( MSG *msg, BOOL remove ) if (dbl_click && (hittest == HTCLIENT)) { /* Check whether window wants the double click message. */ - dbl_click = (pWnd->class->wc.style & CS_DBLCLKS) != 0; + dbl_click = (pWnd->class->style & CS_DBLCLKS) != 0; } if (dbl_click) switch(msg->message) @@ -410,7 +410,7 @@ static BOOL MSG_PeekMessage( LPMSG msg, HWND hwnd, WORD first, WORD last, while(1) { hQueue = GetTaskQueue(0); - msgQueue = (MESSAGEQUEUE *)GlobalLock( hQueue ); + msgQueue = (MESSAGEQUEUE *)GlobalLock16( hQueue ); if (!msgQueue) return FALSE; /* First handle a message put by SendMessage() */ @@ -706,7 +706,7 @@ void WaitMessage( void ) DDE_GetRemoteMessage(); #endif /* CONFIG_IPC */ - if (!(queue = (MESSAGEQUEUE *)GlobalLock( GetTaskQueue(0) ))) return; + if (!(queue = (MESSAGEQUEUE *)GlobalLock16( GetTaskQueue(0) ))) return; if ((queue->wPostQMsg) || (queue->status & (QS_SENDMESSAGE | QS_PAINT)) || (queue->msgCount) || (QUEUE_GetSysQueue()->msgCount) ) diff --git a/windows/nonclient.c b/windows/nonclient.c index 57ba8929cd7..2538eb18f7e 100644 --- a/windows/nonclient.c +++ b/windows/nonclient.c @@ -643,10 +643,10 @@ void NC_DoNCPaint( HWND hwnd, HRGN clip, BOOL suppress_menupaint ) */ if (IsIconic(hwnd)) { - if (wndPtr->class->wc.hIcon) + if (wndPtr->class->hIcon) { SendMessage(hwnd, WM_ICONERASEBKGND, (WPARAM)hdc, 0); - DrawIcon( hdc, 0, 0, wndPtr->class->wc.hIcon ); + DrawIcon( hdc, 0, 0, wndPtr->class->hIcon ); } ReleaseDC(hwnd, hdc); wndPtr->flags &= ~WIN_INTERNAL_PAINT; @@ -782,9 +782,9 @@ LONG NC_HandleSetCursor( HWND hwnd, WPARAM wParam, LPARAM lParam ) { WND *wndPtr; if (!(wndPtr = WIN_FindWndPtr( hwnd ))) break; - if (wndPtr->class->wc.hCursor) + if (wndPtr->class->hCursor) { - SetCursor( wndPtr->class->wc.hCursor ); + SetCursor( wndPtr->class->hCursor ); return TRUE; } else return FALSE; @@ -1261,30 +1261,31 @@ LONG NC_HandleNCLButtonDown( HWND hwnd, WPARAM wParam, LPARAM lParam ) * * Handle a WM_NCLBUTTONDBLCLK message. Called from DefWindowProc(). */ -LONG NC_HandleNCLButtonDblClk( HWND hwnd, WPARAM wParam, LPARAM lParam ) +LONG NC_HandleNCLButtonDblClk( WND *pWnd, WPARAM wParam, LPARAM lParam ) { /* * if this is an icon, send a restore since we are handling * a double click */ - if (IsIconic(hwnd)) + if (pWnd->dwStyle & WS_MINIMIZE) { - SendMessage(hwnd, WM_SYSCOMMAND, SC_RESTORE, lParam); - return 0; + SendMessage( pWnd->hwndSelf, WM_SYSCOMMAND, SC_RESTORE, lParam ); + return 0; } switch(wParam) /* Hit test */ { case HTCAPTION: /* stop processing if WS_MAXIMIZEBOX is missing */ - - if( GetWindowLong( hwnd , GWL_STYLE) & WS_MAXIMIZEBOX ) - SendMessage( hwnd, WM_SYSCOMMAND, - IsZoomed(hwnd) ? SC_RESTORE : SC_MAXIMIZE, lParam ); + if (pWnd->dwStyle & WS_MAXIMIZEBOX) + SendMessage( pWnd->hwndSelf, WM_SYSCOMMAND, + (pWnd->dwStyle & WS_MAXIMIZE) ? SC_RESTORE : SC_MAXIMIZE, + lParam ); break; case HTSYSMENU: - SendMessage( hwnd, WM_SYSCOMMAND, SC_CLOSE, lParam ); + if (!(pWnd->class->style & CS_NOCLOSE)) + SendMessage( pWnd->hwndSelf, WM_SYSCOMMAND, SC_CLOSE, lParam ); break; } return 0; diff --git a/windows/painting.c b/windows/painting.c index d3f769471b0..93565235898 100644 --- a/windows/painting.c +++ b/windows/painting.c @@ -303,7 +303,10 @@ BOOL RedrawWindow( HWND hwnd, LPRECT rectUpdate, HRGN hrgnUpdate, UINT flags ) /* Erase/update window */ - if (flags & RDW_UPDATENOW) SendMessage( hwnd, WM_PAINT, 0, 0 ); + if (flags & RDW_UPDATENOW) + { + if (wndPtr->hrgnUpdate) SendMessage( hwnd, WM_PAINT, 0, 0 ); + } else if (flags & RDW_ERASENOW) { if (wndPtr->flags & WIN_NEEDS_NCPAINT) @@ -318,7 +321,7 @@ BOOL RedrawWindow( HWND hwnd, LPRECT rectUpdate, HRGN hrgnUpdate, UINT flags ) /* Don't send WM_ERASEBKGND to icons */ /* (WM_ICONERASEBKGND is sent during processing of WM_NCPAINT) */ if (!(wndPtr->dwStyle & WS_MINIMIZE) || - !wndPtr->class->wc.hIcon) + !wndPtr->class->hIcon) { if (SendMessage( hwnd, WM_ERASEBKGND, (WPARAM)hdc, 0 )) wndPtr->flags &= ~WIN_NEEDS_ERASEBKGND; diff --git a/windows/queue.c b/windows/queue.c index 04d80813a3c..c874f39e2d1 100644 --- a/windows/queue.c +++ b/windows/queue.c @@ -25,8 +25,8 @@ void QUEUE_DumpQueue( HQUEUE hQueue ) { MESSAGEQUEUE *pq; - if (!(pq = (MESSAGEQUEUE*) GlobalLock( hQueue )) || - GlobalSize(hQueue) < sizeof(MESSAGEQUEUE) + pq->queueSize*sizeof(QMSG)) + if (!(pq = (MESSAGEQUEUE*) GlobalLock16( hQueue )) || + GlobalSize16(hQueue) < sizeof(MESSAGEQUEUE)+pq->queueSize*sizeof(QMSG)) { fprintf( stderr, "%04x is not a queue handle\n", hQueue ); return; @@ -65,7 +65,7 @@ void QUEUE_WalkQueues(void) fprintf( stderr, "Queue Size Msgs Task\n" ); while (hQueue) { - MESSAGEQUEUE *queue = (MESSAGEQUEUE *)GlobalLock( hQueue ); + MESSAGEQUEUE *queue = (MESSAGEQUEUE *)GlobalLock16( hQueue ); if (!queue) { fprintf( stderr, "*** Bad queue handle %04x\n", hQueue ); @@ -94,13 +94,13 @@ static HQUEUE QUEUE_CreateMsgQueue( int size ) dprintf_msg(stddeb,"Creating message queue...\n"); queueSize = sizeof(MESSAGEQUEUE) + size * sizeof(QMSG); - if (!(hQueue = GlobalAlloc( GMEM_FIXED | GMEM_ZEROINIT, queueSize ))) + if (!(hQueue = GlobalAlloc16( GMEM_FIXED | GMEM_ZEROINIT, queueSize ))) return 0; - msgQueue = (MESSAGEQUEUE *) GlobalLock( hQueue ); + msgQueue = (MESSAGEQUEUE *) GlobalLock16( hQueue ); msgQueue->msgSize = sizeof(QMSG); msgQueue->queueSize = size; msgQueue->wWinVersion = 0; /* FIXME? */ - GlobalUnlock( hQueue ); + GlobalUnlock16( hQueue ); return hQueue; } @@ -112,7 +112,7 @@ static HQUEUE QUEUE_CreateMsgQueue( int size ) */ BOOL QUEUE_DeleteMsgQueue( HQUEUE hQueue ) { - MESSAGEQUEUE * msgQueue = (MESSAGEQUEUE*)GlobalLock(hQueue); + MESSAGEQUEUE * msgQueue = (MESSAGEQUEUE*)GlobalLock16(hQueue); HQUEUE *pPrev; dprintf_msg(stddeb,"Deleting message queue %04x\n", hQueue); @@ -126,11 +126,11 @@ BOOL QUEUE_DeleteMsgQueue( HQUEUE hQueue ) pPrev = &hFirstQueue; while (*pPrev && (*pPrev != hQueue)) { - MESSAGEQUEUE *msgQ = (MESSAGEQUEUE*)GlobalLock(*pPrev); + MESSAGEQUEUE *msgQ = (MESSAGEQUEUE*)GlobalLock16(*pPrev); pPrev = &msgQ->next; } if (*pPrev) *pPrev = msgQueue->next; - GlobalFree( hQueue ); + GlobalFree16( hQueue ); return 1; } @@ -146,7 +146,7 @@ BOOL QUEUE_CreateSysMsgQueue( int size ) if (size > MAX_QUEUE_SIZE) size = MAX_QUEUE_SIZE; else if (size <= 0) size = 1; if (!(hmemSysMsgQueue = QUEUE_CreateMsgQueue( size ))) return FALSE; - sysMsgQueue = (MESSAGEQUEUE *) GlobalLock( hmemSysMsgQueue ); + sysMsgQueue = (MESSAGEQUEUE *) GlobalLock16( hmemSysMsgQueue ); return TRUE; } @@ -170,7 +170,7 @@ BOOL QUEUE_AddMsg( HQUEUE hQueue, MSG * msg, DWORD extraInfo ) int pos; MESSAGEQUEUE *msgQueue; - if (!(msgQueue = (MESSAGEQUEUE *)GlobalLock( hQueue ))) return FALSE; + if (!(msgQueue = (MESSAGEQUEUE *)GlobalLock16( hQueue ))) return FALSE; pos = msgQueue->nextFreeMessage; /* Check if queue is full */ @@ -311,7 +311,7 @@ void hardware_event( WORD message, WORD wParam, LONG lParam, */ HTASK QUEUE_GetQueueTask( HQUEUE hQueue ) { - MESSAGEQUEUE *queue = GlobalLock( hQueue ); + MESSAGEQUEUE *queue = GlobalLock16( hQueue ); return (queue) ? queue->hTask : 0 ; } @@ -323,7 +323,7 @@ void QUEUE_IncPaintCount( HQUEUE hQueue ) { MESSAGEQUEUE *queue; - if (!(queue = (MESSAGEQUEUE *)GlobalLock( hQueue ))) return; + if (!(queue = (MESSAGEQUEUE *)GlobalLock16( hQueue ))) return; queue->wPaintCount++; queue->status |= QS_PAINT; queue->tempStatus |= QS_PAINT; @@ -337,7 +337,7 @@ void QUEUE_DecPaintCount( HQUEUE hQueue ) { MESSAGEQUEUE *queue; - if (!(queue = (MESSAGEQUEUE *)GlobalLock( hQueue ))) return; + if (!(queue = (MESSAGEQUEUE *)GlobalLock16( hQueue ))) return; queue->wPaintCount--; if (!queue->wPaintCount) queue->status &= ~QS_PAINT; } @@ -350,7 +350,7 @@ void QUEUE_IncTimerCount( HQUEUE hQueue ) { MESSAGEQUEUE *queue; - if (!(queue = (MESSAGEQUEUE *)GlobalLock( hQueue ))) return; + if (!(queue = (MESSAGEQUEUE *)GlobalLock16( hQueue ))) return; queue->wTimerCount++; queue->status |= QS_TIMER; queue->tempStatus |= QS_TIMER; @@ -364,7 +364,7 @@ void QUEUE_DecTimerCount( HQUEUE hQueue ) { MESSAGEQUEUE *queue; - if (!(queue = (MESSAGEQUEUE *)GlobalLock( hQueue ))) return; + if (!(queue = (MESSAGEQUEUE *)GlobalLock16( hQueue ))) return; queue->wTimerCount--; if (!queue->wTimerCount) queue->status &= ~QS_TIMER; } @@ -377,7 +377,7 @@ void PostQuitMessage( INT exitCode ) { MESSAGEQUEUE *queue; - if (!(queue = (MESSAGEQUEUE *)GlobalLock( GetTaskQueue(0) ))) return; + if (!(queue = (MESSAGEQUEUE *)GlobalLock16( GetTaskQueue(0) ))) return; queue->wPostQMsg = TRUE; queue->wExitCode = (WORD)exitCode; } @@ -417,7 +417,7 @@ BOOL SetMessageQueue( int size ) if ((hQueue = GetTaskQueue(0)) != 0) QUEUE_DeleteMsgQueue( hQueue ); /* Link new queue into list */ - queuePtr = (MESSAGEQUEUE *)GlobalLock( hNewQueue ); + queuePtr = (MESSAGEQUEUE *)GlobalLock16( hNewQueue ); queuePtr->hTask = GetCurrentTask(); queuePtr->next = hFirstQueue; hFirstQueue = hNewQueue; @@ -435,7 +435,7 @@ DWORD GetQueueStatus( UINT flags ) MESSAGEQUEUE *queue; DWORD ret; - if (!(queue = (MESSAGEQUEUE *)GlobalLock( GetTaskQueue(0) ))) return 0; + if (!(queue = (MESSAGEQUEUE *)GlobalLock16( GetTaskQueue(0) ))) return 0; ret = MAKELONG( queue->tempStatus, queue->status ); queue->tempStatus = 0; return ret & MAKELONG( flags, flags ); @@ -449,7 +449,7 @@ BOOL GetInputState() { MESSAGEQUEUE *queue; - if (!(queue = (MESSAGEQUEUE *)GlobalLock( GetTaskQueue(0) ))) return FALSE; + if (!(queue = (MESSAGEQUEUE *)GlobalLock16( GetTaskQueue(0) ))) return FALSE; return queue->status & (QS_KEY | QS_MOUSEBUTTON); } @@ -461,7 +461,7 @@ DWORD GetMessagePos(void) { MESSAGEQUEUE *queue; - if (!(queue = (MESSAGEQUEUE *)GlobalLock( GetTaskQueue(0) ))) return 0; + if (!(queue = (MESSAGEQUEUE *)GlobalLock16( GetTaskQueue(0) ))) return 0; return queue->GetMessagePosVal; } @@ -473,7 +473,7 @@ LONG GetMessageTime(void) { MESSAGEQUEUE *queue; - if (!(queue = (MESSAGEQUEUE *)GlobalLock( GetTaskQueue(0) ))) return 0; + if (!(queue = (MESSAGEQUEUE *)GlobalLock16( GetTaskQueue(0) ))) return 0; return queue->GetMessageTimeVal; } @@ -485,6 +485,6 @@ LONG GetMessageExtraInfo(void) { MESSAGEQUEUE *queue; - if (!(queue = (MESSAGEQUEUE *)GlobalLock( GetTaskQueue(0) ))) return 0; + if (!(queue = (MESSAGEQUEUE *)GlobalLock16( GetTaskQueue(0) ))) return 0; return queue->GetMessageExtraInfoVal; } diff --git a/windows/syscolor.c b/windows/syscolor.c index 4e5bc07f07b..50e03b8e792 100644 --- a/windows/syscolor.c +++ b/windows/syscolor.c @@ -160,7 +160,7 @@ COLORREF GetSysColor(short nIndex) * SetSysColors (USER.181) */ -void SetSysColors(int nChanges, LPINT lpSysColor, COLORREF *lpColorValues) +void SetSysColors(int nChanges, LPINT16 lpSysColor, COLORREF *lpColorValues) { int i; diff --git a/windows/utility.c b/windows/utility.c deleted file mode 100644 index e3e17800b1c..00000000000 --- a/windows/utility.c +++ /dev/null @@ -1,440 +0,0 @@ -/* utility.c Utility functions for Wine - * Author: Andrew Bulhak - * Commenced: 10-9-1993 - * - * This unit contains the implementations of - * various Windows API functions that perform - * utility tasks; i.e., that do not fit into - * any major category but perform useful tasks. - */ - -#include <stdio.h> -#include <stdarg.h> -#include <ctype.h> -#include <stdlib.h> -#include "windows.h" -#include "ldt.h" -#include "stackframe.h" -#include "stddebug.h" -#include "debug.h" - - - -/* MulDiv is a simple function that may as well have been - * implemented as a macro; however Microsoft, in their infinite - * wisdom, have implemented it as a DLL function and therefore - * so should we. - * Basically, it takes two 16-bit integers, multiplies them - * and divides by a third integer. - */ - -#ifdef WINELIB32 -INT MulDiv(INT foo, INT bar, INT baz) -{ -#ifdef __GNUC__ - long long ret; - if (!baz) return -1; - ret = ((long long)foo * bar) / baz; - if ((ret > 2147483647) || (ret < -2147483647)) return -1; - return ret; -#else - if (!baz) return -1; - return (foo * bar) / baz; -#endif -} -#else /* WINELIB32 */ -INT MulDiv(INT foo, INT bar, INT baz) -{ - int ret; - if (!baz) return -32768; - ret = (foo * bar) / baz; - if ((ret > 32767) || (ret < -32767)) return -32768; - return ret; -} -#endif - -/* UTILITY_strip015() removes \015 (^M, CR) from a string; - * this is done to convert a MS-DOS-style string to a more - * UNIX-friendly format. Replacement is done in-place. - */ - -void UTILITY_strip015(char *dest) { - char *src = dest; - - while(*src) { - while(*src == '\015') src++; /* Skip \015s */ - while((*src) && (*src != '\015')) *(dest++) = *(src++); - }; - *dest = '\0'; /* Add null terminator */ -}; - -/********************************************************************** - * DebugPrintString - */ -int -DebugPrintString(char *str) -{ - fprintf(stderr, "%s\n", str); - return 0; -} - -/* - * OutputDebugString strips CRs from its (string) parameter and - * calls DebugPrintString(), which was written by someone else. - * Since this is part of the standard Windows API, it needs no - * references to nonstandard DLLs. - */ - -void OutputDebugString(LPSTR foo) -{ - UTILITY_strip015(foo); - DebugPrintString(foo); -}; - -#if 0 -/* UTILITY_qualify(source, dest) takes the format string source and - * changes all the parameters to correspond to Linux integer sizes - * rather than Windows sizes. For example, it converts %i to %hi - * and %lx to %x. No array size checking is done at present. - */ - -static void UTILITY_qualify(const char *source, char *dest) -{ - dprintf_utility(stddeb, "UTILITY_qualify(\"%s\", \"%s\");\n", - source, dest); - if(!source) return; /* Dumbass attack! */ - while(*source) { - /* Find next format code. */ - while((*source != '%') && (*source)) { - *(dest++) = *(source++); - } - /* Yeah, I know I shouldn't use gotos.... */ - if (!(*source)) goto loop_end; - /* skip the '%' */ - *(dest++) = *(source++); - /* Now insert a size qualifier, if needed. */ - switch(*source) { - case 'i': - case 'd': - case 'x': - case 'X': - case 'u': - case 'o': - /* We have a 16-bit value here. */ - *(dest++) = 'h'; - break; - }; - /* Here we go 'round the mulberry bush... */ -loop_end: - }; - *dest = '\0'; -}; -#endif - -/* UTILITY_argsize() evaluates the size of the argument list that - * accompanies a vsprintf() or wvsprintf() call. - * Arguments: - * char *format; printf-style format string. - * BOOL windows; if this is TRUE, we assume that ints are - * 16 bits in size; otherwise we deal with - * 32-bit variables. - * Returns: - * size (in bytes) of the arguments that follow the call. - */ - -size_t UTILITY_argsize(const char *format, BOOL windows) -{ - size_t size = 0; - -#define INT_SIZE (windows ? 2 : 4) - - while(*format) { - while((*format) && (*format != '%')) format++; /* skip ahead */ - if(*format) { - char modifier = ' '; - dprintf_utility(stddeb, "found:\t\"%%"); - format++; /* skip past '%' */ - /* First skip the flags, field width, etc. */ - /* First the flags */ - if ((*format == '#') || (*format == '-') || (*format == '+') - || (*format == ' ')) { - dprintf_utility(stddeb, "%c", *format); - format++; - } - /* Now the field width, etc. */ - while(isdigit(*format)) { - dprintf_utility(stddeb, "%c", *format); - format++; - } - if(*format == '.') { - dprintf_utility(stddeb, "%c", *format); - format++; - } - while(isdigit(*format)) { - dprintf_utility(stddeb, "%c", *format); - format++; - } - /* Now we handle the rest */ - if((*format == 'h') || (*format == 'l') || (*format == 'L')) { - dprintf_utility(stddeb, "%c", modifier); - modifier = *(format++); - } - /* Handle the actual type. */ - dprintf_utility(stddeb, "%c\"\n", *format); - switch(*format) { - case 'd': - case 'i': - case 'o': - case 'x': - case 'X': - case 'u': - case 'c': - size += ((modifier == 'l') ? 4 : INT_SIZE); - break; - case 's': size += sizeof(char *); break; - case 'e': - case 'E': - case 'f': - case 'g': - case 'G': - /* It doesn't look as if Windows' wvsprintf() - supports floating-point arguments. However, - I'll leave this code here just in case. */ - size += (modifier == 'L') ? sizeof(long double) : sizeof(double); - break; - case 'p': size += sizeof(void *); break; - case 'n': size += sizeof(int *); break; - }; - }; - }; -#undef INT_SIZE - dprintf_utility(stddeb, "UTILITY_argsize: returning %i\n", size); - return size; -}; - -/* UTILITY_convertArgs() creates a 32-bit argument list from a 16-bit list. - * This is used to allow wvsprintf() arguments to be fed through - * vsprintf(). - * - * Arguments: - * char *fmt; format string - * char *winarg; Windows-style arguments - * - * Returns: - * malloc()ed pointer to new argument list. This should - * be free()d as soon as it is finished with. - */ - -char *UTILITY_convertArgs(char *format, char *winarg) -{ - char *result = (char *)malloc(UTILITY_argsize(format, 0)); - char *rptr = result; - short *wptr = (short *)winarg; - long *dptr = (long *)result; - - while(*format) { - while((*format) && (*format != '%')) format++; /* skip ahead */ - if(*format) { - char modifier = ' '; - dprintf_utility(stddeb, "found:\t\"%%"); - format++; /* skip past '%' */ - - /* First skip the flags, field width, etc. */ - /* First the flags */ - if (*format == '#' || *format == '-' || *format == '+' - || *format == ' ') format++; - - /* Now the field width, etc. */ - while (isdigit(*format)) format++; - if (*format == '.') format++; - while (isdigit(*format)) format++; - - /* Now we handle the rest */ - if(*format == 'h' || *format == 'l' || *format == 'L') - modifier = *format++; - - /* Handle the actual type. */ - dprintf_utility(stddeb, "%c\"\n", *format); - - switch(*format) { - case 'd': - case 'i': - if (modifier == 'l') { - *((int *)rptr)++ = *((int *)winarg)++; - } else { - *((int *)rptr)++ = *((short *)winarg)++; - } - break; - case 'o': - case 'x': - case 'X': - case 'u': - case 'c': - if (modifier == 'l') { - *((unsigned int *)rptr)++ = *((unsigned int *)winarg)++; - } else { - *((unsigned int *)rptr)++ = *((unsigned short *)winarg)++; - } - break; - case 's': - case 'p': - case 'n': /* A pointer, is a pointer, is a pointer... */ - *((char **)rptr)++ = (char *)PTR_SEG_TO_LIN(*(SEGPTR *)winarg); - ((SEGPTR *)winarg)++; - break; - case 'e': - case 'E': - case 'f': - case 'g': - case 'G': - /* It doesn't look as if Windows' wvsprintf() - supports floating-point arguments. However, - I'll leave this code here just in case. */ - if(modifier=='L') - *((long double *)rptr)++ = *((long double *)winarg)++; - else - *((double *)rptr)++ = *((double *)winarg)++; - break; - } - } - } - for(; (char *)dptr < rptr; dptr ++) - dprintf_utility( stddeb, "%08lx ", *dptr ); - dprintf_utility( stddeb, "\n" ); - for(; (char *)wptr < winarg; wptr ++) - dprintf_utility( stddeb, "%04x ", *wptr ); - dprintf_utility( stddeb, "\n" ); - return result; -}; - -#ifndef WINELIB -INT windows_wsprintf(void) -{ - LPSTR lpOutput, lpFormat, ptr; - BYTE new_stack[1024], *stack_ptr; - BOOL fLarge; - - BYTE *win_stack = (BYTE *)CURRENT_STACK16->args; - - lpOutput = (LPSTR) PTR_SEG_TO_LIN(*(DWORD*)win_stack); - win_stack += sizeof(DWORD); - lpFormat = (LPSTR) PTR_SEG_TO_LIN(*(DWORD*)win_stack); - win_stack += sizeof(DWORD); - - /* create 32-bit stack for libc's vsprintf() */ - - for (ptr = lpFormat, stack_ptr = new_stack; *ptr; ptr++) - { - if (*ptr != '%' || *++ptr == '%') - continue; - - /* skip width/precision */ - while (*ptr == '-' || *ptr == '+' || *ptr == '.' || - *ptr == ' ' || isdigit(*ptr) || *ptr == '#') - ptr++; - - /* handle modifier */ - fLarge = ((*ptr == 'l') || (*ptr == 'L')); - if (fLarge) ptr++; - - switch (*ptr) - { - case 's': - *(char**)stack_ptr = (char *)PTR_SEG_TO_LIN(*(DWORD*)win_stack); - stack_ptr += sizeof(char *); - win_stack += sizeof(DWORD); - break; - - case 'c': - -/* windows' wsprintf() %c ignores 0's, we replace 0 with SPACE to make sure - that the remaining part of the string isn't ignored by the winapp */ - - if (*(WORD*)win_stack) - *(DWORD*)stack_ptr = *(WORD*)win_stack; - else - *(DWORD*)stack_ptr = ' '; - stack_ptr += sizeof(DWORD); - win_stack += sizeof(WORD); - break; - - case 'd': - case 'i': - if (!fLarge) - { - *(int*)stack_ptr = *(INT*)win_stack; - stack_ptr += sizeof(int); - win_stack += sizeof(INT); - break; - } - /* else fall through */ - case 'u': - case 'x': - case 'X': - if (fLarge) - { - *(DWORD*)stack_ptr = *(DWORD*)win_stack; - win_stack += sizeof(DWORD); - } - else - { - *(DWORD*)stack_ptr = *(WORD*)win_stack; - win_stack += sizeof(WORD); - } - stack_ptr += sizeof(DWORD); - break; - - default: - *(DWORD*)stack_ptr = 0; - stack_ptr += sizeof(DWORD); - win_stack += sizeof(WORD); - fprintf(stderr, "wsprintf: oops, unknown formattype %c used!\n", *ptr); - break; - } - } - - return vsprintf(lpOutput, lpFormat, new_stack); -} -#endif - -/************************************************************************** - * wsprintf [USER.420] (not used by relay) - */ -int wsprintf(LPSTR lpOutput, LPSTR lpFormat, ...) -{ - va_list valist; - int ArgCnt; - - va_start(valist, lpFormat); - ArgCnt = vsprintf(lpOutput, lpFormat, valist); - va_end(valist); - - return ArgCnt; -} - - -/* wvsprintf() is an implementation of vsprintf(). This - * implementation converts the arguments to 32-bit integers and - * calls the standard library function vsprintf(). - * - * Known shortcomings: - * wvsprintf() doesn't yet convert the arguments back after - * calling vsprintf(), so if Windows implements %n and a - * program depends on it, we're in trouble. - */ - -int wvsprintf(LPSTR buf, LPSTR format, LPSTR args) -{ - char *newargs; - int result; - - if(!buf || !format) return 0; - - /* Convert agruments to 32-bit values */ - newargs = UTILITY_convertArgs(format, args); - result = vsprintf(buf, format, newargs); - - free(newargs); - return result; -}; - diff --git a/windows/win.c b/windows/win.c index ce2b70afbb8..e9fbaa03edd 100644 --- a/windows/win.c +++ b/windows/win.c @@ -15,6 +15,7 @@ #include "sysmetrics.h" #include "cursoricon.h" #include "event.h" +#include "menu.h" #include "nonclient.h" #include "queue.h" #include "winpos.h" @@ -97,10 +98,10 @@ void WIN_DumpWindow( HWND hwnd ) ptr->ptIconPos.y, ptr->ptMaxPos.x, ptr->ptMaxPos.y, ptr->hSysMenu, ptr->flags, ptr->hProp, ptr->hVScroll, ptr->hHScroll ); - if (ptr->class->wc.cbWndExtra) + if (ptr->class->cbWndExtra) { fprintf( stderr, "extra bytes:" ); - for (i = 0; i < ptr->class->wc.cbWndExtra; i++) + for (i = 0; i < ptr->class->cbWndExtra; i++) fprintf( stderr, " %02x", *((BYTE*)ptr->wExtra+i) ); fprintf( stderr, "\n" ); } @@ -324,7 +325,7 @@ static void WIN_DestroyWindow( HWND hwnd ) } if (wndPtr->hSysMenu) DestroyMenu( wndPtr->hSysMenu ); if (wndPtr->window) XDestroyWindow( display, wndPtr->window ); - if (wndPtr->class->wc.style & CS_OWNDC) DCE_FreeDCE( wndPtr->hdce ); + if (wndPtr->class->style & CS_OWNDC) DCE_FreeDCE( wndPtr->hdce ); wndPtr->class->cWindows--; USER_HEAP_FREE( hwnd ); } @@ -361,7 +362,7 @@ BOOL WIN_CreateDesktopWindow(void) if (!(class = CLASS_FindClassByName( DESKTOP_CLASS_ATOM, 0 ))) return FALSE; - hwndDesktop = USER_HEAP_ALLOC( sizeof(WND)+class->wc.cbWndExtra ); + hwndDesktop = USER_HEAP_ALLOC( sizeof(WND)+class->cbWndExtra ); if (!hwndDesktop) return FALSE; pWndDesktop = (WND *) USER_HEAP_LIN_ADDR( hwndDesktop ); @@ -386,7 +387,7 @@ BOOL WIN_CreateDesktopWindow(void) pWndDesktop->hmemTaskQ = 0; /* Desktop does not belong to a task */ pWndDesktop->hrgnUpdate = 0; pWndDesktop->hwndLastActive = hwndDesktop; - pWndDesktop->lpfnWndProc = class->wc.lpfnWndProc; + pWndDesktop->lpfnWndProc = class->lpfnWndProc; pWndDesktop->dwStyle = WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS; pWndDesktop->dwExStyle = 0; @@ -398,7 +399,7 @@ BOOL WIN_CreateDesktopWindow(void) pWndDesktop->flags = 0; pWndDesktop->window = rootWindow; pWndDesktop->hSysMenu = 0; - pWndDesktop->hProp = 0; + pWndDesktop->hProp = 0; EVENT_RegisterWindow( pWndDesktop->window, hwndDesktop ); SendMessage( hwndDesktop, WM_NCCREATE, 0, 0 ); if ((hdc = GetDC( hwndDesktop )) != 0) @@ -411,23 +412,23 @@ BOOL WIN_CreateDesktopWindow(void) /*********************************************************************** - * CreateWindow (USER.41) + * CreateWindow16 (USER.41) */ -HWND CreateWindow( SEGPTR className, SEGPTR windowName, - DWORD style, INT x, INT y, INT width, INT height, - HWND parent, HMENU menu, HANDLE instance, SEGPTR data ) +HWND CreateWindow16( SEGPTR className, SEGPTR windowName, + DWORD style, INT16 x, INT16 y, INT16 width, INT16 height, + HWND parent, HMENU menu, HANDLE instance, SEGPTR data ) { - return CreateWindowEx( 0, className, windowName, style, + return CreateWindowEx16( 0, className, windowName, style, x, y, width, height, parent, menu, instance, data ); } /*********************************************************************** - * CreateWindowEx (USER.452) + * CreateWindowEx16 (USER.452) */ -HWND CreateWindowEx( DWORD exStyle, SEGPTR className, SEGPTR windowName, - DWORD style, INT x, INT y, INT width, INT height, - HWND parent, HMENU menu, HANDLE instance, SEGPTR data ) +HWND CreateWindowEx16(DWORD exStyle, SEGPTR className, SEGPTR windowName, + DWORD style, INT16 x, INT16 y, INT16 width, INT16 height, + HWND parent, HMENU menu, HANDLE instance, SEGPTR data ) { HANDLE hwnd; CLASS *classPtr; @@ -452,8 +453,8 @@ HWND CreateWindowEx( DWORD exStyle, SEGPTR className, SEGPTR windowName, exStyle, style, x, y, width, height, parent, menu, instance, (DWORD)data); - if (x == CW_USEDEFAULT) x = y = 0; - if (width == CW_USEDEFAULT) + if (x == CW_USEDEFAULT16) x = y = 0; + if (width == CW_USEDEFAULT16) { width = 600; height = 400; @@ -494,7 +495,7 @@ HWND CreateWindowEx( DWORD exStyle, SEGPTR className, SEGPTR windowName, /* Create the window structure */ - hwnd = USER_HEAP_ALLOC( sizeof(WND)+classPtr->wc.cbWndExtra ); + hwnd = USER_HEAP_ALLOC( sizeof(WND)+classPtr->cbWndExtra ); if (!hwnd) { dprintf_win(stddeb,"CreateWindowEx: Out of memory\n"); return 0; @@ -519,7 +520,7 @@ HWND CreateWindowEx( DWORD exStyle, SEGPTR className, SEGPTR windowName, wndPtr->hmemTaskQ = GetTaskQueue(0); wndPtr->hrgnUpdate = 0; wndPtr->hwndLastActive = hwnd; - wndPtr->lpfnWndProc = classPtr->wc.lpfnWndProc; + wndPtr->lpfnWndProc = classPtr->lpfnWndProc; wndPtr->dwStyle = style & ~WS_VISIBLE; wndPtr->dwExStyle = exStyle; wndPtr->wIDmenu = 0; @@ -527,21 +528,18 @@ HWND CreateWindowEx( DWORD exStyle, SEGPTR className, SEGPTR windowName, wndPtr->flags = 0; wndPtr->hVScroll = 0; wndPtr->hHScroll = 0; - wndPtr->hSysMenu = 0; + wndPtr->hSysMenu = MENU_GetDefSysMenu(); wndPtr->hProp = 0; - if (classPtr->wc.cbWndExtra) - memset( wndPtr->wExtra, 0, classPtr->wc.cbWndExtra ); + if (classPtr->cbWndExtra) + memset( wndPtr->wExtra, 0, classPtr->cbWndExtra ); classPtr->cWindows++; /* Get class or window DC if needed */ - if (classPtr->wc.style & CS_OWNDC) - wndPtr->hdce = DCE_AllocDCE( DCE_WINDOW_DC ); - else if (classPtr->wc.style & CS_CLASSDC) - wndPtr->hdce = classPtr->hdce; - else - wndPtr->hdce = 0; + if (classPtr->style & CS_OWNDC) wndPtr->hdce = DCE_AllocDCE(DCE_WINDOW_DC); + else if (classPtr->style & CS_CLASSDC) wndPtr->hdce = classPtr->hdce; + else wndPtr->hdce = 0; /* Insert the window in the linked list */ @@ -588,7 +586,7 @@ HWND CreateWindowEx( DWORD exStyle, SEGPTR className, SEGPTR windowName, } win_attr.colormap = COLOR_WinColormap; win_attr.backing_store = Options.backingstore ? WhenMapped : NotUseful; - win_attr.save_under = ((classPtr->wc.style & CS_SAVEBITS) != 0); + win_attr.save_under = ((classPtr->style & CS_SAVEBITS) != 0); win_attr.cursor = CURSORICON_XCursor; wndPtr->window = XCreateWindow( display, rootWindow, x, y, width, height, 0, CopyFromParent, @@ -612,13 +610,11 @@ HWND CreateWindowEx( DWORD exStyle, SEGPTR className, SEGPTR windowName, if ((style & WS_CAPTION) && !(style & WS_CHILD)) { if (menu) SetMenu(hwnd, menu); - else if (classPtr->wc.lpszMenuName) - SetMenu( hwnd, LoadMenu( instance, classPtr->wc.lpszMenuName ) ); + else if (classPtr->lpszMenuName) + SetMenu( hwnd, LoadMenu( instance, classPtr->lpszMenuName ) ); } else wndPtr->wIDmenu = (UINT)menu; - GetSystemMenu( hwnd, TRUE ); /* Create a copy of the system menu */ - /* Send the WM_CREATE message */ createStruct.lpCreateParams = (LPSTR)data; @@ -643,7 +639,7 @@ HWND CreateWindowEx( DWORD exStyle, SEGPTR className, SEGPTR windowName, else { WINPOS_SendNCCalcSize( hwnd, FALSE, &wndPtr->rectWindow, - NULL, NULL, NULL, &wndPtr->rectClient ); + NULL, NULL, 0, &wndPtr->rectClient ); wmcreate = SendMessage(hwnd, WM_CREATE, 0, (LPARAM)MAKE_SEGPTR(&createStruct)); } @@ -758,7 +754,14 @@ BOOL OpenIcon(HWND hWnd) /*********************************************************************** * FindWindow (USER.50) */ -HWND FindWindow( SEGPTR ClassMatch, LPSTR TitleMatch ) +HWND FindWindow( SEGPTR ClassMatch, LPSTR TitleMatch ) { + return FindWindowEx((HWND)0,(HWND)0,ClassMatch,TitleMatch); +} +/*********************************************************************** + * FindWindowEx (USER.427) + */ +HWND +FindWindowEx(HWND parent,HWND childafter,SEGPTR ClassMatch,LPSTR TitleMatch ) { WND *wndPtr; CLASS *class = NULL; @@ -769,7 +772,23 @@ HWND FindWindow( SEGPTR ClassMatch, LPSTR TitleMatch ) return 0; } - wndPtr = pWndDesktop->child; + if (parent) { + wndPtr = WIN_FindWndPtr(parent); + if (wndPtr == NULL) + wndPtr = pWndDesktop; + wndPtr = wndPtr->child; + } else + wndPtr = pWndDesktop->child; + if (childafter) { + while (wndPtr) + { + if (childafter == wndPtr->hwndSelf) { + wndPtr = wndPtr->next; + break; + } + wndPtr = wndPtr->next; + } + } while (wndPtr) { if (!class || (wndPtr->class == class)) @@ -1524,7 +1543,7 @@ DWORD DragObject(HWND hwndScope, HWND hWnd, WORD wObj, HANDLE hOfStruct, LPDRAGINFO lpDragInfo; SEGPTR spDragInfo; HCURSOR hDragCursor=0, hOldCursor=0, hBummer=0; - HANDLE hDragInfo = GlobalAlloc( GMEM_SHARE | GMEM_ZEROINIT, 2*sizeof(DRAGINFO)); + HANDLE hDragInfo = GlobalAlloc16( GMEM_SHARE | GMEM_ZEROINIT, 2*sizeof(DRAGINFO)); WND *wndPtr = WIN_FindWndPtr(hWnd); DWORD dwRet = 0; short dragDone = 0; @@ -1532,8 +1551,8 @@ DWORD DragObject(HWND hwndScope, HWND hWnd, WORD wObj, HANDLE hOfStruct, HWND hCurrentWnd = 0; WORD btemp; - lpDragInfo = (LPDRAGINFO) GlobalLock(hDragInfo); - spDragInfo = (SEGPTR) WIN16_GlobalLock(hDragInfo); + lpDragInfo = (LPDRAGINFO) GlobalLock16(hDragInfo); + spDragInfo = (SEGPTR) WIN16_GlobalLock16(hDragInfo); if( !lpDragInfo || !spDragInfo ) return 0L; @@ -1541,7 +1560,7 @@ DWORD DragObject(HWND hwndScope, HWND hWnd, WORD wObj, HANDLE hOfStruct, if( !hBummer || !wndPtr ) { - GlobalFree(hDragInfo); + GlobalFree16(hDragInfo); return 0L; } @@ -1549,7 +1568,7 @@ DWORD DragObject(HWND hwndScope, HWND hWnd, WORD wObj, HANDLE hOfStruct, { if( !(hDragCursor = CURSORICON_IconToCursor(hCursor)) ) { - GlobalFree(hDragInfo); + GlobalFree16(hDragInfo); return 0L; } @@ -1632,7 +1651,7 @@ DWORD DragObject(HWND hwndScope, HWND hWnd, WORD wObj, HANDLE hOfStruct, if( hCurrentCursor != hBummer ) dwRet = SendMessage( lpDragInfo->hScope, WM_DROPOBJECT, (WPARAM)hWnd, (LPARAM)spDragInfo ); - GlobalFree(hDragInfo); + GlobalFree16(hDragInfo); return dwRet; } diff --git a/windows/winpos.c b/windows/winpos.c index 9e7f0734bc0..e059ef073e9 100644 --- a/windows/winpos.c +++ b/windows/winpos.c @@ -855,7 +855,7 @@ BOOL WINPOS_ChangeActiveWindow( HWND hWnd, BOOL mouseMsg ) */ LONG WINPOS_SendNCCalcSize( HWND hwnd, BOOL calcValidRect, RECT *newWindowRect, RECT *oldWindowRect, RECT *oldClientRect, - WINDOWPOS *winpos, RECT *newClientRect ) + SEGPTR winpos, RECT *newClientRect ) { NCCALCSIZE_PARAMS params; LONG result; @@ -1337,7 +1337,7 @@ BOOL SetWindowPos( HWND hwnd, HWND hwndInsertAfter, INT x, INT y, { result = WINPOS_SendNCCalcSize( winpos.hwnd, TRUE, &newWindowRect, &wndPtr->rectWindow, &wndPtr->rectClient, - &winpos, &newClientRect ); + MAKE_SEGPTR(&winpos), &newClientRect ); /* FIXME: WVR_ALIGNxxx */ -- 2.11.4.GIT