From d90840e18070cddc32a85b569b3647ce7458e85f Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Tue, 11 Jun 1996 16:02:08 +0000 Subject: [PATCH] Release 960611 Tue Jun 11 15:20:43 1996 Alexandre Julliard * [debugger/break.c] [loader/signal.c] Fixed breakpoints in 32-bit code. * [include/windows.h] Added many more Win32 versions of standard structures. * [include/winreg.h] [misc/registry.c] Moved private types into registry.c. * [memory/string.c] (New file) Moved most string functions from misc/lstr.c; added Win32 version of all functions. * [misc/wsprintf.c] Implemented Win32 wsprintf functions. * [objects/bitmap.c] Implemented Win32 bitmap functions. * [windows/dialog.c] Don't set dialog procedure before the controls are created. This avoids a crash in Winhelp. Tue Jun 11 14:10:06 1996 Martin von Loewis * [controls/menu.c] [if1632/user.spec] [windows/message.c] Replace PeekMessage with PeekMessage16. * [if1632/kernel32.spec][misc/main.c] GetVersion32,GetVersionEx32A,GetVersionEx32W: new functions. MAIN_ParseVersion: new function, new command line option -winver. GetVersion: modified to take command line argument into account. * [if1632/kernel32.spec] [win32/process.c] FreeLibrary32: new function. TlsAlloc: initialize Tls to zero. InterlockedIncrement,InterlockedDecrement,InterlockedExchange: new functions. * [if1632/kernel32.spec] SetErrorMode,GetActiveWindow: new relays to existing functions. * [if1632/kernel32.spec][win32/user32.c] PeekMessage32A,PeekMessage32W: new functions. * [include/struct32.h][include/windows.h] Moved MSG32 to windows.h. Renamed MSG to MSG16. Modified prototypes to use MSG16 * [include/winbase.h] OSVERSIONINFO32A,OSVERSIONINFO32W: new structures. Sun Jun 9 20:53:30 1996 Marcus Meissner * [if1632/Makefile.in] [loader/builtin.c] version.dll,lz32.dll added. * [include/lzexpand.h] [if1632/lz32.spec] [if1632/lzexpand.spec] [misc/lzexpand.c] lz32.dll added. Modified to new function naming standard. * [include/ver.h] [if1632/ver.spec] [if1632/version.spec] [misc/ver.c] version.dll added (win32 version of ver.dll). Modified to new function naming standard. Use registry to look up a LOCALE langids too. (VerInstallFile,VerFindFile still stubs) Fri Jun 7 20:40:20 1996 Albrecht Kleine * [files/file.c] Added a warning if GetTempFileName() gets a bad drive parameter. * [misc/commdlg.c] Changed file listbox color to gray in SaveFile dialog (just like Windows does this). --- ANNOUNCE | 15 +- ChangeLog | 81 ++ controls/button.c | 16 +- controls/combo.c | 6 +- controls/desktop.c | 4 +- controls/edit.c | 2 +- controls/listbox.c | 12 +- controls/menu.c | 27 +- debugger/break.c | 8 +- debugger/db_disasm.c | 114 +-- debugger/hash.c | 2 +- debugger/info.c | 2 +- files/directory.c | 14 +- files/dos_fs.c | 20 +- files/drive.c | 10 +- files/file.c | 33 +- files/profile.c | 22 +- if1632/Makefile.in | 2 + if1632/gdi.spec | 4 +- if1632/gdi32.spec | 14 +- if1632/kernel.spec | 12 +- if1632/kernel32.spec | 53 +- if1632/lz32.spec | 15 + if1632/lzexpand.spec | 6 +- if1632/user.spec | 12 +- if1632/user32.spec | 14 +- if1632/ver.spec | 12 +- if1632/version.spec | 17 + include/bitmap.h | 5 +- include/brush.h | 2 +- include/callback.h | 32 +- include/compobj.h | 5 - include/except.h | 16 +- include/file.h | 2 +- include/font.h | 2 +- include/gdi.h | 5 +- include/global.h | 9 +- include/keyboard.h | 114 --- include/listbox.h | 2 +- include/lzexpand.h | 28 +- include/message.h | 2 +- include/metafile.h | 8 +- include/neexe.h | 2 +- include/ole.h | 9 + include/pen.h | 2 +- include/queue.h | 4 +- include/resource.h | 2 +- include/string32.h | 6 - include/struct32.h | 14 +- include/task.h | 3 - include/ver.h | 67 +- include/winbase.h | 29 +- include/windows.h | 2090 ++++++++++++++++++++++++---------------- include/winreg.h | 23 - include/wintypes.h | 70 +- loader/Makefile.in | 2 +- loader/builtin.c | 10 +- loader/module.c | 21 +- loader/ne_resource.c | 10 +- loader/resource.c | 2 +- loader/signal.c | 74 +- loader/task.c | 6 +- memory/Makefile.in | 3 +- memory/atom.c | 6 +- memory/global.c | 8 +- memory/heap.c | 2 +- memory/ldt.c | 4 +- memory/string.c | 335 +++++++ misc/Makefile.in | 1 + misc/clipboard.c | 12 +- misc/comm.c | 6 +- misc/commdlg.c | 62 +- misc/compobj.c | 2 - misc/keyboard.c | 116 ++- misc/lstr.c | 188 +--- misc/lzexpand.c | 125 ++- misc/main.c | 143 ++- misc/ole2nls.c | 5 +- misc/registry.c | 29 +- misc/shell.c | 2 +- misc/spy.c | 4 +- misc/ver.c | 282 +++++- misc/wsprintf.c | 555 +++++++++++ miscemu/cpu.c | 2 +- miscemu/int21.c | 14 +- multimedia/mcistring.c | 4 +- multimedia/mmsystem.c | 8 +- objects/bitmap.c | 94 +- objects/brush.c | 21 +- objects/clipping.c | 5 +- objects/color.c | 4 +- objects/font.c | 71 +- objects/gdiobj.c | 56 +- objects/metafile.c | 37 +- objects/oembitmap.c | 4 +- objects/pen.c | 8 +- objects/text.c | 26 +- win32/Makefile.in | 1 - win32/except.c | 8 +- win32/gdi32.c | 74 -- win32/process.c | 8 + win32/resource.c | 4 +- win32/string32.c | 63 +- win32/struct32.c | 4 +- win32/thread.c | 59 ++ win32/user32.c | 35 +- windows/caret.c | 4 +- windows/class.c | 38 +- windows/dce.c | 29 +- windows/defwnd.c | 64 +- windows/dialog.c | 60 +- windows/event.c | 18 +- windows/mdi.c | 21 +- windows/message.c | 49 +- windows/nonclient.c | 10 +- windows/property.c | 4 +- windows/queue.c | 6 +- windows/syscolor.c | 6 +- windows/timer.c | 2 +- windows/win.c | 23 +- windows/winpos.c | 4 +- windows/winproc.c | 2 +- 122 files changed, 3889 insertions(+), 2178 deletions(-) create mode 100644 if1632/lz32.spec create mode 100644 if1632/version.spec delete mode 100644 include/compobj.h delete mode 100644 include/keyboard.h create mode 100644 memory/string.c create mode 100644 misc/wsprintf.c delete mode 100644 win32/gdi32.c diff --git a/ANNOUNCE b/ANNOUNCE index 820759ca33d..b4f14d30ffc 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -1,13 +1,12 @@ -This is release 960606 of Wine, the MS Windows emulator. This is still a +This is release 960611 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 correctly. Patches should be submitted to "julliard@lrc.epfl.ch". Please don't forget to include a ChangeLog entry. -WHAT'S NEW with Wine-960606: (see ChangeLog for details) - - More Win32 code. - - Window repainting fixes. +WHAT'S NEW with Wine-960611: (see ChangeLog for details) + - (surprise) More Win32 code. - Lots of bug fixes. See the README file in the distribution for installation instructions. @@ -16,10 +15,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-960606.tar.gz - tsx-11.mit.edu:/pub/linux/ALPHA/Wine/development/Wine-960606.tar.gz - ftp.infomagic.com:/pub/mirrors/linux/wine/development/Wine-960606.tar.gz - aris.com:/pub/linux/ALPHA/Wine/development/Wine-960606.tar.gz + sunsite.unc.edu:/pub/Linux/ALPHA/wine/development/Wine-960611.tar.gz + tsx-11.mit.edu:/pub/linux/ALPHA/Wine/development/Wine-960611.tar.gz + ftp.infomagic.com:/pub/mirrors/linux/wine/development/Wine-960611.tar.gz + aris.com:/pub/linux/ALPHA/Wine/development/Wine-960611.tar.gz It should also be available from any site that mirrors tsx-11 or sunsite. diff --git a/ChangeLog b/ChangeLog index 34238c61292..0d6d6c1adfa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,84 @@ +---------------------------------------------------------------------- +Tue Jun 11 15:20:43 1996 Alexandre Julliard + + * [debugger/break.c] [loader/signal.c] + Fixed breakpoints in 32-bit code. + + * [include/windows.h] + Added many more Win32 versions of standard structures. + + * [include/winreg.h] [misc/registry.c] + Moved private types into registry.c. + + * [memory/string.c] (New file) + Moved most string functions from misc/lstr.c; added Win32 version + of all functions. + + * [misc/wsprintf.c] + Implemented Win32 wsprintf functions. + + * [objects/bitmap.c] + Implemented Win32 bitmap functions. + + * [windows/dialog.c] + Don't set dialog procedure before the controls are created. This + avoids a crash in Winhelp. + +Tue Jun 11 14:10:06 1996 Martin von Loewis + + * [controls/menu.c] [if1632/user.spec] [windows/message.c] + Replace PeekMessage with PeekMessage16. + + * [if1632/kernel32.spec][misc/main.c] + GetVersion32,GetVersionEx32A,GetVersionEx32W: new functions. + MAIN_ParseVersion: new function, new command line option -winver. + GetVersion: modified to take command line argument into account. + + * [if1632/kernel32.spec] [win32/process.c] + FreeLibrary32: new function. + TlsAlloc: initialize Tls to zero. + InterlockedIncrement,InterlockedDecrement,InterlockedExchange: new + functions. + + * [if1632/kernel32.spec] + SetErrorMode,GetActiveWindow: new relays to existing functions. + + * [if1632/kernel32.spec][win32/user32.c] + PeekMessage32A,PeekMessage32W: new functions. + + * [include/struct32.h][include/windows.h] + Moved MSG32 to windows.h. + Renamed MSG to MSG16. + Modified prototypes to use MSG16 + + * [include/winbase.h] + OSVERSIONINFO32A,OSVERSIONINFO32W: new structures. + +Sun Jun 9 20:53:30 1996 Marcus Meissner + + * [if1632/Makefile.in] [loader/builtin.c] + version.dll,lz32.dll added. + + * [include/lzexpand.h] [if1632/lz32.spec] [if1632/lzexpand.spec] + [misc/lzexpand.c] + lz32.dll added. + Modified to new function naming standard. + + * [include/ver.h] [if1632/ver.spec] [if1632/version.spec] [misc/ver.c] + version.dll added (win32 version of ver.dll). + Modified to new function naming standard. + Use registry to look up a LOCALE langids too. + (VerInstallFile,VerFindFile still stubs) + +Fri Jun 7 20:40:20 1996 Albrecht Kleine + + * [files/file.c] + Added a warning if GetTempFileName() gets a bad drive parameter. + + * [misc/commdlg.c] + Changed file listbox color to gray in SaveFile dialog + (just like Windows does this). + ---------------------------------------------------------------------- Wed Jun 5 20:13:54 1996 Alexandre Julliard diff --git a/controls/button.c b/controls/button.c index a7870edfc9c..3181a567edd 100644 --- a/controls/button.c +++ b/controls/button.c @@ -20,7 +20,7 @@ static void BUTTON_CheckAutoRadioButton( WND *wndPtr ); #define MAX_BTN_TYPE 12 -static WORD maxCheckState[MAX_BTN_TYPE] = +static const WORD maxCheckState[MAX_BTN_TYPE] = { BUTTON_UNCHECKED, /* BS_PUSHBUTTON */ BUTTON_UNCHECKED, /* BS_DEFPUSHBUTTON */ @@ -38,7 +38,7 @@ static WORD maxCheckState[MAX_BTN_TYPE] = typedef void (*pfPaint)( WND *wndPtr, HDC hdc, WORD action ); -static pfPaint btnPaintFunc[MAX_BTN_TYPE] = +static const pfPaint btnPaintFunc[MAX_BTN_TYPE] = { PB_Paint, /* BS_PUSHBUTTON */ PB_Paint, /* BS_DEFPUSHBUTTON */ @@ -97,9 +97,9 @@ LRESULT ButtonWndProc(HWND32 hWnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam) case WM_CREATE: if (!hbitmapCheckBoxes) { - BITMAP bmp; + BITMAP16 bmp; hbitmapCheckBoxes = LoadBitmap(0, MAKEINTRESOURCE(OBM_CHECKBOXES)); - GetObject( hbitmapCheckBoxes, sizeof(bmp), (LPSTR)&bmp ); + GetObject16( hbitmapCheckBoxes, sizeof(bmp), &bmp ); checkBoxWidth = bmp.bmWidth / 4; checkBoxHeight = bmp.bmHeight / 3; } @@ -255,7 +255,7 @@ static void PB_Paint( WND *wndPtr, HDC hDC, WORD action ) HPEN16 hOldPen; HBRUSH hOldBrush; DWORD dwTextSize; - TEXTMETRIC tm; + TEXTMETRIC16 tm; BUTTONINFO *infoPtr = (BUTTONINFO *)wndPtr->wExtra; GetClientRect16(wndPtr->hwndSelf, &rc); @@ -296,8 +296,8 @@ static void PB_Paint( WND *wndPtr, HDC hDC, WORD action ) /* draw button label, if any: */ if (wndPtr->text && wndPtr->text[0]) { - LOGBRUSH lb; - GetObject(sysColorObjects.hbrushBtnFace,sizeof(LOGBRUSH),(LPSTR)&lb); + LOGBRUSH16 lb; + GetObject16( sysColorObjects.hbrushBtnFace, sizeof(lb), &lb ); if (wndPtr->dwStyle & WS_DISABLED && GetSysColor(COLOR_GRAYTEXT)==lb.lbColor) /* don't write gray text on gray bkg */ @@ -372,7 +372,7 @@ static void CB_Paint( WND *wndPtr, HDC hDC, WORD action ) RECT16 rc; HBRUSH hBrush; int textlen, delta, x, y; - TEXTMETRIC tm; + TEXTMETRIC16 tm; SIZE16 size; BUTTONINFO *infoPtr = (BUTTONINFO *)wndPtr->wExtra; diff --git a/controls/combo.c b/controls/combo.c index 44540dda7b8..10ed406d53e 100644 --- a/controls/combo.c +++ b/controls/combo.c @@ -48,11 +48,11 @@ static WORD CBitHeight, CBitWidth; static int COMBO_Init() { - BITMAP bm; + BITMAP16 bm; dprintf_combo(stddeb, "COMBO_Init\n"); hComboBit = LoadBitmap(0, MAKEINTRESOURCE(OBM_COMBO)); - GetObject(hComboBit, sizeof(BITMAP), (LPSTR)&bm); + GetObject16( hComboBit, sizeof(bm), &bm ); CBitHeight = bm.bmHeight; CBitWidth = bm.bmWidth; return 0; @@ -1208,7 +1208,7 @@ static INT32 COMBO_DlgDirList( HWND32 hDlg, LPARAM path, INT32 idCBox, char temp[512] = "A:\\"; int drive = DRIVE_GetCurrentDrive(); temp[0] += drive; - lstrcpyn( temp + 3, DRIVE_GetDosCwd(drive), sizeof(temp)-3 ); + lstrcpyn32A( temp + 3, DRIVE_GetDosCwd(drive), sizeof(temp)-3 ); AnsiLower( temp ); SetDlgItemText32A( hDlg, idStatic, temp ); } diff --git a/controls/desktop.c b/controls/desktop.c index e70d85a396a..a71a6f8af39 100644 --- a/controls/desktop.c +++ b/controls/desktop.c @@ -198,8 +198,8 @@ BOOL SetDeskWallPaper( LPCSTR filename ) infoPtr->fTileWallPaper = GetProfileInt( "desktop", "TileWallPaper", 0 ); if (hbitmap) { - BITMAP bmp; - GetObject( hbitmap, sizeof(bmp), (LPSTR)&bmp ); + BITMAP16 bmp; + GetObject16( hbitmap, sizeof(bmp), &bmp ); infoPtr->bitmapSize.cx = (bmp.bmWidth != 0) ? bmp.bmWidth : 1; infoPtr->bitmapSize.cy = (bmp.bmHeight != 0) ? bmp.bmHeight : 1; } diff --git a/controls/edit.c b/controls/edit.c index 40182905b9b..7db7bd40d29 100644 --- a/controls/edit.c +++ b/controls/edit.c @@ -2743,7 +2743,7 @@ static LRESULT EDIT_WM_SetFocus(WND *wndPtr, WPARAM wParam, LPARAM lParam) */ static LRESULT EDIT_WM_SetFont(WND *wndPtr, WPARAM wParam, LPARAM lParam) { - TEXTMETRIC tm; + TEXTMETRIC16 tm; EDITSTATE *es = EDITSTATEPTR(wndPtr); LPARAM sel = EDIT_EM_GetSel(wndPtr, 0, 0L); HDC hdc; diff --git a/controls/listbox.c b/controls/listbox.c index 27a173a3c55..da7d1f07ba7 100644 --- a/controls/listbox.c +++ b/controls/listbox.c @@ -106,7 +106,7 @@ void CreateListBoxStruct(HWND hwnd, WORD CtlType, LONG styles, HWND parent) /* create dummy hdc to set text height */ if ((hdc = GetDC(0))) { - TEXTMETRIC tm; + TEXTMETRIC16 tm; GetTextMetrics( hdc, &tm ); lphl->StdItemHeight = tm.tmHeight; dprintf_listbox(stddeb,"CreateListBoxStruct: font height %d\n", @@ -305,8 +305,8 @@ int ListBoxFindMouse(LPHEADLIST lphl, int X, int Y) void ListBoxAskMeasure(LPHEADLIST lphl, LPLISTSTRUCT lpls) { - HANDLE hTemp = USER_HEAP_ALLOC( sizeof(MEASUREITEMSTRUCT) ); - MEASUREITEMSTRUCT *lpmeasure = (MEASUREITEMSTRUCT *) USER_HEAP_LIN_ADDR(hTemp); + HANDLE hTemp = USER_HEAP_ALLOC( sizeof(MEASUREITEMSTRUCT16) ); + MEASUREITEMSTRUCT16 *lpmeasure = (MEASUREITEMSTRUCT16 *) USER_HEAP_LIN_ADDR(hTemp); if (lpmeasure == NULL) { fprintf(stdnimp,"ListBoxAskMeasure() out of memory !\n"); @@ -1274,7 +1274,7 @@ static LONG LBSetFont(HWND hwnd, WPARAM wParam, LPARAM lParam) /* or are we guaranteed to get a LBSetFont before the first insert/add? */ if ((hdc = GetDC(0))) { - TEXTMETRIC tm; + TEXTMETRIC16 tm; GetTextMetrics( hdc, &tm ); lphl->StdItemHeight = tm.tmHeight; dprintf_listbox(stddeb,"LBSetFont: new font %d with height %d\n", @@ -2107,7 +2107,7 @@ INT DlgDirList( HWND hDlg, SEGPTR spec, INT idLBox, INT idStatic, UINT attrib ) p = filespec; if ((p2 = strrchr( p, '\\' ))) p = p2 + 1; if ((p2 = strrchr( p, '/' ))) p = p2 + 1; - lstrcpyn( mask, p, sizeof(mask) ); + lstrcpyn32A( mask, p, sizeof(mask) ); if (p != filespec) { p[-1] = '\0'; @@ -2151,7 +2151,7 @@ INT DlgDirList( HWND hDlg, SEGPTR spec, INT idLBox, INT idStatic, UINT attrib ) int drive = DRIVE_GetCurrentDrive(); strcpy( temp, "A:\\" ); temp[0] += drive; - lstrcpyn( temp + 3, DRIVE_GetDosCwd(drive), sizeof(temp)-3 ); + lstrcpyn32A( temp + 3, DRIVE_GetDosCwd(drive), sizeof(temp)-3 ); AnsiLower( temp ); /* Can't use PostMessage() here, because the string is on the stack */ SetDlgItemText32A( hDlg, idStatic, temp ); diff --git a/controls/menu.c b/controls/menu.c index 093627c75f8..bf6a69df211 100644 --- a/controls/menu.c +++ b/controls/menu.c @@ -132,18 +132,18 @@ static HMENU MENU_CopySysMenu(void) */ BOOL MENU_Init() { - BITMAP bm; + BITMAP16 bm; /* Load bitmaps */ if (!(hStdCheck = LoadBitmap( 0, MAKEINTRESOURCE(OBM_CHECK) ))) return FALSE; - GetObject( hStdCheck, sizeof(BITMAP), (LPSTR)&bm ); + GetObject16( hStdCheck, sizeof(bm), &bm ); check_bitmap_width = bm.bmWidth; check_bitmap_height = bm.bmHeight; if (!(hStdMnArrow = LoadBitmap( 0, MAKEINTRESOURCE(OBM_MNARROW) ))) return FALSE; - GetObject( hStdMnArrow, sizeof(BITMAP), (LPSTR)&bm ); + GetObject16( hStdMnArrow, sizeof(bm), &bm ); arrow_bitmap_width = bm.bmWidth; arrow_bitmap_height = bm.bmHeight; @@ -331,8 +331,8 @@ static void MENU_CalcItemSize( HDC hdc, MENUITEM *lpitem, HWND hwndOwner, if (lpitem->item_flags & MF_OWNERDRAW) { - MEASUREITEMSTRUCT *mis; - if (!(mis = SEGPTR_NEW(MEASUREITEMSTRUCT))) return; + MEASUREITEMSTRUCT16 *mis; + if (!(mis = SEGPTR_NEW(MEASUREITEMSTRUCT16))) return; mis->CtlType = ODT_MENU; mis->itemID = lpitem->item_id; mis->itemData = (DWORD)lpitem->text; @@ -362,9 +362,8 @@ static void MENU_CalcItemSize( HDC hdc, MENUITEM *lpitem, HWND hwndOwner, if (lpitem->item_flags & MF_BITMAP) { - BITMAP bm; - if (GetObject( (HBITMAP16)(UINT32)lpitem->text, - sizeof(BITMAP), (LPSTR)&bm )) + BITMAP16 bm; + if (GetObject16( (HBITMAP16)(UINT32)lpitem->text, sizeof(bm), &bm )) { lpitem->rect.right += bm.bmWidth; lpitem->rect.bottom += bm.bmHeight; @@ -1119,7 +1118,7 @@ static LPCSTR MENU_ParseResource( LPCSTR res, HMENU hMenu, BOOL unicode ) flags ); str = res; if (!unicode) res += strlen(str) + 1; - else res += (STRING32_lstrlenW((LPCWSTR)str) + 1) * sizeof(WCHAR); + else res += (lstrlen32W((LPCWSTR)str) + 1) * sizeof(WCHAR); if (flags & MF_POPUP) { HMENU hSubMenu = CreatePopupMenu(); @@ -1540,7 +1539,7 @@ static void MENU_KeyRight( HWND hwndOwner, HMENU hmenu, HMENU *hmenuCurrent ) static BOOL MENU_TrackMenu( HMENU hmenu, UINT wFlags, int x, int y, HWND hwnd, const RECT16 *lprect ) { - MSG *msg; + MSG16 *msg; HLOCAL16 hMsg; POPUPMENU *menu; HMENU hmenuCurrent = hmenu; @@ -1555,8 +1554,8 @@ static BOOL MENU_TrackMenu( HMENU hmenu, UINT wFlags, int x, int y, MENU_ButtonDown( hwnd, hmenu, &hmenuCurrent, pt ); } SetCapture( hwnd ); - hMsg = USER_HEAP_ALLOC( sizeof(MSG) ); - msg = (MSG *)USER_HEAP_LIN_ADDR( hMsg ); + hMsg = USER_HEAP_ALLOC( sizeof(MSG16) ); + msg = (MSG16 *)USER_HEAP_LIN_ADDR( hMsg ); while (!fClosed) { if (!MSG_InternalGetMessage( (SEGPTR)USER_HEAP_SEG_ADDR(hMsg), 0, @@ -1695,7 +1694,7 @@ static BOOL MENU_TrackMenu( HMENU hmenu, UINT wFlags, int x, int y, if (!fClosed) fRemove = TRUE; if (fRemove) /* Remove the message from the queue */ - PeekMessage( msg, 0, msg->message, msg->message, PM_REMOVE ); + PeekMessage16( msg, 0, msg->message, msg->message, PM_REMOVE ); } USER_HEAP_FREE( hMsg ); ReleaseCapture(); @@ -2019,7 +2018,7 @@ int GetMenuString( HMENU hMenu, UINT wItemID, str[0] = '\0'; if (!(item = MENU_FindItem( &hMenu, &wItemID, wFlags ))) return 0; if (!IS_STRING_ITEM(item->item_flags)) return 0; - lstrcpyn( str, item->text, nMaxSiz ); + lstrcpyn32A( str, item->text, nMaxSiz ); dprintf_menu( stddeb, "GetMenuString: returning '%s'\n", str ); return strlen(str); } diff --git a/debugger/break.c b/debugger/break.c index edbddb8936a..1726c1676e4 100644 --- a/debugger/break.c +++ b/debugger/break.c @@ -288,7 +288,7 @@ BOOL DEBUG_ShouldContinue( struct sigcontext_struct *context, 0 : CS_reg(DEBUG_context); addr.off = EIP_reg(DEBUG_context); - bpnum = DEBUG_FindBreakpoint( &addr ); + bpnum = DEBUG_FindBreakpoint( &addr ); breakpoints[0].enabled = 0; /* disable the step-over breakpoint */ if ((bpnum != 0) && (bpnum != -1)) @@ -299,6 +299,12 @@ BOOL DEBUG_ShouldContinue( struct sigcontext_struct *context, fprintf( stderr, "\n" ); return FALSE; } + + /* If there's no breakpoint and we are not single-stepping, then we */ + /* must have encountered an int3 in the Windows program; let's skip it. */ + if ((bpnum == -1) && !(EFL_reg(DEBUG_context) & STEP_FLAG)) + EIP_reg(DEBUG_context)++; + /* no breakpoint, continue if in continuous mode */ return (mode == EXEC_CONT); } diff --git a/debugger/db_disasm.c b/debugger/db_disasm.c index 8d38f5a2826..ab59a978df7 100644 --- a/debugger/db_disasm.c +++ b/debugger/db_disasm.c @@ -123,11 +123,11 @@ static BOOL db_disasm_16 = FALSE; #define XA 34 /* for 'fstcw %ax' */ struct inst { - char * i_name; /* name */ - short i_has_modrm; /* has regmodrm byte */ - short i_size; /* operand size */ - int i_mode; /* addressing modes */ - char * i_extra; /* pointer to extra opcode table */ + const char *i_name; /* name */ + short i_has_modrm; /* has regmodrm byte */ + short i_size; /* operand size */ + int i_mode; /* addressing modes */ + const char *i_extra; /* pointer to extra opcode table */ }; #define op1(x) (x) @@ -135,14 +135,14 @@ struct inst { #define op3(x,y,z) ((x)|((y)<<8)|((z)<<16)) struct finst { - char * f_name; /* name for memory instruction */ - int f_size; /* size for memory instruction */ - int f_rrmode; /* mode for rr instruction */ - char * f_rrname; /* name for rr instruction + const char *f_name; /* name for memory instruction */ + int f_size; /* size for memory instruction */ + int f_rrmode; /* mode for rr instruction */ + const char *f_rrname; /* name for rr instruction (or pointer to table) */ }; -static char * db_Grp6[] = { +static const char * const db_Grp6[] = { "sldt", "str", "lldt", @@ -153,7 +153,7 @@ static char * db_Grp6[] = { "" }; -static char * db_Grp7[] = { +static const char * const db_Grp7[] = { "sgdt", "sidt", "lgdt", @@ -164,7 +164,7 @@ static char * db_Grp7[] = { "invlpg" }; -static char * db_Grp8[] = { +static const char * const db_Grp8[] = { "", "", "", @@ -175,7 +175,7 @@ static char * db_Grp8[] = { "btc" }; -static struct inst db_inst_0f0x[] = { +static const struct inst db_inst_0f0x[] = { /*00*/ { "", TRUE, NONE, op1(Ew), (char *)db_Grp6 }, /*01*/ { "", TRUE, NONE, op1(Ew), (char *)db_Grp7 }, /*02*/ { "lar", TRUE, LONG, op2(E,R), 0 }, @@ -195,7 +195,7 @@ static struct inst db_inst_0f0x[] = { /*0f*/ { "", FALSE, NONE, 0, 0 }, }; -static struct inst db_inst_0f2x[] = { +static const struct inst db_inst_0f2x[] = { /*20*/ { "mov", TRUE, LONG, op2(CR,E), 0 }, /* use E for reg */ /*21*/ { "mov", TRUE, LONG, op2(DR,E), 0 }, /* since mod == 11 */ /*22*/ { "mov", TRUE, LONG, op2(E,CR), 0 }, @@ -215,7 +215,7 @@ static struct inst db_inst_0f2x[] = { /*2f*/ { "", FALSE, NONE, 0, 0 }, }; -static struct inst db_inst_0f8x[] = { +static const struct inst db_inst_0f8x[] = { /*80*/ { "jo", FALSE, NONE, op1(Dl), 0 }, /*81*/ { "jno", FALSE, NONE, op1(Dl), 0 }, /*82*/ { "jb", FALSE, NONE, op1(Dl), 0 }, @@ -235,7 +235,7 @@ static struct inst db_inst_0f8x[] = { /*8f*/ { "jnle", FALSE, NONE, op1(Dl), 0 }, }; -static struct inst db_inst_0f9x[] = { +static const struct inst db_inst_0f9x[] = { /*90*/ { "seto", TRUE, NONE, op1(Eb), 0 }, /*91*/ { "setno", TRUE, NONE, op1(Eb), 0 }, /*92*/ { "setb", TRUE, NONE, op1(Eb), 0 }, @@ -255,7 +255,7 @@ static struct inst db_inst_0f9x[] = { /*9f*/ { "setnle",TRUE, NONE, op1(Eb), 0 }, }; -static struct inst db_inst_0fax[] = { +static const struct inst db_inst_0fax[] = { /*a0*/ { "push", FALSE, NONE, op1(Si), 0 }, /*a1*/ { "pop", FALSE, NONE, op1(Si), 0 }, /*a2*/ { "", FALSE, NONE, 0, 0 }, @@ -275,7 +275,7 @@ static struct inst db_inst_0fax[] = { /*a7*/ { "imul", TRUE, LONG, op2(E,R), 0 }, }; -static struct inst db_inst_0fbx[] = { +static const struct inst db_inst_0fbx[] = { /*b0*/ { "", FALSE, NONE, 0, 0 }, /*b1*/ { "", FALSE, NONE, 0, 0 }, /*b2*/ { "lss", TRUE, LONG, op2(E, R), 0 }, @@ -295,7 +295,7 @@ static struct inst db_inst_0fbx[] = { /*bf*/ { "movsw", TRUE, LONG, op2(E, R), 0 }, }; -static struct inst db_inst_0fcx[] = { +static const struct inst db_inst_0fcx[] = { /*c0*/ { "xadd", TRUE, BYTE, op2(R, E), 0 }, /*c1*/ { "xadd", TRUE, LONG, op2(R, E), 0 }, /*c2*/ { "", FALSE, NONE, 0, 0 }, @@ -314,7 +314,7 @@ static struct inst db_inst_0fcx[] = { /*cf*/ { "bswap", FALSE, LONG, op1(Ri), 0 }, }; -static struct inst db_inst_0fdx[] = { +static const struct inst db_inst_0fdx[] = { /*c0*/ { "cmpxchg",TRUE, BYTE, op2(R, E), 0 }, /*c1*/ { "cmpxchg",TRUE, LONG, op2(R, E), 0 }, /*c2*/ { "", FALSE, NONE, 0, 0 }, @@ -333,7 +333,7 @@ static struct inst db_inst_0fdx[] = { /*cf*/ { "", FALSE, NONE, 0, 0 }, }; -static struct inst *db_inst_0f[] = { +static const struct inst * const db_inst_0f[] = { db_inst_0f0x, 0, db_inst_0f2x, @@ -352,43 +352,43 @@ static struct inst *db_inst_0f[] = { 0 }; -static char * db_Esc92[] = { +static const char * const db_Esc92[] = { "fnop", "", "", "", "", "", "", "" }; -static char * db_Esc93[] = { +static const char * const db_Esc93[] = { "", "", "", "", "", "", "", "" }; -static char * db_Esc94[] = { +static const char * const db_Esc94[] = { "fchs", "fabs", "", "", "ftst", "fxam", "", "" }; -static char * db_Esc95[] = { +static const char * const db_Esc95[] = { "fld1", "fldl2t","fldl2e","fldpi","fldlg2","fldln2","fldz","" }; -static char * db_Esc96[] = { +static const char * const db_Esc96[] = { "f2xm1","fyl2x","fptan","fpatan","fxtract","fprem1","fdecstp", "fincstp" }; -static char * db_Esc97[] = { +static const char * const db_Esc97[] = { "fprem","fyl2xp1","fsqrt","fsincos","frndint","fscale","fsin","fcos" }; -static char * db_Esca4[] = { +static const char * const db_Esca4[] = { "", "fucompp","", "", "", "", "", "" }; -static char * db_Escb4[] = { +static const char * const db_Escb4[] = { "", "", "fnclex","fninit","", "", "", "" }; -static char * db_Esce3[] = { +static const char * const db_Esce3[] = { "", "fcompp","", "", "", "", "", "" }; -static char * db_Escf4[] = { +static const char * const db_Escf4[] = { "fnstsw","", "", "", "", "", "", "" }; -static struct finst db_Esc8[] = { +static const struct finst db_Esc8[] = { /*0*/ { "fadd", SNGL, op2(STI,ST), 0 }, /*1*/ { "fmul", SNGL, op2(STI,ST), 0 }, /*2*/ { "fcom", SNGL, op2(STI,ST), 0 }, @@ -399,7 +399,7 @@ static struct finst db_Esc8[] = { /*7*/ { "fdivr", SNGL, op2(STI,ST), 0 }, }; -static struct finst db_Esc9[] = { +static const struct finst db_Esc9[] = { /*0*/ { "fld", SNGL, op1(STI), 0 }, /*1*/ { "", NONE, op1(STI), "fxch" }, /*2*/ { "fst", SNGL, op1(X), (char *)db_Esc92 }, @@ -410,7 +410,7 @@ static struct finst db_Esc9[] = { /*7*/ { "fnstcw", NONE, op1(X), (char *)db_Esc97 }, }; -static struct finst db_Esca[] = { +static const struct finst db_Esca[] = { /*0*/ { "fiadd", WORD, 0, 0 }, /*1*/ { "fimul", WORD, 0, 0 }, /*2*/ { "ficom", WORD, 0, 0 }, @@ -421,7 +421,7 @@ static struct finst db_Esca[] = { /*7*/ { "fidivr", WORD, 0, 0 } }; -static struct finst db_Escb[] = { +static const struct finst db_Escb[] = { /*0*/ { "fild", WORD, 0, 0 }, /*1*/ { "", NONE, 0, 0 }, /*2*/ { "fist", WORD, 0, 0 }, @@ -432,7 +432,7 @@ static struct finst db_Escb[] = { /*7*/ { "fstp", EXTR, 0, 0 }, }; -static struct finst db_Escc[] = { +static const struct finst db_Escc[] = { /*0*/ { "fadd", DBLR, op2(ST,STI), 0 }, /*1*/ { "fmul", DBLR, op2(ST,STI), 0 }, /*2*/ { "fcom", DBLR, op2(ST,STI), 0 }, @@ -443,7 +443,7 @@ static struct finst db_Escc[] = { /*7*/ { "fdivr", DBLR, op2(ST,STI), "fdiv" }, }; -static struct finst db_Escd[] = { +static const struct finst db_Escd[] = { /*0*/ { "fld", DBLR, op1(STI), "ffree" }, /*1*/ { "", NONE, 0, 0 }, /*2*/ { "fst", DBLR, op1(STI), 0 }, @@ -454,7 +454,7 @@ static struct finst db_Escd[] = { /*7*/ { "fnstsw", NONE, 0, 0 }, }; -static struct finst db_Esce[] = { +static const struct finst db_Esce[] = { /*0*/ { "fiadd", LONG, op2(ST,STI), "faddp" }, /*1*/ { "fimul", LONG, op2(ST,STI), "fmulp" }, /*2*/ { "ficom", LONG, 0, 0 }, @@ -465,7 +465,7 @@ static struct finst db_Esce[] = { /*7*/ { "fidivr", LONG, op2(ST,STI), "fdivp" }, }; -static struct finst db_Escf[] = { +static const struct finst db_Escf[] = { /*0*/ { "fild", LONG, 0, 0 }, /*1*/ { "", LONG, 0, 0 }, /*2*/ { "fist", LONG, 0, 0 }, @@ -476,12 +476,12 @@ static struct finst db_Escf[] = { /*7*/ { "fstp", QUAD, 0, 0 }, }; -static struct finst *db_Esc_inst[] = { +static const struct finst * const db_Esc_inst[] = { db_Esc8, db_Esc9, db_Esca, db_Escb, db_Escc, db_Escd, db_Esce, db_Escf }; -static char * db_Grp1[] = { +static const char * const db_Grp1[] = { "add", "or", "adc", @@ -492,7 +492,7 @@ static char * db_Grp1[] = { "cmp" }; -static char * db_Grp2[] = { +static const char * const db_Grp2[] = { "rol", "ror", "rcl", @@ -503,7 +503,7 @@ static char * db_Grp2[] = { "sar" }; -static struct inst db_Grp3[] = { +static const struct inst db_Grp3[] = { { "test", TRUE, NONE, op2(I,E), 0 }, { "test", TRUE, NONE, op2(I,E), 0 }, { "not", TRUE, NONE, op1(E), 0 }, @@ -514,7 +514,7 @@ static struct inst db_Grp3[] = { { "idiv", TRUE, NONE, op2(E,A), 0 }, }; -static struct inst db_Grp4[] = { +static const struct inst db_Grp4[] = { { "inc", TRUE, BYTE, op1(E), 0 }, { "dec", TRUE, BYTE, op1(E), 0 }, { "", TRUE, NONE, 0, 0 }, @@ -525,7 +525,7 @@ static struct inst db_Grp4[] = { { "", TRUE, NONE, 0, 0 } }; -static struct inst db_Grp5[] = { +static const struct inst db_Grp5[] = { { "inc", TRUE, LONG, op1(E), 0 }, { "dec", TRUE, LONG, op1(E), 0 }, { "call", TRUE, NONE, op1(Eind),0 }, @@ -536,7 +536,7 @@ static struct inst db_Grp5[] = { { "", TRUE, NONE, 0, 0 } }; -static struct inst db_inst_table[256] = { +static const struct inst db_inst_table[256] = { /*00*/ { "add", TRUE, BYTE, op2(R, E), 0 }, /*01*/ { "add", TRUE, LONG, op2(R, E), 0 }, /*02*/ { "add", TRUE, BYTE, op2(E, R), 0 }, @@ -827,7 +827,7 @@ static struct inst db_inst_table[256] = { /*ff*/ { "", TRUE, NONE, 0, (char *)db_Grp5 }, }; -static struct inst db_bad_inst = +static const struct inst db_bad_inst = { "???", FALSE, NONE, 0, 0 } ; @@ -842,12 +842,12 @@ static struct inst db_bad_inst = struct i_addr { int is_reg; /* if reg, reg number is in 'disp' */ int disp; - char * base; - char * index; + const char * base; + const char * index; int ss; }; -static char * db_index_reg_16[8] = { +static const char * const db_index_reg_16[8] = { "%bx,%si", "%bx,%di", "%bp,%si", @@ -858,20 +858,20 @@ static char * db_index_reg_16[8] = { "%bx" }; -static char * db_reg[3][8] = { +static const char * const db_reg[3][8] = { { "%al", "%cl", "%dl", "%bl", "%ah", "%ch", "%dh", "%bh" }, { "%ax", "%cx", "%dx", "%bx", "%sp", "%bp", "%si", "%di" }, { "%eax", "%ecx", "%edx", "%ebx", "%esp", "%ebp", "%esi", "%edi" } }; -static char * db_seg_reg[8] = { +static const char * const db_seg_reg[8] = { "%es", "%cs", "%ss", "%ds", "%fs", "%gs", "", "" }; /* * lengths for size attributes */ -static int db_lengths[] = { +static const int db_lengths[] = { 1, /* BYTE */ 2, /* WORD */ 4, /* LONG */ @@ -1051,10 +1051,10 @@ void db_disasm_esc( DBG_ADDR *addr, int inst, int short_addr, int size, char *seg ) { int regmodrm; - struct finst *fp; + const struct finst *fp; int mod; struct i_addr address; - char * name; + const char * name; get_value_inc(regmodrm, addr, 1, FALSE); fp = &db_Esc_inst[inst - 0xd8][f_reg(regmodrm)]; @@ -1134,8 +1134,8 @@ void DEBUG_Disasm( DBG_ADDR *addr ) int size; int short_addr; char * seg; - struct inst * ip; - char * i_name; + const struct inst *ip; + const char *i_name; int i_size; int i_mode; int regmodrm = 0; diff --git a/debugger/hash.c b/debugger/hash.c index c0e6e28984f..56af9e5946e 100644 --- a/debugger/hash.c +++ b/debugger/hash.c @@ -25,7 +25,7 @@ struct name_hash #define NR_NAME_HASH 128 -static struct name_hash * name_hash_table[NR_NAME_HASH] = {0,}; +static struct name_hash * name_hash_table[NR_NAME_HASH]; static unsigned int name_hash( const char * name ) { diff --git a/debugger/info.c b/debugger/info.c index b656879290b..36e5cabd607 100644 --- a/debugger/info.c +++ b/debugger/info.c @@ -95,7 +95,7 @@ void DEBUG_PrintAddress( const DBG_ADDR *addr, int addrlen ) void DEBUG_Help(void) { int i = 0; - static const char * helptext[] = + static const char * const helptext[] = { "The commands accepted by the Wine debugger are a small subset", "of the commands that gdb would accept. The commands currently", diff --git a/files/directory.c b/files/directory.c index 85542dd1752..432b8c4c420 100644 --- a/files/directory.c +++ b/files/directory.c @@ -182,7 +182,7 @@ int DIR_Init(void) */ UINT DIR_GetTempDosDir( LPSTR path, UINT count ) { - if (path) lstrcpyn( path, DIR_TempDosDir, count ); + if (path) lstrcpyn32A( path, DIR_TempDosDir, count ); return strlen( DIR_TempDosDir ); } @@ -192,7 +192,7 @@ UINT DIR_GetTempDosDir( LPSTR path, UINT count ) */ UINT DIR_GetTempUnixDir( LPSTR path, UINT count ) { - if (path) lstrcpyn( path, DIR_TempUnixDir, count ); + if (path) lstrcpyn32A( path, DIR_TempUnixDir, count ); return strlen( DIR_TempUnixDir ); } @@ -202,7 +202,7 @@ UINT DIR_GetTempUnixDir( LPSTR path, UINT count ) */ UINT DIR_GetWindowsUnixDir( LPSTR path, UINT count ) { - if (path) lstrcpyn( path, DIR_WindowsUnixDir, count ); + if (path) lstrcpyn32A( path, DIR_WindowsUnixDir, count ); return strlen( DIR_WindowsUnixDir ); } @@ -212,7 +212,7 @@ UINT DIR_GetWindowsUnixDir( LPSTR path, UINT count ) */ UINT DIR_GetSystemUnixDir( LPSTR path, UINT count ) { - if (path) lstrcpyn( path, DIR_SystemUnixDir, count ); + if (path) lstrcpyn32A( path, DIR_SystemUnixDir, count ); return strlen( DIR_SystemUnixDir ); } @@ -223,7 +223,7 @@ UINT DIR_GetSystemUnixDir( LPSTR path, UINT count ) UINT DIR_GetDosPath( int element, LPSTR path, UINT count ) { if ((element < 0) || (element >= DIR_PathElements)) return 0; - if (path) lstrcpyn( path, DIR_DosPath[element], count ); + if (path) lstrcpyn32A( path, DIR_DosPath[element], count ); return strlen( DIR_DosPath[element] ); } @@ -242,7 +242,7 @@ BYTE GetTempDrive( BYTE ignored ) */ UINT GetWindowsDirectory( LPSTR path, UINT count ) { - if (path) lstrcpyn( path, DIR_WindowsDosDir, count ); + if (path) lstrcpyn32A( path, DIR_WindowsDosDir, count ); return strlen( DIR_WindowsDosDir ); } @@ -252,6 +252,6 @@ UINT GetWindowsDirectory( LPSTR path, UINT count ) */ UINT GetSystemDirectory( LPSTR path, UINT count ) { - if (path) lstrcpyn( path, DIR_SystemDosDir, count ); + if (path) lstrcpyn32A( path, DIR_SystemDosDir, count ); return strlen( DIR_SystemDosDir ); } diff --git a/files/dos_fs.c b/files/dos_fs.c index 65653611b2c..6e3efd8219f 100644 --- a/files/dos_fs.c +++ b/files/dos_fs.c @@ -397,7 +397,7 @@ static int DOSFS_FindUnixName( const char *path, const char *name, if (!strcmp( dos_name, hash_name )) break; } } - if (dirent) lstrcpyn( buffer, dirent->d_name, maxlen ); + if (dirent) lstrcpyn32A( buffer, dirent->d_name, maxlen ); closedir( dir ); dprintf_dosfs( stddeb, "DOSFS_FindUnixName(%s,%s) -> %s\n", path, name, dirent ? buffer : "** Not found **" ); @@ -422,7 +422,7 @@ const char *DOSFS_IsDevice( const char *name ) for (i = 0; i < sizeof(DOSFS_Devices)/sizeof(DOSFS_Devices[0]); i++) { const char *dev = DOSFS_Devices[i][0]; - if (!lstrncmpi( dev, name, strlen(dev) )) + if (!lstrncmpi32A( dev, name, strlen(dev) )) { p = name + strlen( dev ); if (!*p || (*p == '.')) return DOSFS_Devices[i][1]; @@ -468,7 +468,7 @@ const char * DOSFS_GetUnixFileName( const char * name, int check_last ) DOS_ERROR( ER_InvalidDrive, EC_MediaError, SA_Abort, EL_Disk ); return NULL; } - lstrcpyn( buffer, DRIVE_GetRoot(drive), MAX_PATHNAME_LEN ); + lstrcpyn32A( buffer, DRIVE_GetRoot(drive), MAX_PATHNAME_LEN ); if (buffer[1]) root = buffer + strlen(buffer); else root = buffer; /* root directory */ @@ -478,8 +478,8 @@ const char * DOSFS_GetUnixFileName( const char * name, int check_last ) } else { - lstrcpyn( root + 1, DRIVE_GetUnixCwd(drive), - MAX_PATHNAME_LEN - (int)(root - buffer) - 1 ); + lstrcpyn32A( root + 1, DRIVE_GetUnixCwd(drive), + MAX_PATHNAME_LEN - (int)(root - buffer) - 1 ); if (root[1]) *root = '/'; } @@ -582,7 +582,7 @@ const char * DOSFS_GetDosTrueName( const char *name, int unix_format ) else { *p++ = '\\'; - lstrcpyn( p, DRIVE_GetDosCwd(drive), sizeof(buffer) - 3 ); + lstrcpyn32A( p, DRIVE_GetDosCwd(drive), sizeof(buffer) - 3 ); if (*p) p += strlen(p); else p--; } *p = '\0'; @@ -605,7 +605,7 @@ const char * DOSFS_GetDosTrueName( const char *name, int unix_format ) *p++ = '\\'; if (unix_format) /* Hash it into a DOS name */ { - lstrcpyn( p, DOSFS_Hash( name, FALSE ), len ); + lstrcpyn32A( p, DOSFS_Hash( name, FALSE ), len ); len -= strlen(p); p += strlen(p); while (!IS_END_OF_NAME(*name)) name++; @@ -678,7 +678,7 @@ int DOSFS_FindNext( const char *path, const char *mask, int drive, if (!*drive_path) drive_root = 1; } dprintf_dosfs(stddeb, "DOSFS_FindNext: drive_root = %d\n", drive_root); - lstrcpyn( buffer, path, sizeof(buffer) - 1 ); + lstrcpyn32A( buffer, path, sizeof(buffer) - 1 ); } strcat( buffer, "/" ); @@ -695,7 +695,7 @@ int DOSFS_FindNext( const char *path, const char *mask, int drive, if (drive_root && (dirent->d_name[0] == '.') && (!dirent->d_name[1] || ((dirent->d_name[1] == '.') && !dirent->d_name[2]))) continue; - lstrcpyn( p, dirent->d_name, sizeof(buffer) - (int)(p - buffer) ); + lstrcpyn32A( p, dirent->d_name, sizeof(buffer) - (int)(p - buffer) ); if (!FILE_Stat( buffer, &entry->attr, &entry->size, &entry->date, &entry->time )) @@ -705,7 +705,7 @@ int DOSFS_FindNext( const char *path, const char *mask, int drive, } if (entry->attr & ~attr) continue; strcpy( entry->name, hash_name ); - lstrcpyn( entry->unixname, dirent->d_name, sizeof(entry->unixname) ); + lstrcpyn32A( entry->unixname, dirent->d_name, sizeof(entry->unixname)); dprintf_dosfs( stddeb, "DOSFS_FindNext: returning %s %02x %ld\n", entry->name, entry->attr, entry->size ); cur_pos += count; diff --git a/files/drive.c b/files/drive.c index c51c2f5b137..881369642a4 100644 --- a/files/drive.c +++ b/files/drive.c @@ -72,7 +72,7 @@ static DRIVETYPE DRIVE_GetDriveType( const char *name ) PROFILE_GetWineIniString( name, "Type", "hd", buffer, sizeof(buffer) ); for (i = 0; i < sizeof(DRIVE_Types)/sizeof(DRIVE_Types[0]); i++) { - if (!lstrcmpi( buffer, DRIVE_Types[i] )) return (DRIVETYPE)i; + if (!lstrcmpi32A( buffer, DRIVE_Types[i] )) return (DRIVETYPE)i; } fprintf( stderr, "%s: unknown type '%s', defaulting to 'hd'.\n", name, buffer ); @@ -362,7 +362,7 @@ int DRIVE_Chdir( int drive, const char *path ) dprintf_dosfs( stddeb, "DRIVE_Chdir(%c:,%s)\n", 'A' + drive, path ); strcpy( buffer, "A:" ); buffer[0] += drive; - lstrcpyn( buffer + 2, path, sizeof(buffer) - 2 ); + lstrcpyn32A( buffer + 2, path, sizeof(buffer) - 2 ); if (!(unix_cwd = DOSFS_GetUnixFileName( buffer, TRUE ))) return 0; if (!FILE_Stat( unix_cwd, &attr, NULL, NULL, NULL )) return 0; @@ -374,7 +374,7 @@ int DRIVE_Chdir( int drive, const char *path ) unix_cwd += strlen( DOSDrives[drive].root ); while (*unix_cwd == '/') unix_cwd++; buffer[2] = '/'; - lstrcpyn( buffer + 3, unix_cwd, sizeof(buffer) - 3 ); + lstrcpyn32A( buffer + 3, unix_cwd, sizeof(buffer) - 3 ); if (!(dos_cwd = DOSFS_GetDosTrueName( buffer, TRUE ))) return 0; dprintf_dosfs( stddeb, "DRIVE_Chdir(%c:): unix_cwd=%s dos_cwd=%s\n", @@ -388,7 +388,7 @@ int DRIVE_Chdir( int drive, const char *path ) if (pTask && (pTask->curdrive & 0x80) && ((pTask->curdrive & ~0x80) == drive)) { - lstrcpyn( pTask->curdir, dos_cwd + 2, sizeof(pTask->curdir) ); + lstrcpyn32A( pTask->curdir, dos_cwd + 2, sizeof(pTask->curdir) ); DRIVE_LastTask = GetCurrentTask(); } return 1; @@ -511,7 +511,7 @@ UINT32 GetCurrentDirectory( UINT32 buflen, LPSTR buf ) *buf = '\0'; return 0; } - lstrcpyn( buf, s, buflen ); + lstrcpyn32A( buf, s, buflen ); return strlen(s); /* yes */ } diff --git a/files/file.c b/files/file.c index e9881a0f40f..9662636d120 100644 --- a/files/file.c +++ b/files/file.c @@ -5,6 +5,7 @@ * Copyright 1996 Alexandre Julliard */ +#include #include #include #include @@ -43,7 +44,7 @@ typedef struct tagDOS_FILE } DOS_FILE; /* Global files array */ -static DOS_FILE DOSFiles[MAX_OPEN_FILES] = { { 0, }, }; +static DOS_FILE DOSFiles[MAX_OPEN_FILES]; static DOS_FILE *FILE_First = DOSFiles; static DOS_FILE *FILE_LastUsed = DOSFiles; @@ -599,12 +600,12 @@ HFILE FILE_Dup2( HFILE hFile1, HFILE hFile2 ) /*********************************************************************** * FILE_Read */ -LONG FILE_Read( HFILE hFile, void *buffer, LONG count ) +INT32 FILE_Read( HFILE hFile, LPVOID buffer, UINT32 count ) { DOS_FILE *file; - LONG result; + INT32 result; - dprintf_file( stddeb, "FILE_Read: %d %p %ld\n", hFile, buffer, count ); + dprintf_file( stddeb, "FILE_Read: %d %p %d\n", hFile, buffer, count ); if (!(file = FILE_GetFile( hFile ))) return -1; if (!count) return 0; if ((result = read( file->unix_handle, buffer, count )) == -1) @@ -622,6 +623,14 @@ INT GetTempFileName( BYTE drive, LPCSTR prefix, UINT unique, LPSTR buffer ) UINT num = unique ? (unique & 0xffff) : time(NULL) & 0xffff; char *p; + if ((drive & TF_FORCEDRIVE) && + !DRIVE_IsValid( toupper(drive & ~TF_FORCEDRIVE) - 'A' )) + { + drive &= ~TF_FORCEDRIVE; + fprintf( stderr, "Warning: GetTempFileName: invalid drive %d specified\n", + drive ); + } + if (drive & TF_FORCEDRIVE) { sprintf( buffer, "%c:", drive & ~TF_FORCEDRIVE ); @@ -638,7 +647,7 @@ INT GetTempFileName( BYTE drive, LPCSTR prefix, UINT unique, LPSTR buffer ) if (unique) { - lstrcpyn( buffer, DOSFS_GetDosTrueName( buffer, FALSE ), 144 ); + lstrcpyn32A( buffer, DOSFS_GetDosTrueName( buffer, FALSE ), 144 ); dprintf_file( stddeb, "GetTempFileName: returning %s\n", buffer ); return unique; } @@ -659,7 +668,7 @@ INT GetTempFileName( BYTE drive, LPCSTR prefix, UINT unique, LPSTR buffer ) sprintf( p, "%04x.tmp", num ); } while (num != (unique & 0xffff)); - lstrcpyn( buffer, DOSFS_GetDosTrueName( buffer, FALSE ), 144 ); + lstrcpyn32A( buffer, DOSFS_GetDosTrueName( buffer, FALSE ), 144 ); dprintf_file( stddeb, "GetTempFileName: returning %s\n", buffer ); return num; } @@ -696,7 +705,7 @@ HFILE OpenFile( LPCSTR name, OFSTRUCT *ofs, UINT mode ) if (mode & OF_PARSE) { if (!(dosName = DOSFS_GetDosTrueName( name, FALSE ))) goto error; - lstrcpyn( ofs->szPathName, dosName, sizeof(ofs->szPathName) ); + lstrcpyn32A( ofs->szPathName, dosName, sizeof(ofs->szPathName) ); ofs->fFixedDisk = (GetDriveType( dosName[0]-'A' ) != DRIVE_REMOVABLE); dprintf_file( stddeb, "OpenFile(%s): OF_PARSE, res = '%s', %d\n", name, ofs->szPathName, hFileRet ); @@ -712,8 +721,8 @@ HFILE OpenFile( LPCSTR name, OFSTRUCT *ofs, UINT mode ) if (mode & OF_CREATE) { if (!(file = FILE_Create( name, 0666, FALSE ))) goto error; - lstrcpyn( ofs->szPathName, DOSFS_GetDosTrueName( name, FALSE ), - sizeof(ofs->szPathName) ); + lstrcpyn32A( ofs->szPathName, DOSFS_GetDosTrueName( name, FALSE ), + sizeof(ofs->szPathName) ); goto success; } @@ -721,7 +730,7 @@ HFILE OpenFile( LPCSTR name, OFSTRUCT *ofs, UINT mode ) /* First try the current directory */ - lstrcpyn( ofs->szPathName, name, sizeof(ofs->szPathName) ); + lstrcpyn32A( ofs->szPathName, name, sizeof(ofs->szPathName) ); if ((unixName = DOSFS_GetUnixFileName( ofs->szPathName, TRUE )) != NULL) goto found; @@ -784,8 +793,8 @@ HFILE OpenFile( LPCSTR name, OFSTRUCT *ofs, UINT mode ) found: dprintf_file( stddeb, "OpenFile: found '%s'\n", unixName ); - lstrcpyn( ofs->szPathName, DOSFS_GetDosTrueName( ofs->szPathName, FALSE ), - sizeof(ofs->szPathName) ); + lstrcpyn32A(ofs->szPathName, DOSFS_GetDosTrueName( ofs->szPathName, FALSE), + sizeof(ofs->szPathName) ); if (mode & OF_DELETE) { diff --git a/files/profile.c b/files/profile.c index 9932328539f..ec452617607 100644 --- a/files/profile.c +++ b/files/profile.c @@ -73,7 +73,7 @@ static void PROFILE_CopyEntry( char *buffer, const char *value, int len, if (!handle_env) { - lstrcpyn( buffer, value, len ); + lstrcpyn32A( buffer, value, len ); if (quote && (len >= strlen(value))) buffer[strlen(buffer)-1] = '\0'; return; } @@ -86,10 +86,10 @@ static void PROFILE_CopyEntry( char *buffer, const char *value, int len, const char *env_p; const char *p2 = strchr( p, '}' ); if (!p2) continue; /* ignore it */ - lstrcpyn( env_val, p + 2, MIN( sizeof(env_val), (int)(p2-p)-1 ) ); + lstrcpyn32A(env_val, p + 2, MIN( sizeof(env_val), (int)(p2-p)-1 )); if ((env_p = getenv( env_val )) != NULL) { - lstrcpyn( buffer, env_p, len ); + lstrcpyn32A( buffer, env_p, len ); buffer += strlen( buffer ); len -= strlen( buffer ); } @@ -230,7 +230,7 @@ static BOOL PROFILE_DeleteSection( PROFILESECTION **section, const char *name ) { while (*section) { - if ((*section)->name && !lstrcmpi( (*section)->name, name )) + if ((*section)->name && !lstrcmpi32A( (*section)->name, name )) { PROFILESECTION *to_del = *section; *section = to_del->next; @@ -254,12 +254,12 @@ static BOOL PROFILE_DeleteKey( PROFILESECTION **section, { while (*section) { - if ((*section)->name && !lstrcmpi( (*section)->name, section_name )) + if ((*section)->name && !lstrcmpi32A( (*section)->name, section_name )) { PROFILEKEY **key = &(*section)->key; while (*key) { - if (!lstrcmpi( (*key)->name, key_name )) + if (!lstrcmpi32A( (*key)->name, key_name )) { PROFILEKEY *to_del = *key; *key = to_del->next; @@ -288,12 +288,12 @@ static PROFILEKEY *PROFILE_Find( PROFILESECTION **section, { while (*section) { - if ((*section)->name && !lstrcmpi( (*section)->name, section_name )) + if ((*section)->name && !lstrcmpi32A( (*section)->name, section_name )) { PROFILEKEY **key = &(*section)->key; while (*key) { - if (!lstrcmpi( (*key)->name, key_name )) return *key; + if (!lstrcmpi32A( (*key)->name, key_name )) return *key; key = &(*key)->next; } if (!create) return NULL; @@ -446,7 +446,7 @@ static INT PROFILE_GetSection( PROFILESECTION *section, PROFILEKEY *key; while (section) { - if (section->name && !lstrcmpi( section->name, section_name )) + if (section->name && !lstrcmpi32A( section->name, section_name )) { INT oldlen = len; for (key = section->key; key; key = key->next) @@ -574,7 +574,7 @@ int PROFILE_LoadWineIni(void) if ((p = getenv( "HOME" )) != NULL) { - lstrcpyn( buffer, p, MAX_PATHNAME_LEN - sizeof(PROFILE_WineIniName) ); + lstrcpyn32A(buffer, p, MAX_PATHNAME_LEN - sizeof(PROFILE_WineIniName)); strcat( buffer, PROFILE_WineIniName ); if ((f = fopen( buffer, "r" )) != NULL) { @@ -662,7 +662,7 @@ INT GetPrivateProfileString( LPCSTR section, LPCSTR entry, LPCSTR def_val, { if (PROFILE_Open( filename )) return PROFILE_GetString( section, entry, def_val, buffer, len ); - lstrcpyn( buffer, def_val, len ); + lstrcpyn32A( buffer, def_val, len ); return strlen( buffer ); } diff --git a/if1632/Makefile.in b/if1632/Makefile.in index 5cb814cf086..c4bd7cc1bff 100644 --- a/if1632/Makefile.in +++ b/if1632/Makefile.in @@ -15,6 +15,7 @@ DLLS = \ kernel.spec \ kernel32.spec \ keyboard.spec \ + lz32.spec \ lzexpand.spec \ mmsystem.spec \ mouse.spec \ @@ -37,6 +38,7 @@ DLLS = \ user.spec \ user32.spec \ ver.spec \ + version.spec \ w32sys.spec \ win87em.spec \ winsock.spec \ diff --git a/if1632/gdi.spec b/if1632/gdi.spec index ef8e6458b1d..635e163afdd 100644 --- a/if1632/gdi.spec +++ b/if1632/gdi.spec @@ -56,7 +56,7 @@ heap 65488 # 65536 - 16 (instance data) - 32 (stock objects) #46 pascal __GP? 47 pascal16 CombineRgn(word word word s_word) CombineRgn 48 pascal16 CreateBitmap(word word word word ptr) CreateBitmap -49 pascal16 CreateBitmapIndirect(ptr) CreateBitmapIndirect +49 pascal16 CreateBitmapIndirect(ptr) CreateBitmapIndirect16 50 pascal16 CreateBrushIndirect(ptr) CreateBrushIndirect 51 pascal16 CreateCompatibleBitmap(word word word) CreateCompatibleBitmap 52 pascal16 CreateCompatibleDC(word) CreateCompatibleDC @@ -89,7 +89,7 @@ heap 65488 # 65536 - 16 (instance data) - 32 (stock objects) 79 pascal GetDCOrg(word) GetDCOrg 80 pascal16 GetDeviceCaps(word s_word) GetDeviceCaps 81 pascal16 GetMapMode(word) GetMapMode -82 pascal16 GetObject(word word ptr) GetObject +82 pascal16 GetObject(word s_word ptr) GetObject16 83 pascal GetPixel(word s_word s_word) GetPixel 84 pascal16 GetPolyFillMode(word) GetPolyFillMode 85 pascal16 GetROP2(word) GetROP2 diff --git a/if1632/gdi32.spec b/if1632/gdi32.spec index afa0d1c4095..e7dc132a46b 100644 --- a/if1632/gdi32.spec +++ b/if1632/gdi32.spec @@ -27,8 +27,8 @@ base 1 0022 stub CopyEnhMetaFileW 0023 stub CopyMetaFileA 0024 stub CopyMetaFileW -0025 stub CreateBitmap -0026 stub CreateBitmapIndirect +0025 stdcall CreateBitmap(long long long long ptr) CreateBitmap +0026 stdcall CreateBitmapIndirect(ptr) CreateBitmapIndirect32 0027 stub CreateBrushIndirect 0028 stub CreateColorSpaceA 0029 stub CreateColorSpaceW @@ -40,7 +40,7 @@ base 1 0035 stub CreateDIBPatternBrushPt 0036 stub CreateDIBSection 0037 stub CreateDIBitmap -0038 stub CreateDiscardableBitmap +0038 stdcall CreateDiscardableBitmap(long long long) CreateDiscardableBitmap 0039 stdcall CreateEllipticRgn(long long long long) CreateEllipticRgn 0040 stdcall CreateEllipticRgnIndirect(ptr) CreateEllipticRgnIndirect32 0041 stub CreateEnhMetaFileA @@ -145,7 +145,7 @@ base 1 0140 stub GdiSetServerAttr 0141 stub GetArcDirection 0142 stub GetAspectRatioFilterEx -0143 stub GetBitmapBits +0143 stdcall GetBitmapBits(long long ptr) GetBitmapBits 0144 stdcall GetBitmapDimensionEx(long ptr) GetBitmapDimensionEx32 0145 stub GetBkColor 0146 stub GetBkMode @@ -206,9 +206,9 @@ base 1 0201 stub GetMiterLimit 0202 stdcall GetNearestColor(long long) GetNearestColor 0203 stub GetNearestPaletteIndex -0204 stdcall GetObjectA(long long ptr) WIN32_GetObject +0204 stdcall GetObjectA(long long ptr) GetObject32A 0205 stub GetObjectType -0206 stub GetObjectW +0206 stdcall GetObjectW(long long ptr) GetObject32W 0207 stub GetOutlineTextMetricsA 0208 stub GetOutlineTextMetricsW 0209 stub GetPaletteEntries @@ -305,7 +305,7 @@ base 1 0300 stub SelectPalette 0301 stub SetAbortProc 0302 stub SetArcDirection -0303 stub SetBitmapBits +0303 stdcall SetBitmapBits(long long ptr) SetBitmapBits 0304 stdcall SetBitmapDimensionEx(long long long ptr) SetBitmapDimensionEx32 0305 stdcall SetBkColor(long long) SetBkColor 0306 stub SetBkMode diff --git a/if1632/kernel.spec b/if1632/kernel.spec index fb441e51387..00fbace8bb2 100644 --- a/if1632/kernel.spec +++ b/if1632/kernel.spec @@ -83,10 +83,10 @@ type win16 84 pascal _llseek(word long word) _llseek 85 pascal16 _lopen(ptr word) _lopen 86 pascal16 _lwrite(word ptr word) _lwrite -87 pascal16 RESERVED5(ptr ptr) lstrcmp -88 pascal lstrcpy(segptr segptr) lstrcpy -89 pascal lstrcat(segptr segptr) lstrcat -90 pascal16 lstrlen(ptr) lstrlen +87 pascal16 RESERVED5(ptr ptr) lstrcmp16 +88 pascal lstrcpy(segptr segptr) lstrcpy16 +89 pascal lstrcat(segptr segptr) lstrcat16 +90 pascal16 lstrlen(ptr) lstrlen16 91 register InitTask() InitTask 92 pascal16 GetTempDrive(byte) GetTempDrive 93 pascal16 GetCodeHandle(segptr) GetCodeHandle @@ -259,8 +259,8 @@ type win16 349 pascal _hread(word segptr long) _hread 350 pascal _hwrite(word ptr long) _hwrite #351 BUNNY_351 -352 stub lstrcatn -353 pascal lstrcpyn(segptr segptr word) WIN16_lstrcpyn +352 pascal lstrcatn(segptr segptr word) lstrcatn16 +353 pascal lstrcpyn(segptr segptr word) lstrcpyn16 354 stub GetAppCompatFlags 355 pascal16 GetWinDebugInfo(ptr word) GetWinDebugInfo 356 pascal16 SetWinDebugInfo(ptr) SetWinDebugInfo diff --git a/if1632/kernel32.spec b/if1632/kernel32.spec index 82ced3374c7..50982f9316b 100644 --- a/if1632/kernel32.spec +++ b/if1632/kernel32.spec @@ -145,7 +145,7 @@ base 1 0140 stub FreeConsole 0141 stdcall FreeEnvironmentStringsA(ptr) FreeEnvironmentStringsA 0142 stdcall FreeEnvironmentStringsW(ptr) FreeEnvironmentStringsW -0143 stub FreeLibrary +0143 stdcall FreeLibrary(long) FreeLibrary32 0144 stub FreeLibraryAndExitThread 0145 stdcall FreeResource(long) FreeResource32 0146 stub FreeVirtualBuffer @@ -308,10 +308,9 @@ base 1 0303 stub GetUserDefaultLCID 0304 stub GetUserDefaultLangID 0305 stub GetVDMCurrentDirectories -#Use Win 3.1 GetVersion for now -0306 stdcall GetVersion() GetVersion -0307 stub GetVersionExA -0308 stub GetVersionExW +0306 stdcall GetVersion() GetVersion32 +0307 stdcall GetVersionExA(ptr) GetVersionEx32A +0308 stdcall GetVersionExW(ptr) GetVersionEx32W 0309 stub GetVolumeInformationA 0310 stub GetVolumeInformationW 0311 stdcall GetWindowsDirectoryA(ptr long) GetWindowsDirectory @@ -350,9 +349,9 @@ base 1 0344 stdcall HeapWalk(long ptr) HeapWalk 0345 stub InitAtomTable 0346 stdcall InitializeCriticalSection(ptr) InitializeCriticalSection -0347 stub InterlockedDecrement -0348 stub InterlockedExchange -0349 stub InterlockedIncrement +0347 stdcall InterlockedDecrement(ptr) InterlockedDecrement +0348 stdcall InterlockedExchange(ptr) InterlockedExchange +0349 stdcall InterlockedIncrement(ptr) InterlockedIncrement 0350 stub InvalidateConsoleDIBits 0351 stdcall IsBadCodePtr(ptr long) WIN32_IsBadCodePtr 0352 stub IsBadHugeReadPtr @@ -489,7 +488,7 @@ base 1 0483 stub SetEndOfFile 0484 stdcall SetEnvironmentVariableA(ptr ptr) SetEnvironmentVariableA 0485 stub SetEnvironmentVariableW -0486 stub SetErrorMode +0486 stdcall SetErrorMode(long) SetErrorMode 0487 stdcall SetEvent(long) SetEvent 0488 stub SetFileApisToANSI 0489 stub SetFileApisToOEM @@ -601,24 +600,24 @@ base 1 0595 stub _lopen 0596 stub _lread 0597 stub _lwrite -0598 stdcall lstrcat(ptr ptr) strcat -0599 stdcall lstrcatA(ptr ptr) strcat -0600 stub lstrcatW -0601 stdcall lstrcmp(ptr ptr) strcmp -0602 stdcall lstrcmpA(ptr ptr) strcmp -0603 stub lstrcmpW -0604 stub lstrcmpi -0605 stub lstrcmpiA -0606 stub lstrcmpiW -0607 stdcall lstrcpy(ptr ptr) strcpy -0608 stdcall lstrcpyA(ptr ptr) strcpy -0609 stub lstrcpyW -0610 stub lstrcpyn -0611 stub lstrcpynA -0612 stub lstrcpynW -0613 stdcall lstrlen(ptr) strlen -0614 stdcall lstrlenA(ptr) strlen -0615 stub lstrlenW +0598 stdcall lstrcat(ptr ptr) lstrcat32A +0599 stdcall lstrcatA(ptr ptr) lstrcat32A +0600 stdcall lstrcatW(ptr ptr) lstrcat32W +0601 stdcall lstrcmp(ptr ptr) lstrcmp32A +0602 stdcall lstrcmpA(ptr ptr) lstrcmp32A +0603 stdcall lstrcmpW(ptr ptr) lstrcmp32W +0604 stdcall lstrcmpi(ptr ptr) lstrcmpi32A +0605 stdcall lstrcmpiA(ptr ptr) lstrcmpi32A +0606 stdcall lstrcmpiW(ptr ptr) lstrcmpi32W +0607 stdcall lstrcpy(ptr ptr) lstrcpy32A +0608 stdcall lstrcpyA(ptr ptr) lstrcpy32A +0609 stdcall lstrcpyW(ptr ptr) lstrcpy32W +0610 stdcall lstrcpyn(ptr ptr long) lstrcpyn32A +0611 stdcall lstrcpynA(ptr ptr long) lstrcpyn32A +0612 stdcall lstrcpynW(ptr ptr long) lstrcpyn32W +0613 stdcall lstrlen(ptr) lstrlen32A +0614 stdcall lstrlenA(ptr) lstrlen32A +0615 stdcall lstrlenW(ptr) lstrlen32W #late additions 0616 stub GetPrivateProfileSectionNamesA 0617 stub GetPrivateProfileSectionNamesW diff --git a/if1632/lz32.spec b/if1632/lz32.spec new file mode 100644 index 00000000000..6b4b0d4b7ee --- /dev/null +++ b/if1632/lz32.spec @@ -0,0 +1,15 @@ +name lz32 +type win32 + +0 stdcall LZCopy(word word) LZCopy +1 stdcall LZOpenFileA(ptr ptr word) LZOpenFile32A +2 stdcall LZInit(word) LZInit +3 stdcall LZSeek(word long word) LZSeek +4 stdcall LZRead(word ptr long) LZRead32 +5 stdcall LZClose(word) LZClose +6 stdcall LZStart() LZStart +7 stdcall CopyLZFile(word word) CopyLZFile +8 stdcall LZDone() LZDone +9 stdcall GetExpandedNameA(ptr ptr) GetExpandedName32A +10 stdcall LZOpenFileW(ptr ptr word) LZOpenFile32W +11 stdcall GetExpandedNameW(ptr ptr) GetExpandedName32W diff --git a/if1632/lzexpand.spec b/if1632/lzexpand.spec index ca0e9d3c299..e05997a8022 100644 --- a/if1632/lzexpand.spec +++ b/if1632/lzexpand.spec @@ -2,14 +2,14 @@ name lzexpand type win16 1 pascal LZCopy(word word) LZCopy -2 pascal16 LZOpenFile(ptr ptr word) LZOpenFile +2 pascal16 LZOpenFile(ptr ptr word) LZOpenFile16 3 pascal16 LZInit(word) LZInit 4 pascal LZSeek(word long word) LZSeek -5 pascal16 LZRead(word segptr word) LZRead +5 pascal16 LZRead(word segptr word) LZRead16 6 pascal16 LZClose(word) LZClose 7 pascal16 LZStart() LZStart 8 pascal CopyLZFile(word word) CopyLZFile 9 pascal16 LZDone() LZDone -10 pascal16 GetExpandedName(ptr ptr) GetExpandedName +10 pascal16 GetExpandedName(ptr ptr) GetExpandedName16 #11 WEP #12 ___EXPORTEDSTUB diff --git a/if1632/user.spec b/if1632/user.spec index 0a3c3bfec17..9afd4b48d90 100644 --- a/if1632/user.spec +++ b/if1632/user.spec @@ -108,7 +108,7 @@ heap 65520 106 pascal16 GetKeyState(word) GetKeyState 107 pascal DefWindowProc(word word word long) DefWindowProc16 108 pascal16 GetMessage(segptr word word word) GetMessage -109 pascal16 PeekMessage(ptr word word word word) PeekMessage +109 pascal16 PeekMessage(ptr word word word word) PeekMessage16 110 pascal16 PostMessage(word word word long) PostMessage 111 pascal SendMessage(word word word long) SendMessage16 112 pascal16 WaitMessage() WaitMessage @@ -184,7 +184,7 @@ heap 65520 182 pascal16 KillSystemTimer(word word) KillSystemTimer 183 pascal16 GetCaretPos(ptr) GetCaretPos16 184 stub QuerySendMessage -185 pascal16 GrayString(word word ptr ptr word word word word word) GrayString +185 pascal16 GrayString(word word segptr segptr s_word s_word s_word s_word s_word) GrayString 186 pascal16 SwapMouseButton(word) SwapMouseButton 187 pascal16 EndMenu() EndMenu 188 pascal16 SetSysModalWindow(word) SetSysModalWindow @@ -372,14 +372,14 @@ heap 65520 416 pascal16 TrackPopupMenu(word word s_word s_word s_word word ptr) TrackPopupMenu16 417 pascal GetMenuCheckMarkDimensions() GetMenuCheckMarkDimensions 418 pascal16 SetMenuItemBitmaps(word word word word word) SetMenuItemBitmaps -420 pascal16 wsprintf() wsprintf -421 pascal16 wvsprintf(ptr ptr ptr) wvsprintf +420 pascal16 wsprintf() WIN16_wsprintf16 +421 pascal16 wvsprintf(ptr ptr ptr) wvsprintf16 422 stub DlgDirSelectEx 423 stub DlgDirSelectComboBoxEx 427 pascal16 FindWindowEx(word word segptr ptr) FindWindowEx16 428 stub TileWindows 429 stub CascadeWindows -430 pascal16 lstrcmp(ptr ptr) lstrcmp +430 pascal16 lstrcmp(ptr ptr) lstrcmp16 431 pascal AnsiUpper(segptr) WIN16_AnsiUpper 432 pascal AnsiLower(segptr) WIN16_AnsiLower 433 pascal16 IsCharAlpha(byte) IsCharAlpha @@ -413,7 +413,7 @@ heap 65520 465 pascal16 DragDetect(word long) DragDetect 466 pascal16 DrawFocusRect(word ptr) DrawFocusRect16 470 stub StringFunc -471 pascal16 lstrcmpi(ptr ptr) lstrcmpi +471 pascal16 lstrcmpi(ptr ptr) lstrcmpi16 472 pascal AnsiNext(segptr) AnsiNext 473 pascal AnsiPrev(segptr segptr) AnsiPrev 475 stub SetScrollInfo diff --git a/if1632/user32.spec b/if1632/user32.spec index f764aca3a52..6681bffa046 100644 --- a/if1632/user32.spec +++ b/if1632/user32.spec @@ -208,7 +208,7 @@ base 1 0201 stdcall FlashWindow(long long) FlashWindow 0202 stdcall FrameRect(long ptr long) FrameRect32 0203 stub FreeDDElParam -0204 stub GetActiveWindow +0204 stdcall GetActiveWindow() GetActiveWindow 0205 stub GetAppCompatFlags 0206 stub GetAsyncKeyState 0207 stub GetCapture @@ -419,8 +419,8 @@ base 1 0412 stub OpenWindowStationW 0413 stub PackDDElParam 0414 stub PaintDesktop -0415 stub PeekMessageA -0416 stub PeekMessageW +0415 stdcall PeekMessageA(ptr long long long long) PeekMessage32A +0416 stdcall PeekMessageW(ptr long long long long) PeekMessage32W 0417 stub PlaySoundEvent 0418 stdcall PostMessageA(long long long long) PostMessage 0419 stub PostMessageW @@ -588,10 +588,10 @@ base 1 0581 stdcall WindowFromPoint(long long) WindowFromPoint32 0582 stub keybd_event 0583 stub mouse_event -0584 stdcall wsprintfA() USER32_wsprintfA -0585 stub wsprintfW -0586 stub wvsprintfA -0587 stub wvsprintfW +0584 stdcall wsprintfA() WIN32_wsprintf32A +0585 stdcall wsprintfW() WIN32_wsprintf32W +0586 stdcall wvsprintfA(ptr ptr ptr) wvsprintf32A +0587 stdcall wvsprintfW(ptr ptr ptr) wvsprintf32W #late additions 0588 stub ChangeDisplaySettingsA 0588 stub ChangeDisplaySettingsW diff --git a/if1632/ver.spec b/if1632/ver.spec index 60cadc82516..11aa1e084b3 100644 --- a/if1632/ver.spec +++ b/if1632/ver.spec @@ -5,12 +5,12 @@ type win16 2 pascal GetFileResourceSize(ptr segptr segptr ptr) GetFileResourceSize 3 pascal GetFileResource(ptr segptr segptr long long ptr) GetFileResource -6 pascal GetFileVersionInfoSize(ptr ptr) GetFileVersionInfoSize -7 pascal GetFileVersionInfo(ptr long long ptr) GetFileVersionInfo -8 pascal VerFindFile(word ptr ptr ptr ptr ptr ptr ptr) VerFindFile -9 pascal VerInstallFile(word ptr ptr ptr ptr ptr ptr ptr) VerInstallFile -10 pascal VerLanguageName(word ptr word) VerLanguageName -11 pascal VerQueryValue(segptr ptr ptr ptr) VerQueryValue +6 pascal GetFileVersionInfoSize(ptr ptr) GetFileVersionInfoSize16 +7 pascal GetFileVersionInfo(ptr long long ptr) GetFileVersionInfo16 +8 pascal VerFindFile(word ptr ptr ptr ptr ptr ptr ptr) VerFindFile16 +9 pascal VerInstallFile(word ptr ptr ptr ptr ptr ptr ptr) VerInstallFile16 +10 pascal VerLanguageName(word ptr word) VerLanguageName16 +11 pascal VerQueryValue(segptr ptr ptr ptr) VerQueryValue16 20 stub GETFILEVERSIONINFORAW #21 VERFTHK_THUNKDATA16 #22 VERTHKSL_THUNKDATA16 diff --git a/if1632/version.spec b/if1632/version.spec new file mode 100644 index 00000000000..3d8ec3806b7 --- /dev/null +++ b/if1632/version.spec @@ -0,0 +1,17 @@ +name version +type win32 + +0 stdcall GetFileVersionInfoA(ptr long long ptr) GetFileVersionInfo32A +1 stdcall GetFileVersionInfoSizeA(ptr ptr) GetFileVersionInfoSize32A +2 stdcall GetFileVersionInfoSizeW(ptr ptr) GetFileVersionInfoSize32W +3 stdcall GetFileVersionInfoW(ptr long long ptr) GetFileVersionInfo32W +#4 stub VerFThk_ThunkData32 +5 stdcall VerFindFileA(word ptr ptr ptr ptr ptr ptr ptr) VerFindFile32A +6 stdcall VerFindFileW(word ptr ptr ptr ptr ptr ptr ptr) VerFindFile32W +7 stdcall VerInstallFileA(word ptr ptr ptr ptr ptr ptr ptr) VerInstallFile32A +8 stdcall VerInstallFileW(word ptr ptr ptr ptr ptr ptr ptr) VerInstallFile32W +9 stdcall VerLanguageNameA(word ptr word) VerLanguageName32A +10 stdcall VerLanguageNameW(word ptr word) VerLanguageName32W +11 stdcall VerQueryValueA(segptr ptr ptr ptr) VerQueryValue32A +12 stdcall VerQueryValueW(segptr ptr ptr ptr) VerQueryValue32W +#13 stub VerThkSL_ThunkData32 diff --git a/include/bitmap.h b/include/bitmap.h index 5f0d3607cab..e9cafb77d64 100644 --- a/include/bitmap.h +++ b/include/bitmap.h @@ -13,7 +13,7 @@ typedef struct { GDIOBJHDR header; - BITMAP bitmap; + BITMAP16 bitmap; Pixmap pixmap; SIZE16 size; /* For SetBitmapDimension() */ } BITMAPOBJ; @@ -37,7 +37,8 @@ extern GC BITMAP_monoGC, BITMAP_colorGC; /* objects/bitmap.c */ extern BOOL BITMAP_Init(void); -extern int BITMAP_GetObject( BITMAPOBJ * bmp, int count, LPSTR buffer ); +extern INT16 BITMAP_GetObject16( BITMAPOBJ * bmp, INT16 count, LPVOID buffer ); +extern INT32 BITMAP_GetObject32( BITMAPOBJ * bmp, INT32 count, LPVOID buffer ); extern BOOL BITMAP_DeleteObject( HBITMAP hbitmap, BITMAPOBJ * bitmap ); extern HBITMAP BITMAP_SelectObject( DC * dc, HBITMAP hbitmap, BITMAPOBJ * bmp ); diff --git a/include/brush.h b/include/brush.h index daa2eaa393a..6803254ba8a 100644 --- a/include/brush.h +++ b/include/brush.h @@ -17,7 +17,7 @@ typedef struct { GDIOBJHDR header; - LOGBRUSH logbrush WINE_PACKED; + LOGBRUSH16 logbrush WINE_PACKED; } BRUSHOBJ; #ifndef WINELIB diff --git a/include/callback.h b/include/callback.h index fb07a711678..537cfa94c6a 100644 --- a/include/callback.h +++ b/include/callback.h @@ -20,28 +20,28 @@ int CallTo32_LargeStack( int (*func)(), int nbargs, ... ); /* by the build program to generate the file if1632/callto16.S */ /* func ds parameters */ -extern WORD CallTo16_word_ ( FARPROC, WORD ); +extern WORD CallTo16_word_ ( FARPROC16, WORD ); #ifndef WINELIB -extern WORD CallTo16_word_ww ( FARPROC, WORD, WORD, WORD ); -extern WORD CallTo16_word_wl ( FARPROC, WORD, WORD, LONG ); -extern WORD CallTo16_word_ll ( FARPROC, WORD, LONG, LONG ); -extern WORD CallTo16_word_www ( FARPROC, WORD, WORD, WORD, WORD ); -extern WORD CallTo16_word_wwl ( FARPROC, WORD, WORD, WORD, LONG ); -extern WORD CallTo16_word_wlw ( FARPROC, WORD, WORD, LONG, WORD ); -extern LONG CallTo16_long_wwl ( FARPROC, WORD, WORD, WORD, LONG ); -extern WORD CallTo16_word_llwl ( FARPROC, WORD, LONG, LONG, WORD, LONG ); -extern LONG CallTo16_long_wwwl ( FARPROC, WORD, WORD, WORD, WORD, LONG ); -extern WORD CallTo16_word_lwww ( FARPROC, WORD, LONG, WORD, WORD, WORD ); -extern WORD CallTo16_word_wwll ( FARPROC, WORD, WORD, WORD, LONG, LONG); -extern WORD CallTo16_word_wllwl( FARPROC, WORD, WORD, LONG, LONG, WORD, LONG ); -extern WORD CallTo16_word_wwlll( FARPROC, WORD, WORD, WORD, LONG, LONG, LONG ); -extern LONG CallTo16_long_lllllllwlwwwl( FARPROC, WORD, LONG, LONG, LONG, +extern WORD CallTo16_word_ww (FARPROC16, WORD, WORD, WORD); +extern WORD CallTo16_word_wl (FARPROC16, WORD, WORD, LONG); +extern WORD CallTo16_word_ll (FARPROC16, WORD, LONG, LONG); +extern WORD CallTo16_word_www (FARPROC16, WORD, WORD, WORD, WORD); +extern WORD CallTo16_word_wwl (FARPROC16, WORD, WORD, WORD, LONG); +extern WORD CallTo16_word_wlw (FARPROC16, WORD, WORD, LONG, WORD); +extern LONG CallTo16_long_wwl (FARPROC16, WORD, WORD, WORD, LONG); +extern WORD CallTo16_word_llwl (FARPROC16, WORD, LONG, LONG, WORD, LONG); +extern LONG CallTo16_long_wwwl (FARPROC16, WORD, WORD, WORD, WORD, LONG); +extern WORD CallTo16_word_lwww (FARPROC16, WORD, LONG, WORD, WORD, WORD); +extern WORD CallTo16_word_wwll (FARPROC16, WORD, WORD, WORD, LONG, LONG); +extern WORD CallTo16_word_wllwl(FARPROC16, WORD, WORD, LONG, LONG, WORD, LONG); +extern WORD CallTo16_word_wwlll(FARPROC16, WORD, WORD, WORD, LONG, LONG, LONG); +extern LONG CallTo16_long_lllllllwlwwwl( FARPROC16, WORD, LONG, LONG, LONG, LONG, LONG, LONG, LONG, WORD, LONG, WORD, WORD, WORD, LONG ); -extern WORD CallTo16_regs_( FARPROC func, WORD ds, WORD es, WORD bp, WORD ax, +extern WORD CallTo16_regs_( FARPROC16 func, WORD ds, WORD es, WORD bp, WORD ax, WORD bx, WORD cx, WORD dx, WORD si, WORD di ); #define CallEnumChildProc( func, hwnd, lParam ) \ diff --git a/include/compobj.h b/include/compobj.h deleted file mode 100644 index d9482dcdcee..00000000000 --- a/include/compobj.h +++ /dev/null @@ -1,5 +0,0 @@ -/* - * compobj.h - Declarations for COMPOBJ - */ - -typedef LPVOID LPUNKNOWN; diff --git a/include/except.h b/include/except.h index 1c2ec01926f..ee93e3e2071 100644 --- a/include/except.h +++ b/include/except.h @@ -6,15 +6,7 @@ #ifndef __WINE_EXCEPT_H #define __WINE_EXCEPT_H -#include"windows.h" - -/* - * general definitions - */ - -#ifndef PVOID -#define PVOID void * -#endif +#include"wintypes.h" /* * exception codes @@ -162,7 +154,7 @@ typedef struct __EXCEPTION_RECORD DWORD ExceptionFlags; struct __EXCEPTION_RECORD *ExceptionRecord; - PVOID ExceptionAddress; + LPVOID ExceptionAddress; DWORD NumberParameters; DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; } EXCEPTION_RECORD; @@ -173,7 +165,7 @@ typedef struct __EXCEPTION_RECORD_MIN DWORD ExceptionFlags; struct __EXCEPTION_RECORD *ExceptionRecord; - PVOID ExceptionAddress; + LPVOID ExceptionAddress; DWORD NumberParameters; DWORD ExceptionInformation[0]; } EXCEPTION_RECORD_MIN; @@ -203,7 +195,7 @@ struct __EXCEPTION_FRAME; typedef DWORD ( *PEXCEPTION_HANDLER)( PEXCEPTION_RECORD pexcrec, struct __EXCEPTION_FRAME *pestframe, PCONTEXT pcontext, - PVOID pdispatcher); + LPVOID pdispatcher); /* * function pointer to a UnhandledExceptionFilter(); diff --git a/include/file.h b/include/file.h index 7893a96e44c..8b9de031df8 100644 --- a/include/file.h +++ b/include/file.h @@ -24,7 +24,7 @@ extern int FILE_MakeDir( LPCSTR path ); extern int FILE_RemoveDir( LPCSTR path ); extern HFILE FILE_Dup( HFILE hFile ); extern HFILE FILE_Dup2( HFILE hFile1, HFILE hFile2 ); -extern LONG FILE_Read( HFILE hFile, void *buffer, LONG count ); +extern INT32 FILE_Read( HFILE hFile, LPVOID buffer, UINT32 count ); extern INT _lcreat_uniq( LPCSTR path, INT attr ); #endif /* __WINE_FILE_H */ diff --git a/include/font.h b/include/font.h index 8a8dae74cc8..8372ebd7ad6 100644 --- a/include/font.h +++ b/include/font.h @@ -17,7 +17,7 @@ typedef struct { GDIOBJHDR header; - LOGFONT logfont WINE_PACKED; + LOGFONT16 logfont WINE_PACKED; } FONTOBJ; /* may be switched... */ diff --git a/include/gdi.h b/include/gdi.h index ac9b3a65e31..398b9c569f1 100644 --- a/include/gdi.h +++ b/include/gdi.h @@ -158,7 +158,7 @@ typedef struct typedef struct { XFontStruct * fstruct; - TEXTMETRIC metrics; + TEXTMETRIC16 metrics; } X_PHYSFONT; /* X physical palette information */ @@ -281,9 +281,6 @@ extern BOOL GDI_FreeObject( HANDLE ); extern GDIOBJHDR * GDI_GetObjPtr( HANDLE, WORD ); extern FARPROC16 GDI_GetDefDCHook(void); -#define UpdateDirtyDC(dc) \ - DC_CallHookProc(dc, DCHC_INVALIDVISRGN, 0) - extern Display * display; extern Screen * screen; extern Window rootWindow; diff --git a/include/global.h b/include/global.h index 42014fcba6d..dc8c939aad0 100644 --- a/include/global.h +++ b/include/global.h @@ -17,12 +17,13 @@ typedef struct } SHMDATA; extern HGLOBAL16 GLOBAL_CreateBlock( UINT16 flags, const void *ptr, DWORD size, - HGLOBAL16 hOwner, BOOL isCode, - BOOL is32Bit, BOOL isReadOnly, + HGLOBAL16 hOwner, BOOL16 isCode, + BOOL16 is32Bit, BOOL16 isReadOnly, SHMDATA *shmdata); -extern BOOL GLOBAL_FreeBlock( HGLOBAL16 handle ); +extern BOOL16 GLOBAL_FreeBlock( HGLOBAL16 handle ); extern HGLOBAL16 GLOBAL_Alloc( WORD flags, DWORD size, HGLOBAL16 hOwner, - BOOL isCode, BOOL is32Bit, BOOL isReadOnly ); + BOOL16 isCode, BOOL16 is32Bit, + BOOL16 isReadOnly ); extern WORD GlobalHandleToSel( HGLOBAL16 handle ); #endif /* __WINE_GLOBAL_H */ diff --git a/include/keyboard.h b/include/keyboard.h deleted file mode 100644 index c9f784f859f..00000000000 --- a/include/keyboard.h +++ /dev/null @@ -1,114 +0,0 @@ -#ifndef __WINE_KEYBOARD_H -#define __WINE_KEYBOARD_H - -struct KeyTableEntry { - int virtualkey; - int ASCII; - int scancode; - char *name; -}; - -struct KeyTableEntry KeyTable[] = { - { 0x3, 0x3, 0x0, "" }, - { 0x8, 0x8, 0xe, "Backspace" }, - { 0x9, 0x9, 0xf, "Tab" }, - { 0xc, 0x0, 0x4c, "Num 5" }, - { 0xd, 0xd, 0x1c, "Enter" }, - { 0x10, 0x0, 0x2a, "Shift" }, - { 0x11, 0x0, 0x1d, "Ctrl" }, - { 0x12, 0x0, 0x38, "Alt" }, - { 0x14, 0x0, 0x3a, "Caps Lock" }, - { 0x1b, 0x1b, 0x1, "Esc" }, - { 0x20, 0x20, 0x39, "Space" }, - { 0x21, 0x0, 0x49, "Num 9" }, - { 0x22, 0x0, 0x51, "Num 3" }, - { 0x23, 0x0, 0x4f, "Num 1" }, - { 0x24, 0x0, 0x47, "Num 7" }, - { 0x25, 0x0, 0x4b, "Num 4" }, - { 0x26, 0x0, 0x48, "Num 8" }, - { 0x27, 0x0, 0x4d, "Num 6" }, - { 0x28, 0x0, 0x50, "Num 2" }, - { 0x2d, 0x0, 0x52, "Num 0" }, - { 0x2e, 0x0, 0x53, "Num Del" }, - { 0x30, 0x30, 0xb, "0" }, - { 0x31, 0x31, 0x2, "1" }, - { 0x32, 0x32, 0x3, "2" }, - { 0x33, 0x33, 0x4, "3" }, - { 0x34, 0x34, 0x5, "4" }, - { 0x35, 0x35, 0x6, "5" }, - { 0x36, 0x36, 0x7, "6" }, - { 0x37, 0x37, 0x8, "7" }, - { 0x38, 0x38, 0x9, "8" }, - { 0x39, 0x39, 0xa, "9" }, - { 0x41, 0x41, 0x1e, "A" }, - { 0x42, 0x42, 0x30, "B" }, - { 0x43, 0x43, 0x2e, "C" }, - { 0x44, 0x44, 0x20, "D" }, - { 0x45, 0x45, 0x12, "E" }, - { 0x46, 0x46, 0x21, "F" }, - { 0x47, 0x47, 0x22, "G" }, - { 0x48, 0x48, 0x23, "H" }, - { 0x49, 0x49, 0x17, "I" }, - { 0x4a, 0x4a, 0x24, "J" }, - { 0x4b, 0x4b, 0x25, "K" }, - { 0x4c, 0x4c, 0x26, "L" }, - { 0x4d, 0x4d, 0x32, "M" }, - { 0x4e, 0x4e, 0x31, "N" }, - { 0x4f, 0x4f, 0x18, "O" }, - { 0x50, 0x50, 0x19, "P" }, - { 0x51, 0x51, 0x10, "Q" }, - { 0x52, 0x52, 0x13, "R" }, - { 0x53, 0x53, 0x1f, "S" }, - { 0x54, 0x54, 0x14, "T" }, - { 0x55, 0x55, 0x16, "U" }, - { 0x56, 0x56, 0x2f, "V" }, - { 0x57, 0x57, 0x11, "W" }, - { 0x58, 0x58, 0x2d, "X" }, - { 0x59, 0x59, 0x15, "Y" }, - { 0x5a, 0x5a, 0x2c, "Z" }, - { 0x60, 0x0, 0x52, "Num 0" }, - { 0x61, 0x0, 0x4f, "Num 1" }, - { 0x62, 0x0, 0x50, "Num 2" }, - { 0x63, 0x0, 0x51, "Num 3" }, - { 0x64, 0x0, 0x4b, "Num 4" }, - { 0x65, 0x0, 0x4c, "Num 5" }, - { 0x66, 0x0, 0x4d, "Num 6" }, - { 0x67, 0x0, 0x47, "Num 7" }, - { 0x68, 0x0, 0x48, "Num 8" }, - { 0x69, 0x0, 0x49, "Num 9" }, - { 0x6a, 0x2a, 0x37, "Num *" }, - { 0x6b, 0x2b, 0x4e, "Num +" }, - { 0x6c, 0x0, 0x0, "" }, - { 0x6d, 0x2d, 0x4a, "Num -" }, - { 0x6e, 0x2e, 0x53, "Num Del" }, - { 0x6f, 0x2f, 0x0, "" }, - { 0x70, 0x0, 0x3b, "F1" }, - { 0x71, 0x0, 0x3c, "F2" }, - { 0x72, 0x0, 0x3d, "F3" }, - { 0x73, 0x0, 0x3e, "F4" }, - { 0x74, 0x0, 0x3f, "F5" }, - { 0x75, 0x0, 0x40, "F6" }, - { 0x76, 0x0, 0x41, "F7" }, - { 0x77, 0x0, 0x42, "F8" }, - { 0x78, 0x0, 0x43, "F9" }, - { 0x79, 0x0, 0x44, "F10" }, - { 0x7a, 0x0, 0x57, "F11" }, - { 0x7b, 0x0, 0x58, "F12" }, - { 0x90, 0x0, 0x45, "Pause" }, - { 0x91, 0x0, 0x46, "Scroll Lock" }, - { 0xba, 0x3b, 0x27, ";" }, - { 0xbb, 0x3d, 0xd, "=" }, - { 0xbc, 0x2c, 0x33, "," }, - { 0xbd, 0x2d, 0xc, "-" }, - { 0xbe, 0x2e, 0x34, "." }, - { 0xbf, 0x2f, 0x35, "/" }, - { 0xc0, 0x60, 0x29, "`" }, - { 0xdb, 0x5b, 0x1a, "[" }, - { 0xdc, 0x5c, 0x2b, "\\" }, - { 0xdd, 0x5d, 0x1b, "]" }, - { 0xde, 0x27, 0x28, "\'" }, - { 0xe2, 0x5c, 0x56, "\\" }, -}; -#define KeyTableSize sizeof(KeyTable) / sizeof(struct KeyTableEntry) - -#endif /* __WINE_KEYBOARD_H */ diff --git a/include/listbox.h b/include/listbox.h index 8dfcf652a15..cdd82cb99c0 100644 --- a/include/listbox.h +++ b/include/listbox.h @@ -3,7 +3,7 @@ */ typedef struct tagLISTSTRUCT { - MEASUREITEMSTRUCT mis; + MEASUREITEMSTRUCT16 mis; UINT itemState; RECT16 itemRect; HANDLE hData; diff --git a/include/lzexpand.h b/include/lzexpand.h index bf58839402c..380ee984801 100644 --- a/include/lzexpand.h +++ b/include/lzexpand.h @@ -3,17 +3,25 @@ * Copyright 1996 Marcus Meissner */ -LONG LZCopy(HFILE,HFILE); -HFILE LZOpenFile(LPCSTR,LPOFSTRUCT,UINT); -HFILE LZInit(HFILE); -LONG LZSeek(HFILE,LONG,INT); -INT LZRead(HFILE,SEGPTR,WORD); -void LZClose(HFILE); -INT LZStart(void); -LONG CopyLZFile(HFILE,HFILE); -void LZDone(void); -INT GetExpandedName(LPCSTR,LPSTR); +INT16 LZStart(void); +HFILE LZInit(HFILE); +void LZDone(void); +LONG LZSeek(HFILE,LONG,INT32); +LONG LZCopy(HFILE,HFILE); +void LZClose(HFILE); +LONG CopyLZFile(HFILE,HFILE); +INT16 GetExpandedName16(LPCSTR,LPSTR); +INT32 GetExpandedName32A(LPCSTR,LPSTR); +INT32 GetExpandedName32W(LPCWSTR,LPWSTR); +#define GetExpandedName WINELIB_NAME_AW(GetExpandedName) +HFILE LZOpenFile16(LPCSTR,LPOFSTRUCT,UINT16); +HFILE LZOpenFile32A(LPCSTR,LPOFSTRUCT,UINT32); +HFILE LZOpenFile32W(LPCWSTR,LPOFSTRUCT,UINT32); +#define LZOpenFile WINELIB_NAME_AW(LZOpenFile) +INT16 LZRead16(HFILE,SEGPTR,UINT16); +INT32 LZRead32(HFILE,LPVOID,UINT32); +#define LZRead WINELIB_NAME(LZRead) #define LZERROR_BADINHANDLE 0xFFFF /* -1 */ #define LZERROR_BADOUTHANDLE 0xFFFE /* -2 */ diff --git a/include/message.h b/include/message.h index 1fc0266e083..72f64adc198 100644 --- a/include/message.h +++ b/include/message.h @@ -13,7 +13,7 @@ extern DWORD MSG_WineStartTicks; /* Ticks at Wine startup */ /* message.c */ -extern BOOL MSG_GetHardwareMessage( LPMSG msg ); +extern BOOL MSG_GetHardwareMessage( LPMSG16 msg ); extern BOOL MSG_InternalGetMessage( SEGPTR msg, HWND hwnd, HWND hwndOwner, short code, WORD flags, BOOL sendIdle ); diff --git a/include/metafile.h b/include/metafile.h index 7951832c460..0d2c306f0a8 100644 --- a/include/metafile.h +++ b/include/metafile.h @@ -26,10 +26,10 @@ BOOL MF_MetaParam6(DC *dc, short func, short param1, short param2, BOOL MF_MetaParam8(DC *dc, short func, short param1, short param2, short param3, short param4, short param5, short param6, short param7, short param8); -BOOL MF_CreateBrushIndirect(DC *dc, HBRUSH hBrush, LOGBRUSH *logbrush); -BOOL MF_CreatePatternBrush(DC *dc, HBRUSH hBrush, LOGBRUSH *logbrush); -BOOL MF_CreatePenIndirect(DC *dc, HPEN16 hPen, LOGPEN *logpen); -BOOL MF_CreateFontIndirect(DC *dc, HFONT hFont, LOGFONT *logfont); +BOOL MF_CreateBrushIndirect(DC *dc, HBRUSH hBrush, LOGBRUSH16 *logbrush); +BOOL MF_CreatePatternBrush(DC *dc, HBRUSH hBrush, LOGBRUSH16 *logbrush); +BOOL MF_CreatePenIndirect(DC *dc, HPEN16 hPen, LOGPEN16 *logpen); +BOOL MF_CreateFontIndirect(DC *dc, HFONT hFont, LOGFONT16 *logfont); BOOL MF_TextOut(DC *dc, short x, short y, LPCSTR str, short count); BOOL MF_MetaPoly(DC *dc, short func, LPPOINT16 pt, short count); BOOL MF_BitBlt(DC *dcDest, short xDest, short yDest, short width, diff --git a/include/neexe.h b/include/neexe.h index 096050b2911..7cc36e48ac0 100644 --- a/include/neexe.h +++ b/include/neexe.h @@ -199,7 +199,7 @@ struct resource_nameinfo_s unsigned short length; unsigned short flags; unsigned short id; - HANDLE handle; + HANDLE16 handle; unsigned short usage; }; diff --git a/include/ole.h b/include/ole.h index 9cc310a2ae7..9e3795dbcf9 100644 --- a/include/ole.h +++ b/include/ole.h @@ -2,6 +2,12 @@ * ole.h - Declarations for OLESVR and OLECLI */ +#ifndef __WINE_OLE_H +#define __WINE_OLE_H + +#include "windows.h" + +typedef LPVOID LPUNKNOWN; typedef LPCSTR OLE_LPCSTR; /* object types */ @@ -160,6 +166,7 @@ typedef struct _OLESERVERDOCVTBL { OLESTATUS (*Close)(LPOLESERVERDOC); OLESTATUS (*SetHostNames)(LPOLESERVERDOC,OLE_LPCSTR,OLE_LPCSTR); OLESTATUS (*SetDocDimensions)(LPOLESERVERDOC,LPRECT16); +#undef GetObject /* FIXME */ OLESTATUS (*GetObject)(LPOLESERVERDOC,OLE_LPCSTR,LPOLEOBJECT*,LPOLECLIENT); OLESTATUS (*Release)(LPOLESERVERDOC); OLESTATUS (*SetColorScheme)(LPOLESERVERDOC,LPLOGPALETTE); @@ -251,3 +258,5 @@ OLESTATUS OleRenameClientDoc(LHCLIENTDOC,LPCSTR); OLESTATUS OleRevokeServerDoc(LHSERVERDOC); OLESTATUS OleRevokeClientDoc(LHCLIENTDOC); OLESTATUS OleRevokeServer(LHSERVER); + +#endif /* __WINE_OLE_H */ diff --git a/include/pen.h b/include/pen.h index 7016d24e3d0..55858eccab0 100644 --- a/include/pen.h +++ b/include/pen.h @@ -17,7 +17,7 @@ typedef struct { GDIOBJHDR header; - LOGPEN logpen WINE_PACKED; + LOGPEN16 logpen WINE_PACKED; } PENOBJ; #ifndef WINELIB diff --git a/include/queue.h b/include/queue.h index 6230b892a01..553f7a41e6f 100644 --- a/include/queue.h +++ b/include/queue.h @@ -17,7 +17,7 @@ typedef struct tagQMSG { DWORD extraInfo; /* Only in 3.1 */ - MSG msg; + MSG16 msg; } QMSG; @@ -84,7 +84,7 @@ extern void QUEUE_DecTimerCount( HQUEUE hQueue ); extern BOOL QUEUE_CreateSysMsgQueue( int size ); extern BOOL QUEUE_DeleteMsgQueue( HQUEUE hQueue ); extern HTASK QUEUE_GetQueueTask( HQUEUE hQueue ); -extern BOOL QUEUE_AddMsg( HQUEUE hQueue, MSG * msg, DWORD extraInfo ); +extern BOOL QUEUE_AddMsg( HQUEUE hQueue, MSG16 * msg, DWORD extraInfo ); extern int QUEUE_FindMsg( MESSAGEQUEUE * msgQueue, HWND hwnd, int first, int last ); extern void QUEUE_RemoveMsg( MESSAGEQUEUE * msgQueue, int pos ); diff --git a/include/resource.h b/include/resource.h index 358a43e9c80..e054b4f77c6 100644 --- a/include/resource.h +++ b/include/resource.h @@ -7,7 +7,7 @@ #ifndef __WINE_RESOURCE_H #define __WINE_RESOURCE_H -#include "wintypes.h" +#include "windows.h" struct resource { diff --git a/include/string32.h b/include/string32.h index 1431a59498d..779141134d4 100644 --- a/include/string32.h +++ b/include/string32.h @@ -10,16 +10,10 @@ #include "wintypes.h" -int STRING32_UniLen(LPCWSTR s); void STRING32_UniToAnsi(LPSTR dest,LPCWSTR src); void STRING32_AnsiToUni(LPWSTR dest,LPCSTR src); LPSTR STRING32_DupUniToAnsi(LPCWSTR src); LPWSTR STRING32_DupAnsiToUni(LPCSTR src); -LPWSTR STRING32_lstrcpyW(LPWSTR dst, LPCWSTR src); -int STRING32_lstrcmpnW(LPCWSTR a,LPCWSTR b,DWORD len); -int STRING32_lstrcmpniW(LPCWSTR a,LPCWSTR b,DWORD len); -DWORD STRING32_lstrlenW(LPCWSTR); LPWSTR STRING32_strdupW(LPCWSTR); -int STRING32_lstrcmpW(LPCWSTR,LPCWSTR); #endif diff --git a/include/struct32.h b/include/struct32.h index 702b918a2e3..0fe77695273 100644 --- a/include/struct32.h +++ b/include/struct32.h @@ -35,18 +35,8 @@ typedef struct { WORD cy WINE_PACKED; } DLGTEMPLATE32; -typedef struct tagMSG32 -{ - DWORD hwnd; - DWORD message; - DWORD wParam; - DWORD lParam; - DWORD time; - POINT32 pt; -} MSG32; - -void STRUCT32_MSG16to32(MSG *msg16,MSG32 *msg32); -void STRUCT32_MSG32to16(MSG32 *msg32,MSG *msg16); +void STRUCT32_MSG16to32(const MSG16 *msg16,MSG32 *msg32); +void STRUCT32_MSG32to16(const MSG32 *msg32,MSG16 *msg16); void STRUCT32_CREATESTRUCT32Ato16(const CREATESTRUCT32A*,CREATESTRUCT16*); void STRUCT32_CREATESTRUCT16to32A(const CREATESTRUCT16*,CREATESTRUCT32A*); diff --git a/include/task.h b/include/task.h index ce56b762f20..b00f6fb4a7e 100644 --- a/include/task.h +++ b/include/task.h @@ -119,7 +119,4 @@ extern HTASK TASK_CreateTask( HMODULE hModule, HANDLE hInstance, HANDLE hPrevInstance, HANDLE hEnvironment, char *cmdLine, WORD cmdShow ); - /* TASK_Reschedule() 16-bit entry point */ -extern FARPROC RELAY_RescheduleProcAddr; - #endif /* _WINE_TASK_H */ diff --git a/include/ver.h b/include/ver.h index 23246033953..8672d865d32 100644 --- a/include/ver.h +++ b/include/ver.h @@ -127,6 +127,7 @@ typedef struct tagVS_FIXEDFILEINFO { DWORD dwFileDateLS; } VS_FIXEDFILEINFO; +/* following two aren't in version.dll */ DWORD GetFileResourceSize(LPCSTR filename,SEGPTR restype,SEGPTR resid,LPDWORD off); @@ -135,34 +136,60 @@ GetFileResource(LPCSTR filename,SEGPTR restype,SEGPTR resid, DWORD off,DWORD reslen,LPVOID data ); -DWORD -GetFileVersionInfoSize(LPCSTR filename,LPDWORD handle); +DWORD GetFileVersionInfoSize16(LPCSTR filename,LPDWORD handle); +DWORD GetFileVersionInfoSize32A(LPCSTR filename,LPDWORD handle); +DWORD GetFileVersionInfoSize32W(LPCWSTR filename,LPDWORD handle); +#define GetFileVersionInfoSize WINELIB_NAME_AW(GetFileVersionInfoSize) + +DWORD GetFileVersionInfo16(LPCSTR filename,DWORD handle,DWORD datasize,LPVOID data); +DWORD GetFileVersionInfo32A(LPCSTR filename,DWORD handle,DWORD datasize,LPVOID data); +DWORD GetFileVersionInfo32W(LPCWSTR filename,DWORD handle,DWORD datasize,LPVOID data); +#define GetFileVersionInfo WINELIB_NAME_AW(GetFileVersionInfo) DWORD -GetFileVersionInfo(LPCSTR filename,DWORD handle,DWORD datasize,LPVOID data); - -DWORD -VerFindFile( - UINT flags,LPCSTR filename,LPCSTR windir,LPCSTR appdir, - LPSTR curdir,UINT *curdirlen,LPSTR destdir,UINT*destdirlen +VerFindFile16( + UINT16 flags,LPCSTR filename,LPCSTR windir,LPCSTR appdir, + LPSTR curdir,UINT16 *curdirlen,LPSTR destdir,UINT16 *destdirlen ); - DWORD -VerInstallFile( - UINT flags,LPCSTR srcfilename,LPCSTR destfilename,LPCSTR srcdir, - LPCSTR destdir,LPSTR tmpfile,UINT*tmpfilelen +VerFindFile32A( + UINT32 flags,LPCSTR filename,LPCSTR windir,LPCSTR appdir, + LPSTR curdir,UINT32 *curdirlen,LPSTR destdir,UINT32 *destdirlen ); +DWORD +VerFindFile32W( + UINT32 flags,LPCWSTR filename,LPCWSTR windir,LPCWSTR appdir, + LPWSTR curdir,UINT32 *curdirlen,LPWSTR destdir,UINT32 *destdirlen +); +#define VerFindFile WINELIB_NAME_AW(VerFindFile) DWORD -VerLanguageName(UINT lang,LPSTR langname,UINT langnamelen); - +VerInstallFile16( + UINT16 flags,LPCSTR srcfilename,LPCSTR destfilename,LPCSTR srcdir, + LPCSTR destdir,LPSTR tmpfile,UINT16 *tmpfilelen +); DWORD -VerQueryValue(SEGPTR block,LPCSTR subblock,SEGPTR *buffer,UINT *buflen); +VerInstallFile32A( + UINT32 flags,LPCSTR srcfilename,LPCSTR destfilename,LPCSTR srcdir, + LPCSTR destdir,LPSTR tmpfile,UINT32 *tmpfilelen +); +DWORD +VerInstallFile32W( + UINT32 flags,LPCWSTR srcfilename,LPCWSTR destfilename,LPCWSTR srcdir, + LPCWSTR destdir,LPWSTR tmpfile,UINT32 *tmpfilelen +); +#define VerInstallFile WINELIB_NAME_AW(VerInstallFile) -/* - 20 GETFILEVERSIONINFORAW - 21 VERFTHK_THUNKDATA16 - 22 VERTHKSL_THUNKDATA16 -*/ +DWORD VerLanguageName16(UINT16 lang,LPSTR langname,UINT16 langnamelen); +DWORD VerLanguageName32A(UINT32 lang,LPSTR langname,UINT32 langnamelen); +DWORD VerLanguageName32W(UINT32 lang,LPWSTR langname,UINT32 langnamelen); +#define VerLanguageName WINELIB_NAME_AW(VerLanguageName) + +DWORD VerQueryValue16(SEGPTR block,LPCSTR subblock,SEGPTR *buffer,UINT16 *buflen); +DWORD VerQueryValue32A(LPVOID block,LPCSTR subblock,LPVOID *buffer,UINT32 *buflen); +DWORD VerQueryValue32W(LPVOID block,LPCWSTR subblock,LPVOID *buffer,UINT32 *buflen); +#define VerQueryValue WINELIB_NAME_AW(VerQueryValue) + +/* 20 GETFILEVERSIONINFORAW */ #endif /* __WINE_VER_H */ diff --git a/include/winbase.h b/include/winbase.h index 27ef776022b..6775098a740 100644 --- a/include/winbase.h +++ b/include/winbase.h @@ -1,7 +1,7 @@ #ifndef __WINE_WINBASE_H #define __WINE_WINBASE_H - +#include "wintypes.h" #ifdef UNICODE #define LoadAccelerators LoadAcceleratorsW @@ -112,7 +112,34 @@ typedef struct { DWORD Reserved; }CRITICAL_SECTION; +typedef struct { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + CHAR szCSDVersion[128]; +} OSVERSIONINFO32A; + +typedef struct { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + WCHAR szCSDVersion[128]; +} OSVERSIONINFO32W; + +DECL_WINELIB_TYPE_AW(OSVERSIONINFO); + +#define VER_PLATFORM_WIN32s 0 +#define VER_PLATFORM_WIN32_WINDOWS 1 +#define VER_PLATFORM_WIN32_NT 2 + /*DWORD WINAPI GetVersion( void );*/ +BOOL32 GetVersionEx32A(OSVERSIONINFO32A*); +BOOL32 GetVersionEx32W(OSVERSIONINFO32W*); +#define GetVersionEx WINELIB_NAME_AW(GetVersionEx) int WinMain(HINSTANCE, HINSTANCE prev, char *cmd, int show); diff --git a/include/windows.h b/include/windows.h index 3a1dcec766b..64363f0470c 100644 --- a/include/windows.h +++ b/include/windows.h @@ -91,12 +91,22 @@ DECL_WINELIB_TYPE(LPRECT); ((r16)->left = (INT16)(r32)->left, (r16)->top = (INT16)(r32)->top, \ (r16)->right = (INT16)(r32)->right, (r16)->bottom = (INT16)(r32)->bottom) +typedef struct +{ + WORD wFirst; + WORD wSecond; + INT16 iKernAmount; +} KERNINGPAIR16, *LPKERNINGPAIR16; -typedef struct tagKERNINGPAIR { - WORD wFirst; - WORD wSecond; - INT iKernAmount; -} KERNINGPAIR, *LPKERNINGPAIR; +typedef struct +{ + WORD wFirst; + WORD wSecond; + INT32 iKernAmount; +} KERNINGPAIR32, *LPKERNINGPAIR32; + +DECL_WINELIB_TYPE(KERNINGPAIR); +DECL_WINELIB_TYPE(LPKERNINGPAIR); typedef struct { @@ -177,25 +187,64 @@ DECL_WINELIB_TYPE_AW(LPCREATESTRUCT); typedef struct { - HMENU hWindowMenu; - WORD idFirstChild; -} CLIENTCREATESTRUCT, *LPCLIENTCREATESTRUCT; + HMENU16 hWindowMenu; + UINT16 idFirstChild; +} CLIENTCREATESTRUCT16, *LPCLIENTCREATESTRUCT16; + +typedef struct +{ + HMENU32 hWindowMenu; + UINT32 idFirstChild; +} CLIENTCREATESTRUCT32, *LPCLIENTCREATESTRUCT32; + +DECL_WINELIB_TYPE(CLIENTCREATESTRUCT); +DECL_WINELIB_TYPE(LPCLIENTCREATESTRUCT); typedef struct { - SEGPTR szClass; - SEGPTR szTitle; - HANDLE hOwner; - INT x; - INT y; - INT cx; - INT cy; - LONG style WINE_PACKED; - LONG lParam WINE_PACKED; -} MDICREATESTRUCT, *LPMDICREATESTRUCT; + SEGPTR szClass; + SEGPTR szTitle; + HINSTANCE16 hOwner; + INT16 x; + INT16 y; + INT16 cx; + INT16 cy; + DWORD style WINE_PACKED; + LPARAM lParam WINE_PACKED; +} MDICREATESTRUCT16, *LPMDICREATESTRUCT16; + +typedef struct +{ + LPCSTR szClass; + LPCSTR szTitle; + HINSTANCE32 hOwner; + INT32 x; + INT32 y; + INT32 cx; + INT32 cy; + DWORD style; + LPARAM lParam; +} MDICREATESTRUCT32A, *LPMDICREATESTRUCT32A; + +typedef struct +{ + LPCWSTR szClass; + LPCWSTR szTitle; + HINSTANCE32 hOwner; + INT32 x; + INT32 y; + INT32 cx; + INT32 cy; + DWORD style; + LPARAM lParam; +} MDICREATESTRUCT32W, *LPMDICREATESTRUCT32W; + +DECL_WINELIB_TYPE_AW(MDICREATESTRUCT); +DECL_WINELIB_TYPE_AW(LPMDICREATESTRUCT); #define MDITILE_VERTICAL 0 #define MDITILE_HORIZONTAL 1 +#define MDIS_ALLCHILDSTYLES 0x0001 /* Offsets for GetWindowLong() and GetWindowWord() */ #define GWL_USERDATA (-21) @@ -429,31 +478,68 @@ DECL_WINELIB_TYPE(LPNCCALCSIZE_PARAMS); #define MSGF_USER 4096 /* Journalling hook structure */ -typedef struct tagEVENTMSG + +typedef struct { - UINT message; - UINT paramL; - UINT paramH; + UINT16 message; + UINT16 paramL; + UINT16 paramH; DWORD time WINE_PACKED; -} EVENTMSG, *LPEVENTMSG; +} EVENTMSG16, *LPEVENTMSG16; + +typedef struct +{ + UINT32 message; + UINT32 paramL; + UINT32 paramH; + DWORD time; + HWND32 hwnd; +} EVENTMSG32, *LPEVENTMSG32; + +DECL_WINELIB_TYPE(EVENTMSG); +DECL_WINELIB_TYPE(LPEVENTMSG); /* Mouse hook structure */ -typedef struct tagMOUSEHOOKSTRUCT + +typedef struct { POINT16 pt; HWND16 hwnd; - WORD wHitTestCode; + UINT16 wHitTestCode; DWORD dwExtraInfo; -} MOUSEHOOKSTRUCT, *LPMOUSEHOOKSTRUCT; +} MOUSEHOOKSTRUCT16, *LPMOUSEHOOKSTRUCT16; + +typedef struct +{ + POINT32 pt; + HWND32 hwnd; + UINT32 wHitTestCode; + DWORD dwExtraInfo; +} MOUSEHOOKSTRUCT32, *LPMOUSEHOOKSTRUCT32; + +DECL_WINELIB_TYPE(MOUSEHOOKSTRUCT); +DECL_WINELIB_TYPE(LPMOUSEHOOKSTRUCT); /* Hardware hook structure */ -typedef struct tagHARDWAREHOOKSTRUCT + +typedef struct { - HWND hWnd; - UINT wMessage; - WPARAM wParam; - LPARAM lParam WINE_PACKED; -} HARDWAREHOOKSTRUCT; + HWND16 hWnd; + UINT16 wMessage; + WPARAM16 wParam; + LPARAM lParam WINE_PACKED; +} HARDWAREHOOKSTRUCT16, *LPHARDWAREHOOKSTRUCT16; + +typedef struct +{ + HWND32 hWnd; + UINT32 wMessage; + WPARAM32 wParam; + LPARAM lParam; +} HARDWAREHOOKSTRUCT32, *LPHARDWAREHOOKSTRUCT32; + +DECL_WINELIB_TYPE(HARDWAREHOOKSTRUCT); +DECL_WINELIB_TYPE(LPHARDWAREHOOKSTRUCT); /* CBT hook values */ #define HCBT_MOVESIZE 0 @@ -468,17 +554,41 @@ typedef struct tagHARDWAREHOOKSTRUCT #define HCBT_SETFOCUS 9 /* CBT hook structures */ -typedef struct tagCBT_CREATEWND -{ - CREATESTRUCT16 *lpcs; - HWND hwndInsertAfter; -} CBT_CREATEWND, *LPCBT_CREATEWND; -typedef struct tagCBTACTIVATESTRUCT +typedef struct { - BOOL fMouse; - HWND hWndActive; -} CBTACTIVATESTRUCT; + CREATESTRUCT16 *lpcs; + HWND16 hwndInsertAfter; +} CBT_CREATEWND16, *LPCBT_CREATEWND16; + +typedef struct +{ + CREATESTRUCT32A *lpcs; + HWND32 hwndInsertAfter; +} CBT_CREATEWND32A, *LPCBT_CREATEWND32A; + +typedef struct +{ + CREATESTRUCT32W *lpcs; + HWND32 hwndInsertAfter; +} CBT_CREATEWND32W, *LPCBT_CREATEWND32W; + +DECL_WINELIB_TYPE_AW(CBT_CREATEWND); +DECL_WINELIB_TYPE_AW(LPCBT_CREATEWND); + +typedef struct +{ + BOOL16 fMouse; + HWND16 hWndActive; +} CBTACTIVATESTRUCT16; + +typedef struct +{ + BOOL32 fMouse; + HWND32 hWndActive; +} CBTACTIVATESTRUCT32; + +DECL_WINELIB_TYPE(CBTACTIVATESTRUCT); /* Shell hook values */ #define HSHELL_WINDOWCREATED 1 @@ -486,15 +596,27 @@ typedef struct tagCBTACTIVATESTRUCT #define HSHELL_ACTIVATESHELLWINDOW 3 /* Debug hook structure */ -typedef struct tagDEBUGHOOKINFO + +typedef struct { - HANDLE hModuleHook; + HMODULE16 hModuleHook; LPARAM reserved WINE_PACKED; LPARAM lParam WINE_PACKED; - WPARAM wParam; - short code; -} DEBUGHOOKINFO, *LPDEBUGHOOKINFO; + WPARAM16 wParam; + INT16 code; +} DEBUGHOOKINFO16, *LPDEBUGHOOKINFO16; +typedef struct +{ + DWORD idThread; + DWORD idThreadInstaller; + LPARAM lParam; + WPARAM32 wParam; + INT32 code; +} DEBUGHOOKINFO32, *LPDEBUGHOOKINFO32; + +DECL_WINELIB_TYPE(DEBUGHOOKINFO); +DECL_WINELIB_TYPE(LPDEBUGHOOKINFO); /***** Dialogs *****/ @@ -538,15 +660,28 @@ typedef struct tagDEBUGHOOKINFO #define IDNO 7 -typedef struct tagMSG +typedef struct { - HWND16 hwnd; - UINT16 message; - WPARAM16 wParam; - LPARAM lParam WINE_PACKED; - DWORD time WINE_PACKED; - POINT16 pt WINE_PACKED; -} MSG, *LPMSG; + HWND16 hwnd; + UINT16 message; + WPARAM16 wParam; + LPARAM lParam WINE_PACKED; + DWORD time WINE_PACKED; + POINT16 pt WINE_PACKED; +} MSG16, *LPMSG16; + +typedef struct +{ + HWND32 hwnd; + UINT32 message; + WPARAM32 wParam; + LPARAM lParam; + DWORD time; + POINT32 pt; +} MSG32, *LPMSG32; + +DECL_WINELIB_TYPE(MSG); +DECL_WINELIB_TYPE(LPMSG); /* Raster operations */ @@ -638,29 +773,49 @@ typedef DWORD COLORREF; /* Bitmaps */ -typedef struct tagBITMAP +typedef struct { - INT bmType; - INT bmWidth; - INT bmHeight; - INT bmWidthBytes; + INT16 bmType; + INT16 bmWidth; + INT16 bmHeight; + INT16 bmWidthBytes; BYTE bmPlanes; BYTE bmBitsPixel; SEGPTR bmBits WINE_PACKED; -} BITMAP; +} BITMAP16, *LPBITMAP16; -typedef BITMAP *PBITMAP; -typedef BITMAP *NPBITMAP; -typedef BITMAP *LPBITMAP; +typedef struct +{ + INT32 bmType; + INT32 bmWidth; + INT32 bmHeight; + INT32 bmWidthBytes; + WORD bmPlanes; + WORD bmBitsPixel; + LPVOID bmBits WINE_PACKED; +} BITMAP32, *LPBITMAP32; + +DECL_WINELIB_TYPE(BITMAP); +DECL_WINELIB_TYPE(LPBITMAP); /* Brushes */ -typedef struct tagLOGBRUSH +typedef struct { - WORD lbStyle; + UINT16 lbStyle; COLORREF lbColor WINE_PACKED; - INT lbHatch; -} LOGBRUSH, *PLOGBRUSH, *NPLOGBRUSH, *LPLOGBRUSH; + INT16 lbHatch; +} LOGBRUSH16, *LPLOGBRUSH16; + +typedef struct +{ + UINT32 lbStyle; + COLORREF lbColor; + INT32 lbHatch; +} LOGBRUSH32, *LPLOGBRUSH32; + +DECL_WINELIB_TYPE(LOGBRUSH); +DECL_WINELIB_TYPE(LPLOGBRUSH); /* Brush styles */ #define BS_SOLID 0 @@ -684,20 +839,86 @@ typedef struct tagLOGBRUSH #define LF_FACESIZE 32 #define LF_FULLFACESIZE 64 -typedef struct tagLOGFONT +typedef struct { - INT lfHeight, lfWidth, lfEscapement, lfOrientation, lfWeight; - BYTE lfItalic, lfUnderline, lfStrikeOut, lfCharSet; - BYTE lfOutPrecision, lfClipPrecision, lfQuality, lfPitchAndFamily; - BYTE lfFaceName[LF_FACESIZE] WINE_PACKED; -} LOGFONT, *PLOGFONT, *NPLOGFONT, *LPLOGFONT; + INT16 lfHeight; + INT16 lfWidth; + INT16 lfEscapement; + INT16 lfOrientation; + INT16 lfWeight; + BYTE lfItalic; + BYTE lfUnderline; + BYTE lfStrikeOut; + BYTE lfCharSet; + BYTE lfOutPrecision; + BYTE lfClipPrecision; + BYTE lfQuality; + BYTE lfPitchAndFamily; + CHAR lfFaceName[LF_FACESIZE] WINE_PACKED; +} LOGFONT16, *LPLOGFONT16; -typedef struct tagENUMLOGFONT +typedef struct { - LOGFONT elfLogFont; - BYTE elfFullName[LF_FULLFACESIZE] WINE_PACKED; - BYTE elfStyle[LF_FACESIZE] WINE_PACKED; -} ENUMLOGFONT,*PENUMLOGFONT,*NPENUMLOGFONT,*LPENUMLOGFONT; + INT32 lfHeight; + INT32 lfWidth; + INT32 lfEscapement; + INT32 lfOrientation; + INT32 lfWeight; + BYTE lfItalic; + BYTE lfUnderline; + BYTE lfStrikeOut; + BYTE lfCharSet; + BYTE lfOutPrecision; + BYTE lfClipPrecision; + BYTE lfQuality; + BYTE lfPitchAndFamily; + CHAR lfFaceName[LF_FACESIZE]; +} LOGFONT32A, *LPLOGFONT32A; + +typedef struct +{ + INT32 lfHeight; + INT32 lfWidth; + INT32 lfEscapement; + INT32 lfOrientation; + INT32 lfWeight; + BYTE lfItalic; + BYTE lfUnderline; + BYTE lfStrikeOut; + BYTE lfCharSet; + BYTE lfOutPrecision; + BYTE lfClipPrecision; + BYTE lfQuality; + BYTE lfPitchAndFamily; + WCHAR lfFaceName[LF_FACESIZE]; +} LOGFONT32W, *LPLOGFONT32W; + +DECL_WINELIB_TYPE_AW(LOGFONT); +DECL_WINELIB_TYPE_AW(LPLOGFONT); + +typedef struct +{ + LOGFONT16 elfLogFont; + BYTE elfFullName[LF_FULLFACESIZE] WINE_PACKED; + BYTE elfStyle[LF_FACESIZE] WINE_PACKED; +} ENUMLOGFONT16, *LPENUMLOGFONT16; + +typedef struct +{ + LOGFONT32A elfLogFont; + BYTE elfFullName[LF_FULLFACESIZE] WINE_PACKED; + BYTE elfStyle[LF_FACESIZE] WINE_PACKED; +} ENUMLOGFONT32A, *LPENUMLOGFONT32A; + +typedef struct +{ + LOGFONT32W elfLogFont; + WCHAR elfFullName[LF_FULLFACESIZE] WINE_PACKED; + WCHAR elfStyle[LF_FACESIZE] WINE_PACKED; +} ENUMLOGFONT32W, *LPENUMLOGFONT32W; + +DECL_WINELIB_TYPE_AW(ENUMLOGFONT); +DECL_WINELIB_TYPE_AW(LPENUMLOGFONT); /* lfWeight values */ #define FW_DONTCARE 0 @@ -758,29 +979,80 @@ typedef struct tagENUMLOGFONT #define FF_SCRIPT 0x40 #define FF_DECORATIVE 0x50 -typedef struct tagTEXTMETRIC +typedef struct { - INT tmHeight; - INT tmAscent; - INT tmDescent; - INT tmInternalLeading; - INT tmExternalLeading; - INT tmAveCharWidth; - INT tmMaxCharWidth; - INT tmWeight; - BYTE tmItalic; - BYTE tmUnderlined; - BYTE tmStruckOut; - BYTE tmFirstChar; - BYTE tmLastChar; - BYTE tmDefaultChar; - BYTE tmBreakChar; - BYTE tmPitchAndFamily; - BYTE tmCharSet; - INT tmOverhang WINE_PACKED; - INT tmDigitizedAspectX WINE_PACKED; - INT tmDigitizedAspectY WINE_PACKED; -} TEXTMETRIC, *PTEXTMETRIC, *NPTEXTMETRIC, *LPTEXTMETRIC; + INT16 tmHeight; + INT16 tmAscent; + INT16 tmDescent; + INT16 tmInternalLeading; + INT16 tmExternalLeading; + INT16 tmAveCharWidth; + INT16 tmMaxCharWidth; + INT16 tmWeight; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmFirstChar; + BYTE tmLastChar; + BYTE tmDefaultChar; + BYTE tmBreakChar; + BYTE tmPitchAndFamily; + BYTE tmCharSet; + INT16 tmOverhang WINE_PACKED; + INT16 tmDigitizedAspectX WINE_PACKED; + INT16 tmDigitizedAspectY WINE_PACKED; +} TEXTMETRIC16, *LPTEXTMETRIC16; + +typedef struct +{ + INT32 tmHeight; + INT32 tmAscent; + INT32 tmDescent; + INT32 tmInternalLeading; + INT32 tmExternalLeading; + INT32 tmAveCharWidth; + INT32 tmMaxCharWidth; + INT32 tmWeight; + INT32 tmOverhang; + INT32 tmDigitizedAspectX; + INT32 tmDigitizedAspectY; + BYTE tmFirstChar; + BYTE tmLastChar; + BYTE tmDefaultChar; + BYTE tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; +} TEXTMETRIC32A, *LPTEXTMETRIC32A; + +typedef struct +{ + INT32 tmHeight; + INT32 tmAscent; + INT32 tmDescent; + INT32 tmInternalLeading; + INT32 tmExternalLeading; + INT32 tmAveCharWidth; + INT32 tmMaxCharWidth; + INT32 tmWeight; + INT32 tmOverhang; + INT32 tmDigitizedAspectX; + INT32 tmDigitizedAspectY; + WCHAR tmFirstChar; + WCHAR tmLastChar; + WCHAR tmDefaultChar; + WCHAR tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; +} TEXTMETRIC32W, *LPTEXTMETRIC32W; + +DECL_WINELIB_TYPE_AW(TEXTMETRIC); +DECL_WINELIB_TYPE_AW(LPTEXTMETRIC); /* tmPitchAndFamily values */ #define TMPF_FIXED_PITCH 1 @@ -804,12 +1076,22 @@ typedef struct tagTEXTMETRIC #define ETO_CLIPPED 0x04 /* for GetCharABCWidths() */ -typedef struct tagABC +typedef struct { - INT abcA; - UINT abcB; - INT abcC; -} ABC, *LPABC; + INT16 abcA; + UINT16 abcB; + INT16 abcC; +} ABC16, *LPABC16; + +typedef struct +{ + INT32 abcA; + UINT32 abcB; + INT32 abcC; +} ABC32, *LPABC32; + +DECL_WINELIB_TYPE(ABC); +DECL_WINELIB_TYPE(LPABC); /* Rasterizer status */ typedef struct @@ -831,22 +1113,31 @@ typedef struct tagPALETTEENTRY BYTE peRed, peGreen, peBlue, peFlags; } PALETTEENTRY, *LPPALETTEENTRY; -typedef struct tagLOGPALETTE +typedef struct { WORD palVersion; WORD palNumEntries; PALETTEENTRY palPalEntry[1] WINE_PACKED; -} LOGPALETTE, *PLOGPALETTE, *NPLOGPALETTE, *LPLOGPALETTE; - +} LOGPALETTE, *LPLOGPALETTE; /* Pens */ -typedef struct tagLOGPEN +typedef struct { - WORD lopnStyle; + UINT16 lopnStyle; POINT16 lopnWidth WINE_PACKED; COLORREF lopnColor WINE_PACKED; -} LOGPEN, *PLOGPEN, *NPLOGPEN, *LPLOGPEN; +} LOGPEN16, *LPLOGPEN16; + +typedef struct +{ + UINT32 lopnStyle; + POINT32 lopnWidth WINE_PACKED; + COLORREF lopnColor WINE_PACKED; +} LOGPEN32, *LPLOGPEN32; + +DECL_WINELIB_TYPE(LOGPEN); +DECL_WINELIB_TYPE(LPLOGPEN); #define PS_SOLID 0 #define PS_DASH 1 @@ -1079,14 +1370,14 @@ typedef struct { BYTE rgbtBlue, rgbtGreen, rgbtRed; } RGBTRIPLE; typedef struct { - UINT bfType; + UINT16 bfType; DWORD bfSize WINE_PACKED; - UINT bfReserved1 WINE_PACKED; - UINT bfReserved2 WINE_PACKED; + UINT16 bfReserved1 WINE_PACKED; + UINT16 bfReserved2 WINE_PACKED; DWORD bfOffBits WINE_PACKED; } BITMAPFILEHEADER; -typedef struct tagBITMAPINFOHEADER +typedef struct { DWORD biSize; DWORD biWidth; @@ -1099,11 +1390,7 @@ typedef struct tagBITMAPINFOHEADER DWORD biYPelsPerMeter; DWORD biClrUsed; DWORD biClrImportant; -} BITMAPINFOHEADER; - -typedef BITMAPINFOHEADER * LPBITMAPINFOHEADER; -typedef BITMAPINFOHEADER * NPBITMAPINFOHEADER; -typedef BITMAPINFOHEADER * PBITMAPINFOHEADER; +} BITMAPINFOHEADER, *LPBITMAPINFOHEADER; /* biCompression */ #define BI_RGB 0 @@ -1120,11 +1407,11 @@ typedef BITMAPINFO *PBITMAPINFO; typedef struct { - DWORD bcSize; - UINT bcWidth; - UINT bcHeight; - UINT bcPlanes; - UINT bcBitCount; + DWORD bcSize; + UINT16 bcWidth; + UINT16 bcHeight; + UINT16 bcPlanes; + UINT16 bcBitCount; } BITMAPCOREHEADER; typedef struct @@ -1211,16 +1498,17 @@ typedef OFSTRUCT *LPOFSTRUCT; /* The security attributes structure */ -typedef struct { - DWORD nLength; - void *lpSecurityDescriptor; - BOOL bInheritHandle; +typedef struct +{ + DWORD nLength; + LPVOID lpSecurityDescriptor; + BOOL32 bInheritHandle; } SECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES; typedef struct { - int dwLowDateTime; - int dwHighDateTime; + INT32 dwLowDateTime; + INT32 dwHighDateTime; } FILETIME; /* comm */ @@ -1311,47 +1599,47 @@ typedef struct typedef struct tagDCB { - BYTE Id; - UINT BaudRate WINE_PACKED; - BYTE ByteSize; - BYTE Parity; - BYTE StopBits; - UINT RlsTimeout; - UINT CtsTimeout; - UINT DsrTimeout; + BYTE Id; + UINT16 BaudRate WINE_PACKED; + BYTE ByteSize; + BYTE Parity; + BYTE StopBits; + UINT16 RlsTimeout; + UINT16 CtsTimeout; + UINT16 DsrTimeout; - UINT fBinary :1; - UINT fRtsDisable :1; - UINT fParity :1; - UINT fOutxCtsFlow :1; - UINT fOutxDsrFlow :1; - UINT fDummy :2; - UINT fDtrDisable :1; + UINT16 fBinary :1; + UINT16 fRtsDisable :1; + UINT16 fParity :1; + UINT16 fOutxCtsFlow :1; + UINT16 fOutxDsrFlow :1; + UINT16 fDummy :2; + UINT16 fDtrDisable :1; - UINT fOutX :1; - UINT fInX :1; - UINT fPeChar :1; - UINT fNull :1; - UINT fChEvt :1; - UINT fDtrflow :1; - UINT fRtsflow :1; - UINT fDummy2 :1; + UINT16 fOutX :1; + UINT16 fInX :1; + UINT16 fPeChar :1; + UINT16 fNull :1; + UINT16 fChEvt :1; + UINT16 fDtrflow :1; + UINT16 fRtsflow :1; + UINT16 fDummy2 :1; - char XonChar; - char XoffChar; - UINT XonLim; - UINT XoffLim; - char PeChar; - char EofChar; - char EvtChar; - UINT TxDelay WINE_PACKED; + CHAR XonChar; + CHAR XoffChar; + UINT16 XonLim; + UINT16 XoffLim; + CHAR PeChar; + CHAR EofChar; + CHAR EvtChar; + UINT16 TxDelay WINE_PACKED; } DCB, *LPDCB; typedef struct tagCOMSTAT { - BYTE status; - UINT cbInQue WINE_PACKED; - UINT cbOutQue WINE_PACKED; + BYTE status; + UINT16 cbInQue WINE_PACKED; + UINT16 cbOutQue WINE_PACKED; } COMSTAT; #define CSTF_CTSHOLD 0x01 @@ -1555,14 +1843,15 @@ typedef struct tagCOMSTAT /* DragObject stuff */ -typedef struct tagDRAGINFO { - HWND hWnd; - HANDLE hScope; - WORD wFlags; - HANDLE hList; - HANDLE hOfStruct; - POINT16 pt WINE_PACKED; - LONG l WINE_PACKED; +typedef struct +{ + HWND16 hWnd; + HANDLE16 hScope; + WORD wFlags; + HANDLE16 hList; + HANDLE16 hOfStruct; + POINT16 pt WINE_PACKED; + LONG l WINE_PACKED; } DRAGINFO, *LPDRAGINFO; #define DRAGOBJ_PROGRAM 0x0001 @@ -2357,33 +2646,74 @@ DECL_WINELIB_TYPE(LPDRAWITEMSTRUCT); typedef struct { - UINT CtlType; - UINT CtlID; - UINT itemID; - UINT itemWidth; - UINT itemHeight; + UINT16 CtlType; + UINT16 CtlID; + UINT16 itemID; + UINT16 itemWidth; + UINT16 itemHeight; DWORD itemData WINE_PACKED; -} MEASUREITEMSTRUCT, *PMEASUREITEMSTRUCT, *LPMEASUREITEMSTRUCT; +} MEASUREITEMSTRUCT16, *PMEASUREITEMSTRUCT16, *LPMEASUREITEMSTRUCT16; typedef struct { - UINT CtlType; - UINT CtlID; - UINT itemID; - HWND hwndItem; + UINT32 CtlType; + UINT32 CtlID; + UINT32 itemID; + UINT32 itemWidth; + UINT32 itemHeight; + DWORD itemData; +} MEASUREITEMSTRUCT32, *PMEASUREITEMSTRUCT32, *LPMEASUREITEMSTRUCT32; + +DECL_WINELIB_TYPE(MEASUREITEMSTRUCT); +DECL_WINELIB_TYPE(PMEASUREITEMSTRUCT); +DECL_WINELIB_TYPE(LPMEASUREITEMSTRUCT); + +typedef struct +{ + UINT16 CtlType; + UINT16 CtlID; + UINT16 itemID; + HWND16 hwndItem; DWORD itemData; -} DELETEITEMSTRUCT, *PDELETEITEMSTRUCT, *LPDELETEITEMSTRUCT; +} DELETEITEMSTRUCT16, *LPDELETEITEMSTRUCT16; typedef struct { - UINT CtlType; - UINT CtlID; - HWND hwndItem; - UINT itemID1; + UINT32 CtlType; + UINT32 CtlID; + UINT32 itemID; + HWND32 hwndItem; + DWORD itemData; +} DELETEITEMSTRUCT32, *LPDELETEITEMSTRUCT32; + +DECL_WINELIB_TYPE(DELETEITEMSTRUCT); +DECL_WINELIB_TYPE(LPDELETEITEMSTRUCT); + +typedef struct +{ + UINT16 CtlType; + UINT16 CtlID; + HWND16 hwndItem; + UINT16 itemID1; DWORD itemData1; - UINT itemID2; + UINT16 itemID2; DWORD itemData2 WINE_PACKED; -} COMPAREITEMSTRUCT, *PCOMPAREITEMSTRUCT, *LPCOMPAREITEMSTRUCT; +} COMPAREITEMSTRUCT16, *LPCOMPAREITEMSTRUCT16; + +typedef struct +{ + UINT32 CtlType; + UINT32 CtlID; + HWND32 hwndItem; + UINT32 itemID1; + DWORD itemData1; + UINT32 itemID2; + DWORD itemData2; + DWORD dwLocaleId; +} COMPAREITEMSTRUCT32, *LPCOMPAREITEMSTRUCT32; + +DECL_WINELIB_TYPE(COMPAREITEMSTRUCT); +DECL_WINELIB_TYPE(LPCOMPAREITEMSTRUCT); /* WM_KEYUP/DOWN/CHAR HIWORD(lParam) flags */ #define KF_EXTENDED 0x0100 @@ -2571,7 +2901,7 @@ typedef METARECORD *LPMETARECORD; /* Handle table structure */ typedef struct { - HANDLE objectHandle[1]; + HANDLE16 objectHandle[1]; } HANDLETABLE; typedef HANDLETABLE *PHANDLETABLE; typedef HANDLETABLE *LPHANDLETABLE; @@ -2579,12 +2909,11 @@ typedef HANDLETABLE *LPHANDLETABLE; /* Clipboard metafile picture structure */ typedef struct { - INT mm; - INT xExt; - INT yExt; - HMETAFILE hMF; -} METAFILEPICT; -typedef METAFILEPICT *LPMETAFILEPICT; + INT16 mm; + INT16 xExt; + INT16 yExt; + HMETAFILE16 hMF; +} METAFILEPICT, *LPMETAFILEPICT; /* Metafile functions */ #define META_SETBKCOLOR 0x0201 @@ -2669,10 +2998,10 @@ typedef METAFILEPICT *LPMETAFILEPICT; /* Debugging support (DEBUG SYSTEM ONLY) */ typedef struct { - UINT flags; + UINT16 flags; DWORD dwOptions WINE_PACKED; DWORD dwFilter WINE_PACKED; - char achAllocModule[8] WINE_PACKED; + CHAR achAllocModule[8] WINE_PACKED; DWORD dwAllocBreak WINE_PACKED; DWORD dwAllocCount WINE_PACKED; } WINDEBUGINFO, *LPWINDEBUGINFO; @@ -2737,10 +3066,11 @@ typedef struct { WORD ofsData; } WINHELP,*LPWINHELP; -typedef struct { - UINT mkSize; - BYTE mkKeyList; - BYTE szKeyPhrase[1]; +typedef struct +{ + UINT16 mkSize; + BYTE mkKeyList; + BYTE szKeyPhrase[1]; } MULTIKEYHELP, *LPMULTIKEYHELP; typedef struct { @@ -2799,7 +3129,7 @@ typedef struct { typedef struct _SYSTEM_POWER_STATUS { - BOOL ACLineStatus; + BOOL16 ACLineStatus; BYTE BatteryFlag; BYTE BatteryLifePercent; BYTE reserved; @@ -2812,596 +3142,42 @@ typedef struct _SYSTEM_POWER_STATUS #pragma pack(4) #endif +/* Declarations for functions that exist only in Win16 */ -INT AccessResource(HINSTANCE,HRSRC); -ATOM AddAtom(SEGPTR); -INT AddFontResource(LPCSTR); -WORD AllocCStoDSAlias(WORD); -WORD AllocDStoCSAlias(WORD); -HGLOBAL AllocResource(HINSTANCE,HRSRC,DWORD); -WORD AllocSelector(WORD); -WORD AllocSelectorArray(WORD); -BOOL AnimatePalette(HPALETTE16,UINT,UINT,LPPALETTEENTRY); -LPSTR AnsiLower(LPSTR); -UINT AnsiLowerBuff(LPSTR,UINT); -SEGPTR AnsiNext(SEGPTR); -SEGPTR AnsiPrev(SEGPTR,SEGPTR); -INT AnsiToOem(LPSTR,LPSTR); -void AnsiToOemBuff(LPCSTR,LPSTR,UINT); -LPSTR AnsiUpper(LPSTR); -UINT AnsiUpperBuff(LPSTR,UINT); -BOOL AnyPopup(void); -BOOL Arc(HDC,INT,INT,INT,INT,INT,INT,INT,INT); -UINT ArrangeIconicWindows(HWND); -HDWP16 BeginDeferWindowPos(INT); -BOOL BitBlt(HDC,INT,INT,INT,INT,HDC,INT,INT,DWORD); -BOOL BringWindowToTop(HWND); -BOOL BuildCommDCB(LPCSTR,DCB*); -void CalcChildScroll(HWND,WORD); -BOOL CallMsgFilter(SEGPTR,INT); -LRESULT CallNextHookEx(HHOOK,INT,WPARAM,LPARAM); -INT Catch(LPCATCHBUF); -BOOL ChangeClipboardChain(HWND,HWND); -WORD ChangeSelector(WORD,WORD); -BOOL CheckDlgButton(HWND,INT,UINT); -INT CheckMenuItem(HMENU,UINT,UINT); -BOOL CheckRadioButton(HWND,UINT,UINT,UINT); -BOOL Chord(HDC,INT,INT,INT,INT,INT,INT,INT,INT); -int ClearCommBreak(int); -BOOL CloseClipboard(void); -int CloseComm(int); -HMETAFILE CloseMetaFile(HDC); -void CloseSound(void); -BOOL CloseWindow(HWND); -INT16 CombineRgn(HRGN32,HRGN32,HRGN32,INT32); -int ConvertRequest(HWND,LPKANJISTRUCT); -#ifdef WINELIB32 -HCURSOR CopyCursor(HCURSOR); /* Win32 */ -HICON CopyIcon(HICON); /* Win32 */ -#else -HCURSOR CopyCursor(HINSTANCE,HCURSOR); /* Win16 */ -HICON CopyIcon(HINSTANCE,HICON); /* Win16 */ -#endif -HMETAFILE CopyMetaFile(HMETAFILE,LPCSTR); -INT CountClipboardFormats(void); -INT CountVoiceNotes(INT); -HBITMAP CreateBitmap(INT,INT,UINT,UINT,LPVOID); -HBITMAP CreateBitmapIndirect(const BITMAP*); -HBRUSH CreateBrushIndirect(const LOGBRUSH*); -BOOL CreateCaret(HWND,HBITMAP,INT,INT); -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(LPCSTR,LPCSTR,LPCSTR,const DEVMODE*); -HBRUSH CreateDIBPatternBrush(HGLOBAL,UINT); -HBITMAP CreateDIBitmap(HDC,BITMAPINFOHEADER*,DWORD,LPVOID,BITMAPINFO*,UINT); -HBITMAP CreateDiscardableBitmap(HDC,INT,INT); -HRGN CreateEllipticRgn(INT32,INT32,INT32,INT32); -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(LPCSTR,LPCSTR,LPCSTR,const DEVMODE*); -HICON CreateIcon(HINSTANCE,INT,INT,BYTE,BYTE,const BYTE*,const BYTE*); -HMENU CreateMenu(void); -HDC CreateMetaFile(LPCSTR); -HPALETTE16 CreatePalette(const LOGPALETTE*); -HBRUSH CreatePatternBrush(HBITMAP); -HPEN16 CreatePen(INT,INT,COLORREF); -HPEN16 CreatePenIndirect(const LOGPEN*); -HMENU CreatePopupMenu(void); -HRGN CreateRectRgn(INT32,INT32,INT32,INT32); -HRGN CreateRoundRectRgn(INT32,INT32,INT32,INT32,INT32,INT32); -HBRUSH CreateSolidBrush(COLORREF); -void DebugBreak(void); -DWORD DefHookProc(short,WORD,DWORD,HHOOK*); -HDWP16 DeferWindowPos(HDWP16,HWND,HWND,INT,INT,INT,INT,UINT); -ATOM DeleteAtom(ATOM); -BOOL DeleteDC(HDC); -BOOL DeleteMenu(HMENU,UINT,UINT); -BOOL DeleteMetaFile(HMETAFILE); -BOOL DeleteObject(HGDIOBJ16); -BOOL DestroyCaret(void); -BOOL DestroyCursor(HCURSOR); -BOOL DestroyIcon(HICON); -BOOL DestroyMenu(HMENU); -BOOL DestroyWindow(HWND); -HANDLE DirectResAlloc(HANDLE,WORD,WORD); -void DirectedYield(HTASK); -LONG DispatchMessage(const MSG*); -INT DlgDirList(HWND,SEGPTR,INT,INT,UINT); -BOOL DlgDirSelect(HWND,LPSTR,INT); -BOOL DlgDirSelectComboBox(HWND,LPSTR,INT); -BOOL16 DragDetect(HWND16,POINT16); -DWORD DragObject(HWND, HWND, WORD, HANDLE, WORD, HCURSOR); -BOOL DrawIcon(HDC,INT,INT,HICON); -void DrawMenuBar(HWND); -DWORD DumpIcon(SEGPTR,WORD*,SEGPTR*,SEGPTR*); -BOOL Ellipse(HDC,INT,INT,INT,INT); -BOOL EmptyClipboard(void); -BOOL EnableHardwareInput(BOOL); -BOOL EnableMenuItem(HMENU,UINT,UINT); -BOOL EnableScrollBar(HWND,UINT,UINT); -BOOL EnableWindow(HWND,BOOL); -BOOL EndDeferWindowPos(HDWP16); -BOOL EnumChildWindows(HWND,WNDENUMPROC,LPARAM); -UINT EnumClipboardFormats(UINT); -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); -BOOL EnumTaskWindows(HTASK,WNDENUMPROC,LPARAM); -BOOL EnumWindows(WNDENUMPROC,LPARAM); -BOOL EqualRgn(HRGN32,HRGN32); -INT Escape(HDC,INT,INT,LPCSTR,LPVOID); -LONG EscapeCommFunction(int,int); -int ExcludeClipRect(HDC,short,short,short,short); -int ExcludeVisRect(HDC,short,short,short,short); -BOOL ExitWindows(DWORD,WORD); -BOOL ExtFloodFill(HDC,INT,INT,COLORREF,WORD); -HICON ExtractIcon(HINSTANCE,LPCSTR,WORD); -WORD FarGetOwner(HANDLE); -void FarSetOwner(HANDLE,HANDLE); -void FatalAppExit(UINT,LPCSTR); -void FatalExit(int); -BOOL FillRgn(HDC,HRGN,HBRUSH); -ATOM FindAtom(SEGPTR); -HINSTANCE FindExecutable(LPCSTR,LPCSTR,LPSTR); -HRSRC FindResource(HINSTANCE,SEGPTR,SEGPTR); -BOOL FlashWindow(HWND,BOOL); -BOOL FloodFill(HDC,INT,INT,COLORREF); -int FlushComm(int,int); -BOOL FrameRgn(HDC,HRGN,HBRUSH,int,int); -void FreeLibrary(HANDLE); -BOOL FreeModule(HANDLE); -void FreeProcInstance(FARPROC); -BOOL FreeResource(HGLOBAL); -WORD FreeSelector(WORD); -UINT GDIRealizePalette(HDC); -HPALETTE16 GDISelectPalette(HDC,HPALETTE16); -HWND GetActiveWindow(void); -DWORD GetAspectRatioFilter(HDC); -int GetAsyncKeyState(int); -HANDLE GetAtomHandle(ATOM); -WORD GetAtomName(ATOM,LPSTR,short); -LONG GetBitmapBits(HBITMAP,LONG,LPSTR); -COLORREF GetBkColor(HDC); -WORD GetBkMode(HDC); -DWORD GetBrushOrg(HDC); -HWND GetCapture(void); -WORD GetCaretBlinkTime(void); -BOOL GetCharABCWidths(HDC,UINT,UINT,LPABC); -BOOL GetCharWidth(HDC,WORD,WORD,LPINT16); -HRGN GetClipRgn(HDC); -HANDLE GetClipboardData(WORD); -int GetClipboardFormatName(WORD,LPSTR,short); -HWND GetClipboardOwner(void); -HWND GetClipboardViewer(void); -HANDLE GetCodeHandle(FARPROC); -void GetCodeInfo(FARPROC,LPVOID); -int GetCommError(int,COMSTAT*); -UINT GetCommEventMask(int,int); -int GetCommState(int,DCB*); -HBRUSH GetControlBrush(HWND,HDC,WORD); -UINT32 GetCurrentDirectory(UINT32,LPSTR); -HANDLE GetCurrentPDB(void); -DWORD GetCurrentPosition(HDC); -HANDLE GetCurrentTask(void); -DWORD GetCurrentTime(void); -HCURSOR GetCursor(void); -HDC GetDC(HWND); -HDC GetDCEx(HWND,HRGN,DWORD); -DWORD GetDCHook(HDC,FARPROC16*); -DWORD GetDCOrg(HDC); -HDC GetDCState(HDC); -int GetDIBits(HDC,HANDLE,WORD,WORD,LPSTR,LPBITMAPINFO,WORD); -SEGPTR GetDOSEnvironment(void); -HWND GetDesktopHwnd(void); -HWND GetDesktopWindow(void); -int GetDeviceCaps(HDC,WORD); -DWORD GetDialogBaseUnits(void); -int GetDlgCtrlID(HWND); -HWND GetDlgItem(HWND,WORD); -WORD GetDlgItemInt(HWND,WORD,BOOL*,BOOL); -WORD GetDoubleClickTime(void); -WORD GetDriveType(INT); -int GetEnvironment(LPSTR,LPSTR,WORD); -HMODULE GetExePtr(HANDLE); -HWND GetFocus(void); -DWORD GetFreeSpace(UINT16); -DWORD GetHeapSpaces(HMODULE); -BOOL GetInputState(void); -int GetInstanceData(HANDLE,WORD,int); -int GetKBCodePage(void); -int GetKerningPairs(HDC,int,LPKERNINGPAIR); -int GetKeyNameText(LONG,LPSTR,int); -INT GetKeyState(INT); -void GetKeyboardState(BYTE*); -int GetKeyboardType(int); -HWND GetLastActivePopup(HWND); -VOID GetLocalTime(LPSYSTEMTIME); /* Win32 */ -WORD GetMapMode(HDC); -HMENU GetMenu(HWND); -DWORD GetMenuCheckMarkDimensions(void); -INT GetMenuItemCount(HMENU); -UINT GetMenuItemID(HMENU,int); -UINT GetMenuState(HMENU,UINT,UINT); -int GetMenuString(HMENU,UINT,LPSTR,short,UINT); -BOOL GetMessage(SEGPTR,HWND,UINT,UINT); -LONG GetMessageExtraInfo(void); -DWORD GetMessagePos(void); -LONG GetMessageTime(void); -HANDLE GetMetaFile(LPSTR); -HANDLE GetMetaFileBits(HANDLE); -int GetModuleFileName(HANDLE,LPSTR,short); -HANDLE GetModuleHandle(LPCSTR); -int GetModuleUsage(HANDLE); -FARPROC GetMouseEventProc(void); -DWORD GetNearestColor(HDC,DWORD); -WORD GetNearestPaletteIndex(HPALETTE16,DWORD); -HWND GetNextDlgGroupItem(HWND,HWND,BOOL); -HWND GetNextDlgTabItem(HWND,HWND,BOOL); -HWND GetNextWindow(HWND,WORD); -WORD GetNumTasks(void); -int GetObject(HANDLE,int,LPSTR); -HWND GetOpenClipboardWindow(void); -WORD GetPaletteEntries(HPALETTE16,WORD,WORD,LPPALETTEENTRY); -HWND GetParent(HWND); -DWORD GetPixel(HDC,short,short); -WORD GetPolyFillMode(HDC); -int GetPriorityClipboardFormat(WORD*,short); -UINT GetPrivateProfileInt(LPCSTR,LPCSTR,INT,LPCSTR); -INT GetPrivateProfileString(LPCSTR,LPCSTR,LPCSTR,LPSTR,INT,LPCSTR); -FARPROC GetProcAddress(HANDLE,SEGPTR); -UINT GetProfileInt(LPCSTR,LPCSTR,INT); -INT GetProfileString(LPCSTR,LPCSTR,LPCSTR,LPSTR,INT); -HANDLE GetProp(HWND,SEGPTR); -DWORD GetQueueStatus(UINT); -BOOL GetRasterizerCaps(LPRASTERIZER_STATUS,UINT); -WORD GetROP2(HDC); -WORD GetRelAbs(HDC); -int GetScrollPos(HWND,int); -void GetScrollRange(HWND,int,LPINT16,LPINT16); -DWORD GetSelectorBase(WORD); -DWORD GetSelectorLimit(WORD); -HANDLE GetStockObject(int); -WORD GetStretchBltMode(HDC); -HMENU GetSubMenu(HMENU,short); -COLORREF GetSysColor(short); -HWND GetSysModalWindow(void); -UINT GetSystemDirectory(LPSTR,UINT); -HMENU GetSystemMenu(HWND,BOOL); -int GetSystemMetrics(WORD); -WORD GetSystemPaletteEntries(HDC,WORD,WORD,LPPALETTEENTRY); -WORD GetSystemPaletteUse(HDC); -BOOL GetSystemPowerStatus(LPSYSTEM_POWER_STATUS); -VOID GetSystemTime(LPSYSTEMTIME); /* Win32 */ -DWORD GetTabbedTextExtent(HDC,LPSTR,int,int,LPINT16); -HINSTANCE GetTaskDS(void); -HQUEUE GetTaskQueue(HTASK); -BYTE GetTempDrive(BYTE); -INT GetTempFileName(BYTE,LPCSTR,UINT,LPSTR); -WORD GetTextAlign(HDC); -short GetTextCharacterExtra(HDC); -COLORREF GetTextColor(HDC); -DWORD GetTextExtent(HDC,LPCSTR,short); -INT GetTextFace(HDC,INT,LPSTR); -BOOL GetTextMetrics(HDC,LPTEXTMETRIC); -LPINT16 GetThresholdEvent(void); -int GetThresholdStatus(void); -DWORD GetTickCount(void); -HWND GetTopWindow(HWND); -LONG GetVersion(void); -DWORD GetViewportExt(HDC); -DWORD GetViewportOrg(HDC); -BOOL GetWinDebugInfo(LPWINDEBUGINFO,UINT); -LONG GetWinFlags(void); -HWND GetWindow(HWND,WORD); -HDC GetWindowDC(HWND); -DWORD GetWindowExt(HDC); -DWORD GetWindowOrg(HDC); -HANDLE GetWindowTask(HWND); -int GetWindowTextLength(HWND); -UINT GetWindowsDirectory(LPSTR,UINT); -DWORD GlobalDOSAlloc(DWORD); -WORD GlobalDOSFree(WORD); -ATOM GlobalDeleteAtom(ATOM); -void GlobalFix(HGLOBAL16); -void GlobalFreeAll(HGLOBAL16); -HGLOBAL16 GlobalLRUNewest(HGLOBAL16); -HGLOBAL16 GlobalLRUOldest(HGLOBAL16); -void GlobalNotify(FARPROC); -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); -BOOL InSendMessage(void); -WORD InitAtomTable(WORD); -HRGN InquireVisRgn(HDC); -int IntersectClipRect(HDC,short,short,short,short); -int IntersectVisRect(HDC,short,short,short,short); -void InvalidateRgn(HWND32,HRGN32,BOOL32); -BOOL InvertRgn(HDC,HRGN); -BOOL IsBadCodePtr(SEGPTR); -BOOL IsBadHugeReadPtr(SEGPTR,DWORD); -BOOL IsBadHugeWritePtr(SEGPTR,DWORD); -BOOL IsBadReadPtr(SEGPTR,WORD); -BOOL IsBadStringPtr(SEGPTR,WORD); -BOOL IsBadWritePtr(SEGPTR,WORD); -BOOL IsCharAlpha(char); -BOOL IsCharAlphaNumeric(char); -BOOL IsCharLower(char); -BOOL IsCharUpper(char); -BOOL IsChild(HWND,HWND); -BOOL IsClipboardFormatAvailable(WORD); -BOOL IsDialogMessage(HWND,LPMSG); -WORD IsDlgButtonChecked(HWND,WORD); -BOOL IsGDIObject(HANDLE); -BOOL IsIconic(HWND); -BOOL IsMenu(HMENU); -BOOL IsTask(HTASK); -HTASK IsTaskLocked(void); -BOOL IsWindow(HWND); -BOOL IsWindowEnabled(HWND); -BOOL IsWindowUnicode(HWND); -BOOL IsWindowVisible(HWND); -BOOL IsZoomed(HWND); -BOOL KillSystemTimer(HWND,WORD); -BOOL KillTimer(HWND,WORD); -void LimitEmsPages(DWORD); -void LineDDA(short,short,short,short,FARPROC,long); -BOOL LineTo(HDC,short,short); -HANDLE LoadAccelerators(HANDLE,SEGPTR); -HBITMAP LoadBitmap(HANDLE,SEGPTR); -HCURSOR LoadCursor(HANDLE,SEGPTR); -HICON LoadIcon(HANDLE,SEGPTR); -HANDLE LoadLibrary(LPCSTR); -HMENU LoadMenu(HANDLE,SEGPTR); -HANDLE LoadModule(LPCSTR,LPVOID); -HGLOBAL LoadResource(HINSTANCE,HRSRC); -int LoadString(HANDLE,WORD,LPSTR,int); -BOOL LocalInit(HANDLE,WORD,WORD); -FARPROC LocalNotify(FARPROC); -LPVOID LockResource(HGLOBAL); -HGLOBAL LockSegment(HGLOBAL); -HMENU LookupMenuHandle(HMENU,INT); -FARPROC MakeProcInstance(FARPROC,HANDLE); -WORD MapVirtualKey(WORD,WORD); -void MessageBeep(WORD); -int MessageBox(HWND,LPCSTR,LPCSTR,WORD); -DWORD MoveTo(HDC,short,short); -BOOL MoveWindow(HWND,short,short,short,short,BOOL); -DWORD OemKeyScan(WORD); -BOOL OemToAnsi(LPSTR,LPSTR); -void OemToAnsiBuff(LPSTR,LPSTR,INT); -int OffsetClipRgn(HDC,short,short); -BOOL OpenClipboard(HWND); -int OpenComm(LPCSTR,UINT,UINT); -HFILE OpenFile(LPCSTR,OFSTRUCT*,UINT); -BOOL OpenIcon(HWND); -int OpenSound(void); -void OutputDebugString(LPCSTR); -BOOL PaintRgn(HDC,HRGN); -BOOL PatBlt(HDC,short,short,short,short,DWORD); -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 PostAppMessage(HANDLE,WORD,WORD,LONG); -void PostEvent(HTASK); -BOOL PostMessage(HWND,WORD,WORD,LONG); -void PostQuitMessage(INT); -WORD PrestoChangoSelector(WORD,WORD); -void ProfClear(void); -void ProfFinish(void); -void ProfFlush(void); -int ProfInsChk(void); -void ProfSampRate(int,int); -void ProfSetup(int,int); -void ProfStart(void); -void ProfStop(void); -BOOL PtInRegion(HRGN32,INT32,INT32); -BOOL PtVisible(HDC,short,short); -int ReadComm(int,LPSTR,int); -WORD RealizeDefaultPalette(HDC); -UINT RealizePalette(HDC); -BOOL Rectangle(HDC,INT,INT,INT,INT); -WORD RegisterClipboardFormat(LPCSTR); -void ReleaseCapture(void); -int ReleaseDC(HWND,HDC); -BOOL RemoveFontResource(LPSTR); -BOOL RemoveMenu(HMENU,UINT,UINT); -HANDLE RemoveProp(HWND,SEGPTR); -void ReplyMessage(LRESULT); -HDC ResetDC(HDC,LPVOID); -BOOL ResizePalette(HPALETTE16,UINT); -BOOL RestoreDC(HDC,short); -int RestoreVisRgn(HDC); -BOOL RoundRect(HDC,INT,INT,INT,INT,INT,INT); -int SaveDC(HDC); -HRGN SaveVisRgn(HDC); -void ScrollChildren(HWND,UINT,WPARAM,LPARAM); -BOOL ScrollDC(HDC,short,short,LPRECT16,LPRECT16,HRGN,LPRECT16); -void ScrollWindow(HWND,short,short,LPRECT16,LPRECT16); -int ScrollWindowEx(HWND,short,short,LPRECT16,LPRECT16,HRGN,LPRECT16,WORD); -int SelectClipRgn(HDC,HRGN); -HANDLE SelectObject(HDC,HANDLE); -HPALETTE16 SelectPalette(HDC,HPALETTE16,BOOL); -int SelectVisRgn(HDC,HRGN); -WORD SelectorAccessRights(WORD,WORD,WORD); -HWND SetActiveWindow(HWND); -LONG SetBitmapBits(HBITMAP,LONG,LPSTR); -DWORD SetBkColor(HDC,COLORREF); -WORD SetBkMode(HDC,WORD); -DWORD SetBrushOrg(HDC,short,short); -HWND SetCapture(HWND); -void SetCaretBlinkTime(WORD); -void SetCaretPos(short,short); -HANDLE SetClipboardData(WORD,HANDLE); -HWND SetClipboardViewer(HWND); -int SetCommBreak(int); -UINT* SetCommEventMask(int,UINT); -int SetCommState(DCB*); -void SetConvertHook(BOOL); -BOOL SetConvertParams(int,int); -BOOL32 SetCurrentDirectory(LPCSTR); -HCURSOR SetCursor(HCURSOR); -void SetCursorPos(short,short); -BOOL SetDCHook(HDC,FARPROC16,DWORD); -void SetDCState(HDC,HDC); -int SetDIBits(HDC,HANDLE,WORD,WORD,LPSTR,LPBITMAPINFO,WORD); -int SetDIBitsToDevice(HDC,short,short,WORD,WORD,WORD,WORD,WORD,WORD,LPSTR,LPBITMAPINFO,WORD); -BOOL SetDeskPattern(void); -BOOL SetDeskWallPaper(LPCSTR); -void SetDoubleClickTime(WORD); -int SetEnvironment(LPSTR,LPSTR,WORD); -UINT SetErrorMode(UINT); -HWND SetFocus(HWND); -WORD SetHandleCount(WORD); -WORD SetHookFlags(HDC,WORD); -void SetKeyboardState(BYTE*); -WORD SetMapMode(HDC,WORD); -DWORD SetMapperFlags(HDC,DWORD); -BOOL SetMenu(HWND,HMENU); -BOOL SetMenuItemBitmaps(HMENU,UINT,UINT,HBITMAP,HBITMAP); -BOOL SetMessageQueue(int); -HANDLE SetMetaFileBits(HANDLE); -WORD SetPaletteEntries(HPALETTE16,WORD,WORD,LPPALETTEENTRY); -HWND SetParent(HWND,HWND); -COLORREF SetPixel(HDC,short,short,COLORREF); -WORD SetPolyFillMode(HDC,WORD); -BOOL SetProp(HWND,SEGPTR,HANDLE); -WORD SetROP2(HDC,WORD); -void SetRectRgn(HRGN32,INT32,INT32,INT32,INT32); -WORD SetRelAbs(HDC,WORD); -FARPROC SetResourceHandler(HANDLE,LPSTR,FARPROC); -int SetScrollPos(HWND,int,int,BOOL); -void SetScrollRange(HWND,int,int,int,BOOL); -WORD SetSelectorBase(WORD,DWORD); -WORD SetSelectorLimit(WORD,DWORD); -int SetSoundNoise(int,int); -WORD SetStretchBltMode(HDC,WORD); -LONG SetSwapAreaSize(WORD); -void SetSysColors(int,LPINT16,COLORREF*); -HWND SetSysModalWindow(HWND); -WORD SetSystemPaletteUse(HDC,WORD); -BOOL SetSystemPowerState(BOOL, BOOL); -BOOL SetSystemTime(const SYSTEMTIME*); -WORD SetSystemTimer(HWND,WORD,WORD,FARPROC); -HQUEUE SetTaskQueue(HTASK,HQUEUE); -WORD SetTextAlign(HDC,WORD); -short SetTextCharacterExtra(HDC,short); -DWORD SetTextColor(HDC,DWORD); -short SetTextJustification(HDC,short,short); -WORD SetTimer(HWND,WORD,WORD,FARPROC); -int SetVoiceAccent(int,int,int,int,int); -int SetVoiceEnvelope(int,int,int); -int SetVoiceNote(int,int,int,int); -int SetVoiceQueueSize(int,int); -int SetVoiceSound(int,LONG,int); -int SetVoiceThreshold(int,int); -BOOL SetWinDebugInfo(LPWINDEBUGINFO); -BOOL SetWindowPos(HWND,HWND,INT,INT,INT,INT,WORD); -FARPROC SetWindowsHook(short,FARPROC); -HHOOK SetWindowsHookEx(short,HOOKPROC,HINSTANCE,HTASK); -HINSTANCE ShellExecute(HWND,LPCSTR,LPCSTR,LPSTR,LPCSTR,INT); -void ShowCaret(HWND); -int ShowCursor(BOOL); -void ShowOwnedPopups(HWND,BOOL); -void ShowScrollBar(HWND,WORD,BOOL); -BOOL ShowWindow(HWND,int); -DWORD SizeofResource(HINSTANCE,HRSRC); -VOID Sleep(DWORD); /* Win32 */ -int StartSound(void); -int StopSound(void); -BOOL StretchBlt(HDC,short,short,short,short,HDC,short,short,short,short,DWORD); -int StretchDIBits(HDC,WORD,WORD,WORD,WORD,WORD,WORD,WORD,WORD,LPSTR,LPBITMAPINFO,WORD,DWORD); -BOOL SwapMouseButton(BOOL); -void SwapRecording(WORD); -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,LPINT16,short); -int Throw(LPCATCHBUF,int); -int ToAscii(WORD,WORD,LPSTR,LPVOID,WORD); -int TranslateAccelerator(HWND,HANDLE,LPMSG); -BOOL TranslateMDISysAccel(HWND,LPMSG); -BOOL TranslateMessage(LPMSG); -int TransmitCommChar(int,char); -int UngetCommChar(int,char); -BOOL UnhookWindowsHook(short,FARPROC); -BOOL UnhookWindowsHookEx(HHOOK); -void UnlockSegment(HGLOBAL); -BOOL UnrealizeObject(HBRUSH); -int UpdateColors(HDC); -void UpdateWindow(HWND32); -void UserYield(void); -void ValidateCodeSegments(void); -LPSTR ValidateFreeSpaces(void); -void ValidateRgn(HWND32,HRGN32); -WORD VkKeyScan(WORD); -SEGPTR WIN16_GlobalLock16(HGLOBAL16); -SEGPTR WIN16_LockResource(HANDLE); -SEGPTR WIN16_lstrcpyn(SEGPTR,SEGPTR,WORD); -BOOL WaitEvent(HTASK); -void WaitMessage(void); -int WaitSoundState(int); -HANDLE WinExec(LPSTR,WORD); -BOOL WinHelp(HWND,LPSTR,WORD,DWORD); -int WriteComm(int,LPSTR,int); -void WriteOutProfiles(void); -BOOL WritePrivateProfileString(LPCSTR,LPCSTR,LPCSTR,LPCSTR); -BOOL WriteProfileString(LPCSTR,LPCSTR,LPCSTR); -void Yield(void); -LONG _hread(HFILE,SEGPTR,LONG); -LONG _hwrite(HFILE,LPCSTR,LONG); -HFILE _lclose(HFILE); -HFILE _lcreat(LPCSTR,INT); -LONG _llseek(HFILE,LONG,INT); -HFILE _lopen(LPCSTR,INT); -INT _lread(HFILE,SEGPTR,WORD); -INT _lwrite(HFILE,LPCSTR,WORD); -void hmemcpy(LPVOID,LPCVOID,LONG); -SEGPTR lstrcat(SEGPTR,SEGPTR); -INT lstrcmp(LPCSTR,LPCSTR); -INT lstrcmpi(LPCSTR,LPCSTR); -INT lstrncmpi(LPCSTR,LPCSTR,int); -SEGPTR lstrcpy(SEGPTR,SEGPTR); -LPSTR lstrcpyn(LPSTR,LPCSTR,int); -INT lstrlen(LPCSTR); -int wsprintf(LPSTR,LPSTR,...); -int wvsprintf(LPSTR,LPCSTR,LPCSTR); - -/* Declarations for functions that are the same in Win16 and Win32 */ - -BOOL16 EndDialog(HWND32,INT32); -INT16 ExcludeUpdateRgn(HDC32,HWND32); -void FillWindow(HWND16,HWND16,HDC16,HBRUSH16); +VOID FillWindow(HWND16,HWND16,HDC16,HBRUSH16); DWORD GetBitmapDimension(HBITMAP16); -WORD GetClassWord(HWND32,INT32); -DWORD GetLogicalDrives(void); -INT16 GetUpdateRgn(HWND32,HRGN32,BOOL32); -WORD GetWindowWord(HWND32,INT32); -INT16 OffsetRgn(HRGN32,INT32,INT32); DWORD OffsetViewportOrg(HDC16,INT16,INT16); DWORD OffsetWindowOrg(HDC16,INT16,INT16); -void PaintRect(HWND16,HWND16,HDC16,HBRUSH16,const RECT16*); -DWORD RegCloseKey(HKEY); -DWORD RegFlushKey(HKEY); +VOID PaintRect(HWND16,HWND16,HDC16,HBRUSH16,const RECT16*); DWORD ScaleViewportExt(HDC16,INT16,INT16,INT16,INT16); DWORD ScaleWindowExt(HDC16,INT16,INT16,INT16,INT16); DWORD SetBitmapDimension(HBITMAP16,INT16,INT16); -WORD SetClassWord(HWND32,INT32,WORD); DWORD SetViewportExt(HDC16,INT16,INT16); DWORD SetViewportOrg(HDC16,INT16,INT16); DWORD SetWindowExt(HDC16,INT16,INT16); DWORD SetWindowOrg(HDC16,INT16,INT16); +VOID hmemcpy(LPVOID,LPCVOID,LONG); + +/* Declarations for functions that exist only in Win32 */ + +DWORD GetLogicalDrives(void); + +/* Declarations for functions that are the same in Win16 and Win32 */ + +HBITMAP16 CreateBitmap(INT32,INT32,UINT32,UINT32,LPCVOID); +HBITMAP16 CreateCompatibleBitmap(HDC32,INT32,INT32); +HBITMAP16 CreateDiscardableBitmap(HDC32,INT32,INT32); +BOOL16 EndDialog(HWND32,INT32); +INT16 ExcludeUpdateRgn(HDC32,HWND32); +LONG GetBitmapBits(HBITMAP32,LONG,LPVOID); +WORD GetClassWord(HWND32,INT32); +INT16 GetUpdateRgn(HWND32,HRGN32,BOOL32); +WORD GetWindowWord(HWND32,INT32); +INT16 OffsetRgn(HRGN32,INT32,INT32); +DWORD RegCloseKey(HKEY); +DWORD RegFlushKey(HKEY); +LONG SetBitmapBits(HBITMAP32,LONG,LPCVOID); +WORD SetClassWord(HWND32,INT32,WORD); WORD SetWindowWord(HWND32,INT32,WORD); /* Declarations for functions that change between Win16 and Win32 */ @@ -3439,25 +3215,28 @@ BOOL32 ClipCursor32(const RECT32*); BOOL16 CopyRect16(RECT16*,const RECT16*); BOOL32 CopyRect32(RECT32*,const RECT32*); #define CopyRect WINELIB_NAME(CopyRect) -HWND16 CreateDialog16(HINSTANCE16,SEGPTR,HWND16,DLGPROC); +HBITMAP16 CreateBitmapIndirect16(const BITMAP16*); +HBITMAP32 CreateBitmapIndirect32(const BITMAP32*); +#define CreateBitmapIndirect WINELIB_NAME(CreateBitmapIndirect) +HWND16 CreateDialog16(HINSTANCE16,SEGPTR,HWND16,DLGPROC16); #define CreateDialog32A(inst,ptr,hwnd,dlg) \ CreateDialogParam32A(inst,ptr,hwnd,dlg,0) #define CreateDialog32W(inst,ptr,hwnd,dlg) \ CreateDialogParam32W(inst,ptr,hwnd,dlg,0) #define CreateDialog WINELIB_NAME_AW(CreateDialog) -HWND16 CreateDialogIndirect16(HINSTANCE16,LPCVOID,HWND16,DLGPROC); +HWND16 CreateDialogIndirect16(HINSTANCE16,LPCVOID,HWND16,DLGPROC16); #define CreateDialogIndirect32A(inst,ptr,hwnd,dlg) \ CreateDialogIndirectParam32A(inst,ptr,hwnd,dlg,0) #define CreateDialogIndirect32W(inst,ptr,hwnd,dlg) \ CreateDialogIndirectParam32W(inst,ptr,hwnd,dlg,0) #define CreateDialogIndirect WINELIB_NAME_AW(CreateDialogIndirect) -HWND16 CreateDialogIndirectParam16(HINSTANCE16,LPCVOID,HWND16,DLGPROC,LPARAM); -HWND32 CreateDialogIndirectParam32A(HINSTANCE32,LPCVOID,HWND32,DLGPROC,LPARAM); -HWND32 CreateDialogIndirectParam32W(HINSTANCE32,LPCVOID,HWND32,DLGPROC,LPARAM); +HWND16 CreateDialogIndirectParam16(HINSTANCE16,LPCVOID,HWND16,DLGPROC16,LPARAM); +HWND32 CreateDialogIndirectParam32A(HINSTANCE32,LPCVOID,HWND32,DLGPROC32,LPARAM); +HWND32 CreateDialogIndirectParam32W(HINSTANCE32,LPCVOID,HWND32,DLGPROC32,LPARAM); #define CreateDialogIndirectParam WINELIB_NAME_AW(CreateDialogIndirectParam) -HWND16 CreateDialogParam16(HINSTANCE16,SEGPTR,HWND16,DLGPROC,LPARAM); -HWND32 CreateDialogParam32A(HINSTANCE32,LPCSTR,HWND32,DLGPROC,LPARAM); -HWND32 CreateDialogParam32W(HINSTANCE32,LPCWSTR,HWND32,DLGPROC,LPARAM); +HWND16 CreateDialogParam16(HINSTANCE16,SEGPTR,HWND16,DLGPROC16,LPARAM); +HWND32 CreateDialogParam32A(HINSTANCE32,LPCSTR,HWND32,DLGPROC32,LPARAM); +HWND32 CreateDialogParam32W(HINSTANCE32,LPCWSTR,HWND32,DLGPROC32,LPARAM); #define CreateDialogParam WINELIB_NAME_AW(CreateDialogParam) HRGN16 CreateEllipticRgnIndirect16(const RECT16 *); HRGN32 CreateEllipticRgnIndirect32(const RECT32 *); @@ -3501,25 +3280,25 @@ LRESULT DefWindowProc16(HWND16,UINT16,WPARAM16,LPARAM); LRESULT DefWindowProc32A(HWND32,UINT32,WPARAM32,LPARAM); LRESULT DefWindowProc32W(HWND32,UINT32,WPARAM32,LPARAM); #define DefWindowProc WINELIB_NAME_AW(DefWindowProc) -INT16 DialogBox16(HINSTANCE16,SEGPTR,HWND16,DLGPROC); +INT16 DialogBox16(HINSTANCE16,SEGPTR,HWND16,DLGPROC16); #define DialogBox32A(inst,template,owner,func) \ DialogBoxParam32A(inst,template,owner,func,0) #define DialogBox32W(inst,template,owner,func) \ DialogBoxParam32W(inst,template,owner,func,0) #define DialogBox WINELIB_NAME_AW(DialogBox) -INT16 DialogBoxIndirect16(HINSTANCE16,HANDLE16,HWND16,DLGPROC); +INT16 DialogBoxIndirect16(HINSTANCE16,HANDLE16,HWND16,DLGPROC16); #define DialogBoxIndirect32A(inst,template,owner,func) \ DialogBoxIndirectParam32A(inst,template,owner,func,0) #define DialogBoxIndirect32W(inst,template,owner,func) \ DialogBoxIndirectParam32W(inst,template,owner,func,0) #define DialogBoxIndirect WINELIB_NAME_AW(DialogBoxIndirect) -INT16 DialogBoxIndirectParam16(HINSTANCE16,HANDLE16,HWND16,DLGPROC,LPARAM); -INT32 DialogBoxIndirectParam32A(HINSTANCE32,LPCVOID,HWND32,DLGPROC,LPARAM); -INT32 DialogBoxIndirectParam32W(HINSTANCE32,LPCVOID,HWND32,DLGPROC,LPARAM); +INT16 DialogBoxIndirectParam16(HINSTANCE16,HANDLE16,HWND16,DLGPROC16,LPARAM); +INT32 DialogBoxIndirectParam32A(HINSTANCE32,LPCVOID,HWND32,DLGPROC32,LPARAM); +INT32 DialogBoxIndirectParam32W(HINSTANCE32,LPCVOID,HWND32,DLGPROC32,LPARAM); #define DialogBoxIndirectParam WINELIB_NAME_AW(DialogBoxIndirectParam) -INT16 DialogBoxParam16(HINSTANCE16,SEGPTR,HWND16,DLGPROC,LPARAM); -INT32 DialogBoxParam32A(HINSTANCE32,LPCSTR,HWND32,DLGPROC,LPARAM); -INT32 DialogBoxParam32W(HINSTANCE32,LPCWSTR,HWND32,DLGPROC,LPARAM); +INT16 DialogBoxParam16(HINSTANCE16,SEGPTR,HWND16,DLGPROC16,LPARAM); +INT32 DialogBoxParam32A(HINSTANCE32,LPCSTR,HWND32,DLGPROC32,LPARAM); +INT32 DialogBoxParam32W(HINSTANCE32,LPCWSTR,HWND32,DLGPROC32,LPARAM); #define DialogBoxParam WINELIB_NAME_AW(DialogBoxParam) INT16 DlgDirListComboBox16(HWND16,LPCSTR,INT16,INT16,UINT16); INT32 DlgDirListComboBox32A(HWND32,LPCSTR,INT32,INT32,UINT32); @@ -3548,13 +3327,13 @@ BOOL32 ExtTextOut32W(HDC32,INT32,INT32,UINT32,const RECT32*,LPCWSTR,UINT32,c INT16 FillRect16(HDC16,const RECT16*,HBRUSH16); INT32 FillRect32(HDC32,const RECT32*,HBRUSH32); #define FillRect WINELIB_NAME(FillRect) -HWND FindWindow16(SEGPTR,LPCSTR); -HWND FindWindow32A(LPCSTR,LPCSTR); -HWND FindWindow32W(LPCWSTR,LPCWSTR); +HWND16 FindWindow16(SEGPTR,LPCSTR); +HWND32 FindWindow32A(LPCSTR,LPCSTR); +HWND32 FindWindow32W(LPCWSTR,LPCWSTR); #define FindWindow WINELIB_NAME_AW(FindWindow) -HWND FindWindowEx16(HWND,HWND,SEGPTR,LPCSTR); -HWND FindWindowEx32A(HWND,HWND,LPCSTR,LPCSTR); -HWND FindWindowEx32W(HWND,HWND,LPCWSTR,LPCWSTR); +HWND16 FindWindowEx16(HWND16,HWND16,SEGPTR,LPCSTR); +HWND32 FindWindowEx32A(HWND32,HWND32,LPCSTR,LPCSTR); +HWND32 FindWindowEx32W(HWND32,HWND32,LPCWSTR,LPCWSTR); #define FindWindowEx WINELIB_NAME_AW(FindWindowEx) INT16 FrameRect16(HDC16,const RECT16*,HBRUSH16); INT32 FrameRect32(HDC32,const RECT32*,HBRUSH32); @@ -3568,21 +3347,21 @@ BOOL32 GetBrushOrgEx32(HDC32,LPPOINT32); void GetCaretPos16(LPPOINT16); void GetCaretPos32(LPPOINT32); #define GetCaretPos WINELIB_NAME(GetCaretPos) -BOOL GetClassInfo16(HINSTANCE16,SEGPTR,WNDCLASS16 *); -BOOL GetClassInfo32A(HINSTANCE32,LPCSTR,WNDCLASS32A *); -BOOL GetClassInfo32W(HINSTANCE32,LPCWSTR,WNDCLASS32W *); +BOOL16 GetClassInfo16(HINSTANCE16,SEGPTR,WNDCLASS16 *); +BOOL32 GetClassInfo32A(HINSTANCE32,LPCSTR,WNDCLASS32A *); +BOOL32 GetClassInfo32W(HINSTANCE32,LPCWSTR,WNDCLASS32W *); #define GetClassInfo WINELIB_NAME_AW(GetClassInfo) -BOOL GetClassInfoEx16(HINSTANCE16,SEGPTR,WNDCLASSEX16 *); -BOOL GetClassInfoEx32A(HINSTANCE32,LPCSTR,WNDCLASSEX32A *); -BOOL GetClassInfoEx32W(HINSTANCE32,LPCWSTR,WNDCLASSEX32W *); +BOOL16 GetClassInfoEx16(HINSTANCE16,SEGPTR,WNDCLASSEX16 *); +BOOL32 GetClassInfoEx32A(HINSTANCE32,LPCSTR,WNDCLASSEX32A *); +BOOL32 GetClassInfoEx32W(HINSTANCE32,LPCWSTR,WNDCLASSEX32W *); #define GetClassInfoEx WINELIB_NAME_AW(GetClassInfoEx) -LONG GetClassLong16(HWND,INT16); -LONG GetClassLong32A(HWND,INT32); -LONG GetClassLong32W(HWND,INT32); +LONG GetClassLong16(HWND16,INT16); +LONG GetClassLong32A(HWND32,INT32); +LONG GetClassLong32W(HWND32,INT32); #define GetClassLong WINELIB_NAME_AW(GetClassLong) -INT16 GetClassName16(HWND,LPSTR,INT16); -INT32 GetClassName32A(HWND,LPSTR,INT32); -INT32 GetClassName32W(HWND,LPWSTR,INT32); +INT16 GetClassName16(HWND16,LPSTR,INT16); +INT32 GetClassName32A(HWND32,LPSTR,INT32); +INT32 GetClassName32W(HWND32,LPWSTR,INT32); #define GetClassName WINELIB_NAME_AW(GetClassName) void GetClientRect16(HWND16,LPRECT16); void GetClientRect32(HWND32,LPRECT32); @@ -3609,6 +3388,10 @@ UINT32 GetInternalWindowPos32(HWND32,LPRECT32,LPPOINT32); UINT32 GetLogicalDriveStrings32A(UINT32,LPSTR); UINT32 GetLogicalDriveStrings32W(UINT32,LPWSTR); #define GetLogicalDriveStrings WINELIB_NAME(GetLogicalDriveStrings) +INT16 GetObject16(HANDLE16,INT16,LPVOID); +INT32 GetObject32A(HANDLE32,INT32,LPVOID); +INT32 GetObject32W(HANDLE32,INT32,LPVOID); +#define GetObject WINELIB_NAME_AW(GetObject) INT16 GetRgnBox16(HRGN16,LPRECT16); INT32 GetRgnBox32(HRGN32,LPRECT32); #define GetRgnBox WINELIB_NAME(GetRgnBox) @@ -3765,6 +3548,10 @@ BOOL32 OffsetViewportOrgEx32(HDC32,INT32,INT32,LPPOINT32); BOOL16 OffsetWindowOrgEx16(HDC16,INT16,INT16,LPPOINT16); BOOL32 OffsetWindowOrgEx32(HDC32,INT32,INT32,LPPOINT32); #define OffsetWindowOrgEx WINELIB_NAME(OffsetWindowOrgEx) +BOOL16 PeekMessage16(LPMSG16,HWND16,UINT16,UINT16,UINT16); +BOOL32 PeekMessage32A(LPMSG32,HWND32,UINT32,UINT32,UINT32); +BOOL32 PeekMessage32W(LPMSG32,HWND32,UINT32,UINT32,UINT32); +#define PeekMessage WINELIB_NAME_AW(PeekMessage) BOOL16 PolyPolygon16(HDC16,LPPOINT16,LPINT16,UINT16); BOOL32 PolyPolygon32(HDC32,LPPOINT32,LPINT32,UINT32); #define PolyPolygon WINELIB_NAME(PolyPolygon) @@ -3878,9 +3665,9 @@ LRESULT SendMessage32W(HWND32,UINT32,WPARAM32,LPARAM); BOOL16 SetBitmapDimensionEx16(HBITMAP16,INT16,INT16,LPSIZE16); BOOL32 SetBitmapDimensionEx32(HBITMAP32,INT32,INT32,LPSIZE32); #define SetBitmapDimensionEx WINELIB_NAME(SetBitmapDimensionEx) -LONG SetClassLong16(HWND,INT16,LONG); -LONG SetClassLong32A(HWND,INT32,LONG); -LONG SetClassLong32W(HWND,INT32,LONG); +LONG SetClassLong16(HWND16,INT16,LONG); +LONG SetClassLong32A(HWND32,INT32,LONG); +LONG SetClassLong32W(HWND32,INT32,LONG); #define SetClassLong WINELIB_NAME_AW(SetClassLong) void SetDlgItemInt16(HWND16,INT16,UINT16,BOOL16); void SetDlgItemInt32(HWND32,INT32,UINT32,BOOL32); @@ -3944,6 +3731,669 @@ void ValidateRect32(HWND32,const RECT32*); HWND16 WindowFromPoint16(POINT16); HWND32 WindowFromPoint32(POINT32); #define WindowFromPoint WINELIB_NAME(WindowFromPoint) +SEGPTR lstrcat16(SEGPTR,SEGPTR); +LPSTR lstrcat32A(LPSTR,LPCSTR); +LPWSTR lstrcat32W(LPWSTR,LPCWSTR); +#define lstrcat WINELIB_NAME_AW(lstrcat) +SEGPTR lstrcatn16(SEGPTR,SEGPTR,INT16); +LPSTR lstrcatn32A(LPSTR,LPCSTR,INT32); +LPWSTR lstrcatn32W(LPWSTR,LPCWSTR,INT32); +#define lstrcatn WINELIB_NAME_AW(lstrcatn) +INT16 lstrcmp16(LPCSTR,LPCSTR); +INT32 lstrcmp32A(LPCSTR,LPCSTR); +INT32 lstrcmp32W(LPCWSTR,LPCWSTR); +#define lstrcmp WINELIB_NAME_AW(lstrcmp) +INT16 lstrcmpi16(LPCSTR,LPCSTR); +INT32 lstrcmpi32A(LPCSTR,LPCSTR); +INT32 lstrcmpi32W(LPCWSTR,LPCWSTR); +#define lstrcmpi WINELIB_NAME_AW(lstrcmpi) +SEGPTR lstrcpy16(SEGPTR,SEGPTR); +LPSTR lstrcpy32A(LPSTR,LPCSTR); +LPWSTR lstrcpy32W(LPWSTR,LPCWSTR); +#define lstrcpy WINELIB_NAME_AW(lstrcpy) +SEGPTR lstrcpyn16(SEGPTR,SEGPTR,INT16); +LPSTR lstrcpyn32A(LPSTR,LPCSTR,INT32); +LPWSTR lstrcpyn32W(LPWSTR,LPCWSTR,INT32); +#define lstrcpyn WINELIB_NAME_AW(lstrcpyn) +INT16 lstrlen16(LPCSTR); +INT32 lstrlen32A(LPCSTR); +INT32 lstrlen32W(LPCWSTR); +#define lstrlen WINELIB_NAME_AW(lstrlen) +INT16 lstrncmp16(LPCSTR,LPCSTR,INT16); +INT32 lstrncmp32A(LPCSTR,LPCSTR,INT32); +INT32 lstrncmp32W(LPCWSTR,LPCWSTR,INT32); +#define lstrncmp WINELIB_NAME_AW(lstrncmp) +INT16 lstrncmpi16(LPCSTR,LPCSTR,INT16); +INT32 lstrncmpi32A(LPCSTR,LPCSTR,INT32); +INT32 lstrncmpi32W(LPCWSTR,LPCWSTR,INT32); +#define lstrncmpi WINELIB_NAME_AW(lstrncmpi) +INT16 wsnprintf16(LPSTR,UINT16,LPCSTR,...); +INT32 wsnprintf32A(LPSTR,UINT32,LPCSTR,...); +INT32 wsnprintf32W(LPWSTR,UINT32,LPCWSTR,...); +#define wsnprintf WINELIB_NAME_AW(wsnprintf) +INT16 wsprintf16(LPSTR,LPCSTR,...); +INT32 wsprintf32A(LPSTR,LPCSTR,...); +INT32 wsprintf32W(LPWSTR,LPCWSTR,...); +#define wsprintf WINELIB_NAME_AW(wsprintf) +INT16 wvsnprintf16(LPSTR,UINT16,LPCSTR,LPCVOID); +INT32 wvsnprintf32A(LPSTR,UINT32,LPCSTR,LPCVOID); +INT32 wvsnprintf32W(LPWSTR,UINT32,LPCWSTR,LPCVOID); +#define wvsnprintf WINELIB_NAME_AW(wvsnprintf) +INT16 wvsprintf16(LPSTR,LPCSTR,LPCVOID); +INT32 wvsprintf32A(LPSTR,LPCSTR,LPCVOID); +INT32 wvsprintf32W(LPWSTR,LPCWSTR,LPCVOID); +#define wvsprintf WINELIB_NAME_AW(wvsprintf) + +/* 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 BOOL16 BOOL; +typedef WPARAM16 WPARAM; +typedef HANDLE16 HANDLE; +typedef HANDLE16 HBITMAP; +typedef HANDLE16 HBRUSH; +typedef HANDLE16 HCURSOR; +typedef HANDLE16 HDC; +typedef HANDLE16 HDRVR; +typedef HANDLE16 HFONT; +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 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; +#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 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 DRIVERPROC; +typedef SEGPTR EDITWORDBREAKPROC; +typedef SEGPTR FONTENUMPROC; +typedef SEGPTR GOBJENUMPROC; +typedef SEGPTR MFENUMPROC; +typedef SEGPTR PROPENUMPROC; +typedef SEGPTR WNDENUMPROC; +#endif +typedef FARPROC HOOKPROC; + +#endif /* NO_TRANSITION_TYPES */ + + +INT AccessResource(HINSTANCE,HRSRC); +ATOM AddAtom(SEGPTR); +INT AddFontResource(LPCSTR); +WORD AllocCStoDSAlias(WORD); +WORD AllocDStoCSAlias(WORD); +HGLOBAL AllocResource(HINSTANCE,HRSRC,DWORD); +WORD AllocSelector(WORD); +WORD AllocSelectorArray(WORD); +BOOL AnimatePalette(HPALETTE16,UINT,UINT,LPPALETTEENTRY); +LPSTR AnsiLower(LPSTR); +UINT AnsiLowerBuff(LPSTR,UINT); +SEGPTR AnsiNext(SEGPTR); +SEGPTR AnsiPrev(SEGPTR,SEGPTR); +INT AnsiToOem(LPSTR,LPSTR); +void AnsiToOemBuff(LPCSTR,LPSTR,UINT); +LPSTR AnsiUpper(LPSTR); +UINT AnsiUpperBuff(LPSTR,UINT); +BOOL AnyPopup(void); +BOOL Arc(HDC,INT,INT,INT,INT,INT,INT,INT,INT); +UINT ArrangeIconicWindows(HWND); +HDWP16 BeginDeferWindowPos(INT); +BOOL BitBlt(HDC,INT,INT,INT,INT,HDC,INT,INT,DWORD); +BOOL BringWindowToTop(HWND); +BOOL BuildCommDCB(LPCSTR,DCB*); +void CalcChildScroll(HWND,WORD); +BOOL CallMsgFilter(SEGPTR,INT); +LRESULT CallNextHookEx(HHOOK,INT,WPARAM,LPARAM); +INT Catch(LPCATCHBUF); +BOOL ChangeClipboardChain(HWND,HWND); +WORD ChangeSelector(WORD,WORD); +BOOL CheckDlgButton(HWND,INT,UINT); +INT CheckMenuItem(HMENU,UINT,UINT); +BOOL CheckRadioButton(HWND,UINT,UINT,UINT); +BOOL Chord(HDC,INT,INT,INT,INT,INT,INT,INT,INT); +int ClearCommBreak(int); +BOOL CloseClipboard(void); +int CloseComm(int); +HMETAFILE CloseMetaFile(HDC); +void CloseSound(void); +BOOL CloseWindow(HWND); +INT16 CombineRgn(HRGN32,HRGN32,HRGN32,INT32); +int ConvertRequest(HWND,LPKANJISTRUCT); +#ifdef WINELIB32 +HCURSOR CopyCursor(HCURSOR); /* Win32 */ +HICON CopyIcon(HICON); /* Win32 */ +#else +HCURSOR CopyCursor(HINSTANCE,HCURSOR); /* Win16 */ +HICON CopyIcon(HINSTANCE,HICON); /* Win16 */ +#endif +HMETAFILE CopyMetaFile(HMETAFILE,LPCSTR); +INT CountClipboardFormats(void); +INT CountVoiceNotes(INT); +HBRUSH CreateBrushIndirect(const LOGBRUSH16*); +BOOL CreateCaret(HWND,HBITMAP,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(LPCSTR,LPCSTR,LPCSTR,const DEVMODE*); +HBRUSH CreateDIBPatternBrush(HGLOBAL,UINT); +HBITMAP CreateDIBitmap(HDC,BITMAPINFOHEADER*,DWORD,LPVOID,BITMAPINFO*,UINT); +HRGN CreateEllipticRgn(INT32,INT32,INT32,INT32); +HFONT CreateFont(INT,INT,INT,INT,INT,BYTE,BYTE,BYTE,BYTE,BYTE,BYTE,BYTE,BYTE,LPCSTR); +HFONT CreateFontIndirect(const LOGFONT16*); +HBRUSH CreateHatchBrush(INT,COLORREF); +HDC CreateIC(LPCSTR,LPCSTR,LPCSTR,const DEVMODE*); +HICON CreateIcon(HINSTANCE,INT,INT,BYTE,BYTE,const BYTE*,const BYTE*); +HMENU CreateMenu(void); +HDC CreateMetaFile(LPCSTR); +HPALETTE16 CreatePalette(const LOGPALETTE*); +HBRUSH CreatePatternBrush(HBITMAP); +HPEN16 CreatePen(INT,INT,COLORREF); +HPEN16 CreatePenIndirect(const LOGPEN16*); +HMENU CreatePopupMenu(void); +HRGN CreateRectRgn(INT32,INT32,INT32,INT32); +HRGN CreateRoundRectRgn(INT32,INT32,INT32,INT32,INT32,INT32); +HBRUSH CreateSolidBrush(COLORREF); +void DebugBreak(void); +DWORD DefHookProc(short,WORD,DWORD,HHOOK*); +HDWP16 DeferWindowPos(HDWP16,HWND,HWND,INT,INT,INT,INT,UINT); +ATOM DeleteAtom(ATOM); +BOOL DeleteDC(HDC); +BOOL DeleteMenu(HMENU,UINT,UINT); +BOOL DeleteMetaFile(HMETAFILE); +BOOL DeleteObject(HGDIOBJ16); +BOOL DestroyCaret(void); +BOOL DestroyCursor(HCURSOR); +BOOL DestroyIcon(HICON); +BOOL DestroyMenu(HMENU); +BOOL DestroyWindow(HWND); +HANDLE DirectResAlloc(HANDLE,WORD,WORD); +void DirectedYield(HTASK); +LONG DispatchMessage(const MSG16*); +INT DlgDirList(HWND,SEGPTR,INT,INT,UINT); +BOOL DlgDirSelect(HWND,LPSTR,INT); +BOOL DlgDirSelectComboBox(HWND,LPSTR,INT); +BOOL16 DragDetect(HWND16,POINT16); +DWORD DragObject(HWND, HWND, WORD, HANDLE, WORD, HCURSOR); +BOOL DrawIcon(HDC,INT,INT,HICON); +void DrawMenuBar(HWND); +DWORD DumpIcon(SEGPTR,WORD*,SEGPTR*,SEGPTR*); +BOOL Ellipse(HDC,INT,INT,INT,INT); +BOOL EmptyClipboard(void); +BOOL EnableHardwareInput(BOOL); +BOOL EnableMenuItem(HMENU,UINT,UINT); +BOOL EnableScrollBar(HWND,UINT,UINT); +BOOL EnableWindow(HWND,BOOL); +BOOL EndDeferWindowPos(HDWP16); +BOOL EnumChildWindows(HWND,WNDENUMPROC,LPARAM); +UINT EnumClipboardFormats(UINT); +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); +BOOL EnumTaskWindows(HTASK,WNDENUMPROC,LPARAM); +BOOL EnumWindows(WNDENUMPROC,LPARAM); +BOOL EqualRgn(HRGN32,HRGN32); +INT Escape(HDC,INT,INT,LPCSTR,LPVOID); +LONG EscapeCommFunction(int,int); +int ExcludeClipRect(HDC,short,short,short,short); +int ExcludeVisRect(HDC,short,short,short,short); +BOOL ExitWindows(DWORD,WORD); +BOOL ExtFloodFill(HDC,INT,INT,COLORREF,WORD); +HICON ExtractIcon(HINSTANCE,LPCSTR,WORD); +WORD FarGetOwner(HANDLE); +void FarSetOwner(HANDLE,HANDLE); +void FatalAppExit(UINT,LPCSTR); +void FatalExit(int); +BOOL FillRgn(HDC,HRGN,HBRUSH); +ATOM FindAtom(SEGPTR); +HINSTANCE FindExecutable(LPCSTR,LPCSTR,LPSTR); +HRSRC FindResource(HINSTANCE,SEGPTR,SEGPTR); +BOOL FlashWindow(HWND,BOOL); +BOOL FloodFill(HDC,INT,INT,COLORREF); +int FlushComm(int,int); +BOOL FrameRgn(HDC,HRGN,HBRUSH,int,int); +void FreeLibrary(HANDLE); +BOOL FreeModule(HANDLE); +void FreeProcInstance(FARPROC); +BOOL FreeResource(HGLOBAL); +WORD FreeSelector(WORD); +UINT GDIRealizePalette(HDC); +HPALETTE16 GDISelectPalette(HDC,HPALETTE16); +HWND GetActiveWindow(void); +DWORD GetAspectRatioFilter(HDC); +int GetAsyncKeyState(int); +HANDLE GetAtomHandle(ATOM); +WORD GetAtomName(ATOM,LPSTR,short); +COLORREF GetBkColor(HDC); +WORD GetBkMode(HDC); +DWORD GetBrushOrg(HDC); +HWND GetCapture(void); +WORD GetCaretBlinkTime(void); +BOOL GetCharABCWidths(HDC,UINT,UINT,LPABC16); +BOOL GetCharWidth(HDC,WORD,WORD,LPINT16); +HRGN GetClipRgn(HDC); +HANDLE GetClipboardData(WORD); +int GetClipboardFormatName(WORD,LPSTR,short); +HWND GetClipboardOwner(void); +HWND GetClipboardViewer(void); +HANDLE GetCodeHandle(FARPROC); +void GetCodeInfo(FARPROC,LPVOID); +int GetCommError(int,COMSTAT*); +UINT GetCommEventMask(int,int); +int GetCommState(int,DCB*); +HBRUSH GetControlBrush(HWND,HDC,WORD); +UINT32 GetCurrentDirectory(UINT32,LPSTR); +HANDLE GetCurrentPDB(void); +DWORD GetCurrentPosition(HDC); +HANDLE GetCurrentTask(void); +DWORD GetCurrentTime(void); +HCURSOR GetCursor(void); +HDC GetDC(HWND); +HDC GetDCEx(HWND,HRGN,DWORD); +DWORD GetDCHook(HDC,FARPROC16*); +DWORD GetDCOrg(HDC); +HDC GetDCState(HDC); +int GetDIBits(HDC,HANDLE,WORD,WORD,LPSTR,LPBITMAPINFO,WORD); +SEGPTR GetDOSEnvironment(void); +HWND GetDesktopHwnd(void); +HWND GetDesktopWindow(void); +int GetDeviceCaps(HDC,WORD); +DWORD GetDialogBaseUnits(void); +int GetDlgCtrlID(HWND); +HWND GetDlgItem(HWND,WORD); +WORD GetDlgItemInt(HWND,WORD,BOOL*,BOOL); +WORD GetDoubleClickTime(void); +WORD GetDriveType(INT); +int GetEnvironment(LPSTR,LPSTR,WORD); +HMODULE GetExePtr(HANDLE); +HWND GetFocus(void); +DWORD GetFreeSpace(UINT16); +DWORD GetHeapSpaces(HMODULE); +BOOL GetInputState(void); +int GetInstanceData(HANDLE,WORD,int); +int GetKBCodePage(void); +int GetKerningPairs(HDC,int,LPKERNINGPAIR16); +int GetKeyNameText(LONG,LPSTR,int); +INT GetKeyState(INT); +void GetKeyboardState(BYTE*); +int GetKeyboardType(int); +HWND GetLastActivePopup(HWND); +VOID GetLocalTime(LPSYSTEMTIME); /* Win32 */ +WORD GetMapMode(HDC); +HMENU GetMenu(HWND); +DWORD GetMenuCheckMarkDimensions(void); +INT GetMenuItemCount(HMENU); +UINT GetMenuItemID(HMENU,int); +UINT GetMenuState(HMENU,UINT,UINT); +int GetMenuString(HMENU,UINT,LPSTR,short,UINT); +BOOL GetMessage(SEGPTR,HWND,UINT,UINT); +LONG GetMessageExtraInfo(void); +DWORD GetMessagePos(void); +LONG GetMessageTime(void); +HANDLE GetMetaFile(LPSTR); +HANDLE GetMetaFileBits(HANDLE); +int GetModuleFileName(HANDLE,LPSTR,short); +HANDLE GetModuleHandle(LPCSTR); +int GetModuleUsage(HANDLE); +FARPROC GetMouseEventProc(void); +DWORD GetNearestColor(HDC,DWORD); +WORD GetNearestPaletteIndex(HPALETTE16,DWORD); +HWND GetNextDlgGroupItem(HWND,HWND,BOOL); +HWND GetNextDlgTabItem(HWND,HWND,BOOL); +HWND GetNextWindow(HWND,WORD); +WORD GetNumTasks(void); +HWND GetOpenClipboardWindow(void); +WORD GetPaletteEntries(HPALETTE16,WORD,WORD,LPPALETTEENTRY); +HWND GetParent(HWND); +DWORD GetPixel(HDC,short,short); +WORD GetPolyFillMode(HDC); +int GetPriorityClipboardFormat(WORD*,short); +UINT GetPrivateProfileInt(LPCSTR,LPCSTR,INT,LPCSTR); +INT GetPrivateProfileString(LPCSTR,LPCSTR,LPCSTR,LPSTR,INT,LPCSTR); +FARPROC GetProcAddress(HANDLE,SEGPTR); +UINT GetProfileInt(LPCSTR,LPCSTR,INT); +INT GetProfileString(LPCSTR,LPCSTR,LPCSTR,LPSTR,INT); +HANDLE GetProp(HWND,SEGPTR); +DWORD GetQueueStatus(UINT); +BOOL GetRasterizerCaps(LPRASTERIZER_STATUS,UINT); +WORD GetROP2(HDC); +WORD GetRelAbs(HDC); +int GetScrollPos(HWND,int); +void GetScrollRange(HWND,int,LPINT16,LPINT16); +DWORD GetSelectorBase(WORD); +DWORD GetSelectorLimit(WORD); +HANDLE GetStockObject(int); +WORD GetStretchBltMode(HDC); +HMENU GetSubMenu(HMENU,short); +COLORREF GetSysColor(short); +HWND GetSysModalWindow(void); +UINT GetSystemDirectory(LPSTR,UINT); +HMENU GetSystemMenu(HWND,BOOL); +int GetSystemMetrics(WORD); +WORD GetSystemPaletteEntries(HDC,WORD,WORD,LPPALETTEENTRY); +WORD GetSystemPaletteUse(HDC); +BOOL GetSystemPowerStatus(LPSYSTEM_POWER_STATUS); +VOID GetSystemTime(LPSYSTEMTIME); /* Win32 */ +DWORD GetTabbedTextExtent(HDC,LPSTR,int,int,LPINT16); +HINSTANCE GetTaskDS(void); +HQUEUE GetTaskQueue(HTASK); +BYTE GetTempDrive(BYTE); +INT GetTempFileName(BYTE,LPCSTR,UINT,LPSTR); +WORD GetTextAlign(HDC); +short GetTextCharacterExtra(HDC); +COLORREF GetTextColor(HDC); +DWORD GetTextExtent(HDC,LPCSTR,short); +INT GetTextFace(HDC,INT,LPSTR); +BOOL GetTextMetrics(HDC,LPTEXTMETRIC16); +LPINT16 GetThresholdEvent(void); +int GetThresholdStatus(void); +DWORD GetTickCount(void); +HWND GetTopWindow(HWND); +LONG GetVersion(void); +DWORD GetViewportExt(HDC); +DWORD GetViewportOrg(HDC); +BOOL GetWinDebugInfo(LPWINDEBUGINFO,UINT); +LONG GetWinFlags(void); +HWND GetWindow(HWND,WORD); +HDC GetWindowDC(HWND); +DWORD GetWindowExt(HDC); +DWORD GetWindowOrg(HDC); +HANDLE GetWindowTask(HWND); +int GetWindowTextLength(HWND); +UINT GetWindowsDirectory(LPSTR,UINT); +DWORD GlobalDOSAlloc(DWORD); +WORD GlobalDOSFree(WORD); +ATOM GlobalDeleteAtom(ATOM); +void GlobalFix(HGLOBAL16); +void GlobalFreeAll(HGLOBAL16); +HGLOBAL16 GlobalLRUNewest(HGLOBAL16); +HGLOBAL16 GlobalLRUOldest(HGLOBAL16); +void GlobalNotify(FARPROC); +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); +BOOL InSendMessage(void); +WORD InitAtomTable(WORD); +HRGN InquireVisRgn(HDC); +int IntersectClipRect(HDC,short,short,short,short); +int IntersectVisRect(HDC,short,short,short,short); +void InvalidateRgn(HWND32,HRGN32,BOOL32); +BOOL InvertRgn(HDC,HRGN); +BOOL IsBadCodePtr(SEGPTR); +BOOL IsBadHugeReadPtr(SEGPTR,DWORD); +BOOL IsBadHugeWritePtr(SEGPTR,DWORD); +BOOL IsBadReadPtr(SEGPTR,WORD); +BOOL IsBadStringPtr(SEGPTR,WORD); +BOOL IsBadWritePtr(SEGPTR,WORD); +BOOL IsCharAlpha(char); +BOOL IsCharAlphaNumeric(char); +BOOL IsCharLower(char); +BOOL IsCharUpper(char); +BOOL IsChild(HWND,HWND); +BOOL IsClipboardFormatAvailable(WORD); +BOOL IsDialogMessage(HWND,LPMSG16); +WORD IsDlgButtonChecked(HWND,WORD); +BOOL IsGDIObject(HANDLE); +BOOL IsIconic(HWND); +BOOL IsMenu(HMENU); +BOOL IsTask(HTASK); +HTASK IsTaskLocked(void); +BOOL IsWindow(HWND); +BOOL IsWindowEnabled(HWND); +BOOL IsWindowUnicode(HWND); +BOOL IsWindowVisible(HWND); +BOOL IsZoomed(HWND); +BOOL KillSystemTimer(HWND,WORD); +BOOL KillTimer(HWND,WORD); +void LimitEmsPages(DWORD); +void LineDDA(short,short,short,short,FARPROC,long); +BOOL LineTo(HDC,short,short); +HANDLE LoadAccelerators(HANDLE,SEGPTR); +HBITMAP LoadBitmap(HANDLE,SEGPTR); +HCURSOR LoadCursor(HANDLE,SEGPTR); +HICON LoadIcon(HANDLE,SEGPTR); +HANDLE LoadLibrary(LPCSTR); +HMENU LoadMenu(HANDLE,SEGPTR); +HANDLE LoadModule(LPCSTR,LPVOID); +HGLOBAL LoadResource(HINSTANCE,HRSRC); +int LoadString(HANDLE,WORD,LPSTR,int); +BOOL LocalInit(HANDLE,WORD,WORD); +FARPROC LocalNotify(FARPROC); +LPVOID LockResource(HGLOBAL); +HGLOBAL LockSegment(HGLOBAL); +HMENU LookupMenuHandle(HMENU,INT); +FARPROC MakeProcInstance(FARPROC,HANDLE); +WORD MapVirtualKey(WORD,WORD); +void MessageBeep(WORD); +int MessageBox(HWND,LPCSTR,LPCSTR,WORD); +DWORD MoveTo(HDC,short,short); +BOOL MoveWindow(HWND,short,short,short,short,BOOL); +DWORD OemKeyScan(WORD); +BOOL OemToAnsi(LPSTR,LPSTR); +void OemToAnsiBuff(LPSTR,LPSTR,INT); +int OffsetClipRgn(HDC,short,short); +BOOL OpenClipboard(HWND); +int OpenComm(LPCSTR,UINT,UINT); +HFILE OpenFile(LPCSTR,OFSTRUCT*,UINT); +BOOL OpenIcon(HWND); +int OpenSound(void); +void OutputDebugString(LPCSTR); +BOOL PaintRgn(HDC,HRGN); +BOOL PatBlt(HDC,short,short,short,short,DWORD); +BOOL Pie(HDC,INT,INT,INT,INT,INT,INT,INT,INT); +BOOL PlayMetaFile(HDC,HANDLE); +void PlayMetaFileRecord(HDC,LPHANDLETABLE,LPMETARECORD,WORD); +BOOL PostAppMessage(HANDLE,WORD,WORD,LONG); +void PostEvent(HTASK); +BOOL PostMessage(HWND,WORD,WORD,LONG); +void PostQuitMessage(INT); +WORD PrestoChangoSelector(WORD,WORD); +void ProfClear(void); +void ProfFinish(void); +void ProfFlush(void); +int ProfInsChk(void); +void ProfSampRate(int,int); +void ProfSetup(int,int); +void ProfStart(void); +void ProfStop(void); +BOOL PtInRegion(HRGN32,INT32,INT32); +BOOL PtVisible(HDC,short,short); +int ReadComm(int,LPSTR,int); +WORD RealizeDefaultPalette(HDC); +UINT RealizePalette(HDC); +BOOL Rectangle(HDC,INT,INT,INT,INT); +WORD RegisterClipboardFormat(LPCSTR); +void ReleaseCapture(void); +int ReleaseDC(HWND,HDC); +BOOL RemoveFontResource(LPSTR); +BOOL RemoveMenu(HMENU,UINT,UINT); +HANDLE RemoveProp(HWND,SEGPTR); +void ReplyMessage(LRESULT); +HDC ResetDC(HDC,LPVOID); +BOOL ResizePalette(HPALETTE16,UINT); +BOOL RestoreDC(HDC,short); +int RestoreVisRgn(HDC); +BOOL RoundRect(HDC,INT,INT,INT,INT,INT,INT); +int SaveDC(HDC); +HRGN SaveVisRgn(HDC); +void ScrollChildren(HWND,UINT,WPARAM,LPARAM); +BOOL ScrollDC(HDC,short,short,LPRECT16,LPRECT16,HRGN,LPRECT16); +void ScrollWindow(HWND,short,short,LPRECT16,LPRECT16); +int ScrollWindowEx(HWND,short,short,LPRECT16,LPRECT16,HRGN,LPRECT16,WORD); +int SelectClipRgn(HDC,HRGN); +HANDLE SelectObject(HDC,HANDLE); +HPALETTE16 SelectPalette(HDC,HPALETTE16,BOOL); +int SelectVisRgn(HDC,HRGN); +WORD SelectorAccessRights(WORD,WORD,WORD); +HWND SetActiveWindow(HWND); +DWORD SetBkColor(HDC,COLORREF); +WORD SetBkMode(HDC,WORD); +DWORD SetBrushOrg(HDC,short,short); +HWND SetCapture(HWND); +void SetCaretBlinkTime(WORD); +void SetCaretPos(short,short); +HANDLE SetClipboardData(WORD,HANDLE); +HWND SetClipboardViewer(HWND); +int SetCommBreak(int); +UINT* SetCommEventMask(int,UINT); +int SetCommState(DCB*); +void SetConvertHook(BOOL); +BOOL SetConvertParams(int,int); +BOOL32 SetCurrentDirectory(LPCSTR); +HCURSOR SetCursor(HCURSOR); +void SetCursorPos(short,short); +BOOL SetDCHook(HDC,FARPROC16,DWORD); +void SetDCState(HDC,HDC); +int SetDIBits(HDC,HANDLE,WORD,WORD,LPSTR,LPBITMAPINFO,WORD); +int SetDIBitsToDevice(HDC,short,short,WORD,WORD,WORD,WORD,WORD,WORD,LPSTR,LPBITMAPINFO,WORD); +BOOL SetDeskPattern(void); +BOOL SetDeskWallPaper(LPCSTR); +void SetDoubleClickTime(WORD); +int SetEnvironment(LPSTR,LPSTR,WORD); +UINT SetErrorMode(UINT); +HWND SetFocus(HWND); +WORD SetHandleCount(WORD); +WORD SetHookFlags(HDC,WORD); +void SetKeyboardState(BYTE*); +WORD SetMapMode(HDC,WORD); +DWORD SetMapperFlags(HDC,DWORD); +BOOL SetMenu(HWND,HMENU); +BOOL SetMenuItemBitmaps(HMENU,UINT,UINT,HBITMAP,HBITMAP); +BOOL SetMessageQueue(int); +HANDLE SetMetaFileBits(HANDLE); +WORD SetPaletteEntries(HPALETTE16,WORD,WORD,LPPALETTEENTRY); +HWND SetParent(HWND,HWND); +COLORREF SetPixel(HDC,short,short,COLORREF); +WORD SetPolyFillMode(HDC,WORD); +BOOL SetProp(HWND,SEGPTR,HANDLE); +WORD SetROP2(HDC,WORD); +void SetRectRgn(HRGN32,INT32,INT32,INT32,INT32); +WORD SetRelAbs(HDC,WORD); +FARPROC SetResourceHandler(HANDLE,LPSTR,FARPROC); +int SetScrollPos(HWND,int,int,BOOL); +void SetScrollRange(HWND,int,int,int,BOOL); +WORD SetSelectorBase(WORD,DWORD); +WORD SetSelectorLimit(WORD,DWORD); +int SetSoundNoise(int,int); +WORD SetStretchBltMode(HDC,WORD); +LONG SetSwapAreaSize(WORD); +void SetSysColors(int,LPINT16,COLORREF*); +HWND SetSysModalWindow(HWND); +WORD SetSystemPaletteUse(HDC,WORD); +BOOL SetSystemPowerState(BOOL, BOOL); +BOOL SetSystemTime(const SYSTEMTIME*); +WORD SetSystemTimer(HWND,WORD,WORD,FARPROC); +HQUEUE SetTaskQueue(HTASK,HQUEUE); +WORD SetTextAlign(HDC,WORD); +short SetTextCharacterExtra(HDC,short); +DWORD SetTextColor(HDC,DWORD); +short SetTextJustification(HDC,short,short); +WORD SetTimer(HWND,WORD,WORD,FARPROC); +int SetVoiceAccent(int,int,int,int,int); +int SetVoiceEnvelope(int,int,int); +int SetVoiceNote(int,int,int,int); +int SetVoiceQueueSize(int,int); +int SetVoiceSound(int,LONG,int); +int SetVoiceThreshold(int,int); +BOOL SetWinDebugInfo(LPWINDEBUGINFO); +BOOL SetWindowPos(HWND,HWND,INT,INT,INT,INT,WORD); +FARPROC SetWindowsHook(short,FARPROC); +HHOOK SetWindowsHookEx(short,HOOKPROC,HINSTANCE,HTASK); +HINSTANCE ShellExecute(HWND,LPCSTR,LPCSTR,LPSTR,LPCSTR,INT); +void ShowCaret(HWND); +int ShowCursor(BOOL); +void ShowOwnedPopups(HWND,BOOL); +void ShowScrollBar(HWND,WORD,BOOL); +BOOL ShowWindow(HWND,int); +DWORD SizeofResource(HINSTANCE,HRSRC); +VOID Sleep(DWORD); /* Win32 */ +int StartSound(void); +int StopSound(void); +BOOL StretchBlt(HDC,short,short,short,short,HDC,short,short,short,short,DWORD); +int StretchDIBits(HDC,WORD,WORD,WORD,WORD,WORD,WORD,WORD,WORD,LPSTR,LPBITMAPINFO,WORD,DWORD); +BOOL SwapMouseButton(BOOL); +void SwapRecording(WORD); +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,LPINT16,short); +int Throw(LPCATCHBUF,int); +int ToAscii(WORD,WORD,LPSTR,LPVOID,WORD); +int TranslateAccelerator(HWND,HANDLE,LPMSG16); +BOOL TranslateMDISysAccel(HWND,LPMSG16); +BOOL TranslateMessage(LPMSG16); +int TransmitCommChar(int,char); +int UngetCommChar(int,char); +BOOL UnhookWindowsHook(short,FARPROC); +BOOL UnhookWindowsHookEx(HHOOK); +void UnlockSegment(HGLOBAL); +BOOL UnrealizeObject(HBRUSH); +int UpdateColors(HDC); +void UpdateWindow(HWND32); +void UserYield(void); +void ValidateCodeSegments(void); +LPSTR ValidateFreeSpaces(void); +void ValidateRgn(HWND32,HRGN32); +WORD VkKeyScan(WORD); +SEGPTR WIN16_GlobalLock16(HGLOBAL16); +SEGPTR WIN16_LockResource(HANDLE); +BOOL WaitEvent(HTASK); +void WaitMessage(void); +int WaitSoundState(int); +HANDLE WinExec(LPSTR,WORD); +BOOL WinHelp(HWND,LPSTR,WORD,DWORD); +int WriteComm(int,LPSTR,int); +void WriteOutProfiles(void); +BOOL WritePrivateProfileString(LPCSTR,LPCSTR,LPCSTR,LPCSTR); +BOOL WriteProfileString(LPCSTR,LPCSTR,LPCSTR); +void Yield(void); +LONG _hread(HFILE,SEGPTR,LONG); +LONG _hwrite(HFILE,LPCSTR,LONG); +HFILE _lclose(HFILE); +HFILE _lcreat(LPCSTR,INT); +LONG _llseek(HFILE,LONG,INT); +HFILE _lopen(LPCSTR,INT); +INT _lread(HFILE,SEGPTR,WORD); +INT _lwrite(HFILE,LPCSTR,WORD); + #ifdef WINELIB #define WINELIB_UNIMP(x) fprintf (stderr, "WineLib: Unimplemented %s\n", x) diff --git a/include/winreg.h b/include/winreg.h index 62c45292069..f5954adb8eb 100644 --- a/include/winreg.h +++ b/include/winreg.h @@ -1,8 +1,6 @@ /* * Shell Library definitions */ -#include "wintypes.h" - #ifndef __WINE_WINREG_H #define __WINE_WINREG_H @@ -85,27 +83,6 @@ KEY_READ|KEY_WRITE| \ KEY_CREATE_LINK \ ) -/* one value of a key */ -typedef struct tagKEYVALUE { - LPWSTR name; /* name of value (UNICODE) or NULL for win31 */ - DWORD type; /* type of value */ - DWORD len; /* length of data */ - DWORD lastmodified; /* time of seconds since 1.1.1970 */ - LPBYTE data; /* content, may be strings, binaries, etc. */ -} KEYVALUE,*LPKEYVALUE; - -/* a registry key */ -typedef struct tagKEYSTRUCT { - LPWSTR keyname; /* name of THIS key (UNICODE) */ - DWORD flags; /* flags. */ - LPWSTR class; - /* values */ - DWORD nrofvalues; /* nr of values in THIS key */ - LPKEYVALUE values; /* values in THIS key */ - /* key management pointers */ - struct tagKEYSTRUCT *next; /* next key on same hierarchy */ - struct tagKEYSTRUCT *nextsub; /* keys that hang below THIS key */ -} KEYSTRUCT, *LPKEYSTRUCT; void SHELL_Init(); void SHELL_SaveRegistry(); diff --git a/include/wintypes.h b/include/wintypes.h index 97718ccc683..33bcebdbb98 100644 --- a/include/wintypes.h +++ b/include/wintypes.h @@ -152,16 +152,19 @@ DECLARE_HANDLE(HWND); /* Callback function pointers types for Win16. */ #ifdef WINELIB -typedef LRESULT (*WNDPROC16)(HWND16,UINT16,WPARAM16,LPARAM); +typedef LRESULT (*DLGPROC16)(HWND16,UINT16,WPARAM16,LPARAM); typedef LRESULT (*FARPROC16)(); +typedef LRESULT (*WNDPROC16)(HWND16,UINT16,WPARAM16,LPARAM); #else /* Function pointers are SEGPTR in Win16 */ +typedef SEGPTR DLGPROC16; typedef SEGPTR FARPROC16; typedef SEGPTR WNDPROC16; #endif /* Callback function pointers types for Win32. */ +typedef LRESULT (*DLGPROC32)(HWND32,UINT32,WPARAM32,LPARAM); typedef LRESULT (*FARPROC32)(); typedef LRESULT (*WNDPROC32)(HWND32,UINT32,WPARAM32,LPARAM); @@ -226,71 +229,6 @@ 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 BOOL16 BOOL; -typedef WPARAM16 WPARAM; -typedef HANDLE16 HANDLE; -typedef HANDLE16 HBITMAP; -typedef HANDLE16 HBRUSH; -typedef HANDLE16 HCURSOR; -typedef HANDLE16 HDC; -typedef HANDLE16 HDRVR; -typedef HANDLE16 HFONT; -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 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 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 DRIVERPROC; -typedef SEGPTR EDITWORDBREAKPROC; -typedef SEGPTR FONTENUMPROC; -typedef SEGPTR GOBJENUMPROC; -typedef SEGPTR MFENUMPROC; -typedef SEGPTR PROPENUMPROC; -typedef SEGPTR WNDENUMPROC; -#endif -typedef FARPROC DLGPROC; -typedef FARPROC HOOKPROC; - -#endif /* NO_TRANSITION_TYPES */ - /* Misc. constants. */ #ifdef FALSE diff --git a/loader/Makefile.in b/loader/Makefile.in index 7ae4cf84bff..166ce95647a 100644 --- a/loader/Makefile.in +++ b/loader/Makefile.in @@ -9,8 +9,8 @@ C_SRCS = \ ne_resource.c \ pe_image.c \ pe_resource.c \ - signal.c \ resource.c \ + signal.c \ task.c all: $(MODULE).o diff --git a/loader/builtin.c b/loader/builtin.c index 76c0d29a54c..7cfb347a639 100644 --- a/loader/builtin.c +++ b/loader/builtin.c @@ -100,9 +100,11 @@ 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 LZ32_Descriptor; extern const DLL_DESCRIPTOR NTDLL_Descriptor; extern const DLL_DESCRIPTOR SHELL32_Descriptor; extern const DLL_DESCRIPTOR USER32_Descriptor; +extern const DLL_DESCRIPTOR VERSION_Descriptor; extern const DLL_DESCRIPTOR WINSPOOL_Descriptor; extern const DLL_DESCRIPTOR WSOCK32_Descriptor; @@ -147,9 +149,11 @@ static BUILTIN_DLL BuiltinDLLs[] = { &OLE32_Descriptor, 0 }, { &GDI32_Descriptor, 0 }, { &KERNEL32_Descriptor, DLL_FLAG_ALWAYS_USED }, + { &LZ32_Descriptor, 0 }, { &NTDLL_Descriptor, 0 }, { &SHELL32_Descriptor, 0 }, { &USER32_Descriptor, 0 }, + { &VERSION_Descriptor, 0 }, { &WINSPOOL_Descriptor, 0 }, { &WSOCK32_Descriptor, 0 }, /* Last entry */ @@ -202,11 +206,11 @@ HMODULE BUILTIN_LoadModule( LPCSTR name, BOOL force ) /* Fix the name in case we have a full path and extension */ if ((p = strrchr( name, '\\' ))) name = p + 1; - lstrcpyn( dllname, name, sizeof(dllname) ); + lstrcpyn32A( dllname, name, sizeof(dllname) ); if ((p = strrchr( dllname, '.' ))) *p = '\0'; for (table = BuiltinDLLs; table->descr; table++) - if (!lstrcmpi( table->descr->name, dllname )) break; + if (!lstrcmpi32A( table->descr->name, dllname )) break; if (!table->descr) return 0; if ((table->flags & DLL_FLAG_NOT_USED) && !force) return 0; @@ -389,7 +393,7 @@ BOOL BUILTIN_ParseDLLOptions( const char *str ) if (p == str) return FALSE; for (dll = BuiltinDLLs; dll->descr; dll++) { - if (!lstrncmpi( str, dll->descr->name, (int)(p - str) )) + if (!lstrncmpi32A( str, dll->descr->name, (int)(p - str) )) { if (str[-1] == '-') { diff --git a/loader/module.c b/loader/module.c index 9257c752d29..d394aa31b95 100644 --- a/loader/module.c +++ b/loader/module.c @@ -827,10 +827,10 @@ HMODULE MODULE_FindModule( LPCSTR path ) if (!(modulename = strrchr( modulepath, '\\' ))) modulename = modulepath; else modulename++; - if (!lstrcmpi( modulename, filename )) return hModule; + if (!lstrcmpi32A( modulename, filename )) return hModule; name_table = (BYTE *)pModule + pModule->name_table; - if ((*name_table == len) && !lstrncmpi(filename, name_table+1, len)) + if ((*name_table == len) && !lstrncmpi32A(filename, name_table+1, len)) return hModule; hModule = pModule->next; } @@ -1193,7 +1193,7 @@ int GetModuleFileName( HANDLE hModule, LPSTR lpFileName, short nSize ) hModule = GetExePtr( hModule ); /* In case we were passed an hInstance */ if (!(pModule = MODULE_GetPtr( hModule ))) return 0; - lstrcpyn( lpFileName, NE_MODULE_NAME(pModule), nSize ); + lstrcpyn32A( lpFileName, NE_MODULE_NAME(pModule), nSize ); dprintf_module( stddeb, "GetModuleFilename: %s\n", lpFileName ); return strlen(lpFileName); } @@ -1221,7 +1221,7 @@ HANDLE LoadLibrary( LPCSTR libname ) if (handle == (HANDLE)2) /* file not found */ { char buffer[256]; - lstrcpyn( buffer, libname, 252 ); + lstrcpyn32A( buffer, libname, 252 ); strcat( buffer, ".dll" ); handle = LoadModule( buffer, (LPVOID)-1 ); } @@ -1253,8 +1253,13 @@ HANDLE WinExec( LPSTR lpCmdLine, WORD nCmdShow ) char *p, *cmdline, filename[256]; static int use_load_module = 1; - if (!(cmdShowHandle = GlobalAlloc16( 0, 2 * sizeof(WORD) ))) return 0; - if (!(cmdLineHandle = GlobalAlloc16( 0, 256 ))) return 0; + if (!(cmdShowHandle = GlobalAlloc16( 0, 2 * sizeof(WORD) ))) + return 8; /* Out of memory */ + if (!(cmdLineHandle = GlobalAlloc16( 0, 256 ))) + { + GlobalFree16( cmdShowHandle ); + return 8; /* Out of memory */ + } /* Store nCmdShow */ @@ -1265,9 +1270,9 @@ HANDLE WinExec( LPSTR lpCmdLine, WORD nCmdShow ) /* Build the filename and command-line */ cmdline = (char *)GlobalLock16( cmdLineHandle ); - lstrcpyn( filename, lpCmdLine, sizeof(filename) - 4 /* for extension */ ); + lstrcpyn32A(filename, lpCmdLine, sizeof(filename) - 4 /* for extension */); for (p = filename; *p && (*p != ' ') && (*p != '\t'); p++); - if (*p) lstrcpyn( cmdline, p + 1, 128 ); + if (*p) lstrcpyn32A( cmdline, p + 1, 128 ); else cmdline[0] = '\0'; *p = '\0'; diff --git a/loader/ne_resource.c b/loader/ne_resource.c index bf88022b42a..fc3081bc29d 100644 --- a/loader/ne_resource.c +++ b/loader/ne_resource.c @@ -64,8 +64,8 @@ static DWORD NE_FindNameTableId( HMODULE hModule, SEGPTR typeId, SEGPTR resId ) if (p[1] & 0x8000) { if (!HIWORD(typeId)) continue; - if (lstrcmpi( (char *)PTR_SEG_TO_LIN(typeId), - (char *)(p + 3) )) continue; + if (lstrcmpi32A( (char *)PTR_SEG_TO_LIN(typeId), + (char *)(p + 3) )) continue; } else if (HIWORD(typeId) || ((typeId & ~0x8000)!= p[1])) continue; @@ -75,7 +75,7 @@ static DWORD NE_FindNameTableId( HMODULE hModule, SEGPTR typeId, SEGPTR resId ) if (p[2] & 0x8000) { if (!HIWORD(resId)) continue; - if (lstrcmpi( (char *)PTR_SEG_TO_LIN(resId), + if (lstrcmpi32A( (char *)PTR_SEG_TO_LIN(resId), (char*)(p+3)+strlen((char*)(p+3))+1 )) continue; } @@ -116,7 +116,7 @@ static HRSRC NE_FindResourceFromType( NE_MODULE *pModule, { if (pNameInfo->id & 0x8000) continue; p = (BYTE *)pModule + pModule->res_table + pNameInfo->id; - if ((*p == len) && !lstrncmpi( p+1, str, len )) + if ((*p == len) && !lstrncmpi32A( p+1, str, len )) return (HRSRC)((int)pNameInfo - (int)pModule); } } @@ -163,7 +163,7 @@ HRSRC NE_FindResource( HMODULE hModule, SEGPTR typeId, SEGPTR resId ) if (!(pTypeInfo->type_id & 0x8000)) { BYTE *p = (BYTE*)pModule+pModule->res_table+pTypeInfo->type_id; - if ((*p == len) && !lstrncmpi( p+1, str, len )) + if ((*p == len) && !lstrncmpi32A( p+1, str, len )) { dprintf_resource( stddeb, " Found type '%s'\n", str ); hRsrc = NE_FindResourceFromType(pModule, pTypeInfo, resId); diff --git a/loader/resource.c b/loader/resource.c index 56de36f5fac..9f0aa83a4e4 100644 --- a/loader/resource.c +++ b/loader/resource.c @@ -304,7 +304,7 @@ HANDLE LoadAccelerators(HANDLE instance, SEGPTR lpTableName) /********************************************************************** * TranslateAccelerator [USER.178] */ -int TranslateAccelerator(HWND hWnd, HANDLE hAccel, LPMSG msg) +int TranslateAccelerator(HWND hWnd, HANDLE hAccel, LPMSG16 msg) { ACCELHEADER *lpAccelTbl; int i; diff --git a/loader/signal.c b/loader/signal.c index c0f422f6fca..0d200ca766e 100644 --- a/loader/signal.c +++ b/loader/signal.c @@ -70,50 +70,54 @@ static void wine_timer(int signal, int code, struct sigcontext *context) /********************************************************************** - * win_fault + * SIGNAL_trap + * + * SIGTRAP handler. + */ +#ifdef linux +static void SIGNAL_trap(int signal, struct sigcontext_struct context_struct) +{ + struct sigcontext_struct *context = &context_struct; +#elif defined(__svr4__) || defined(_SCO_DS) +static void SIGNAL_trap(int signal, void *siginfo, ucontext_t *context) +{ +#else +static void SIGNAL_trap(int signal, int code, struct sigcontext *context) +{ +#endif + wine_debug( signal, context ); /* Enter our debugger */ +} + + +/********************************************************************** + * SIGNAL_fault * * Segfault handler. */ #ifdef linux -static void win_fault(int signal, struct sigcontext_struct context_struct) +static void SIGNAL_fault(int signal, struct sigcontext_struct context_struct) { struct sigcontext_struct *context = &context_struct; #elif defined(__svr4__) || defined(_SCO_DS) -static void win_fault(int signal, void *siginfo, ucontext_t *context) +static void SIGNAL_fault(int signal, void *siginfo, ucontext_t *context) { #else -static void win_fault(int signal, int code, struct sigcontext *context) +static void SIGNAL_fault(int signal, int code, struct sigcontext *context) { #endif - if (signal == SIGTRAP) + if (CS_reg(context) == WINE_CODE_SELECTOR) { - /* If SIGTRAP not caused by breakpoint or single step - don't jump into the debugger */ - if (!(EFL_reg(context) & STEP_FLAG)) - { - DBG_ADDR addr; - addr.seg = CS_reg(context); - addr.off = EIP_reg(context) - 1; - if (DEBUG_FindBreakpoint(&addr) == -1) return; - } + fprintf( stderr, "Segmentation fault in Wine program (%x:%lx)." + " Please debug.\n", + CS_reg(context), EIP_reg(context) ); } - else if (signal != SIGHUP) + else { - if (CS_reg(context) == WINE_CODE_SELECTOR) - { - fprintf(stderr, "Segmentation fault in Wine program (%x:%lx)." - " Please debug.\n", - CS_reg(context), EIP_reg(context) ); - } - else - { - if (INSTR_EmulateInstruction( context )) return; - fprintf( stderr, "Segmentation fault in Windows program %x:%lx.\n", - CS_reg(context), EIP_reg(context) ); - } + if (INSTR_EmulateInstruction( context )) return; + fprintf( stderr, "Segmentation fault in Windows program %x:%lx.\n", + CS_reg(context), EIP_reg(context) ); } - - wine_debug( signal, context ); /* Enter our debugger */ + wine_debug( signal, context ); } @@ -201,13 +205,13 @@ void init_wine_signals(void) #endif /* __svr4__ || _SCO_DS */ SIGNAL_SetHandler( SIGALRM, (void (*)())wine_timer ); - SIGNAL_SetHandler( SIGSEGV, (void (*)())win_fault ); - SIGNAL_SetHandler( SIGILL, (void (*)())win_fault ); - SIGNAL_SetHandler( SIGFPE, (void (*)())win_fault ); - SIGNAL_SetHandler( SIGTRAP, (void (*)())win_fault ); /* For debugger */ - SIGNAL_SetHandler( SIGHUP, (void (*)())win_fault ); /* For forced break */ + SIGNAL_SetHandler( SIGSEGV, (void (*)())SIGNAL_fault ); + SIGNAL_SetHandler( SIGILL, (void (*)())SIGNAL_fault ); + SIGNAL_SetHandler( SIGFPE, (void (*)())SIGNAL_fault ); + SIGNAL_SetHandler( SIGTRAP, (void (*)())SIGNAL_trap ); /* debugger */ + SIGNAL_SetHandler( SIGHUP, (void (*)())SIGNAL_trap ); /* forced break */ #ifdef SIGBUS - SIGNAL_SetHandler( SIGBUS, (void (*)())win_fault ); + SIGNAL_SetHandler( SIGBUS, (void (*)())SIGNAL_fault ); #endif #ifdef CONFIG_IPC SIGNAL_SetHandler( SIGUSR2, (void (*)())stop_wait ); /* For IPC */ diff --git a/loader/task.c b/loader/task.c index db91fd0679a..8132b9de0c6 100644 --- a/loader/task.c +++ b/loader/task.c @@ -127,7 +127,7 @@ static HANDLE TASK_CreateDOSEnvironment(void) for (e = environ, size = initial_size; *e; e++) { - if (lstrncmpi(*e, "path=", 5)) + if (lstrncmpi32A(*e, "path=", 5)) { int len = strlen(*e) + 1; if (size + len >= 32767) @@ -149,7 +149,7 @@ static HANDLE TASK_CreateDOSEnvironment(void) for (e = environ, size = initial_size; *e; e++) { - if (lstrncmpi(*e, "path=", 5)) + if (lstrncmpi32A(*e, "path=", 5)) { int len = strlen(*e) + 1; if (size + len >= 32767) break; @@ -478,7 +478,7 @@ HTASK TASK_CreateTask( HMODULE hModule, HANDLE hInstance, HANDLE hPrevInstance, memset( pTask->pdb.fileHandles, 0xff, sizeof(pTask->pdb.fileHandles) ); pTask->pdb.environment = hEnvironment; pTask->pdb.nbFiles = 20; - lstrcpyn( pTask->pdb.cmdLine + 1, cmdLine, 127 ); + lstrcpyn32A( pTask->pdb.cmdLine + 1, cmdLine, 127 ); pTask->pdb.cmdLine[0] = strlen( pTask->pdb.cmdLine + 1 ); /* Get the compatibility flags */ diff --git a/memory/Makefile.in b/memory/Makefile.in index 4287234615d..a2e5b36746a 100644 --- a/memory/Makefile.in +++ b/memory/Makefile.in @@ -7,7 +7,8 @@ C_SRCS = \ heap.c \ ldt.c \ local.c \ - selector.c + selector.c \ + string.c all: $(MODULE).o diff --git a/memory/atom.c b/memory/atom.c index bde08be6623..4d8db564268 100644 --- a/memory/atom.c +++ b/memory/atom.c @@ -141,7 +141,7 @@ static ATOM ATOM_AddAtom( WORD selector, LPCSTR str ) { entryPtr = ATOM_MakePtr( selector, entry ); if ((entryPtr->length == len) && - (!lstrncmpi( entryPtr->str, str, len ))) + (!lstrncmpi32A( entryPtr->str, str, len ))) { entryPtr->refCount++; return HANDLETOATOM( entry ); @@ -218,7 +218,7 @@ static ATOM ATOM_FindAtom( WORD selector, LPCSTR str ) { ATOMENTRY * entryPtr = ATOM_MakePtr( selector, entry ); if ((entryPtr->length == len) && - (!lstrncmpi( entryPtr->str, str, len ))) + (!lstrncmpi32A( entryPtr->str, str, len ))) return HANDLETOATOM( entry ); entry = entryPtr->next; } @@ -294,7 +294,7 @@ ATOM AddAtom( SEGPTR str ) /* If the string is in the same data segment as the atom table, make */ /* a copy of the string to be sure it doesn't move in linear memory. */ char buffer[256]; - lstrcpyn( buffer, (char *)PTR_SEG_TO_LIN(str), sizeof(buffer) ); + lstrcpyn32A( buffer, (char *)PTR_SEG_TO_LIN(str), sizeof(buffer) ); atom = ATOM_AddAtom( ds, buffer ); } else atom = ATOM_AddAtom( ds, (LPCSTR)PTR_SEG_TO_LIN(str) ); diff --git a/memory/global.c b/memory/global.c index c8e4d5d1f50..1f58f09fd19 100644 --- a/memory/global.c +++ b/memory/global.c @@ -93,8 +93,8 @@ void debug_handles() * Create a global heap block for a fixed range of linear memory. */ HGLOBAL16 GLOBAL_CreateBlock( WORD flags, const void *ptr, DWORD size, - HGLOBAL16 hOwner, BOOL isCode, - BOOL is32Bit, BOOL isReadOnly, + HGLOBAL16 hOwner, BOOL16 isCode, + BOOL16 is32Bit, BOOL16 isReadOnly, SHMDATA *shmdata ) { WORD sel, selcount; @@ -156,7 +156,7 @@ HGLOBAL16 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( HGLOBAL16 handle ) +BOOL16 GLOBAL_FreeBlock( HGLOBAL16 handle ) { WORD sel; @@ -174,7 +174,7 @@ BOOL GLOBAL_FreeBlock( HGLOBAL16 handle ) * Implementation of GlobalAlloc16() */ HGLOBAL16 GLOBAL_Alloc( UINT16 flags, DWORD size, HGLOBAL16 hOwner, - BOOL isCode, BOOL is32Bit, BOOL isReadOnly ) + BOOL16 isCode, BOOL16 is32Bit, BOOL16 isReadOnly ) { void *ptr; HGLOBAL16 handle; diff --git a/memory/heap.c b/memory/heap.c index 8ba60e8ab2e..462cf77a0bf 100644 --- a/memory/heap.c +++ b/memory/heap.c @@ -1199,7 +1199,7 @@ BOOL HeapWalk( HANDLE32 heap, void *entry ) */ LPSTR HEAP_strdupA( HANDLE32 heap, DWORD flags, LPCSTR str ) { - INT32 len = lstrlen(str) + 1; + INT32 len = lstrlen32A(str) + 1; LPSTR p = HeapAlloc( heap, flags, len ); if (p) strcpy( p, str ); return p; diff --git a/memory/ldt.c b/memory/ldt.c index 87323db9c49..5ed3cbfd03e 100644 --- a/memory/ldt.c +++ b/memory/ldt.c @@ -37,8 +37,8 @@ extern int i386_set_ldt(int, union descriptor *, int); #endif /* ifndef WINELIB */ -ldt_copy_entry ldt_copy[LDT_SIZE] = { {0,0}, }; -unsigned char ldt_flags_copy[LDT_SIZE] = { 0, }; +ldt_copy_entry ldt_copy[LDT_SIZE]; +unsigned char ldt_flags_copy[LDT_SIZE]; /*********************************************************************** diff --git a/memory/string.c b/memory/string.c new file mode 100644 index 00000000000..3348ec89b7e --- /dev/null +++ b/memory/string.c @@ -0,0 +1,335 @@ +/* + * String functions + * + * Copyright 1993 Yngvi Sigurjonsson + * Copyright 1996 Alexandre Julliard + */ + +#include +#include +#include "windows.h" +#include "ldt.h" + + +/*********************************************************************** + * hmemcpy (KERNEL.348) + */ +void hmemcpy( LPVOID dst, LPCVOID src, LONG count ) +{ + memcpy( dst, src, count ); +} + + +/*********************************************************************** + * lstrcat16 (KERNEL.89) + */ +SEGPTR lstrcat16( SEGPTR dst, SEGPTR src ) +{ + lstrcat32A( (LPSTR)PTR_SEG_TO_LIN(dst), (LPCSTR)PTR_SEG_TO_LIN(src) ); + return dst; +} + + +/*********************************************************************** + * lstrcat32A (KERNEL32.599) + */ +LPSTR lstrcat32A( LPSTR dst, LPCSTR src ) +{ + strcat( dst, src ); + return dst; +} + + +/*********************************************************************** + * lstrcat32W (KERNEL32.600) + */ +LPWSTR lstrcat32W( LPWSTR dst, LPCWSTR src ) +{ + register LPWSTR p = dst; + while (*p) p++; + while ((*p++ = *src++)); + return dst; +} + + +/*********************************************************************** + * lstrcatn16 (KERNEL.352) + */ +SEGPTR lstrcatn16( SEGPTR dst, SEGPTR src, INT16 n ) +{ + lstrcatn32A( (LPSTR)PTR_SEG_TO_LIN(dst), (LPCSTR)PTR_SEG_TO_LIN(src), n ); + return dst; +} + + +/*********************************************************************** + * lstrcatn32A (Not a Windows API) + */ +LPSTR lstrcatn32A( LPSTR dst, LPCSTR src, INT32 n ) +{ + register LPSTR p = dst; + while (*p) p++; + if ((n -= (INT32)(p - dst)) <= 0) return dst; + lstrcpyn32A( p, src, n ); + return dst; +} + + +/*********************************************************************** + * lstrcatn32W (Not a Windows API) + */ +LPWSTR lstrcatn32W( LPWSTR dst, LPCWSTR src, INT32 n ) +{ + register LPWSTR p = dst; + while (*p) p++; + if ((n -= (INT32)(p - dst)) <= 0) return dst; + lstrcpyn32W( p, src, n ); + return dst; +} + + +/*********************************************************************** + * lstrcmp16 (USER.430) + */ +INT16 lstrcmp16( LPCSTR str1, LPCSTR str2 ) +{ + return (INT16)lstrcmp32A( str1, str2 ); +} + + +/*********************************************************************** + * lstrcmp32A (KERNEL.602) + */ +INT32 lstrcmp32A( LPCSTR str1, LPCSTR str2 ) +{ + return (INT32)strcmp( str1, str2 ); +} + + +/*********************************************************************** + * lstrcmp32W (KERNEL.603) + */ +INT32 lstrcmp32W( LPCWSTR str1, LPCWSTR str2 ) +{ + while (*str1 && (*str1 == *str2)) { str1++; str2++; } + return (INT32)(*str1 - *str2); +} + + +/*********************************************************************** + * lstrcmpi16 (USER.471) + */ +INT16 lstrcmpi16( LPCSTR str1, LPCSTR str2 ) +{ + return (INT16)lstrcmpi32A( str1, str2 ); +} + + +/*********************************************************************** + * lstrcmpi32A (KERNEL32.605) + */ +INT32 lstrcmpi32A( LPCSTR str1, LPCSTR str2 ) +{ + INT32 res; + + while (*str1) + { + if ((res = toupper(*str1) - toupper(*str2)) != 0) return res; + str1++; + str2++; + } + return toupper(*str1) - toupper(*str2); +} + + +/*********************************************************************** + * lstrcmpi32W (KERNEL32.606) + */ +INT32 lstrcmpi32W( LPCWSTR str1, LPCWSTR str2 ) +{ + INT32 res; + + while (*str1) + { + /* FIXME: Unicode */ + if ((res = toupper(*str1) - toupper(*str2)) != 0) return res; + str1++; + str2++; + } + return toupper(*str1) - toupper(*str2); +} + + +/*********************************************************************** + * lstrcpy16 (KERNEL.88) + */ +SEGPTR lstrcpy16( SEGPTR dst, SEGPTR src ) +{ + lstrcpy32A( (LPSTR)PTR_SEG_TO_LIN(dst), (LPCSTR)PTR_SEG_TO_LIN(src) ); + return dst; +} + + +/*********************************************************************** + * lstrcpy32A (KERNEL32.608) + */ +LPSTR lstrcpy32A( LPSTR dst, LPCSTR src ) +{ + strcpy( dst, src ); + return dst; +} + + +/*********************************************************************** + * lstrcpy32W (KERNEL32.609) + */ +LPWSTR lstrcpy32W( LPWSTR dst, LPCWSTR src ) +{ + register LPWSTR p = dst; + while ((*p++ = *src++)); + return dst; +} + + +/*********************************************************************** + * lstrcpyn16 (KERNEL.353) + */ +SEGPTR lstrcpyn16( SEGPTR dst, SEGPTR src, INT16 n ) +{ + lstrcpyn32A( (LPSTR)PTR_SEG_TO_LIN(dst), (LPCSTR)PTR_SEG_TO_LIN(src), n ); + return dst; +} + + +/*********************************************************************** + * lstrcpyn32A (KERNEL32.611) + */ +LPSTR lstrcpyn32A( LPSTR dst, LPCSTR src, INT32 n ) +{ + LPSTR p = dst; + while ((n-- > 1) && *src) *p++ = *src++; + *p = 0; + return dst; +} + + +/*********************************************************************** + * lstrcpyn32W (KERNEL32.612) + */ +LPWSTR lstrcpyn32W( LPWSTR dst, LPCWSTR src, INT32 n ) +{ + LPWSTR p = dst; + while ((n-- > 1) && *src) *p++ = *src++; + *p = 0; + return dst; +} + + +/*********************************************************************** + * lstrlen16 (KERNEL.90) + */ +INT16 lstrlen16( LPCSTR str ) +{ + return (INT16)lstrlen32A( str ); +} + + +/*********************************************************************** + * lstrlen32A (KERNEL32.614) + */ +INT32 lstrlen32A( LPCSTR str ) +{ + /* looks weird, but win3.1 KERNEL got a GeneralProtection handler + * in lstrlen() ... we check only for NULL pointer reference. + * - Marcus Meissner + */ + if (!str) return 0; + return (INT32)strlen(str); +} + + +/*********************************************************************** + * lstrlen32W (KERNEL32.615) + */ +INT32 lstrlen32W( LPCWSTR str ) +{ + INT32 len = 0; + if (!str) return 0; + while (*str++) len++; + return len; +} + + +/*********************************************************************** + * lstrncmp16 (Not a Windows API) + */ +INT16 lstrncmp16( LPCSTR str1, LPCSTR str2, INT16 n ) +{ + return (INT16)lstrncmp32A( str1, str2, n ); +} + + +/*********************************************************************** + * lstrncmp32A (Not a Windows API) + */ +INT32 lstrncmp32A( LPCSTR str1, LPCSTR str2, INT32 n ) +{ + return (INT32)strncmp( str1, str2, n ); +} + + +/*********************************************************************** + * lstrncmp32W (Not a Windows API) + */ +INT32 lstrncmp32W( LPCWSTR str1, LPCWSTR str2, INT32 n ) +{ + if (!n) return 0; + while ((--n > 0) && *str1 && (*str1 == *str2)) { str1++; str2++; } + return (INT32)(*str1 - *str2); +} + + +/*********************************************************************** + * lstrncmpi16 (Not a Windows API) + */ +INT16 lstrncmpi16( LPCSTR str1, LPCSTR str2, INT16 n ) +{ + return (INT16)lstrncmpi32A( str1, str2, n ); +} + + +/*********************************************************************** + * lstrncmpi32A (Not a Windows API) + */ +INT32 lstrncmpi32A( LPCSTR str1, LPCSTR str2, INT32 n ) +{ + INT32 res; + + if (!n) return 0; + while ((--n > 0) && *str1) + { + if ((res = toupper(*str1) - toupper(*str2)) != 0) return res; + str1++; + str2++; + } + return toupper(*str1) - toupper(*str2); +} + + +/*********************************************************************** + * lstrncmpi32W (Not a Windows API) + */ +INT32 lstrncmpi32W( LPCWSTR str1, LPCWSTR str2, INT32 n ) +{ + INT32 res; + + if (!n) return 0; + while ((--n > 0) && *str1) + { + /* FIXME: Unicode */ + if ((res = toupper(*str1) - toupper(*str2)) != 0) return res; + str1++; + str2++; + } + return toupper(*str1) - toupper(*str2); +} diff --git a/misc/Makefile.in b/misc/Makefile.in index 6ef8e00fe95..45872d97b0e 100644 --- a/misc/Makefile.in +++ b/misc/Makefile.in @@ -32,6 +32,7 @@ C_SRCS = \ ver.c \ w32sys.c \ winsocket.c \ + wsprintf.c \ xmalloc.c all: $(MODULE).o diff --git a/misc/clipboard.c b/misc/clipboard.c index a9c01d9efac..4ff267ca3f4 100644 --- a/misc/clipboard.c +++ b/misc/clipboard.c @@ -32,8 +32,8 @@ typedef struct tagCLIPFORMAT { LPSTR Name; HANDLE hData; DWORD BufSize; - void *PrevFormat; - void *NextFormat; + struct tagCLIPFORMAT *PrevFormat; + struct tagCLIPFORMAT *NextFormat; } CLIPFORMAT, *LPCLIPFORMAT; /* ************************************************************************* @@ -50,7 +50,7 @@ static WORD LastRegFormat = CF_REGFORMATBASE; static Bool wait_for_selection = False; static Bool wineOwnsSelection = False; -CLIPFORMAT ClipFormats[16] = { +static CLIPFORMAT ClipFormats[16] = { { CF_TEXT, 1, 0, "Text", (HANDLE)NULL, 0, NULL, &ClipFormats[1] }, { CF_BITMAP, 1, 0, "Bitmap", (HANDLE)NULL, 0, &ClipFormats[0], &ClipFormats[2] }, { CF_METAFILEPICT, 1, 0, "MetaFile Picture", (HANDLE)NULL, 0, &ClipFormats[1], &ClipFormats[3] }, @@ -117,12 +117,16 @@ void CLIPBOARD_DeleteRecord(LPCLIPFORMAT lpFormat) */ BOOL CLIPBOARD_RequestXSelection() { + HWND hWnd = hWndClipWindow; + + if( !hWnd ) hWnd = GetActiveWindow(); + wait_for_selection=True; dprintf_clipboard(stddeb,"Requesting selection\n"); XConvertSelection(display,XA_PRIMARY,XA_STRING, XInternAtom(display,"PRIMARY_TEXT",False), - WIN_GetXWindow(hWndClipWindow),CurrentTime); + WIN_GetXWindow(hWnd),CurrentTime); /* TODO: need time-out for broken clients */ while(wait_for_selection) EVENT_WaitXEvent(-1); diff --git a/misc/comm.c b/misc/comm.c index 73811a921cd..a68542a1551 100644 --- a/misc/comm.c +++ b/misc/comm.c @@ -138,7 +138,7 @@ BOOL BuildCommDCB(LPCSTR device, LPDCB lpdcb) "BuildCommDCB: (%s), ptr %p\n", device, lpdcb); commerror = 0; - if (!lstrncmpi(device,"COM",3)) { + if (!lstrncmpi32A(device,"COM",3)) { port = device[3] - '0'; @@ -229,7 +229,7 @@ int OpenComm(LPCSTR device, UINT cbInQueue, UINT cbOutQueue) "OpenComm: %s, %d, %d\n", device, cbInQueue, cbOutQueue); commerror = 0; - if (!lstrncmpi(device,"COM",3)) { + if (!lstrncmpi32A(device,"COM",3)) { port = device[3] - '0'; if (port-- == 0) { @@ -258,7 +258,7 @@ int OpenComm(LPCSTR device, UINT cbInQueue, UINT cbOutQueue) } } else - if (!lstrncmpi(device,"LPT",3)) { + if (!lstrncmpi32A(device,"LPT",3)) { port = device[3] - '0'; if (!ValidLPTPort(port)) { diff --git a/misc/commdlg.c b/misc/commdlg.c index 95b18f9414a..4ca2ee7e81c 100644 --- a/misc/commdlg.c +++ b/misc/commdlg.c @@ -206,13 +206,13 @@ static LPSTR FILEDLG_GetFileType(LPSTR cfptr, LPSTR fptr, WORD index) /*********************************************************************** * FILEDLG_WMDrawItem [internal] */ -static LONG FILEDLG_WMDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam) +static LONG FILEDLG_WMDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam,int savedlg) { LPDRAWITEMSTRUCT16 lpdis = (LPDRAWITEMSTRUCT16)PTR_SEG_TO_LIN(lParam); char str[512]; HBRUSH hBrush; HBITMAP hBitmap, hPrevBitmap; - BITMAP bm; + BITMAP16 bm; HDC hMemDC; str[0]=0; @@ -222,6 +222,14 @@ static LONG FILEDLG_WMDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam) FillRect16(lpdis->hDC, &lpdis->rcItem, hBrush); SendMessage16(lpdis->hwndItem, LB_GETTEXT, lpdis->itemID, (LPARAM)MAKE_SEGPTR(str)); + + if (savedlg) /* use _gray_ text in FileSaveDlg */ + if (!lpdis->itemState) + SetTextColor(lpdis->hDC,GetSysColor(COLOR_GRAYTEXT) ); + else + SetTextColor(lpdis->hDC,GetSysColor(COLOR_WINDOWTEXT) ); + /* inversion of gray would be bad readable */ + TextOut16(lpdis->hDC, lpdis->rcItem.left, lpdis->rcItem.top, str, strlen(str)); if (lpdis->itemState != 0) { @@ -238,7 +246,7 @@ static LONG FILEDLG_WMDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam) (LPARAM)MAKE_SEGPTR(str)); hBitmap = hFolder; - GetObject(hBitmap, sizeof(BITMAP), (LPSTR)&bm); + GetObject16( hBitmap, sizeof(bm), &bm ); TextOut16(lpdis->hDC, lpdis->rcItem.left + bm.bmWidth, lpdis->rcItem.top, str, strlen(str)); hMemDC = CreateCompatibleDC(lpdis->hDC); @@ -266,7 +274,7 @@ static LONG FILEDLG_WMDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam) case TYPE_NETWORK: default: hBitmap = hHDisk; break; } - GetObject(hBitmap, sizeof(BITMAP), (LPSTR)&bm); + GetObject16( hBitmap, sizeof(bm), &bm ); TextOut16(lpdis->hDC, lpdis->rcItem.left + bm.bmWidth, lpdis->rcItem.top, str, strlen(str)); hMemDC = CreateCompatibleDC(lpdis->hDC); @@ -288,11 +296,11 @@ static LONG FILEDLG_WMDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam) */ static LONG FILEDLG_WMMeasureItem(HWND hWnd, WPARAM wParam, LPARAM lParam) { - BITMAP bm; - LPMEASUREITEMSTRUCT lpmeasure; + BITMAP16 bm; + LPMEASUREITEMSTRUCT16 lpmeasure; - GetObject(hFolder2, sizeof(BITMAP), (LPSTR)&bm); - lpmeasure = (LPMEASUREITEMSTRUCT)PTR_SEG_TO_LIN(lParam); + GetObject16( hFolder2, sizeof(bm), &bm ); + lpmeasure = (LPMEASUREITEMSTRUCT16)PTR_SEG_TO_LIN(lParam); lpmeasure->itemHeight = bm.bmHeight; return TRUE; } @@ -512,7 +520,7 @@ static LRESULT FILEDLG_WMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam) if (lRet == LB_ERR) return TRUE; lpofn->nFilterIndex = lRet + 1; dprintf_commdlg(stddeb,"commdlg: lpofn->nFilterIndex=%ld\n", lpofn->nFilterIndex); - lstrcpyn(tmpstr2, + lstrcpyn32A(tmpstr2, FILEDLG_GetFileType(PTR_SEG_TO_LIN(lpofn->lpstrCustomFilter), PTR_SEG_TO_LIN(lpofn->lpstrFilter), lRet), sizeof(tmpstr2)); @@ -526,7 +534,7 @@ static LRESULT FILEDLG_WMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam) /* strip off the pathname */ *pstr = 0; SetDlgItemText32A( hWnd, edt1, pstr + 1 ); - lstrcpyn(tmpstr2, pstr+1, sizeof(tmpstr2) ); + lstrcpyn32A(tmpstr2, pstr+1, sizeof(tmpstr2) ); /* Should we MessageBox() if this fails? */ if (!FILEDLG_ScanDir(hWnd, tmpstr)) return TRUE; strcpy(tmpstr, tmpstr2); @@ -607,7 +615,7 @@ LRESULT FileOpenDlgProc(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam) case WM_MEASUREITEM: return FILEDLG_WMMeasureItem(hWnd, wParam, lParam); case WM_DRAWITEM: - return FILEDLG_WMDrawItem(hWnd, wParam, lParam); + return FILEDLG_WMDrawItem(hWnd, wParam, lParam, FALSE); case WM_COMMAND: return FILEDLG_WMCommand(hWnd, wParam, lParam); #if 0 @@ -651,7 +659,7 @@ LRESULT FileSaveDlgProc(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam) return FILEDLG_WMMeasureItem(hWnd, wParam, lParam); case WM_DRAWITEM: - return FILEDLG_WMDrawItem(hWnd, wParam, lParam); + return FILEDLG_WMDrawItem(hWnd, wParam, lParam, TRUE); case WM_COMMAND: return FILEDLG_WMCommand(hWnd, wParam, lParam); @@ -1403,7 +1411,7 @@ static int CC_CheckDigitsInEdit(HWND hwnd,int maxval) long editpos; char buffer[30]; GetWindowText32A(hwnd,buffer,sizeof(buffer)); - m=lstrlen(buffer); + m=strlen(buffer); result=0; for (i=0;iitemHeight=bm.bmHeight; /* FIXME: use MAX of bm.bmHeight and tm.tmHeight .*/ return 0; @@ -2502,7 +2510,7 @@ LRESULT CFn_WMDrawItem(HWND hDlg, WPARAM wParam, LPARAM lParam) { HBRUSH hBrush; char buffer[40]; - BITMAP bm; + BITMAP16 bm; COLORREF cr; RECT16 rect; #if 0 @@ -2531,9 +2539,9 @@ LRESULT CFn_WMDrawItem(HWND hDlg, WPARAM wParam, LPARAM lParam) case cmb1: /* dprintf_commdlg(stddeb,"WM_Drawitem cmb1\n"); */ SendMessage16(lpdi->hwndItem, CB_GETLBTEXT, lpdi->itemID, (LPARAM)MAKE_SEGPTR(buffer)); - GetObject(hBitmapTT, sizeof(BITMAP), (LPSTR)&bm); + GetObject16( hBitmapTT, sizeof(bm), &bm ); TextOut16(lpdi->hDC, lpdi->rcItem.left + bm.bmWidth + 10, - lpdi->rcItem.top, buffer, lstrlen(buffer)); + lpdi->rcItem.top, buffer, lstrlen16(buffer)); #if 0 nFontType = SendMessage16(lpdi->hwndItem, CB_GETITEMDATA, lpdi->itemID,0L); /* FIXME: draw bitmap if truetype usage */ @@ -2553,14 +2561,14 @@ LRESULT CFn_WMDrawItem(HWND hDlg, WPARAM wParam, LPARAM lParam) SendMessage16(lpdi->hwndItem, CB_GETLBTEXT, lpdi->itemID, (LPARAM)MAKE_SEGPTR(buffer)); TextOut16(lpdi->hDC, lpdi->rcItem.left, - lpdi->rcItem.top, buffer, lstrlen(buffer)); + lpdi->rcItem.top, buffer, lstrlen16(buffer)); break; case cmb4: /* dprintf_commdlg(stddeb,"WM_DRAWITEM cmb4 (=COLOR)\n"); */ SendMessage16(lpdi->hwndItem, CB_GETLBTEXT, lpdi->itemID, (LPARAM)MAKE_SEGPTR(buffer)); TextOut16(lpdi->hDC, lpdi->rcItem.left + 25+5, - lpdi->rcItem.top, buffer, lstrlen(buffer)); + lpdi->rcItem.top, buffer, lstrlen16(buffer)); cr = SendMessage16(lpdi->hwndItem, CB_GETITEMDATA, lpdi->itemID,0L); hBrush = CreateSolidBrush(cr); if (hBrush) @@ -2613,7 +2621,7 @@ LRESULT CFn_WMCommand(HWND hDlg, WPARAM wParam, LPARAM lParam) long l; HDC hdc; LPCHOOSEFONT lpcf=(LPCHOOSEFONT)GetWindowLong32A(hDlg, DWL_USER); - LPLOGFONT lpxx=PTR_SEG_TO_LIN(lpcf->lpLogFont); + LPLOGFONT16 lpxx=PTR_SEG_TO_LIN(lpcf->lpLogFont); dprintf_commdlg(stddeb,"FormatCharDlgProc // WM_COMMAND lParam=%08lX\n", lParam); switch (wParam) diff --git a/misc/compobj.c b/misc/compobj.c index 106aaedc890..c7c76a2568c 100644 --- a/misc/compobj.c +++ b/misc/compobj.c @@ -7,8 +7,6 @@ /* At the moment, these are only empty stubs. */ -#include "windows.h" -#include "compobj.h" #include "ole.h" #include "ole2.h" #include "stddebug.h" diff --git a/misc/keyboard.c b/misc/keyboard.c index 8f8c31b2625..750a645bf01 100644 --- a/misc/keyboard.c +++ b/misc/keyboard.c @@ -8,11 +8,123 @@ static char Copyright[] = "Copyright Scott A. Laird, Erik Bos 1993, 1994"; #include #include #include "windows.h" -#include "keyboard.h" #include "stddebug.h" /* #define DEBUG_KEYBOARD */ #include "debug.h" + +struct KeyTableEntry { + int virtualkey; + int ASCII; + int scancode; + const char *name; +}; + +static const struct KeyTableEntry KeyTable[] = +{ + { 0x3, 0x3, 0x0, "" }, + { 0x8, 0x8, 0xe, "Backspace" }, + { 0x9, 0x9, 0xf, "Tab" }, + { 0xc, 0x0, 0x4c, "Num 5" }, + { 0xd, 0xd, 0x1c, "Enter" }, + { 0x10, 0x0, 0x2a, "Shift" }, + { 0x11, 0x0, 0x1d, "Ctrl" }, + { 0x12, 0x0, 0x38, "Alt" }, + { 0x14, 0x0, 0x3a, "Caps Lock" }, + { 0x1b, 0x1b, 0x1, "Esc" }, + { 0x20, 0x20, 0x39, "Space" }, + { 0x21, 0x0, 0x49, "Num 9" }, + { 0x22, 0x0, 0x51, "Num 3" }, + { 0x23, 0x0, 0x4f, "Num 1" }, + { 0x24, 0x0, 0x47, "Num 7" }, + { 0x25, 0x0, 0x4b, "Num 4" }, + { 0x26, 0x0, 0x48, "Num 8" }, + { 0x27, 0x0, 0x4d, "Num 6" }, + { 0x28, 0x0, 0x50, "Num 2" }, + { 0x2d, 0x0, 0x52, "Num 0" }, + { 0x2e, 0x0, 0x53, "Num Del" }, + { 0x30, 0x30, 0xb, "0" }, + { 0x31, 0x31, 0x2, "1" }, + { 0x32, 0x32, 0x3, "2" }, + { 0x33, 0x33, 0x4, "3" }, + { 0x34, 0x34, 0x5, "4" }, + { 0x35, 0x35, 0x6, "5" }, + { 0x36, 0x36, 0x7, "6" }, + { 0x37, 0x37, 0x8, "7" }, + { 0x38, 0x38, 0x9, "8" }, + { 0x39, 0x39, 0xa, "9" }, + { 0x41, 0x41, 0x1e, "A" }, + { 0x42, 0x42, 0x30, "B" }, + { 0x43, 0x43, 0x2e, "C" }, + { 0x44, 0x44, 0x20, "D" }, + { 0x45, 0x45, 0x12, "E" }, + { 0x46, 0x46, 0x21, "F" }, + { 0x47, 0x47, 0x22, "G" }, + { 0x48, 0x48, 0x23, "H" }, + { 0x49, 0x49, 0x17, "I" }, + { 0x4a, 0x4a, 0x24, "J" }, + { 0x4b, 0x4b, 0x25, "K" }, + { 0x4c, 0x4c, 0x26, "L" }, + { 0x4d, 0x4d, 0x32, "M" }, + { 0x4e, 0x4e, 0x31, "N" }, + { 0x4f, 0x4f, 0x18, "O" }, + { 0x50, 0x50, 0x19, "P" }, + { 0x51, 0x51, 0x10, "Q" }, + { 0x52, 0x52, 0x13, "R" }, + { 0x53, 0x53, 0x1f, "S" }, + { 0x54, 0x54, 0x14, "T" }, + { 0x55, 0x55, 0x16, "U" }, + { 0x56, 0x56, 0x2f, "V" }, + { 0x57, 0x57, 0x11, "W" }, + { 0x58, 0x58, 0x2d, "X" }, + { 0x59, 0x59, 0x15, "Y" }, + { 0x5a, 0x5a, 0x2c, "Z" }, + { 0x60, 0x0, 0x52, "Num 0" }, + { 0x61, 0x0, 0x4f, "Num 1" }, + { 0x62, 0x0, 0x50, "Num 2" }, + { 0x63, 0x0, 0x51, "Num 3" }, + { 0x64, 0x0, 0x4b, "Num 4" }, + { 0x65, 0x0, 0x4c, "Num 5" }, + { 0x66, 0x0, 0x4d, "Num 6" }, + { 0x67, 0x0, 0x47, "Num 7" }, + { 0x68, 0x0, 0x48, "Num 8" }, + { 0x69, 0x0, 0x49, "Num 9" }, + { 0x6a, 0x2a, 0x37, "Num *" }, + { 0x6b, 0x2b, 0x4e, "Num +" }, + { 0x6c, 0x0, 0x0, "" }, + { 0x6d, 0x2d, 0x4a, "Num -" }, + { 0x6e, 0x2e, 0x53, "Num Del" }, + { 0x6f, 0x2f, 0x0, "" }, + { 0x70, 0x0, 0x3b, "F1" }, + { 0x71, 0x0, 0x3c, "F2" }, + { 0x72, 0x0, 0x3d, "F3" }, + { 0x73, 0x0, 0x3e, "F4" }, + { 0x74, 0x0, 0x3f, "F5" }, + { 0x75, 0x0, 0x40, "F6" }, + { 0x76, 0x0, 0x41, "F7" }, + { 0x77, 0x0, 0x42, "F8" }, + { 0x78, 0x0, 0x43, "F9" }, + { 0x79, 0x0, 0x44, "F10" }, + { 0x7a, 0x0, 0x57, "F11" }, + { 0x7b, 0x0, 0x58, "F12" }, + { 0x90, 0x0, 0x45, "Pause" }, + { 0x91, 0x0, 0x46, "Scroll Lock" }, + { 0xba, 0x3b, 0x27, ";" }, + { 0xbb, 0x3d, 0xd, "=" }, + { 0xbc, 0x2c, 0x33, "," }, + { 0xbd, 0x2d, 0xc, "-" }, + { 0xbe, 0x2e, 0x34, "." }, + { 0xbf, 0x2f, 0x35, "/" }, + { 0xc0, 0x60, 0x29, "`" }, + { 0xdb, 0x5b, 0x1a, "[" }, + { 0xdc, 0x5c, 0x2b, "\\" }, + { 0xdd, 0x5d, 0x1b, "]" }, + { 0xde, 0x27, 0x28, "\'" }, + { 0xe2, 0x5c, 0x56, "\\" }, +}; + +#define KeyTableSize sizeof(KeyTable) / sizeof(struct KeyTableEntry) + int ToAscii(WORD wVirtKey, WORD wScanCode, LPSTR lpKeyState, LPVOID lpChar, WORD wFlags) { @@ -138,7 +250,7 @@ int GetKeyNameText(LONG lParam, LPSTR lpBuffer, int nSize) for (i = 0 ; i != KeyTableSize ; i++) if (KeyTable[i].scancode == lParam) { - lstrcpyn(lpBuffer, KeyTable[i].name, nSize); + lstrcpyn32A( lpBuffer, KeyTable[i].name, nSize ); return strlen(lpBuffer); } diff --git a/misc/lstr.c b/misc/lstr.c index 5ebd79ca660..e01fb7fcf58 100644 --- a/misc/lstr.c +++ b/misc/lstr.c @@ -60,86 +60,6 @@ static const BYTE Ansi2Oem[256] = /* Funny to divide them between user and kernel. */ -/* KERNEL.89 */ -SEGPTR lstrcat( SEGPTR target, SEGPTR source ) -{ - strcat( (char *)PTR_SEG_TO_LIN(target), (char *)PTR_SEG_TO_LIN(source) ); - return target; -} - -/* USER.430 */ -INT lstrcmp(LPCSTR str1,LPCSTR str2) -{ - return strcmp( str1, str2 ); -} - -/* USER.471 */ -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); -} - -/* Not a Windows API*/ -INT lstrncmpi( LPCSTR str1, LPCSTR str2, int n ) -{ - INT res; - - if (!n) return 0; - while ((--n > 0) && *str1) - { - if ((res = toupper(*str1) - toupper(*str2)) != 0) return res; - str1++; - str2++; - } - return toupper(*str1) - toupper(*str2); -} - -/* KERNEL.88 */ -SEGPTR lstrcpy( SEGPTR target, SEGPTR source ) -{ - strcpy( (char *)PTR_SEG_TO_LIN(target), (char *)PTR_SEG_TO_LIN(source) ); - return target; -} - -/* KERNEL.353 32-bit version*/ -LPSTR lstrcpyn( LPSTR dst, LPCSTR src, int n ) -{ - char *tmp = dst; - while(n-- > 1 && *src) - *tmp++ = *src++; - *tmp = 0; - return dst; -} - -/* KERNEL.353 16-bit version*/ -SEGPTR WIN16_lstrcpyn( SEGPTR target, SEGPTR source, WORD n ) -{ - lstrcpyn((char *)PTR_SEG_TO_LIN(target), (char *)PTR_SEG_TO_LIN(source),n); - return target; -} - -/* KERNEL.90 */ -INT lstrlen(LPCSTR str) -{ - /* looks weird, but win3.1 KERNEL got a GeneralProtection handler - * in lstrlen() ... we check only for NULL pointer reference. - * - Marcus Meissner - */ - if (str==NULL) { - fprintf(stddeb,"lstrlen(NULL) caught, returning 0.\n"); - return 0; - } - return strlen(str); -} - /* IsCharAlpha USER 433 */ BOOL IsCharAlpha(char ch) { @@ -335,111 +255,5 @@ void OutputDebugString( LPCSTR str ) 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 ); + free( buffer ); } diff --git a/misc/lzexpand.c b/misc/lzexpand.c index 4b4b500590a..e907bfd540c 100644 --- a/misc/lzexpand.c +++ b/misc/lzexpand.c @@ -21,6 +21,12 @@ #include "stddebug.h" #include "debug.h" #include "xmalloc.h" +#include "string32.h" + +#define strdupW2A(x) STRING32_DupUniToAnsi(x) +#define strdupA2W(x) STRING32_DupAnsiToUni(x) +#define strcpyWA(a,b) STRING32_UniToAnsi(a,b) +#define strcpyAW(a,b) STRING32_AnsiToUni(a,b) /* The readahead length of the decompressor. Reading single bytes * using _lread() would be SLOW. @@ -64,7 +70,7 @@ static int nroflzstates=0; #define GET(lzs,b) _lzget(lzs,&b) #define GET_FLUSH(lzs) lzs->getcur=lzs->getlen; -int +static int _lzget(struct lzstate *lzs,BYTE *b) { if (lzs->getcurgetlen) { *b = lzs->get[lzs->getcur++]; @@ -113,16 +119,16 @@ read_header(HFILE fd,struct lzfileheader *head) { return 1; } /* - * LZSTART [LZEXPAND.7] + * LZStart [LZEXPAND.7] [LZ32.6] */ -INT -LZStart(void) { - dprintf_file(stddeb,"LZStart(void)\n"); - return 1; +INT16 LZStart(void) +{ + dprintf_file(stddeb,"LZStart(void)\n"); + return 1; } /* - * LZINIT [LZEXPAND.3] + * LZInit [LZEXPAND.3] [LZ32.2] * * initializes internal decompression buffers, returns lzfiledescriptor. * (return value the same as hfSrc, if hfSrc is not compressed) @@ -166,7 +172,7 @@ LZInit(HFILE hfSrc) { } /* - * LZDone [LZEXPAND.9] + * LZDone [LZEXPAND.9] [LZ32.8] */ void @@ -175,7 +181,7 @@ LZDone(void) { } /* - * GetExpandedName [LZEXPAND.10] + * GetExpandedName [LZEXPAND.10] * * gets the full filename of the compressed file 'in' by opening it * and reading the header @@ -185,8 +191,8 @@ LZDone(void) { * "FILE.BL_" (with lastchar 'a') is being translated to "FILE.BLA" */ -INT -GetExpandedName(LPCSTR in,LPSTR out) { +INT16 +GetExpandedName16(LPCSTR in,LPSTR out) { struct lzfileheader head; HFILE fd; OFSTRUCT ofs; @@ -252,27 +258,58 @@ GetExpandedName(LPCSTR in,LPSTR out) { return 1; } +/* + * GetExpandedNameW [LZ32.11] + */ +INT32 +GetExpandedName32W(LPCWSTR in,LPWSTR out) { + char *xin,*xout; + INT32 ret; + + xout = malloc(lstrlen32W(in)+3); + xin = strdupW2A(in); + ret = GetExpandedName16(xin,xout); + if (ret>0) + strcpyAW(out,xout); + free(xin); + free(xout); + return ret; +} + +/* + * GetExpandedNameA [LZ32.9] + */ +INT32 +GetExpandedName32A(LPCSTR in,LPSTR out) { + return GetExpandedName16(in,out); +} + /* - * LZRead [LZEXPAND.5] + * LZRead [LZEXPAND.5] [LZ32.4] * just as normal read, but reads from LZ special fd and uncompresses. */ -INT -LZRead(HFILE fd,SEGPTR segbuf,WORD toread) { +INT16 +LZRead16(HFILE fd,SEGPTR segbuf,UINT16 toread) { + dprintf_file(stddeb,"LZRead16(%d,%08lx,%d)\n",fd,(DWORD)segbuf,toread); + return LZRead32(fd,(LPBYTE)PTR_SEG_TO_LIN(segbuf),toread); +} + +INT32 +LZRead32(HFILE fd,LPVOID vbuf,UINT32 toread) { int i,howmuch; - BYTE b; - BYTE *buf; + BYTE b,*buf; struct lzstate *lzs; - dprintf_file(stddeb,"LZRead(%d,%08lx,%d)\n",fd,(DWORD)segbuf,toread); + buf=(LPBYTE)vbuf; + dprintf_file(stddeb,"LZRead32(%d,%p,%d)\n",fd,buf,toread); howmuch=toread; for (i=0;irealwanted++; @@ -351,13 +387,13 @@ LZRead(HFILE fd,SEGPTR segbuf,WORD toread) { } /* - * LZSeek [LZEXPAND.4] + * LZSeek [LZEXPAND.4] [LZ32.3] * * works as the usual _llseek */ LONG -LZSeek(HFILE fd,LONG off,INT type) { +LZSeek(HFILE fd,LONG off,INT32 type) { int i; struct lzstate *lzs; LONG lastwanted,newwanted; @@ -392,7 +428,7 @@ LZSeek(HFILE fd,LONG off,INT type) { } /* - * LZCopy [LZEXPAND.1] + * LZCopy [LZEXPAND.1] [LZ32.0] * * Copies everything from src to dest * if src is a LZ compressed file, it will be uncompressed. @@ -404,7 +440,7 @@ LZCopy(HFILE src,HFILE dest) { LONG len; #define BUFLEN 1000 BYTE buf[BUFLEN]; - INT (*xread)(HFILE,SEGPTR,WORD); + INT32 (*xread)(HFILE,LPVOID,UINT32); dprintf_file(stddeb,"LZCopy(%d,%d)\n",src,dest); for (i=0;iszPathName is an array with the OFSTRUCT */ + yfn = strdupA2W(ofs->szPathName); + memcpy(ofs->szPathName,yfn,lstrlen32W(yfn)*2+2); + free(yfn); + } + return ret; +} + /* - * LZClose [LZEXPAND.6] + * LZClose [LZEXPAND.6] [LZ32.5] */ void LZClose(HFILE fd) { @@ -480,7 +545,7 @@ LZClose(HFILE fd) { } /* - * CopyLZFile [LZEXPAND.8] + * CopyLZFile [LZEXPAND.8] [LZ32.7] * * Copy src to dest (including uncompressing src). * NOTE: Yes. This is exactly the same function as LZCopy. diff --git a/misc/main.c b/misc/main.c index 85455f7ec0e..adc82554a44 100644 --- a/misc/main.c +++ b/misc/main.c @@ -26,6 +26,8 @@ #include "options.h" #include "desktop.h" #include "shell.h" +#include "winbase.h" +#include "string32.h" #define DEBUG_DEFINE_VARIABLES #include "stddebug.h" #include "debug.h" @@ -53,7 +55,7 @@ const char people[] = "Wine is available thanks to the work of " "Jan Willamowius, Carl Williams, Karl Guenter Wuensch, Eric Youngdale, " "and James Youngman. "; -const char *langNames[] = +const char * langNames[] = { "En", /* LANG_En */ "Es", /* LANG_Es */ @@ -87,6 +89,9 @@ Window rootWindow; int screenWidth = 0, screenHeight = 0; /* Desktop window dimensions */ int screenDepth = 0; /* Screen depth to use */ int desktopX = 0, desktopY = 0; /* Desktop window position (if any) */ +int getVersion16 = 0; +int getVersion32 = 0; +OSVERSIONINFO32A getVersionEx; struct options Options = { /* default options */ @@ -128,7 +133,8 @@ static XrmOptionDescRec optionsTable[] = { "-dll", ".dll", XrmoptionSepArg, (caddr_t)NULL }, { "-allowreadonly", ".allowreadonly", XrmoptionNoArg, (caddr_t)"on" }, { "-mode", ".mode", XrmoptionSepArg, (caddr_t)NULL }, - { "-managed", ".managed", XrmoptionNoArg, (caddr_t)"off"} + { "-managed", ".managed", XrmoptionNoArg, (caddr_t)"off"}, + { "-winver", ".winver", XrmoptionSepArg, (caddr_t)NULL } }; #define NB_OPTIONS (sizeof(optionsTable) / sizeof(optionsTable[0])) @@ -153,7 +159,8 @@ static XrmOptionDescRec optionsTable[] = " -mode mode Start Wine in a particular mode (standard or enhanced)\n" \ " -name name Set the application name\n" \ " -privatemap Use a private color map\n" \ - " -synchronous Turn on synchronous display mode\n" + " -synchronous Turn on synchronous display mode\n" \ + " -winver Version to imitate (one of win31,win95,nt351)\n" @@ -237,7 +244,7 @@ BOOL ParseDebugOptions(char *options) l=strchr(options,',')-options; else l=strlen(options); - if (!lstrncmpi(options+1,"all",l-1)) + if (!lstrncmpi32A(options+1,"all",l-1)) { int i; for (i=0;idwOSVersionInfoSize!=sizeof(OSVERSIONINFO32A)) + { + fprintf(stddeb,"wrong OSVERSIONINFO size from app"); + return FALSE; + } + if(!getVersion32) + { + /* Return something like NT 3.5 */ + v->dwMajorVersion = 3; + v->dwMinorVersion = 5; + v->dwBuildNumber = 42; + v->dwPlatformId = VER_PLATFORM_WIN32_NT; + strcpy(v->szCSDVersion, "Wine is not an emulator"); + return TRUE; + } + v->dwMajorVersion = getVersionEx.dwMajorVersion; + v->dwMinorVersion = getVersionEx.dwMinorVersion; + v->dwBuildNumber = getVersionEx.dwBuildNumber; + v->dwPlatformId = getVersionEx.dwPlatformId; + strcpy(v->szCSDVersion, getVersionEx.szCSDVersion); + return TRUE; +} + + +/*********************************************************************** + * GetVersionExW + */ +BOOL32 GetVersionEx32W(OSVERSIONINFO32W *v) +{ + OSVERSIONINFO32A v1; + if(v->dwOSVersionInfoSize!=sizeof(OSVERSIONINFO32W)) + { + fprintf(stddeb,"wrong OSVERSIONINFO size from app"); + return FALSE; + } + v1.dwOSVersionInfoSize=sizeof(v1); + GetVersionEx32A(&v1); + v->dwMajorVersion = v1.dwMajorVersion; + v->dwMinorVersion = v1.dwMinorVersion; + v->dwBuildNumber = v1.dwBuildNumber; + v->dwPlatformId = v1.dwPlatformId; + STRING32_AnsiToUni(v->szCSDVersion, v1.szCSDVersion); + return TRUE; +} + /*********************************************************************** * GetWinFlags (KERNEL.132) */ @@ -984,7 +1099,7 @@ BOOL SystemParametersInfo (UINT uAction, UINT uParam, LPVOID lpvParam, UINT fuWi case SPI_GETICONTITLELOGFONT: { /* FIXME GetProfileString( "?", "?", "?" ) */ - LPLOGFONT lpLogFont = (LPLOGFONT)lpvParam; + LPLOGFONT16 lpLogFont = (LPLOGFONT16)lpvParam; lpLogFont->lfHeight = 10; lpLogFont->lfWidth = 0; lpLogFont->lfEscapement = lpLogFont->lfOrientation = 0; @@ -1014,14 +1129,6 @@ BOOL SystemParametersInfo (UINT uAction, UINT uParam, LPVOID lpvParam, UINT fuWi return 1; } -/*********************************************************************** -* HMEMCPY (KERNEL.348) -*/ -void hmemcpy(LPVOID hpvDest, LPCVOID hpvSource, LONG cbCopy) -{ - memcpy(hpvDest, hpvSource, cbCopy); -} - /*********************************************************************** * COPY (GDI.250) */ diff --git a/misc/ole2nls.c b/misc/ole2nls.c index 3f120a57999..110fa5522ba 100644 --- a/misc/ole2nls.c +++ b/misc/ole2nls.c @@ -665,7 +665,7 @@ LOCVAL(LOCALE_INEGSEPBYSPACE) } if(retLen>len)retLen=len; - lstrcpyn(buf,retString,len); + lstrcpyn32A(buf,retString,len); return retLen; } @@ -690,8 +690,7 @@ int CompareStringA(DWORD lcid, DWORD fdwStyle, l2 = (l2==-1)?strlen(s2):l2; len = l1datalen) reslen=datalen; - LZRead(lzfd,MAKE_SEGPTR(data),reslen); + LZRead32(lzfd,data,reslen); LZClose(lzfd); return reslen; } +/* GetFileVersionInfoSize [VER.6] */ DWORD -GetFileVersionInfoSize(LPCSTR filename,LPDWORD handle) { +GetFileVersionInfoSize16(LPCSTR filename,LPDWORD handle) { DWORD len,ret; BYTE buf[72]; VS_FIXEDFILEINFO *vffi; - fprintf(stderr,"GetFileVersionInfoSize(%s,%p)\n",filename,handle); - + dprintf_resource(stderr,"GetFileVersionInfoSize16(%s,%p)\n",filename,handle); len=GetFileResourceSize(filename,VS_FILE_INFO,VS_VERSION_INFO,handle); if (!len) return 0; @@ -330,9 +335,29 @@ GetFileVersionInfoSize(LPCSTR filename,LPDWORD handle) { return len; } +/* GetFileVersionInfoSize32A [VERSION.1] */ +DWORD +GetFileVersionInfoSize32A(LPCSTR filename,LPDWORD handle) { + dprintf_resource(stderr,"GetFileVersionInfoSize32A(%s,%p)\n",filename,handle); + return GetFileVersionInfoSize16(filename,handle); +} + +/* GetFileVersionInfoSize32W [VERSION.2] */ +DWORD +GetFileVersionInfoSize32W(LPCWSTR filename,LPDWORD handle) { + LPSTR xfn; + DWORD ret; + + xfn = strdupW2A(filename); + ret=GetFileVersionInfoSize16(xfn,handle); + free(xfn); + return ret; +} + +/* GetFileVersionInfo [VER.7] */ DWORD -GetFileVersionInfo(LPCSTR filename,DWORD handle,DWORD datasize,LPVOID data) { - fprintf(stderr,"GetFileVersionInfo(%s,%ld,%ld,%p)\n->", +GetFileVersionInfo16(LPCSTR filename,DWORD handle,DWORD datasize,LPVOID data) { + dprintf_resource(stderr,"GetFileVersionInfo16(%s,%ld,%ld,%p)\n->", filename,handle,datasize,data ); return GetFileResource( @@ -340,10 +365,29 @@ GetFileVersionInfo(LPCSTR filename,DWORD handle,DWORD datasize,LPVOID data) { ); } +/* GetFileVersionInfoA [VERSION.0] */ DWORD -VerFindFile( - UINT flags,LPCSTR filename,LPCSTR windir,LPCSTR appdir, - LPSTR curdir,UINT *curdirlen,LPSTR destdir,UINT*destdirlen +GetFileVersionInfo32A(LPCSTR filename,DWORD handle,DWORD datasize,LPVOID data) { + return GetFileVersionInfo16(filename,handle,datasize,data); +} + +/* GetFileVersionInfoW [VERSION.3] */ +DWORD +GetFileVersionInfo32W(LPCWSTR filename,DWORD handle,DWORD datasize,LPVOID data){ + DWORD ret; + LPSTR fn; + + fn = strdupW2A(filename); + ret = GetFileVersionInfo16(fn,handle,datasize,data); + free(fn); + return ret; +} + +/* VerFindFile [VER.8] */ +DWORD +VerFindFile16( + UINT16 flags,LPCSTR filename,LPCSTR windir,LPCSTR appdir, + LPSTR curdir,UINT16 *curdirlen,LPSTR destdir,UINT16 *destdirlen ) { fprintf(stderr,"VerFindFile(%x,%s,%s,%s,%p,%d,%p,%d)\n", flags,filename,windir,appdir,curdir,*curdirlen,destdir,*destdirlen @@ -355,21 +399,88 @@ VerFindFile( return 0; } +/* VerFindFileA [VERSION.5] */ DWORD -VerInstallFile( - UINT flags,LPCSTR srcfilename,LPCSTR destfilename,LPCSTR srcdir, - LPCSTR destdir,LPSTR tmpfile,UINT*tmpfilelen +VerFindFile32A( + UINT32 flags,LPCSTR filename,LPCSTR windir,LPCSTR appdir, + LPSTR curdir,UINT32 *curdirlen,LPSTR destdir,UINT32 *destdirlen +) { + return VerFindFile16(flags,filename,windir,appdir,curdir,curdirlen,destdir,destdirlen); +} + +/* VerFindFileW [VERSION.6] */ +DWORD +VerFindFile32W( + UINT32 flags,LPCWSTR filename,LPCWSTR windir,LPCWSTR appdir, + LPWSTR curdir,UINT32 *curdirlen,LPWSTR destdir,UINT32 *destdirlen +) { + LPSTR wfn,wwd,wad,wdd,wcd; + DWORD ret; + + wfn = strdupW2A(filename); + wwd = strdupW2A(windir); + wad = strdupW2A(appdir); + wcd = (LPSTR)malloc(*curdirlen); + wdd = (LPSTR)malloc(*destdirlen); + ret=VerFindFile16(flags,wfn,wwd,wad,wcd,curdirlen,wdd,destdirlen); + STRING32_AnsiToUni(curdir,wcd); + STRING32_AnsiToUni(destdir,wdd); + *curdirlen = strlen(wcd); + *destdirlen = strlen(wdd); + return ret; +} + +/* VerInstallFile [VER.9] */ +DWORD +VerInstallFile16( + UINT16 flags,LPCSTR srcfilename,LPCSTR destfilename,LPCSTR srcdir, + LPCSTR destdir,LPSTR tmpfile,UINT16 *tmpfilelen ) { fprintf(stderr,"VerInstallFile(%x,%s,%s,%s,%s,%p,%d)\n", flags,srcfilename,destfilename,srcdir,destdir,tmpfile,*tmpfilelen ); + + /* FIXME: Implementation still missing .... */ + return VIF_SRCOLD; } +/* VerFindFileA [VERSION.5] */ +DWORD +VerInstallFile32A( + UINT32 flags,LPCSTR srcfilename,LPCSTR destfilename,LPCSTR srcdir, + LPCSTR destdir,LPSTR tmpfile,UINT32 *tmpfilelen +) { + return VerInstallFile16(flags,srcfilename,destfilename,srcdir,destdir,tmpfile,tmpfilelen); +} + +/* VerFindFileW [VERSION.6] */ +DWORD +VerInstallFile32W( + UINT32 flags,LPCWSTR srcfilename,LPCWSTR destfilename,LPCWSTR srcdir, + LPCWSTR destdir,LPWSTR tmpfile,UINT32 *tmpfilelen +) { + LPSTR wsrcf,wsrcd,wdestf,wdestd,wtmpf; + DWORD ret; + + wsrcf = strdupW2A(srcfilename); + wsrcd = strdupW2A(srcdir); + wdestf = strdupW2A(destfilename); + wdestd = strdupW2A(destdir); + wtmpf = strdupW2A(tmpfile); + ret=VerInstallFile32A(flags,wsrcf,wdestf,wsrcd,wdestd,wtmpf,tmpfilelen); + free(wsrcf); + free(wsrcd); + free(wdestf); + free(wdestd); + free(wtmpf); + return ret; +} + /* FIXME: This table should, of course, be language dependend */ -static struct map_id2str { +static const struct map_id2str { UINT langid; - char *langname; + const char *langname; } languages[]={ {0x0401,"Arabisch"}, {0x0402,"Bulgarisch"}, @@ -419,12 +530,23 @@ static struct map_id2str { {0x0000,"Unbekannt"}, }; - +/* VerLanguageName [VER.10] */ DWORD -VerLanguageName(UINT langid,LPSTR langname,UINT langnamelen) { +VerLanguageName16(UINT16 langid,LPSTR langname,UINT16 langnamelen) { int i; + char *buf; fprintf(stderr,"VerLanguageName(%d,%p,%d)\n",langid,langname,langnamelen); + /* First, check \System\CurrentControlSet\control\Nls\Locale\ + * from the registry. + */ + buf=(char*)malloc(strlen("\\System\\CurrentControlSet\\control\\Nls\\Locale\\")+9); + sprintf(buf,"\\System\\CurrentControlSet\\control\\Nls\\Locale\\%08x",langid); + if (ERROR_SUCCESS==RegQueryValue16(HKEY_LOCAL_MACHINE,buf,langname,(LPDWORD)&langnamelen)) { + langname[langnamelen-1]='\0'; + return langnamelen; + } + /* if that fails, use the interal table */ for (i=0;languages[i].langid!=0;i++) if (langid==languages[i].langid) break; @@ -433,6 +555,45 @@ VerLanguageName(UINT langid,LPSTR langname,UINT langnamelen) { return strlen(languages[i].langname); } +/* VerLanguageNameA [VERSION.9] */ +DWORD +VerLanguageName32A(UINT32 langid,LPSTR langname,UINT32 langnamelen) { + return VerLanguageName16(langid,langname,langnamelen); +} + +/* VerLanguageNameW [VERSION.10] */ +DWORD +VerLanguageName32W(UINT32 langid,LPWSTR langname,UINT32 langnamelen) { + int i; + char *buf; + LPWSTR keyname,result; + + /* First, check \System\CurrentControlSet\control\Nls\Locale\ + * from the registry. + */ + buf=(char*)malloc(strlen("\\System\\CurrentControlSet\\control\\Nls\\Locale\\")+9); + sprintf(buf,"\\System\\CurrentControlSet\\control\\Nls\\Locale\\%08x",langid); + keyname=strdupA2W(buf);free(buf); + if (ERROR_SUCCESS==RegQueryValue32W(HKEY_LOCAL_MACHINE,keyname,langname,(LPDWORD)&langnamelen)) { + free(keyname); + return langnamelen; + } + free(keyname); + /* if that fails, use the interal table */ + for (i=0;languages[i].langid!=0;i++) + if (langid==languages[i].langid) + break; + result=strdupA2W(languages[i].langname); + i=lstrlen32W(result)*sizeof(WCHAR); + if (i>langnamelen) + i=langnamelen; + memcpy(langname,result,i); + langname[langnamelen-1]='\0'; + free(result); + return strlen(languages[i].langname); /* same as strlenW(result); */ +} + +/* FIXME: UNICODE? */ struct db { WORD nextoff; WORD datalen; @@ -484,17 +645,18 @@ _find_data(BYTE *block,LPCSTR str) { } block=block+((db->nextoff+3)&~3); } - } +/* VerQueryValue [VER.11] */ /* take care, 'buffer' is NOT a SEGPTR, it just points to one */ DWORD -VerQueryValue(SEGPTR segblock,LPCSTR subblock,SEGPTR *buffer,UINT *buflen) { +VerQueryValue16(SEGPTR segblock,LPCSTR subblock,SEGPTR *buffer,UINT16 *buflen) +{ BYTE *block=PTR_SEG_TO_LIN(segblock),*b; struct db *db; char *s; - fprintf(stderr,"VerQueryValue(%p,%s,%p,%d)\n", + fprintf(stderr,"VerQueryValue16(%p,%s,%p,%d)\n", block,subblock,buffer,*buflen ); s=(char*)xmalloc(strlen("VS_VERSION_INFO")+strlen(subblock)+1); @@ -516,8 +678,60 @@ VerQueryValue(SEGPTR segblock,LPCSTR subblock,SEGPTR *buffer,UINT *buflen) { return 1; } -/* - 20 GETFILEVERSIONINFORAW - 21 VERFTHK_THUNKDATA16 - 22 VERTHKSL_THUNKDATA16 -*/ +DWORD +VerQueryValue32A(LPVOID vblock,LPCSTR subblock,LPVOID *vbuffer,UINT32 *buflen) +{ + BYTE *b,*block=(LPBYTE)vblock,**buffer=(LPBYTE*)vbuffer; + struct db *db; + char *s; + + fprintf(stderr,"VerQueryValue32A(%p,%s,%p,%d)\n", + block,subblock,buffer,*buflen + ); + s=(char*)xmalloc(strlen("VS_VERSION_INFO")+strlen(subblock)+1); + strcpy(s,"VS_VERSION_INFO");strcat(s,subblock); + b=_find_data(block,s); + if (b==NULL) { + *buflen=0; + return 0; + } + db=(struct db*)b; + *buflen = db->datalen; + /* let b point to data area */ + b = b+4+((strlen(db->name)+4)&3); + *buffer = b; + fprintf(stderr," -> %s=%s\n",subblock,b); + return 1; +} + +DWORD +VerQueryValue32W(LPVOID vblock,LPCWSTR subblock,LPVOID *vbuffer,UINT32 *buflen) +{ + /* FIXME: hmm, we not only need to convert subblock, but also + * the content...or? + * And what about UNICODE version info? + * And the NAMES of the values? + */ + BYTE *b,**buffer=(LPBYTE*)vbuffer,*block=(LPBYTE)vblock; + struct db *db; + char *s,*sb; + + sb=strdupW2A(subblock); + s=(char*)xmalloc(strlen("VS_VERSION_INFO")+strlen(sb)+1); + strcpy(s,"VS_VERSION_INFO");strcat(s,sb); + b=_find_data(block,s); + if (b==NULL) { + *buflen=0; + free(sb); + return 0; + } + db=(struct db*)b; + *buflen = db->datalen; + /* let b point to data area */ + b = b+4+((strlen(db->name)+4)&3); + *buffer = b; + fprintf(stderr," -> %s=%s\n",sb,b); + free(sb); + return 1; +} +/* 20 GETFILEVERSIONINFORAW */ diff --git a/misc/wsprintf.c b/misc/wsprintf.c new file mode 100644 index 00000000000..ac3b8bc1974 --- /dev/null +++ b/misc/wsprintf.c @@ -0,0 +1,555 @@ +/* + * wsprintf functions + * + * Copyright 1996 Alexandre Julliard + */ + +#include +#include +#include +#include "windows.h" +#include "ldt.h" +#include "stackframe.h" + +#define WPRINTF_LEFTALIGN 0x0001 /* Align output on the left ('-' prefix) */ +#define WPRINTF_PREFIX_HEX 0x0002 /* Prefix hex with 0x ('#' prefix) */ +#define WPRINTF_ZEROPAD 0x0004 /* Pad with zeros ('0' prefix) */ +#define WPRINTF_LONG 0x0008 /* Long arg ('l' prefix) */ +#define WPRINTF_SHORT 0x0010 /* Short arg ('h' prefix) */ +#define WPRINTF_UPPER_HEX 0x0020 /* Upper-case hex ('X' specifier) */ + +typedef enum +{ + WPR_CHAR, + WPR_WCHAR, + WPR_STRING, + WPR_WSTRING, + WPR_SIGNED, + WPR_UNSIGNED, + WPR_HEXA +} WPRINTF_TYPE; + +typedef struct +{ + UINT32 flags; + UINT32 width; + UINT32 precision; + WPRINTF_TYPE type; +} WPRINTF_FORMAT; + + +/*********************************************************************** + * WPRINTF_ParseFormatA + * + * Parse a format specification. A format specification has the form: + * + * [-][#][0][width][.precision]type + * + * Return value is the length of the format specification in characters. + */ +static INT32 WPRINTF_ParseFormatA( LPCSTR format, WPRINTF_FORMAT *res ) +{ + LPCSTR p = format; + + res->flags = 0; + res->width = 0; + res->precision = 0; + if (*p == '-') { res->flags |= WPRINTF_LEFTALIGN; p++; } + if (*p == '#') { res->flags |= WPRINTF_PREFIX_HEX; p++; } + if (*p == '0') { res->flags |= WPRINTF_ZEROPAD; p++; } + while ((*p >= '0') && (*p <= '9')) /* width field */ + { + res->width = res->width * 10 + *p - '0'; + p++; + } + if (*p == '.') /* precision field */ + { + p++; + while ((*p >= '0') && (*p <= '9')) + { + res->precision = res->precision * 10 + *p - '0'; + p++; + } + } + if (*p == 'l') { res->flags |= WPRINTF_LONG; p++; } + else if (*p == 'h') { res->flags |= WPRINTF_SHORT; p++; } + switch(*p) + { + case 'c': + res->type = (res->flags & WPRINTF_LONG) ? WPR_WCHAR : WPR_CHAR; + break; + case 'C': + res->type = (res->flags & WPRINTF_SHORT) ? WPR_CHAR : WPR_WCHAR; + break; + case 'd': + case 'i': + res->type = WPR_SIGNED; + break; + case 's': + res->type = (res->flags & WPRINTF_LONG) ? WPR_WSTRING : WPR_STRING; + break; + case 'S': + res->type = (res->flags & WPRINTF_SHORT) ? WPR_STRING : WPR_WSTRING; + break; + case 'u': + res->type = WPR_UNSIGNED; + break; + case 'X': + res->flags |= WPRINTF_UPPER_HEX; + /* fall through */ + case 'x': + res->type = WPR_HEXA; + break; + default: + fprintf( stderr, "wvsprintf32A: unknown format '%c'\n", *p ); + break; + } + return (INT32)(p - format) + 1; +} + + +/*********************************************************************** + * WPRINTF_ParseFormatW + * + * Parse a format specification. A format specification has the form: + * + * [-][#][0][width][.precision]type + * + * Return value is the length of the format specification in characters. + */ +static INT32 WPRINTF_ParseFormatW( LPCWSTR format, WPRINTF_FORMAT *res ) +{ + LPCWSTR p = format; + + res->flags = 0; + res->width = 0; + res->precision = 0; + if (*p == '-') { res->flags |= WPRINTF_LEFTALIGN; p++; } + if (*p == '#') { res->flags |= WPRINTF_PREFIX_HEX; p++; } + if (*p == '0') { res->flags |= WPRINTF_ZEROPAD; p++; } + while ((*p >= '0') && (*p <= '9')) /* width field */ + { + res->width = res->width * 10 + *p - '0'; + p++; + } + if (*p == '.') /* precision field */ + { + p++; + while ((*p >= '0') && (*p <= '9')) + { + res->precision = res->precision * 10 + *p - '0'; + p++; + } + } + if (*p == 'l') { res->flags |= WPRINTF_LONG; p++; } + else if (*p == 'h') { res->flags |= WPRINTF_SHORT; p++; } + switch((CHAR)*p) + { + case 'c': + res->type = (res->flags & WPRINTF_SHORT) ? WPR_CHAR : WPR_WCHAR; + break; + case 'C': + res->type = (res->flags & WPRINTF_LONG) ? WPR_WCHAR : WPR_CHAR; + break; + case 'd': + case 'i': + res->type = WPR_SIGNED; + break; + case 's': + res->type = (res->flags & WPRINTF_SHORT) ? WPR_STRING : WPR_WSTRING; + break; + case 'S': + res->type = (res->flags & WPRINTF_LONG) ? WPR_WSTRING : WPR_STRING; + break; + case 'u': + res->type = WPR_UNSIGNED; + break; + case 'X': + res->flags |= WPRINTF_UPPER_HEX; + /* fall through */ + case 'x': + res->type = WPR_HEXA; + break; + default: + fprintf( stderr, "wvsprintf32W: unknown format '%c'\n", (CHAR)*p ); + break; + } + return (INT32)(p - format) + 1; +} + + +/*********************************************************************** + * WPRINTF_GetLen + */ +static UINT32 WPRINTF_GetLen( WPRINTF_FORMAT *format, LPCVOID arg, + LPSTR number, UINT32 maxlen ) +{ + UINT32 len; + + if (format->flags & WPRINTF_LEFTALIGN) format->flags &= ~WPRINTF_ZEROPAD; + if (format->width > maxlen) format->width = maxlen; + switch(format->type) + { + case WPR_CHAR: + case WPR_WCHAR: + return (format->precision = 1); + case WPR_STRING: + for (len = 0; !format->precision || (len < format->precision); len++) + if (!*(*(LPCSTR *)arg + len)) break; + if (len > maxlen) len = maxlen; + return (format->precision = len); + case WPR_WSTRING: + for (len = 0; !format->precision || (len < format->precision); len++) + if (!*(*(LPCWSTR *)arg + len)) break; + if (len > maxlen) len = maxlen; + return (format->precision = len); + case WPR_SIGNED: + len = sprintf( number, "%d", *(INT32 *)arg ); + break; + case WPR_UNSIGNED: + len = sprintf( number, "%u", *(UINT32 *)arg ); + break; + case WPR_HEXA: + len = sprintf( number, + (format->flags & WPRINTF_UPPER_HEX) ? "%X" : "%x", + *(UINT32 *)arg ); + if (format->flags & WPRINTF_PREFIX_HEX) len += 2; + break; + default: + return 0; + } + if (len > maxlen) len = maxlen; + if (format->precision < len) format->precision = len; + if (format->precision > maxlen) format->precision = maxlen; + if ((format->flags & WPRINTF_ZEROPAD) && (format->width > format->precision)) + format->precision = format->width; + return len; +} + + +/*********************************************************************** + * wvsnprintf16 (Not a Windows API) + */ +INT16 wvsnprintf16( LPSTR buffer, UINT16 maxlen, LPCSTR spec, LPCVOID args ) +{ + WPRINTF_FORMAT format; + LPSTR p = buffer; + UINT32 i, len; + CHAR number[20]; + DWORD cur_arg; + + while (*spec && (maxlen > 1)) + { + if (*spec != '%') { *p++ = *spec++; maxlen--; continue; } + spec++; + if (*spec == '%') { *p++ = *spec++; maxlen--; continue; } + spec += WPRINTF_ParseFormatA( spec, &format ); + switch(format.type) + { + case WPR_CHAR: + cur_arg = (DWORD)*(CHAR *)args; + args = (CHAR *)args + 1; + break; + case WPR_STRING: + cur_arg = (DWORD)PTR_SEG_TO_LIN( *(SEGPTR *)args ); + args = (SEGPTR *)args + 1; + break; + case WPR_HEXA: + case WPR_SIGNED: + case WPR_UNSIGNED: + if (format.flags & WPRINTF_LONG) + { + cur_arg = (DWORD)*(UINT32 *)args; + args = (UINT32 *)args + 1; + } + else + { + cur_arg = (DWORD)*(UINT16 *)args; + args = (UINT16 *)args + 1; + } + break; + case WPR_WCHAR: + case WPR_WSTRING: + fprintf( stderr, "Unicode not supported in wsprintf16\n" ); + continue; + } + len = WPRINTF_GetLen( &format, &cur_arg, number, maxlen - 1 ); + if (!(format.flags & WPRINTF_LEFTALIGN)) + for (i = format.precision; i < format.width; i++, maxlen--) + *p++ = ' '; + switch(format.type) + { + case WPR_CHAR: + if ((*p = (CHAR)cur_arg)) p++; + else if (format.width > 1) *p++ = ' '; + else len = 0; + break; + case WPR_STRING: + if (len) memcpy( p, (LPCSTR)cur_arg, len ); + p += len; + break; + case WPR_HEXA: + if ((format.flags & WPRINTF_PREFIX_HEX) && (maxlen > 3)) + { + *p++ = '0'; + *p++ = (format.flags & WPRINTF_UPPER_HEX) ? 'X' : 'x'; + maxlen -= 2; + len -= 2; + format.precision -= 2; + format.width -= 2; + } + /* fall through */ + case WPR_SIGNED: + case WPR_UNSIGNED: + for (i = len; i < format.precision; i++, maxlen--) *p++ = '0'; + if (len) memcpy( p, number, len ); + p += len; + break; + case WPR_WCHAR: + case WPR_WSTRING: + fprintf( stderr, "Unicode not supported in wsprintf16\n" ); + break; + } + if (format.flags & WPRINTF_LEFTALIGN) + for (i = format.precision; i < format.width; i++, maxlen--) + *p++ = ' '; + maxlen -= len; + } + *p = 0; + return (maxlen > 1) ? (INT32)(p - buffer) : -1; +} + + +/*********************************************************************** + * wvsnprintf32A (Not a Windows API) + */ +INT32 wvsnprintf32A( LPSTR buffer, UINT32 maxlen, LPCSTR spec, LPCVOID args ) +{ + WPRINTF_FORMAT format; + LPSTR p = buffer; + UINT32 i, len; + CHAR number[20]; + + while (*spec && (maxlen > 1)) + { + if (*spec != '%') { *p++ = *spec++; maxlen--; continue; } + spec++; + if (*spec == '%') { *p++ = *spec++; maxlen--; continue; } + spec += WPRINTF_ParseFormatA( spec, &format ); + len = WPRINTF_GetLen( &format, args, number, maxlen - 1 ); + if (!(format.flags & WPRINTF_LEFTALIGN)) + for (i = format.precision; i < format.width; i++, maxlen--) + *p++ = ' '; + switch(format.type) + { + case WPR_WCHAR: + if ((*p = (CHAR)*(WCHAR *)args)) p++; + else if (format.width > 1) *p++ = ' '; + else len = 0; + break; + case WPR_CHAR: + if ((*p = *(CHAR *)args)) p++; + else if (format.width > 1) *p++ = ' '; + else len = 0; + break; + case WPR_STRING: + if (len) memcpy( p, *(LPCSTR *)args, len ); + p += len; + break; + case WPR_WSTRING: + for (i = 0; i < len; i++) *p++ = (CHAR)*(*(LPCWSTR *)args + i); + break; + case WPR_HEXA: + if ((format.flags & WPRINTF_PREFIX_HEX) && (maxlen > 3)) + { + *p++ = '0'; + *p++ = (format.flags & WPRINTF_UPPER_HEX) ? 'X' : 'x'; + maxlen -= 2; + len -= 2; + format.precision -= 2; + format.width -= 2; + } + /* fall through */ + case WPR_SIGNED: + case WPR_UNSIGNED: + for (i = len; i < format.precision; i++, maxlen--) *p++ = '0'; + if (len) memcpy( p, number, len ); + p += len; + break; + } + if (format.flags & WPRINTF_LEFTALIGN) + for (i = format.precision; i < format.width; i++, maxlen--) + *p++ = ' '; + args = (INT32 *)args + 1; + maxlen -= len; + } + *p = 0; + return (maxlen > 1) ? (INT32)(p - buffer) : -1; +} + + +/*********************************************************************** + * wvsnprintf32W (Not a Windows API) + */ +INT32 wvsnprintf32W( LPWSTR buffer, UINT32 maxlen, LPCWSTR spec, LPCVOID args ) +{ + WPRINTF_FORMAT format; + LPWSTR p = buffer; + UINT32 i, len; + CHAR number[20]; + + while (*spec && (maxlen > 1)) + { + if (*spec != '%') { *p++ = *spec++; maxlen--; continue; } + spec++; + if (*spec == '%') { *p++ = *spec++; maxlen--; continue; } + spec += WPRINTF_ParseFormatW( spec, &format ); + len = WPRINTF_GetLen( &format, args, number, maxlen - 1 ); + if (!(format.flags & WPRINTF_LEFTALIGN)) + for (i = format.precision; i < format.width; i++, maxlen--) + *p++ = ' '; + switch(format.type) + { + case WPR_WCHAR: + if ((*p = *(WCHAR *)args)) p++; + else if (format.width > 1) *p++ = ' '; + else len = 0; + break; + case WPR_CHAR: + if ((*p = (WCHAR)*(CHAR *)args)) p++; + else if (format.width > 1) *p++ = ' '; + else len = 0; + break; + case WPR_STRING: + for (i = 0; i < len; i++) *p++ = (WCHAR)*(*(LPCSTR *)args + i); + break; + case WPR_WSTRING: + if (len) memcpy( p, *(LPCWSTR *)args, len * sizeof(WCHAR) ); + p += len; + break; + case WPR_HEXA: + if ((format.flags & WPRINTF_PREFIX_HEX) && (maxlen > 3)) + { + *p++ = '0'; + *p++ = (format.flags & WPRINTF_UPPER_HEX) ? 'X' : 'x'; + maxlen -= 2; + len -= 2; + format.precision -= 2; + format.width -= 2; + } + /* fall through */ + case WPR_SIGNED: + case WPR_UNSIGNED: + for (i = len; i < format.precision; i++, maxlen--) *p++ = '0'; + for (i = 0; i < len; i++) *p++ = (WCHAR)number[i]; + break; + } + if (format.flags & WPRINTF_LEFTALIGN) + for (i = format.precision; i < format.width; i++, maxlen--) + *p++ = ' '; + args = (INT32 *)args + 1; + maxlen -= len; + } + *p = 0; + return (maxlen > 1) ? (INT32)(p - buffer) : -1; +} + + +/*********************************************************************** + * wvsprintf16 (USER.421) + */ +INT16 wvsprintf16( LPSTR buffer, LPCSTR spec, LPCVOID args ) +{ + return wvsnprintf16( buffer, 0xffff, spec, args ); +} + + +/*********************************************************************** + * wvsprintf32A (USER32.586) + */ +INT32 wvsprintf32A( LPSTR buffer, LPCSTR spec, LPCVOID args ) +{ + return wvsnprintf32A( buffer, 0xffffffff, spec, args ); +} + + +/*********************************************************************** + * wvsprintf32W (USER32.587) + */ +INT32 wvsprintf32W( LPWSTR buffer, LPCWSTR spec, LPCVOID args ) +{ + return wvsnprintf32W( buffer, 0xffffffff, spec, args ); +} + + +/*********************************************************************** + * wsprintf16 (USER.420) + */ +/* Winelib version */ +INT16 wsprintf16( LPSTR buffer, LPCSTR spec, ... ) +{ + va_list valist; + INT16 res; + + va_start( valist, spec ); + /* Note: we call the 32-bit version, because the args are 32-bit */ + res = (INT16)wvsprintf32A( buffer, spec, (LPCVOID)valist ); + va_end( valist ); + return res; +} + +/* Emulator version */ +#ifndef WINELIB +INT16 WIN16_wsprintf16(void) +{ + SEGPTR *win_stack = (DWORD *)CURRENT_STACK16->args; + LPSTR buffer = (LPSTR)PTR_SEG_TO_LIN(win_stack[0]); + LPCSTR spec = (LPCSTR)PTR_SEG_TO_LIN(win_stack[1]); + return wvsprintf16( buffer, spec, &win_stack[2] ); + +} +#endif /* WINELIB */ + + +/*********************************************************************** + * wsprintf32A (USER32.584) + */ +/* Winelib version */ +INT32 wsprintf32A( LPSTR buffer, LPCSTR spec, ... ) +{ + va_list valist; + INT32 res; + + va_start( valist, spec ); + res = wvsprintf32A( buffer, spec, (LPCVOID)valist ); + va_end( valist ); + return res; +} + +/* Emulator version */ +INT32 WIN32_wsprintf32A( int *args ) +{ + return wvsprintf32A( (LPSTR)args[0], (LPCSTR)args[1], (LPCVOID)&args[2] ); +} + + +/*********************************************************************** + * wsprintf32W (USER32.585) + */ +/* Winelib version */ +INT32 wsprintf32W( LPWSTR buffer, LPCWSTR spec, ... ) +{ + va_list valist; + INT32 res; + + va_start( valist, spec ); + res = wvsprintf32W( buffer, spec, (LPCVOID)valist ); + va_end( valist ); + return res; +} + +/* Emulator version */ +INT32 WIN32_wsprintf32W( int *args ) +{ + return wvsprintf32W( (LPWSTR)args[0], (LPCWSTR)args[1], (LPCVOID)&args[2]); +} diff --git a/miscemu/cpu.c b/miscemu/cpu.c index a17f63505cb..63211bdea2e 100644 --- a/miscemu/cpu.c +++ b/miscemu/cpu.c @@ -24,7 +24,7 @@ int runtime_cpu (void) { char info[5], value[5]; while (fscanf (f, " %4s%*s : %4s%*s", info, value) == 2) - if (!lstrcmpi (info, "cpu")) + if (!lstrcmpi32A(info, "cpu")) { if (isdigit (value[0]) && value[1] == '8' && value[2] == '6' && value[3] == 0) diff --git a/miscemu/int21.c b/miscemu/int21.c index 7d00ee2b271..b698d2c66e8 100644 --- a/miscemu/int21.c +++ b/miscemu/int21.c @@ -631,7 +631,7 @@ static int INT21_GetCurrentDirectory(struct sigcontext_struct *context) return 0; } - lstrcpyn( ptr, DRIVE_GetDosCwd(drive), 64 ); + lstrcpyn32A( ptr, DRIVE_GetDosCwd(drive), 64 ); if (!ptr[0]) strcpy( ptr, "\\" ); return 1; } @@ -1358,8 +1358,10 @@ void DOS3Call( struct sigcontext_struct context ) break; case 0x4b: /* "EXEC" - LOAD AND/OR EXECUTE PROGRAM */ - WinExec( PTR_SEG_OFF_TO_LIN( DS_reg(&context), DX_reg(&context) ), - SW_NORMAL ); + AX_reg(&context) = WinExec( PTR_SEG_OFF_TO_LIN( DS_reg(&context), + DX_reg(&context) ), + SW_NORMAL ); + if (AX_reg(&context) < 32) SET_CFLAG(&context); break; case 0x4c: /* "EXIT" - TERMINATE WITH RETURN CODE */ @@ -1507,8 +1509,9 @@ void DOS3Call( struct sigcontext_struct context ) } else { - lstrcpyn(PTR_SEG_OFF_TO_LIN(ES_reg(&context),DI_reg(&context)), - truename, 128 ); + lstrcpyn32A( PTR_SEG_OFF_TO_LIN( ES_reg(&context), + DI_reg(&context) ), + truename, 128 ); AX_reg(&context) = 0; } } @@ -1519,6 +1522,7 @@ void DOS3Call( struct sigcontext_struct context ) case 0x64: /* OS/2 DOS BOX */ case 0x65: /* GET EXTENDED COUNTRY INFORMATION */ INT_BARF( &context, 0x21 ); + SET_CFLAG(&context); break; case 0x66: /* GLOBAL CODE PAGE TABLE */ diff --git a/multimedia/mcistring.c b/multimedia/mcistring.c index 4630c7dff4b..c21081a31f6 100644 --- a/multimedia/mcistring.c +++ b/multimedia/mcistring.c @@ -52,7 +52,7 @@ LONG ANIM_DriverProc(DWORD dwDevID, HDRVR hDriv, WORD wMsg, /* The reason why I just don't lowercase the keywords array in * mciSendString is left as an exercise to the reader. */ -#define STRCMP(x,y) lstrcmpi(x,y) +#define STRCMP(x,y) lstrcmpi32A(x,y) /* standard functionparameters for all functions */ #define _MCISTR_PROTO_ \ @@ -65,7 +65,7 @@ LONG ANIM_DriverProc(DWORD dwDevID, HDRVR hDriv, WORD wMsg, #define _MCI_STR(s) do {\ dprintf_mci(stddeb,"->returns \"%s\"",s);\ if (lpstrReturnString) {\ - lstrcpyn(lpstrReturnString,s,uReturnLength);\ + lstrcpyn32A(lpstrReturnString,s,uReturnLength);\ dprintf_mci(stddeb,"-->\"%s\"\n",lpstrReturnString);\ }\ } while(0) diff --git a/multimedia/mmsystem.c b/multimedia/mmsystem.c index 465f8c1e9f3..f2d40f0e1ce 100644 --- a/multimedia/mmsystem.c +++ b/multimedia/mmsystem.c @@ -526,7 +526,7 @@ msg# 543 : tmsf msgptr = "Unknown MCI Error !\n"; break; } - lstrcpyn(lpstrBuffer, msgptr, uLength); + lstrcpyn32A(lpstrBuffer, msgptr, uLength); return TRUE; } @@ -701,7 +701,7 @@ DWORD mciSysInfo(DWORD dwFlags, LPMCI_SYSINFO_PARMS lpParms) } } if (lpParms->dwRetSize < InstalledListLen) - lstrcpyn(lpstrReturn, lpInstallNames, lpParms->dwRetSize - 1); + lstrcpyn32A(lpstrReturn, lpInstallNames, lpParms->dwRetSize - 1); else strcpy(lpstrReturn, lpInstallNames); return 0; @@ -888,7 +888,7 @@ msg# 343 : There are no MIDI devices installed on the system. Use the Drivers op msgptr = "Unknown MIDI Error !\n"; break; } - lstrcpyn(lpText, msgptr, uSize); + lstrcpyn32A(lpText, msgptr, uSize); return TRUE; } @@ -1341,7 +1341,7 @@ UINT waveGetErrorText(UINT uError, LPSTR lpText, UINT uSize) msgptr = "Unknown MMSYSTEM Error !\n"; break; } - lstrcpyn(lpText, msgptr, uSize); + lstrcpyn32A(lpText, msgptr, uSize); return TRUE; } diff --git a/objects/bitmap.c b/objects/bitmap.c index 870667e5383..f54cdc7a287 100644 --- a/objects/bitmap.c +++ b/objects/bitmap.c @@ -3,6 +3,7 @@ * * Copyright 1993 Alexandre Julliard */ + #include #include #include @@ -12,8 +13,6 @@ #include "dc.h" #include "bitmap.h" #include "stddebug.h" -/* #define DEBUG_GDI */ -/* #define DEBUG_BITMAP */ #include "debug.h" /* GCs used for B&W and color bitmap operations */ @@ -55,7 +54,7 @@ BOOL BITMAP_Init(void) * * Create an XImage pointing to the bitmap data. */ -static XImage *BITMAP_BmpToImage( BITMAP * bmp, void * bmpData ) +static XImage *BITMAP_BmpToImage( BITMAP16 * bmp, LPVOID bmpData ) { extern void _XInitImageFuncPtrs( XImage* ); XImage * image; @@ -73,12 +72,13 @@ static XImage *BITMAP_BmpToImage( BITMAP * bmp, void * bmpData ) /*********************************************************************** - * CreateBitmap (GDI.48) + * CreateBitmap (GDI.48) (GDI32.25) */ -HBITMAP CreateBitmap( INT width, INT height, UINT planes, UINT bpp, LPVOID bits ) +HBITMAP16 CreateBitmap( INT32 width, INT32 height, UINT32 planes, + UINT32 bpp, LPCVOID bits ) { BITMAPOBJ * bmpObjPtr; - HBITMAP hbitmap; + HBITMAP16 hbitmap; dprintf_gdi( stddeb, "CreateBitmap: %dx%d, %d colors\n", width, height, 1 << (planes*bpp) ); @@ -97,11 +97,11 @@ HBITMAP CreateBitmap( INT width, INT height, UINT planes, UINT bpp, LPVOID bits bmpObjPtr->size.cx = 0; bmpObjPtr->size.cy = 0; bmpObjPtr->bitmap.bmType = 0; - bmpObjPtr->bitmap.bmWidth = width; - bmpObjPtr->bitmap.bmHeight = height; - bmpObjPtr->bitmap.bmPlanes = planes; - bmpObjPtr->bitmap.bmBitsPixel = bpp; - bmpObjPtr->bitmap.bmWidthBytes = BITMAP_WIDTH_BYTES( width, bpp ); + bmpObjPtr->bitmap.bmWidth = (INT16)width; + bmpObjPtr->bitmap.bmHeight = (INT16)height; + bmpObjPtr->bitmap.bmPlanes = (BYTE)planes; + bmpObjPtr->bitmap.bmBitsPixel = (BYTE)bpp; + bmpObjPtr->bitmap.bmWidthBytes = (INT16)BITMAP_WIDTH_BYTES( width, bpp ); bmpObjPtr->bitmap.bmBits = NULL; /* Create the pixmap */ @@ -118,28 +118,27 @@ HBITMAP CreateBitmap( INT width, INT height, UINT planes, UINT bpp, LPVOID bits /*********************************************************************** - * CreateCompatibleBitmap (GDI.51) + * CreateCompatibleBitmap (GDI.51) (GDI32.30) */ -HBITMAP CreateCompatibleBitmap( HDC hdc, INT width, INT height ) +HBITMAP16 CreateCompatibleBitmap( HDC32 hdc, INT32 width, INT32 height ) { - HBITMAP hbmpRet = 0; - DC * dc; - dprintf_gdi(stddeb, "CreateCompatibleBitmap(%04x,%d,%d) = \n", - hdc, width, height ); + HBITMAP hbmpRet = 0; + DC *dc; + + dprintf_gdi( stddeb, "CreateCompatibleBitmap(%04x,%d,%d) = \n", + hdc, width, height ); if (!(dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ))) return 0; hbmpRet = CreateBitmap( width, height, 1, dc->w.bitsPerPixel, NULL ); - dprintf_gdi(stddeb,"\t\t%04x\n", hbmpRet); - return hbmpRet; } /*********************************************************************** - * CreateBitmapIndirect (GDI.49) + * CreateBitmapIndirect16 (GDI.49) */ -HBITMAP CreateBitmapIndirect( const BITMAP * bmp ) +HBITMAP16 CreateBitmapIndirect16( const BITMAP16 * bmp ) { return CreateBitmap( bmp->bmWidth, bmp->bmHeight, bmp->bmPlanes, bmp->bmBitsPixel, PTR_SEG_TO_LIN( bmp->bmBits ) ); @@ -147,9 +146,19 @@ HBITMAP CreateBitmapIndirect( const BITMAP * bmp ) /*********************************************************************** - * GetBitmapBits (GDI.74) + * CreateBitmapIndirect32 (GDI32.26) */ -LONG GetBitmapBits( HBITMAP hbitmap, LONG count, LPSTR buffer ) +HBITMAP32 CreateBitmapIndirect32( const BITMAP32 * bmp ) +{ + return CreateBitmap( bmp->bmWidth, bmp->bmHeight, bmp->bmPlanes, + bmp->bmBitsPixel, bmp->bmBits ); +} + + +/*********************************************************************** + * GetBitmapBits (GDI.74) (GDI32.143) + */ +LONG GetBitmapBits( HBITMAP32 hbitmap, LONG count, LPVOID buffer ) { BITMAPOBJ * bmp; LONG height; @@ -182,9 +191,9 @@ LONG GetBitmapBits( HBITMAP hbitmap, LONG count, LPSTR buffer ) /*********************************************************************** - * SetBitmapBits (GDI.106) + * SetBitmapBits (GDI.106) (GDI32.303) */ -LONG SetBitmapBits( HBITMAP hbitmap, LONG count, LPSTR buffer ) +LONG SetBitmapBits( HBITMAP32 hbitmap, LONG count, LPCVOID buffer ) { BITMAPOBJ * bmp; LONG height; @@ -207,7 +216,7 @@ LONG SetBitmapBits( HBITMAP hbitmap, LONG count, LPSTR buffer ) if (height > bmp->bitmap.bmHeight) height = bmp->bitmap.bmHeight; if (!height) return 0; - if (!(image = BITMAP_BmpToImage( &bmp->bitmap, buffer ))) return 0; + if (!(image = BITMAP_BmpToImage( &bmp->bitmap, (LPVOID)buffer ))) return 0; CallTo32_LargeStack( XPutImage, 10, display, bmp->pixmap, BITMAP_GC(bmp), image, 0, 0, 0, 0, bmp->bitmap.bmWidth, height ); @@ -271,16 +280,35 @@ BOOL BITMAP_DeleteObject( HBITMAP hbitmap, BITMAPOBJ * bitmap ) /*********************************************************************** - * BITMAP_GetObject + * BITMAP_GetObject16 */ -int BITMAP_GetObject( BITMAPOBJ * bmp, int count, LPSTR buffer ) +INT16 BITMAP_GetObject16( BITMAPOBJ * bmp, INT16 count, LPVOID buffer ) { - if (count > sizeof(BITMAP)) count = sizeof(BITMAP); + if (count > sizeof(bmp->bitmap)) count = sizeof(bmp->bitmap); memcpy( buffer, &bmp->bitmap, count ); return count; } +/*********************************************************************** + * BITMAP_GetObject32 + */ +INT32 BITMAP_GetObject32( BITMAPOBJ * bmp, INT32 count, LPVOID buffer ) +{ + BITMAP32 bmp32; + bmp32.bmType = bmp->bitmap.bmType; + bmp32.bmWidth = bmp->bitmap.bmWidth; + bmp32.bmHeight = bmp->bitmap.bmHeight; + bmp32.bmWidthBytes = bmp->bitmap.bmWidthBytes; + bmp32.bmPlanes = bmp->bitmap.bmPlanes; + bmp32.bmBitsPixel = bmp->bitmap.bmBitsPixel; + bmp32.bmBits = NULL; + if (count > sizeof(bmp32)) count = sizeof(bmp32); + memcpy( buffer, &bmp32, count ); + return count; +} + + /*********************************************************************** * BITMAP_SelectObject */ @@ -313,9 +341,9 @@ HBITMAP BITMAP_SelectObject( DC * dc, HBITMAP hbitmap, } /*********************************************************************** - * CreateDiscardableBitmap (GDI.156) + * CreateDiscardableBitmap (GDI.156) (GDI32.38) */ -HBITMAP CreateDiscardableBitmap(HDC hdc, INT width, INT height) +HBITMAP16 CreateDiscardableBitmap( HDC32 hdc, INT32 width, INT32 height ) { dprintf_bitmap(stddeb,"CreateDiscardableBitmap(%04x, %d, %d); " "// call CreateCompatibleBitmap() for now!\n", @@ -337,7 +365,7 @@ BOOL16 GetBitmapDimensionEx16( HBITMAP16 hbitmap, LPSIZE16 size ) /*********************************************************************** - * GetBitmapDimensionEx32 (GDI.468) + * GetBitmapDimensionEx32 (GDI32.144) */ BOOL32 GetBitmapDimensionEx32( HBITMAP32 hbitmap, LPSIZE32 size ) { @@ -376,7 +404,7 @@ BOOL16 SetBitmapDimensionEx16( HBITMAP16 hbitmap, INT16 x, INT16 y, /*********************************************************************** - * SetBitmapDimensionEx32 (GDI.478) + * SetBitmapDimensionEx32 (GDI32.304) */ BOOL32 SetBitmapDimensionEx32( HBITMAP32 hbitmap, INT32 x, INT32 y, LPSIZE32 prevSize ) diff --git a/objects/brush.c b/objects/brush.c index a1780ba4f08..6331df08d5d 100644 --- a/objects/brush.c +++ b/objects/brush.c @@ -141,13 +141,13 @@ Pixmap BRUSH_DitherColor( DC *dc, COLORREF color ) /*********************************************************************** * CreateBrushIndirect (GDI.50) */ -HBRUSH CreateBrushIndirect( const LOGBRUSH * brush ) +HBRUSH CreateBrushIndirect( const LOGBRUSH16 * brush ) { BRUSHOBJ * brushPtr; HBRUSH hbrush = GDI_AllocObject( sizeof(BRUSHOBJ), BRUSH_MAGIC ); if (!hbrush) return 0; brushPtr = (BRUSHOBJ *) GDI_HEAP_LIN_ADDR( hbrush ); - memcpy( &brushPtr->logbrush, brush, sizeof(LOGBRUSH) ); + memcpy( &brushPtr->logbrush, brush, sizeof(*brush) ); return hbrush; } @@ -157,7 +157,7 @@ HBRUSH CreateBrushIndirect( const LOGBRUSH * brush ) */ HBRUSH CreateHatchBrush( INT style, COLORREF color ) { - LOGBRUSH logbrush = { BS_HATCHED, color, style }; + LOGBRUSH16 logbrush = { BS_HATCHED, color, style }; dprintf_gdi(stddeb, "CreateHatchBrush: %d %06lx\n", style, color ); if ((style < 0) || (style >= NB_HATCH_STYLES)) return 0; return CreateBrushIndirect( &logbrush ); @@ -169,7 +169,7 @@ HBRUSH CreateHatchBrush( INT style, COLORREF color ) */ HBRUSH CreatePatternBrush( HBITMAP hbitmap ) { - LOGBRUSH logbrush = { BS_PATTERN, 0, 0 }; + LOGBRUSH16 logbrush = { BS_PATTERN, 0, 0 }; BITMAPOBJ *bmp, *newbmp; dprintf_gdi(stddeb, "CreatePatternBrush: %04x\n", hbitmap ); @@ -178,7 +178,7 @@ HBRUSH CreatePatternBrush( HBITMAP hbitmap ) if (!(bmp = (BITMAPOBJ *) GDI_GetObjPtr( hbitmap, BITMAP_MAGIC ))) return 0; - logbrush.lbHatch = (INT)CreateBitmapIndirect( &bmp->bitmap ); + logbrush.lbHatch = (INT16)CreateBitmapIndirect16( &bmp->bitmap ); newbmp = (BITMAPOBJ *) GDI_GetObjPtr( (HANDLE)logbrush.lbHatch, BITMAP_MAGIC ); if (!newbmp) return 0; XCopyArea( display, bmp->pixmap, newbmp->pixmap, BITMAP_GC(bmp), @@ -192,7 +192,7 @@ HBRUSH CreatePatternBrush( HBITMAP hbitmap ) */ HBRUSH CreateDIBPatternBrush( HGLOBAL hbitmap, UINT coloruse ) { - LOGBRUSH logbrush = { BS_DIBPATTERN, coloruse, 0 }; + LOGBRUSH16 logbrush = { BS_DIBPATTERN, coloruse, 0 }; BITMAPINFO *info, *newInfo; int size; @@ -202,8 +202,9 @@ HBRUSH CreateDIBPatternBrush( HGLOBAL hbitmap, UINT coloruse ) if (!(info = (BITMAPINFO *) GlobalLock16( hbitmap ))) return 0; - size = info->bmiHeader.biSizeImage; - if (!size) + if (info->bmiHeader.biCompression) + size = info->bmiHeader.biSizeImage; + else size = (info->bmiHeader.biWidth * info->bmiHeader.biBitCount + 31) / 32 * 8 * info->bmiHeader.biHeight; size += DIB_BitmapInfoSize( info, coloruse ); @@ -226,7 +227,7 @@ HBRUSH CreateDIBPatternBrush( HGLOBAL hbitmap, UINT coloruse ) */ HBRUSH CreateSolidBrush( COLORREF color ) { - LOGBRUSH logbrush = { BS_SOLID, color, 0 }; + LOGBRUSH16 logbrush = { BS_SOLID, color, 0 }; dprintf_gdi(stddeb, "CreateSolidBrush: %06lx\n", color ); return CreateBrushIndirect( &logbrush ); } @@ -277,7 +278,7 @@ BOOL BRUSH_DeleteObject( HBRUSH hbrush, BRUSHOBJ * brush ) */ int BRUSH_GetObject( BRUSHOBJ * brush, int count, LPSTR buffer ) { - if (count > sizeof(LOGBRUSH)) count = sizeof(LOGBRUSH); + if (count > sizeof(brush->logbrush)) count = sizeof(brush->logbrush); memcpy( buffer, &brush->logbrush, count ); return count; } diff --git a/objects/clipping.c b/objects/clipping.c index 3683d58a550..8339a42d184 100644 --- a/objects/clipping.c +++ b/objects/clipping.c @@ -5,12 +5,15 @@ */ #include -#include "region.h" +#include "dc.h" #include "metafile.h" +#include "region.h" #include "stddebug.h" /* #define DEBUG_CLIPPING */ #include "debug.h" +#define UpdateDirtyDC(dc) DC_CallHookProc( dc, DCHC_INVALIDVISRGN, 0 ) + /*********************************************************************** * CLIPPING_SetDeviceClipping * diff --git a/objects/color.c b/objects/color.c index 41e612afde9..6868a22e4e2 100644 --- a/objects/color.c +++ b/objects/color.c @@ -32,7 +32,7 @@ static int COLOR_Graymax = 0; #define NB_RESERVED_COLORS 20 /* The first and last eight colors are EGA colors */ -static PALETTEENTRY COLOR_sysPaletteEntries[NB_RESERVED_COLORS] = +static const PALETTEENTRY COLOR_sysPaletteEntries[NB_RESERVED_COLORS] = { /* red green blue flags */ { 0x00, 0x00, 0x00, 0 }, @@ -271,7 +271,7 @@ HPALETTE16 COLOR_Init(void) BOOL COLOR_IsSolid( COLORREF color ) { int i; - PALETTEENTRY *pEntry = COLOR_sysPaletteEntries; + const PALETTEENTRY *pEntry = COLOR_sysPaletteEntries; if (color & 0xff000000) return TRUE; if (!color || (color == 0xffffff)) return TRUE; diff --git a/objects/font.c b/objects/font.c index 8f3b4a175f3..5cde9757a0d 100644 --- a/objects/font.c +++ b/objects/font.c @@ -24,7 +24,7 @@ #define FONTCACHE 32 /* dynamic font cache size */ #define MAX_FONTS 256 -static LPLOGFONT lpLogFontList[MAX_FONTS] = { NULL }; +static LPLOGFONT16 lpLogFontList[MAX_FONTS]; static int ParseFontParms(LPSTR lpFont, WORD wParmsNo, LPSTR lpRetStr, WORD wMaxSiz); @@ -146,7 +146,7 @@ static const char *FONT_TranslateName( char *winFaceName ) * * Find a X font matching the logical font. */ -static XFontStruct * FONT_MatchFont( LOGFONT * font, DC * dc ) +static XFontStruct * FONT_MatchFont( LOGFONT16 * font, DC * dc ) { char pattern[100]; const char *family, *weight, *charset; @@ -276,8 +276,8 @@ static XFontStruct * FONT_MatchFont( LOGFONT * font, DC * dc ) /*********************************************************************** * FONT_GetMetrics */ -void FONT_GetMetrics( LOGFONT * logfont, XFontStruct * xfont, - TEXTMETRIC * metrics ) +void FONT_GetMetrics( LOGFONT16 * logfont, XFontStruct * xfont, + TEXTMETRIC16 * metrics ) { int average, i, count; unsigned long prop; @@ -357,7 +357,7 @@ BOOL CreateScalableFontResource( UINT fHidden,LPSTR lpszResourceFile, /*********************************************************************** * CreateFontIndirect (GDI.57) */ -HFONT CreateFontIndirect( const LOGFONT * font ) +HFONT CreateFontIndirect( const LOGFONT16 * font ) { FONTOBJ * fontPtr; HFONT hfont; @@ -370,7 +370,7 @@ HFONT CreateFontIndirect( const LOGFONT * font ) hfont = GDI_AllocObject( sizeof(FONTOBJ), FONT_MAGIC ); if (!hfont) return 0; fontPtr = (FONTOBJ *) GDI_HEAP_LIN_ADDR( hfont ); - memcpy( &fontPtr->logfont, font, sizeof(LOGFONT) ); + memcpy( &fontPtr->logfont, font, sizeof(LOGFONT16) ); AnsiLower( fontPtr->logfont.lfFaceName ); dprintf_font(stddeb,"CreateFontIndirect(%p (%d,%d)); return %04x\n", font, font->lfHeight, font->lfWidth, hfont); @@ -386,8 +386,8 @@ HFONT CreateFont( INT height, INT width, INT esc, INT orient, INT weight, BYTE outpres, BYTE clippres, BYTE quality, BYTE pitch, LPCSTR name ) { - LOGFONT logfont = { height, width, esc, orient, weight, italic, underline, - strikeout, charset, outpres, clippres, quality, pitch, }; + LOGFONT16 logfont = {height, width, esc, orient, weight, italic, underline, + strikeout, charset, outpres, clippres, quality, pitch, }; dprintf_font(stddeb,"CreateFont(%d,%d)\n", height, width); if (name) { @@ -404,7 +404,7 @@ HFONT CreateFont( INT height, INT width, INT esc, INT orient, INT weight, */ int FONT_GetObject( FONTOBJ * font, int count, LPSTR buffer ) { - if (count > sizeof(LOGFONT)) count = sizeof(LOGFONT); + if (count > sizeof(LOGFONT16)) count = sizeof(LOGFONT16); memcpy( buffer, &font->logfont, count ); return count; } @@ -419,7 +419,7 @@ HFONT FONT_SelectObject( DC * dc, HFONT hfont, FONTOBJ * font ) static struct { HFONT id; - LOGFONT logfont; + LOGFONT16 logfont; int access; int used; X_PHYSFONT cacheFont; } cacheFonts[FONTCACHE], *cacheFontsMin; @@ -462,7 +462,7 @@ HFONT FONT_SelectObject( DC * dc, HFONT hfont, FONTOBJ * font ) /* * Check if Handle matches the font */ - if(memcmp(&cacheFonts[i].logfont,&(font->logfont), sizeof(LOGFONT))) { + if(memcmp(&cacheFonts[i].logfont,&(font->logfont), sizeof(LOGFONT16))) { /* No: remove handle id from dynamic font cache */ cacheFonts[i].access=0; cacheFonts[i].used=0; @@ -470,7 +470,7 @@ HFONT FONT_SelectObject( DC * dc, HFONT hfont, FONTOBJ * font ) /* may be there is an unused handle which contains the font */ for(i=0; ilogfont), sizeof(LOGFONT)))== 0) { + (memcmp(&cacheFonts[i].logfont,&(font->logfont), sizeof(LOGFONT16)))== 0) { /* got it load from cache and set new handle id */ stockPtr = &cacheFonts[i].cacheFont; cacheFonts[i].access=1; @@ -564,7 +564,7 @@ HFONT FONT_SelectObject( DC * dc, HFONT hfont, FONTOBJ * font ) cacheFontsMin->used=1; cacheFontsMin->id=hfont; memcpy( &dc->u.x.font, &(cacheFontsMin->cacheFont), sizeof(cacheFontsMin->cacheFont) ); - memcpy(&cacheFontsMin->logfont,&(font->logfont), sizeof(LOGFONT)); + memcpy(&cacheFontsMin->logfont,&(font->logfont), sizeof(LOGFONT16)); } return prevHandle; @@ -635,7 +635,7 @@ INT GetTextFace( HDC hdc, INT count, LPSTR name ) if (!dc) return 0; if (!(font = (FONTOBJ *) GDI_GetObjPtr( dc->w.hFont, FONT_MAGIC ))) return 0; - lstrcpyn( name, font->logfont.lfFaceName, count ); + lstrcpyn32A( name, font->logfont.lfFaceName, count ); return strlen(name); } @@ -703,7 +703,7 @@ BOOL32 GetTextExtentPoint32W( HDC32 hdc, LPCWSTR str, INT32 count, /*********************************************************************** * GetTextMetrics (GDI.93) */ -BOOL GetTextMetrics( HDC hdc, LPTEXTMETRIC metrics ) +BOOL GetTextMetrics( HDC hdc, LPTEXTMETRIC16 metrics ) { DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); if (!dc) return FALSE; @@ -783,7 +783,7 @@ DWORD SetMapperFlags(HDC hDC, DWORD dwFlag) /*********************************************************************** * GetCharABCWidths (GDI.307) */ -BOOL GetCharABCWidths(HDC hdc, UINT wFirstChar, UINT wLastChar, LPABC lpABC) +BOOL GetCharABCWidths(HDC hdc, UINT wFirstChar, UINT wLastChar, LPABC16 lpABC) { /* No TrueType fonts in Wine so far */ @@ -881,7 +881,8 @@ int ParseFontParms(LPSTR lpFont, WORD wParmsNo, LPSTR lpRetStr, WORD wMaxSiz) static int logfcmp(const void *a,const void *b) { - return strcmp( (*(LPLOGFONT *)a)->lfFaceName, (*(LPLOGFONT *)b)->lfFaceName ); + return strcmp( (*(LPLOGFONT16 *)a)->lfFaceName, + (*(LPLOGFONT16 *)b)->lfFaceName ); } void InitFontsList(void) @@ -892,7 +893,7 @@ void InitFontsList(void) char **names; char slant, spacing; int i, count; - LPLOGFONT lpNewFont; + LPLOGFONT16 lpNewFont; weight = "medium"; slant = 'r'; spacing = '*'; @@ -904,7 +905,7 @@ void InitFontsList(void) names = XListFonts( display, pattern, MAX_FONTS, &count ); dprintf_font(stddeb,"InitFontsList // count=%d \n", count); for (i = 0; i < count; i++) { - lpNewFont = malloc(sizeof(LOGFONT) + LF_FACESIZE); + lpNewFont = malloc(sizeof(LOGFONT16) + LF_FACESIZE); if (lpNewFont == NULL) { dprintf_font(stddeb, "InitFontsList // Error alloc new font structure !\n"); break; @@ -969,8 +970,8 @@ INT EnumFonts(HDC hDC, LPCSTR lpFaceName, FONTENUMPROC lpEnumFunc, LPARAM lpData HANDLE hMet; HFONT hFont; HFONT hOldFont; - LPLOGFONT lpLogFont; - LPTEXTMETRIC lptm; + LPLOGFONT16 lpLogFont; + LPTEXTMETRIC16 lptm; LPSTR lpOldName; char FaceName[LF_FACESIZE]; int nRet = 0; @@ -979,14 +980,14 @@ INT EnumFonts(HDC hDC, LPCSTR lpFaceName, FONTENUMPROC lpEnumFunc, LPARAM lpData dprintf_font(stddeb,"EnumFonts(%04x, %p='%s', %08lx, %08lx)\n", hDC, lpFaceName, lpFaceName, (LONG)lpEnumFunc, lpData); if (lpEnumFunc == 0) return 0; - hLog = GDI_HEAP_ALLOC( sizeof(LOGFONT) + LF_FACESIZE ); - lpLogFont = (LPLOGFONT) GDI_HEAP_LIN_ADDR(hLog); + hLog = GDI_HEAP_ALLOC( sizeof(LOGFONT16) + LF_FACESIZE ); + lpLogFont = (LPLOGFONT16) GDI_HEAP_LIN_ADDR(hLog); if (lpLogFont == NULL) { fprintf(stderr,"EnumFonts // can't alloc LOGFONT struct !\n"); return 0; } - hMet = GDI_HEAP_ALLOC( sizeof(TEXTMETRIC) ); - lptm = (LPTEXTMETRIC) GDI_HEAP_LIN_ADDR(hMet); + hMet = GDI_HEAP_ALLOC( sizeof(TEXTMETRIC16) ); + lptm = (LPTEXTMETRIC16) GDI_HEAP_LIN_ADDR(hMet); if (lptm == NULL) { GDI_HEAP_FREE(hLog); fprintf(stderr, "EnumFonts // can't alloc TEXTMETRIC struct !\n"); @@ -1010,7 +1011,7 @@ INT EnumFonts(HDC hDC, LPCSTR lpFaceName, FONTENUMPROC lpEnumFunc, LPARAM lpData } dprintf_font(stddeb,"EnumFonts // enum '%s' !\n", lpLogFontList[i]->lfFaceName); dprintf_font(stddeb,"EnumFonts // %p !\n", lpLogFontList[i]); - memcpy(lpLogFont, lpLogFontList[i], sizeof(LOGFONT) + LF_FACESIZE); + memcpy(lpLogFont, lpLogFontList[i], sizeof(LOGFONT16) + LF_FACESIZE); hFont = CreateFontIndirect(lpLogFont); hOldFont = SelectObject(hDC, hFont); GetTextMetrics(hDC, lptm); @@ -1039,8 +1040,8 @@ INT EnumFontFamilies(HDC hDC, LPCSTR lpszFamily, FONTENUMPROC lpEnumFunc, LPARAM HANDLE hMet; HFONT hFont; HFONT hOldFont; - LPENUMLOGFONT lpEnumLogFont; - LPTEXTMETRIC lptm; + LPENUMLOGFONT16 lpEnumLogFont; + LPTEXTMETRIC16 lptm; LPSTR lpOldName; char FaceName[LF_FACESIZE]; int nRet = 0; @@ -1049,14 +1050,14 @@ INT EnumFontFamilies(HDC hDC, LPCSTR lpszFamily, FONTENUMPROC lpEnumFunc, LPARAM dprintf_font(stddeb,"EnumFontFamilies(%04x, %p, %08lx, %08lx)\n", hDC, lpszFamily, (DWORD)lpEnumFunc, lpData); if (lpEnumFunc == 0) return 0; - hLog = GDI_HEAP_ALLOC( sizeof(ENUMLOGFONT) ); - lpEnumLogFont = (LPENUMLOGFONT) GDI_HEAP_LIN_ADDR(hLog); + hLog = GDI_HEAP_ALLOC( sizeof(ENUMLOGFONT16) ); + lpEnumLogFont = (LPENUMLOGFONT16) GDI_HEAP_LIN_ADDR(hLog); if (lpEnumLogFont == NULL) { fprintf(stderr,"EnumFontFamilies // can't alloc LOGFONT struct !\n"); return 0; } - hMet = GDI_HEAP_ALLOC( sizeof(TEXTMETRIC) ); - lptm = (LPTEXTMETRIC) GDI_HEAP_LIN_ADDR(hMet); + hMet = GDI_HEAP_ALLOC( sizeof(TEXTMETRIC16) ); + lptm = (LPTEXTMETRIC16) GDI_HEAP_LIN_ADDR(hMet); if (lptm == NULL) { GDI_HEAP_FREE(hLog); fprintf(stderr,"EnumFontFamilies // can't alloc TEXTMETRIC struct !\n"); @@ -1077,10 +1078,10 @@ INT EnumFontFamilies(HDC hDC, LPCSTR lpszFamily, FONTENUMPROC lpEnumFunc, LPARAM } else { if (strcmp(FaceName, lpLogFontList[i]->lfFaceName) != 0) continue; } - memcpy(lpEnumLogFont, lpLogFontList[i], sizeof(LOGFONT)); + memcpy(lpEnumLogFont, lpLogFontList[i], sizeof(LOGFONT16)); strcpy(lpEnumLogFont->elfFullName,""); strcpy(lpEnumLogFont->elfStyle,""); - hFont = CreateFontIndirect((LPLOGFONT)lpEnumLogFont); + hFont = CreateFontIndirect((LPLOGFONT16)lpEnumLogFont); hOldFont = SelectObject(hDC, hFont); GetTextMetrics(hDC, lptm); SelectObject(hDC, hOldFont); @@ -1119,7 +1120,7 @@ BOOL GetRasterizerCaps(LPRASTERIZER_STATUS lprs, UINT cbNumBytes) /************************************************************************* * GetKerningPairs [GDI.332] */ -int GetKerningPairs(HDC hDC,int cBufLen,LPKERNINGPAIR lpKerningPairs) +int GetKerningPairs(HDC hDC,int cBufLen,LPKERNINGPAIR16 lpKerningPairs) { /* Wine fonts are ugly and don't support kerning :) */ return 0; diff --git a/objects/gdiobj.c b/objects/gdiobj.c index 81c1c16306f..ddf0a210679 100644 --- a/objects/gdiobj.c +++ b/objects/gdiobj.c @@ -299,12 +299,12 @@ HANDLE GetStockObject( int obj ) /*********************************************************************** - * GetObject (GDI.82) + * GetObject16 (GDI.82) */ -int GetObject( HANDLE handle, int count, LPSTR buffer ) +INT16 GetObject16( HANDLE16 handle, INT16 count, LPVOID buffer ) { GDIOBJHDR * ptr = NULL; - dprintf_gdi(stddeb, "GetObject: %04x %d %p\n", handle, count, buffer ); + dprintf_gdi(stddeb, "GetObject16: %04x %d %p\n", handle, count, buffer ); if (!count) return 0; if ((handle >= FIRST_STOCK_HANDLE) && (handle <= LAST_STOCK_HANDLE)) @@ -320,7 +320,7 @@ int GetObject( HANDLE handle, int count, LPSTR buffer ) case BRUSH_MAGIC: return BRUSH_GetObject( (BRUSHOBJ *)ptr, count, buffer ); case BITMAP_MAGIC: - return BITMAP_GetObject( (BITMAPOBJ *)ptr, count, buffer ); + return BITMAP_GetObject16( (BITMAPOBJ *)ptr, count, buffer ); case FONT_MAGIC: return FONT_GetObject( (FONTOBJ *)ptr, count, buffer ); case PALETTE_MAGIC: @@ -330,6 +330,46 @@ int GetObject( HANDLE handle, int count, LPSTR buffer ) } +/*********************************************************************** + * GetObject32A (GDI32.204) + */ +INT32 GetObject32A( HANDLE32 handle, INT32 count, LPVOID buffer ) +{ + GDIOBJHDR * ptr = NULL; + dprintf_gdi(stddeb, "GetObject32A: %08x %d %p\n", handle, count, buffer ); + if (!count) return 0; + + if ((handle >= FIRST_STOCK_HANDLE) && (handle <= LAST_STOCK_HANDLE)) + ptr = StockObjects[handle - FIRST_STOCK_HANDLE]; + else + ptr = (GDIOBJHDR *) GDI_HEAP_LIN_ADDR( handle ); + if (!ptr) return 0; + + switch(ptr->wMagic) + { + case BITMAP_MAGIC: + return BITMAP_GetObject32( (BITMAPOBJ *)ptr, count, buffer ); + case PEN_MAGIC: + case BRUSH_MAGIC: + case FONT_MAGIC: + case PALETTE_MAGIC: + fprintf( stderr, "GetObject32: magic %04x not implemented\n", + ptr->wMagic ); + break; + } + return 0; +} + + +/*********************************************************************** + * GetObject32W (GDI32.206) + */ +INT32 GetObject32W( HANDLE32 handle, INT32 count, LPVOID buffer ) +{ + return GetObject32A( handle, count, buffer ); +} + + /*********************************************************************** * SelectObject (GDI.45) */ @@ -397,8 +437,8 @@ INT EnumObjects( HDC hdc, INT nObjType, GOBJENUMPROC lpEnumFunc, LPARAM lParam ) }; int i, retval = 0; - LOGPEN *pen; - LOGBRUSH *brush = NULL; + LOGPEN16 *pen; + LOGBRUSH16 *brush = NULL; dprintf_gdi( stddeb, "EnumObjects: %04x %d %08lx %08lx\n", hdc, nObjType, (DWORD)lpEnumFunc, lParam ); @@ -406,7 +446,7 @@ INT EnumObjects( HDC hdc, INT nObjType, GOBJENUMPROC lpEnumFunc, LPARAM lParam ) { case OBJ_PEN: /* Enumerate solid pens */ - if (!(pen = SEGPTR_NEW(LOGPEN))) break; + if (!(pen = SEGPTR_NEW(LOGPEN16))) break; for (i = 0; i < sizeof(solid_colors)/sizeof(solid_colors[0]); i++) { pen->lopnStyle = PS_SOLID; @@ -424,7 +464,7 @@ INT EnumObjects( HDC hdc, INT nObjType, GOBJENUMPROC lpEnumFunc, LPARAM lParam ) case OBJ_BRUSH: /* Enumerate solid brushes */ - if (!(brush = SEGPTR_NEW(LOGBRUSH))) break; + if (!(brush = SEGPTR_NEW(LOGBRUSH16))) break; for (i = 0; i < sizeof(solid_colors)/sizeof(solid_colors[0]); i++) { brush->lbStyle = BS_SOLID; diff --git a/objects/metafile.c b/objects/metafile.c index 983b4195510..bbaa8c46504 100644 --- a/objects/metafile.c +++ b/objects/metafile.c @@ -563,17 +563,17 @@ void PlayMetaFileRecord(HDC hdc, HANDLETABLE *ht, METARECORD *mr, case META_CREATEPENINDIRECT: MF_AddHandle(ht, nHandles, - CreatePenIndirect((LOGPEN *)(&(mr->rdParam)))); + CreatePenIndirect((LOGPEN16 *)(&(mr->rdParam)))); break; case META_CREATEFONTINDIRECT: MF_AddHandle(ht, nHandles, - CreateFontIndirect((LOGFONT *)(&(mr->rdParam)))); + CreateFontIndirect((LOGFONT16 *)(&(mr->rdParam)))); break; case META_CREATEBRUSHINDIRECT: MF_AddHandle(ht, nHandles, - CreateBrushIndirect((LOGBRUSH *)(&(mr->rdParam)))); + CreateBrushIndirect((LOGBRUSH16 *)(&(mr->rdParam)))); break; /* W. Magro: Some new metafile operations. Not all debugged. */ @@ -930,17 +930,17 @@ BOOL MF_MetaParam8(DC *dc, short func, short param1, short param2, * MF_CreateBrushIndirect */ -BOOL MF_CreateBrushIndirect(DC *dc, HBRUSH hBrush, LOGBRUSH *logbrush) +BOOL MF_CreateBrushIndirect(DC *dc, HBRUSH hBrush, LOGBRUSH16 *logbrush) { int index; HMETAFILE handle; - char buffer[sizeof(METARECORD) - 2 + sizeof(LOGBRUSH)]; + char buffer[sizeof(METARECORD) - 2 + sizeof(LOGBRUSH16)]; METARECORD *mr = (METARECORD *)&buffer; METAHEADER *mh; - mr->rdSize = (sizeof(METARECORD) + sizeof(LOGBRUSH) - 2) / 2; + mr->rdSize = (sizeof(METARECORD) + sizeof(LOGBRUSH16) - 2) / 2; mr->rdFunction = META_CREATEBRUSHINDIRECT; - memcpy(&(mr->rdParam), logbrush, sizeof(LOGBRUSH)); + memcpy(&(mr->rdParam), logbrush, sizeof(LOGBRUSH16)); if (!(dc->w.hMetaFile = MF_WriteRecord(dc->w.hMetaFile, mr, mr->rdSize * 2))) return FALSE; @@ -968,7 +968,7 @@ BOOL MF_CreateBrushIndirect(DC *dc, HBRUSH hBrush, LOGBRUSH *logbrush) * MF_CreatePatternBrush */ -BOOL MF_CreatePatternBrush(DC *dc, HBRUSH hBrush, LOGBRUSH *logbrush) +BOOL MF_CreatePatternBrush(DC *dc, HBRUSH hBrush, LOGBRUSH16 *logbrush) { DWORD len, bmSize, biSize; HANDLE hmr; @@ -1009,8 +1009,9 @@ BOOL MF_CreatePatternBrush(DC *dc, HBRUSH hBrush, LOGBRUSH *logbrush) case BS_DIBPATTERN: info = (BITMAPINFO *)GlobalLock16((HANDLE)logbrush->lbHatch); - bmSize = info->bmiHeader.biSizeImage; - if (!bmSize) + if (info->bmiHeader.biCompression) + bmSize = info->bmiHeader.biSizeImage; + else bmSize = (info->bmiHeader.biWidth * info->bmiHeader.biBitCount + 31) / 32 * 8 * info->bmiHeader.biHeight; biSize = DIB_BitmapInfoSize(info, LOWORD(logbrush->lbColor)); @@ -1058,17 +1059,17 @@ BOOL MF_CreatePatternBrush(DC *dc, HBRUSH hBrush, LOGBRUSH *logbrush) * MF_CreatePenIndirect */ -BOOL MF_CreatePenIndirect(DC *dc, HPEN16 hPen, LOGPEN *logpen) +BOOL MF_CreatePenIndirect(DC *dc, HPEN16 hPen, LOGPEN16 *logpen) { int index; HMETAFILE handle; - char buffer[sizeof(METARECORD) - 2 + sizeof(LOGPEN)]; + char buffer[sizeof(METARECORD) - 2 + sizeof(LOGPEN16)]; METARECORD *mr = (METARECORD *)&buffer; METAHEADER *mh; - mr->rdSize = (sizeof(METARECORD) + sizeof(LOGPEN) - 2) / 2; + mr->rdSize = (sizeof(METARECORD) + sizeof(LOGPEN16) - 2) / 2; mr->rdFunction = META_CREATEPENINDIRECT; - memcpy(&(mr->rdParam), logpen, sizeof(LOGPEN)); + memcpy(&(mr->rdParam), logpen, sizeof(LOGPEN16)); if (!(dc->w.hMetaFile = MF_WriteRecord(dc->w.hMetaFile, mr, mr->rdSize * 2))) return FALSE; @@ -1095,17 +1096,17 @@ BOOL MF_CreatePenIndirect(DC *dc, HPEN16 hPen, LOGPEN *logpen) * MF_CreateFontIndirect */ -BOOL MF_CreateFontIndirect(DC *dc, HFONT hFont, LOGFONT *logfont) +BOOL MF_CreateFontIndirect(DC *dc, HFONT hFont, LOGFONT16 *logfont) { int index; HMETAFILE handle; - char buffer[sizeof(METARECORD) - 2 + sizeof(LOGFONT)]; + char buffer[sizeof(METARECORD) - 2 + sizeof(LOGFONT16)]; METARECORD *mr = (METARECORD *)&buffer; METAHEADER *mh; - mr->rdSize = (sizeof(METARECORD) + sizeof(LOGFONT) - 2) / 2; + mr->rdSize = (sizeof(METARECORD) + sizeof(LOGFONT16) - 2) / 2; mr->rdFunction = META_CREATEFONTINDIRECT; - memcpy(&(mr->rdParam), logfont, sizeof(LOGFONT)); + memcpy(&(mr->rdParam), logfont, sizeof(LOGFONT16)); if (!(dc->w.hMetaFile = MF_WriteRecord(dc->w.hMetaFile, mr, mr->rdSize * 2))) return FALSE; diff --git a/objects/oembitmap.c b/objects/oembitmap.c index 13f46277fff..bb5939c6488 100644 --- a/objects/oembitmap.c +++ b/objects/oembitmap.c @@ -149,7 +149,7 @@ static const struct #define OIC_FIRST OIC_SAMPLE /* First OEM icon */ #define OIC_LAST OIC_WINEICON /* Last OEM icon */ -static char **OBM_Icons_Data[OIC_LAST-OIC_FIRST+1] = +static char ** const OBM_Icons_Data[OIC_LAST-OIC_FIRST+1] = { oic_sample, /* OIC_SAMPLE */ oic_hand, /* OIC_HAND */ @@ -216,7 +216,7 @@ static char **OBM_Cursors_Data[NB_CURSORS] = #endif }; -static HCURSOR OBM_Cursors[NB_CURSORS] = { 0, }; +static HCURSOR OBM_Cursors[NB_CURSORS]; /* All the colors used in the xpm files must be included in this */ diff --git a/objects/pen.c b/objects/pen.c index f28ce045cb0..c32ca204cc9 100644 --- a/objects/pen.c +++ b/objects/pen.c @@ -15,7 +15,7 @@ */ HPEN16 CreatePen( INT style, INT width, COLORREF color ) { - LOGPEN logpen = { style, { width, 0 }, color }; + LOGPEN16 logpen = { style, { width, 0 }, color }; dprintf_gdi(stddeb, "CreatePen: %d %d %06lx\n", style, width, color ); return CreatePenIndirect( &logpen ); } @@ -24,7 +24,7 @@ HPEN16 CreatePen( INT style, INT width, COLORREF color ) /*********************************************************************** * CreatePenIndirect (GDI.62) */ -HPEN16 CreatePenIndirect( const LOGPEN * pen ) +HPEN16 CreatePenIndirect( const LOGPEN16 * pen ) { PENOBJ * penPtr; HPEN16 hpen; @@ -33,7 +33,7 @@ HPEN16 CreatePenIndirect( const LOGPEN * pen ) hpen = GDI_AllocObject( sizeof(PENOBJ), PEN_MAGIC ); if (!hpen) return 0; penPtr = (PENOBJ *) GDI_HEAP_LIN_ADDR( hpen ); - memcpy( &penPtr->logpen, pen, sizeof(LOGPEN) ); + memcpy( &penPtr->logpen, pen, sizeof(*pen) ); return hpen; } @@ -43,7 +43,7 @@ HPEN16 CreatePenIndirect( const LOGPEN * pen ) */ int PEN_GetObject( PENOBJ * pen, int count, LPSTR buffer ) { - if (count > sizeof(LOGPEN)) count = sizeof(LOGPEN); + if (count > sizeof(pen->logpen)) count = sizeof(pen->logpen); memcpy( buffer, &pen->logpen, count ); return count; } diff --git a/objects/text.c b/objects/text.c index 1d5a5e12e54..a9a67d37e56 100644 --- a/objects/text.c +++ b/objects/text.c @@ -194,7 +194,7 @@ INT16 DrawText16( HDC16 hdc, LPCSTR str, INT16 i_count, int len, lh, count=i_count; int prefix_x = 0; int prefix_end = 0; - TEXTMETRIC tm; + TEXTMETRIC16 tm; int x = rect->left, y = rect->top; int width = rect->right - rect->left; int max_width = 0; @@ -581,20 +581,16 @@ BOOL32 TextOut32W( HDC32 hdc, INT32 x, INT32 y, LPCWSTR str, INT32 count ) BOOL GrayString(HDC hdc, HBRUSH hbr, FARPROC gsprc, LPARAM lParam, INT cch, INT x, INT y, INT cx, INT cy) { - int s, current_color; + BOOL ret; + COLORREF current_color; - if (gsprc) { - return CallGrayStringProc(gsprc, hdc, lParam, - cch ? cch : lstrlen((LPCSTR) lParam) ); - } else { - current_color = GetTextColor(hdc); - SetTextColor(hdc, GetSysColor(COLOR_GRAYTEXT) ); - s = TextOut16(hdc, x, y, (LPSTR) lParam, - cch ? cch : lstrlen((LPCSTR) lParam) ); - SetTextColor(hdc, current_color); - - return s; - } + if (!cch) cch = lstrlen16( (LPCSTR)PTR_SEG_TO_LIN(lParam) ); + if (gsprc) return CallGrayStringProc( gsprc, hdc, lParam, cch ); + current_color = GetTextColor( hdc ); + SetTextColor( hdc, GetSysColor(COLOR_GRAYTEXT) ); + ret = TextOut16( hdc, x, y, (LPCSTR)PTR_SEG_TO_LIN(lParam), cch ); + SetTextColor( hdc, current_color ); + return ret; } @@ -621,7 +617,7 @@ LONG TEXT_TabbedTextOut( HDC hdc, int x, int y, LPSTR lpstr, int count, } else { - TEXTMETRIC tm; + TEXTMETRIC16 tm; GetTextMetrics( hdc, &tm ); defWidth = 8 * tm.tmAveCharWidth; } diff --git a/win32/Makefile.in b/win32/Makefile.in index 1b36259b00a..452f909f074 100644 --- a/win32/Makefile.in +++ b/win32/Makefile.in @@ -10,7 +10,6 @@ C_SRCS = \ error.c \ except.c \ file.c \ - gdi32.c \ init.c \ memory.c \ newfns.c \ diff --git a/win32/except.c b/win32/except.c index e98ce4a1ccb..8e42cc4bf09 100644 --- a/win32/except.c +++ b/win32/except.c @@ -57,7 +57,7 @@ void EXC_Init(void) * */ -void EXC_RtlUnwind(PEXCEPTION_FRAME pEndFrame,PVOID unusedEip, +void EXC_RtlUnwind(PEXCEPTION_FRAME pEndFrame,LPVOID unusedEip, PEXCEPTION_RECORD pRecord, DWORD returnEax, PCONTEXT pcontext) { @@ -73,7 +73,7 @@ void EXC_RtlUnwind(PEXCEPTION_FRAME pEndFrame,PVOID unusedEip, record.ExceptionCode= 0xC0000026; /* invalid disposition */ record.ExceptionFlags= 0; record.ExceptionRecord= NULL; - record.ExceptionAddress=(PVOID) pcontext->Eip; + record.ExceptionAddress=(LPVOID) pcontext->Eip; record.NumberParameters= 0; pRecord=&record; } @@ -99,7 +99,7 @@ void EXC_RtlUnwind(PEXCEPTION_FRAME pEndFrame,PVOID unusedEip, retval, (int) dispatch); if(retval==ExceptionCollidedUnwind) - TebExceptionFrame=(PVOID) dispatch; + TebExceptionFrame=(LPVOID) dispatch; else if(TebExceptionFrame!=pEndFrame) TebExceptionFrame=TebExceptionFrame->Prev; else @@ -130,7 +130,7 @@ VOID EXC_RaiseException(DWORD dwExceptionCode, record.ExceptionFlags = dwExceptionFlags; record.ExceptionRecord = NULL; record.NumberParameters = cArguments; - record.ExceptionAddress = (PVOID) pcontext->Eip; + record.ExceptionAddress = (LPVOID) pcontext->Eip; for(i=0;i -#include -#include -#include -#include -#include -#include -#include - -int WIN32_GetObject( HANDLE handle, int count, LPVOID buffer ) - -/* largely a copy of GetObject, but with size mangling capabilities to -convert between win16 and win32 objects. Yeuch! */ - -{ - void *temp = alloca(count); - GDIOBJHDR * ptr = NULL; - - dprintf_win32(stddeb, "WIN32_GetObject: %d %d %p\n", handle, count, buffer); - - if ((!count) || (temp == NULL)) - return 0; - - ptr = GDI_GetObjPtr(handle, MAGIC_DONTCARE); - if (!ptr) return 0; - - /* FIXME: only bitmaps fixed so far */ - - switch(ptr->wMagic) - { - case PEN_MAGIC: - return PEN_GetObject( (PENOBJ *)ptr, count, buffer ); - case BRUSH_MAGIC: - return BRUSH_GetObject( (BRUSHOBJ *)ptr, count, buffer ); - case BITMAP_MAGIC: { - BITMAP *pbm = (BITMAP *)temp; - int *pdest = (int *)buffer; - - if (buffer == NULL) - return 28; - - BITMAP_GetObject( (BITMAPOBJ *)ptr, count, temp ); - if (count > 3) - pdest[0] = pbm->bmType; - if (count > 7) - pdest[1] = pbm->bmWidth; - if (count > 11) - pdest[2] = pbm->bmHeight; - if (count > 15) - pdest[3] = pbm->bmWidthBytes; - if (count > 19) - pdest[4] = pbm->bmPlanes; - if (count > 23) - pdest[5] = pbm->bmBitsPixel; - if (count > 27) - pdest[6] = pbm->bmBits; - - return (count > 28) ? 28 : count - (count % 4); - } - case FONT_MAGIC: - return FONT_GetObject( (FONTOBJ *)ptr, count, buffer ); - case PALETTE_MAGIC: - return PALETTE_GetObject( (PALETTEOBJ *)ptr, count, buffer ); - } - return 0; -} - diff --git a/win32/process.c b/win32/process.c index 4ed4c7e0870..44ec1558d2b 100644 --- a/win32/process.c +++ b/win32/process.c @@ -119,6 +119,14 @@ HANDLE32 LoadLibraryA(char *libname) return handle; } +/*********************************************************************** + * FreeLibrary + */ +BOOL FreeLibrary32(HINSTANCE hLibModule) +{ + fprintf(stderr,"FreeLibrary: empty stub\n"); + return TRUE; +} #ifndef WINELIB /*********************************************************************** diff --git a/win32/resource.c b/win32/resource.c index 4b4598d461e..32523790618 100644 --- a/win32/resource.c +++ b/win32/resource.c @@ -59,7 +59,7 @@ PIMAGE_RESOURCE_DIRECTORY GetResDirEntry(PIMAGE_RESOURCE_DIRECTORY resdirptr, entryTable = (PIMAGE_RESOURCE_DIRECTORY_ENTRY) ( (BYTE *) resdirptr + sizeof(IMAGE_RESOURCE_DIRECTORY)); - namelen = STRING32_lstrlenW(name); + namelen = lstrlen32W(name); for (entrynum = 0; entrynum < resdirptr->NumberOfNamedEntries; entrynum++) { PIMAGE_RESOURCE_DIR_STRING_U str = @@ -67,7 +67,7 @@ PIMAGE_RESOURCE_DIRECTORY GetResDirEntry(PIMAGE_RESOURCE_DIRECTORY resdirptr, (entryTable[entrynum].Name & 0x7fffffff)); if(namelen != str->Length) continue; - if(STRING32_lstrcmpniW(name,str->NameString,str->Length)==0) + if(lstrncmpi32W(name,str->NameString,str->Length)==0) return (PIMAGE_RESOURCE_DIRECTORY) ( root + (entryTable[entrynum].OffsetToData & 0x7fffffff)); diff --git a/win32/string32.c b/win32/string32.c index c888d110500..011b445e59b 100644 --- a/win32/string32.c +++ b/win32/string32.c @@ -11,18 +11,10 @@ #include #include #include +#include "windows.h" #include "string32.h" #include "xmalloc.h" -int -STRING32_UniLen(LPCWSTR s) -{ - int i; - for(i=0;*s;s++) - i++; - return i; -} - void STRING32_UniToAnsi(LPSTR dest,LPCWSTR src) { static int have_warned=0; @@ -55,7 +47,7 @@ STRING32_AnsiToUni(LPWSTR dest,LPCSTR src) { LPSTR STRING32_DupUniToAnsi(LPCWSTR src) { - LPSTR dest=xmalloc(STRING32_UniLen(src)+1); + LPSTR dest=xmalloc(lstrlen32W(src)+1); STRING32_UniToAnsi(dest,src); return dest; } @@ -67,22 +59,6 @@ LPWSTR STRING32_DupAnsiToUni(LPCSTR src) return dest; } -LPWSTR STRING32_lstrcpyW(LPWSTR dst, LPCWSTR src) -{ - register LPWSTR p = dst; - while ((*p++ = *src++)); - return dst; -} - - -DWORD STRING32_lstrlenW(LPCWSTR str) -{ - int len; - for(len=0;*str;str++) - len++; - return len; -} - /* not an API function */ WCHAR STRING32_tolowerW(WCHAR c) @@ -91,39 +67,6 @@ WCHAR STRING32_tolowerW(WCHAR c) return tolower(c); } -int STRING32_lstrcmpniW(LPCWSTR a,LPCWSTR b,DWORD len) -{ - while(len--) - { - WCHAR c1,c2; - c1 = STRING32_tolowerW(*a); - c2 = STRING32_tolowerW(*b); - if(c1c2)return 1; - if(c1==0 && c2==0)return 0; - if(c1==0)return -1; - if(c2==0)return 1; - a++; - b++; - } - return 0; -} - -int -STRING32_lstrcmpW(LPCWSTR a,LPCWSTR b) { - WCHAR diff; - - while(*a && *b) { - diff=*a-*b; - if (diff) return diff; - a++; - b++; - } - if (*a) return *a; - if (*b) return -*b; - return 0; -} - LPWSTR STRING32_lstrchrW(LPCWSTR a,WCHAR c) { while(*a) { @@ -139,7 +82,7 @@ STRING32_strdupW(LPCWSTR a) { LPWSTR b; int len; - len=sizeof(WCHAR)*(STRING32_UniLen(a)+1); + len=sizeof(WCHAR)*(lstrlen32W(a)+1); b=(LPWSTR)xmalloc(len); memcpy(b,a,len); return b; diff --git a/win32/struct32.c b/win32/struct32.c index 2d76d8f2150..15047e9019c 100644 --- a/win32/struct32.c +++ b/win32/struct32.c @@ -30,7 +30,7 @@ void STRUCT32_SIZE16to32(const SIZE16* p16, SIZE32* p32) p32->cy = p16->cy; } -void STRUCT32_MSG16to32(MSG *msg16,MSG32 *msg32) +void STRUCT32_MSG16to32(const MSG16 *msg16,MSG32 *msg32) { msg32->hwnd=(DWORD)msg16->hwnd; msg32->message=msg16->message; @@ -41,7 +41,7 @@ void STRUCT32_MSG16to32(MSG *msg16,MSG32 *msg32) msg32->pt.y=msg16->pt.y; } -void STRUCT32_MSG32to16(MSG32 *msg32,MSG *msg16) +void STRUCT32_MSG32to16(const MSG32 *msg32,MSG16 *msg16) { msg16->hwnd=(HWND)msg32->hwnd; msg16->message=msg32->message; diff --git a/win32/thread.c b/win32/thread.c index b538002ee2a..00e5daa091a 100644 --- a/win32/thread.c +++ b/win32/thread.c @@ -79,9 +79,12 @@ DWORD TlsAlloc() if(!Tls){ TlsCount++; Tls=xmalloc(sizeof(LPVOID)); + /* Tls needs to be zero initialized */ + Tls[0]=0; return 0; } Tls=xrealloc(Tls,sizeof(LPVOID)*(++TlsCount)); + Tls[TlsCount-1]=0; return TlsCount-1; } @@ -110,3 +113,59 @@ void TlsSetValue(DWORD index,LPVOID value) } Tls[index]=value; } + +/* FIXME: This is required to work cross-addres space as well */ +static CRITICAL_SECTION interlocked; +static int interlocked_init; + +static void get_interlocked() +{ + if(!interlocked_init) + InitializeCriticalSection(&interlocked); + interlocked_init=1; + EnterCriticalSection(&interlocked); +} + +static void release_interlocked() +{ + LeaveCriticalSection(&interlocked); +} + +/*********************************************************************** + * InterlockedIncrement + */ +LONG InterlockedIncrement(LPLONG lpAddend) +{ + int ret; + get_interlocked(); + (*lpAddend)++; + ret=*lpAddend; + release_interlocked(); + return ret; +} + +/*********************************************************************** + * InterlockedDecrement + */ +LONG InterlockedDecrement(LPLONG lpAddend) +{ + int ret; + get_interlocked(); + (*lpAddend)--; + ret=*lpAddend; + release_interlocked(); + return ret; +} + +/*********************************************************************** + * InterlockedExchange + */ +LONG InterlockedExchange(LPLONG target, LONG value) +{ + int ret; + get_interlocked(); + ret=*target; + *target=value; + release_interlocked(); + return ret; +} diff --git a/win32/user32.c b/win32/user32.c index 290e1cca0ad..39ef0d7ebec 100644 --- a/win32/user32.c +++ b/win32/user32.c @@ -29,7 +29,7 @@ BOOL USER32_GetMessageA(MSG32* lpmsg,DWORD hwnd,DWORD min,DWORD max) { BOOL ret; - MSG msg; + MSG16 msg; ret=GetMessage(MAKE_SEGPTR(&msg),(HWND)hwnd,min,max); STRUCT32_MSG16to32(&msg,lpmsg); return ret; @@ -40,7 +40,7 @@ BOOL USER32_GetMessageA(MSG32* lpmsg,DWORD hwnd,DWORD min,DWORD max) */ LONG USER32_DispatchMessageA(MSG32* lpmsg) { - MSG msg; + MSG16 msg; LONG ret; STRUCT32_MSG32to16(lpmsg,&msg); ret=DispatchMessage(&msg); @@ -53,11 +53,34 @@ LONG USER32_DispatchMessageA(MSG32* lpmsg) */ BOOL USER32_TranslateMessage(MSG32* lpmsg) { - MSG msg; + MSG16 msg; STRUCT32_MSG32to16(lpmsg,&msg); return TranslateMessage(&msg); } +/*********************************************************************** + * PeekMessageA + */ +BOOL32 PeekMessage32A( LPMSG32 lpmsg, HWND32 hwnd, + UINT32 min,UINT32 max,UINT32 wRemoveMsg) +{ + MSG16 msg; + BOOL ret; + ret=PeekMessage16(&msg,hwnd,min,max,wRemoveMsg); + /* FIXME: should translate the message to Win32 */ + STRUCT32_MSG16to32(&msg,lpmsg); + return ret; +} + +/*********************************************************************** + * PeekMessageW + */ +BOOL32 PeekMessage32W( LPMSG32 lpmsg, HWND32 hwnd, + UINT32 min,UINT32 max,UINT32 wRemoveMsg) +{ + /* FIXME: Should perform Unicode translation on specific messages */ + return PeekMessage32A(lpmsg,hwnd,min,max,wRemoveMsg); +} UINT USER32_SetTimer(HWND hwnd, UINT id, UINT timeout, void *proc) @@ -66,9 +89,3 @@ UINT USER32_SetTimer(HWND hwnd, UINT id, UINT timeout, void *proc) (LONG)proc ); return SetTimer( hwnd, id, timeout, MAKE_SEGPTR(proc)); } - - -int USER32_wsprintfA( int *args ) -{ - return vsprintf( (char *)args[0], (char *)args[1], (va_list)&args[2] ); -} diff --git a/windows/caret.c b/windows/caret.c index 526ac9b3374..902d309a713 100644 --- a/windows/caret.c +++ b/windows/caret.c @@ -131,8 +131,8 @@ BOOL CreateCaret(HWND hwnd, HBITMAP bitmap, INT width, INT height) if (bitmap && (bitmap != 1)) { - BITMAP bmp; - if (!GetObject( bitmap, sizeof(bmp), (LPSTR)&bmp )) return FALSE; + BITMAP16 bmp; + if (!GetObject16( bitmap, sizeof(bmp), &bmp )) return FALSE; Caret.width = bmp.bmWidth; Caret.height = bmp.bmHeight; /* FIXME: we should make a copy of the bitmap instead of a brush */ diff --git a/windows/class.c b/windows/class.c index 4cf9e110d87..dc9865cce62 100644 --- a/windows/class.c +++ b/windows/class.c @@ -93,7 +93,7 @@ static LPSTR CLASS_GetMenuNameA( CLASS *classPtr ) { /* We need to copy the Unicode string */ if ((classPtr->menuNameA = SEGPTR_ALLOC( - STRING32_lstrlenW(classPtr->menuNameW) + 1 ))) + lstrlen32W(classPtr->menuNameW) + 1 ))) STRING32_UniToAnsi( classPtr->menuNameA, classPtr->menuNameW ); } return classPtr->menuNameA; @@ -149,8 +149,8 @@ static void CLASS_SetMenuNameW( CLASS *classPtr, LPCWSTR name ) if (HIWORD(classPtr->menuNameA)) SEGPTR_FREE( classPtr->menuNameA ); if (classPtr->menuNameW) HeapFree( SystemHeap, 0, classPtr->menuNameW ); if ((classPtr->menuNameW = HeapAlloc( SystemHeap, 0, - (STRING32_lstrlenW(name)+1)*sizeof(WCHAR) ))) - STRING32_lstrcpyW( classPtr->menuNameW, name ); + (lstrlen32W(name)+1)*sizeof(WCHAR) ))) + lstrcpy32W( classPtr->menuNameW, name ); classPtr->menuNameA = 0; } @@ -619,7 +619,7 @@ WORD GetClassWord( HWND32 hwnd, INT32 offset ) /*********************************************************************** * GetClassLong16 (USER.131) */ -LONG GetClassLong16( HWND hwnd, INT16 offset ) +LONG GetClassLong16( HWND16 hwnd, INT16 offset ) { LONG ret; @@ -641,7 +641,7 @@ LONG GetClassLong16( HWND hwnd, INT16 offset ) /*********************************************************************** * GetClassLong32A (USER32.214) */ -LONG GetClassLong32A( HWND hwnd, INT32 offset ) +LONG GetClassLong32A( HWND32 hwnd, INT32 offset ) { WND * wndPtr; @@ -675,7 +675,7 @@ LONG GetClassLong32A( HWND hwnd, INT32 offset ) /*********************************************************************** * GetClassLong32W (USER32.215) */ -LONG GetClassLong32W( HWND hwnd, INT32 offset ) +LONG GetClassLong32W( HWND32 hwnd, INT32 offset ) { WND * wndPtr; @@ -731,7 +731,7 @@ WORD SetClassWord( HWND32 hwnd, INT32 offset, WORD newval ) /*********************************************************************** * SetClassLong16 (USER.132) */ -LONG SetClassLong16( HWND hwnd, INT16 offset, LONG newval ) +LONG SetClassLong16( HWND16 hwnd, INT16 offset, LONG newval ) { WND *wndPtr; @@ -752,7 +752,7 @@ LONG SetClassLong16( HWND hwnd, INT16 offset, LONG newval ) /*********************************************************************** * SetClassLong32A (USER32.466) */ -LONG SetClassLong32A( HWND hwnd, INT32 offset, LONG newval ) +LONG SetClassLong32A( HWND32 hwnd, INT32 offset, LONG newval ) { WND * wndPtr; LONG retval = 0; @@ -801,7 +801,7 @@ LONG SetClassLong32A( HWND hwnd, INT32 offset, LONG newval ) /*********************************************************************** * SetClassLong32W (USER32.467) */ -LONG SetClassLong32W( HWND hwnd, INT32 offset, LONG newval ) +LONG SetClassLong32W( HWND32 hwnd, INT32 offset, LONG newval ) { WND *wndPtr; if (!(wndPtr = WIN_FindWndPtr(hwnd))) return 0; @@ -823,7 +823,7 @@ LONG SetClassLong32W( HWND hwnd, INT32 offset, LONG newval ) /*********************************************************************** * GetClassName16 (USER.58) */ -INT16 GetClassName16( HWND hwnd, LPSTR buffer, INT16 count ) +INT16 GetClassName16( HWND16 hwnd, LPSTR buffer, INT16 count ) { WND *wndPtr; if (!(wndPtr = WIN_FindWndPtr(hwnd))) return 0; @@ -834,7 +834,7 @@ INT16 GetClassName16( HWND hwnd, LPSTR buffer, INT16 count ) /*********************************************************************** * GetClassName32A (USER32.216) */ -INT32 GetClassName32A( HWND hwnd, LPSTR buffer, INT32 count ) +INT32 GetClassName32A( HWND32 hwnd, LPSTR buffer, INT32 count ) { WND *wndPtr; if (!(wndPtr = WIN_FindWndPtr(hwnd))) return 0; @@ -845,7 +845,7 @@ INT32 GetClassName32A( HWND hwnd, LPSTR buffer, INT32 count ) /*********************************************************************** * GetClassName32W (USER32.217) */ -INT32 GetClassName32W( HWND hwnd, LPWSTR buffer, INT32 count ) +INT32 GetClassName32W( HWND32 hwnd, LPWSTR buffer, INT32 count ) { WND *wndPtr; if (!(wndPtr = WIN_FindWndPtr(hwnd))) return 0; @@ -856,7 +856,7 @@ INT32 GetClassName32W( HWND hwnd, LPWSTR buffer, INT32 count ) /*********************************************************************** * GetClassInfo16 (USER.404) */ -BOOL GetClassInfo16( HINSTANCE16 hInstance, SEGPTR name, WNDCLASS16 *wc ) +BOOL16 GetClassInfo16( HINSTANCE16 hInstance, SEGPTR name, WNDCLASS16 *wc ) { ATOM atom; CLASS *classPtr; @@ -884,7 +884,7 @@ BOOL GetClassInfo16( HINSTANCE16 hInstance, SEGPTR name, WNDCLASS16 *wc ) /*********************************************************************** * GetClassInfo32A (USER32.210) */ -BOOL GetClassInfo32A( HINSTANCE32 hInstance, LPCSTR name, WNDCLASS32A *wc ) +BOOL32 GetClassInfo32A( HINSTANCE32 hInstance, LPCSTR name, WNDCLASS32A *wc ) { ATOM atom; CLASS *classPtr; @@ -910,7 +910,7 @@ BOOL GetClassInfo32A( HINSTANCE32 hInstance, LPCSTR name, WNDCLASS32A *wc ) /*********************************************************************** * GetClassInfo32W (USER32.213) */ -BOOL GetClassInfo32W( HINSTANCE32 hInstance, LPCWSTR name, WNDCLASS32W *wc ) +BOOL32 GetClassInfo32W( HINSTANCE32 hInstance, LPCWSTR name, WNDCLASS32W *wc ) { ATOM atom; CLASS *classPtr; @@ -939,7 +939,7 @@ BOOL GetClassInfo32W( HINSTANCE32 hInstance, LPCWSTR name, WNDCLASS32W *wc ) * FIXME: this is just a guess, I have no idea if GetClassInfoEx() is the * same in Win16 as in Win32. --AJ */ -BOOL GetClassInfoEx16( HINSTANCE16 hInstance, SEGPTR name, WNDCLASSEX16 *wc ) +BOOL16 GetClassInfoEx16( HINSTANCE16 hInstance, SEGPTR name, WNDCLASSEX16 *wc ) { ATOM atom; CLASS *classPtr; @@ -968,7 +968,8 @@ BOOL GetClassInfoEx16( HINSTANCE16 hInstance, SEGPTR name, WNDCLASSEX16 *wc ) /*********************************************************************** * GetClassInfoEx32A (USER32.211) */ -BOOL GetClassInfoEx32A( HINSTANCE32 hInstance, LPCSTR name, WNDCLASSEX32A *wc ) +BOOL32 GetClassInfoEx32A( HINSTANCE32 hInstance, LPCSTR name, + WNDCLASSEX32A *wc ) { ATOM atom; CLASS *classPtr; @@ -995,7 +996,8 @@ BOOL GetClassInfoEx32A( HINSTANCE32 hInstance, LPCSTR name, WNDCLASSEX32A *wc ) /*********************************************************************** * GetClassInfoEx32W (USER32.212) */ -BOOL GetClassInfoEx32W( HINSTANCE32 hInstance, LPCWSTR name, WNDCLASSEX32W *wc) +BOOL32 GetClassInfoEx32W( HINSTANCE32 hInstance, LPCWSTR name, + WNDCLASSEX32W *wc ) { ATOM atom; CLASS *classPtr; diff --git a/windows/dce.c b/windows/dce.c index 4ec7624be01..8a809c97602 100644 --- a/windows/dce.c +++ b/windows/dce.c @@ -15,6 +15,7 @@ * DCX_WINDOWPAINT - BeginPaint specific flag */ +#include "options.h" #include "dce.h" #include "class.h" #include "win.h" @@ -119,6 +120,9 @@ HANDLE DCE_FindDCE(HDC hDC) /*********************************************************************** * DCE_InvalidateDCE + * + * It is called from SetWindowPos - we have to invalidate all busy + * DCE's for windows whose client rect intersects with update rectangle */ BOOL DCE_InvalidateDCE(WND* wndScope, RECT16* pRectUpdate) { @@ -130,6 +134,7 @@ BOOL DCE_InvalidateDCE(WND* wndScope, RECT16* pRectUpdate) dprintf_dc(stddeb,"InvalidateDCE: scope hwnd = %04x, (%i,%i - %i,%i)\n", wndScope->hwndSelf, pRectUpdate->left,pRectUpdate->top, pRectUpdate->right,pRectUpdate->bottom); + /* walk all DCE's */ for( hdce = firstDCE; (hdce); hdce=dce->hNext) { @@ -141,9 +146,11 @@ BOOL DCE_InvalidateDCE(WND* wndScope, RECT16* pRectUpdate) wnd = wndCurrent = WIN_FindWndPtr(dce->hwndCurrent); - /* desktop is not critical */ + /* desktop is not critical (DC is not owned anyway) */ - if( wnd == WIN_GetDesktop() ) continue; + if( wnd == WIN_GetDesktop() ) continue; + + /* check if DCE window is within z-order scope */ for( ; wnd ; wnd = wnd->parent ) if( wnd == wndScope ) @@ -152,8 +159,9 @@ BOOL DCE_InvalidateDCE(WND* wndScope, RECT16* pRectUpdate) dprintf_dc(stddeb,"\tgot hwnd %04x\n", wndCurrent->hwndSelf); - MapWindowPoints16(wndCurrent->parent->hwndSelf, wndScope->hwndSelf, - (LPPOINT16)&wndRect, 2); + if( wndCurrent->parent != wndScope ) + MapWindowPoints16(wndCurrent->parent->hwndSelf, wndScope->hwndSelf, + (LPPOINT16)&wndRect, 2); if( IntersectRect16(&wndRect,&wndRect,pRectUpdate) ) SetHookFlags(dce->hDC, DCHF_INVALIDATEVISRGN); break; @@ -496,8 +504,11 @@ HDC GetDCEx( HWND hwnd, HRGN hrgnClip, DWORD flags ) else OffsetRgn( hrgnVisible, -wndPtr->rectClient.left, -wndPtr->rectClient.top ); } - else if( hwnd==GetDesktopWindow() ) hrgnVisible = CreateRectRgn( 0, 0, SYSMETRICS_CXSCREEN, - SYSMETRICS_CYSCREEN); + /* optimize away GetVisRgn for desktop if it isn't there */ + + else if( hwnd==GetDesktopWindow() && !Options.desktopGeometry ) + hrgnVisible = CreateRectRgn( 0, 0, SYSMETRICS_CXSCREEN, + SYSMETRICS_CYSCREEN); else hrgnVisible = DCE_GetVisRgn( hwnd, flags ); dc->w.flags &= ~DC_DIRTY; @@ -581,11 +592,9 @@ int ReleaseDC( HWND hwnd, HDC hdc ) if( dce->DCXflags & DCX_KEEPCLIPRGN ) dce->DCXflags &= ~DCX_KEEPCLIPRGN; else - { if( dce->hClipRgn > 1 ) DeleteObject( dce->hClipRgn ); - dce->hClipRgn = 0; - } + dce->hClipRgn = 0; RestoreVisRgn(dce->hDC); } @@ -593,7 +602,7 @@ int ReleaseDC( HWND hwnd, HDC hdc ) if (dce->DCXflags & DCX_CACHE) { SetDCState( dce->hDC, defaultDCstate ); - dce->DCXflags &= ~DCX_DCEBUSY; + dce->DCXflags = DCX_CACHE; } return 1; } diff --git a/windows/defwnd.c b/windows/defwnd.c index bed900934cc..caca49e5a16 100644 --- a/windows/defwnd.c +++ b/windows/defwnd.c @@ -1,7 +1,7 @@ /* * Default window procedure * - * Copyright 1993 Alexandre Julliard + * Copyright 1993, 1996 Alexandre Julliard * 1995 Alex Korobka */ @@ -15,7 +15,6 @@ #include "string32.h" #include "syscolor.h" #include "stddebug.h" -/* #define DEBUG_MESSAGE */ #include "debug.h" #include "spy.h" @@ -100,26 +99,24 @@ void DEFWND_SetText( WND *wndPtr, LPCSTR text ) static LRESULT DEFWND_DefWinProc( WND *wndPtr, UINT32 msg, WPARAM32 wParam, LPARAM lParam ) { - HWND16 hwnd = wndPtr->hwndSelf; - switch(msg) { case WM_PAINTICON: case WM_NCPAINT: - return NC_HandleNCPaint( hwnd, (HRGN)wParam ); + return NC_HandleNCPaint( wndPtr->hwndSelf, (HRGN)wParam ); case WM_NCHITTEST: - return NC_HandleNCHitTest( hwnd, MAKEPOINT16(lParam) ); + return NC_HandleNCHitTest( wndPtr->hwndSelf, MAKEPOINT16(lParam) ); case WM_NCLBUTTONDOWN: - return NC_HandleNCLButtonDown( hwnd, wParam, lParam ); + return NC_HandleNCLButtonDown( wndPtr->hwndSelf, wParam, lParam ); case WM_LBUTTONDBLCLK: case WM_NCLBUTTONDBLCLK: return NC_HandleNCLButtonDblClk( wndPtr, wParam, lParam ); case WM_NCACTIVATE: - return NC_HandleNCActivate( hwnd, wParam ); + return NC_HandleNCActivate( wndPtr->hwndSelf, wParam ); case WM_NCDESTROY: if (wndPtr->text) HeapFree( SystemHeap, 0, wndPtr->text ); @@ -132,35 +129,35 @@ static LRESULT DEFWND_DefWinProc( WND *wndPtr, UINT32 msg, WPARAM32 wParam, case WM_PAINT: { PAINTSTRUCT16 paintstruct; - BeginPaint16( hwnd, &paintstruct ); - EndPaint16( hwnd, &paintstruct ); + BeginPaint16( wndPtr->hwndSelf, &paintstruct ); + EndPaint16( wndPtr->hwndSelf, &paintstruct ); return 0; } case WM_SETREDRAW: if (!wParam) { - ValidateRect32( hwnd, NULL ); + ValidateRect32( wndPtr->hwndSelf, NULL ); wndPtr->flags |= WIN_NO_REDRAW; } else wndPtr->flags &= ~WIN_NO_REDRAW; return 0; case WM_CLOSE: - DestroyWindow( hwnd ); + DestroyWindow( wndPtr->hwndSelf ); return 0; case WM_MOUSEACTIVATE: if (wndPtr->dwStyle & WS_CHILD) { - LONG ret = SendMessage16( wndPtr->parent->hwndSelf, WM_MOUSEACTIVATE, - wParam, lParam ); + LONG ret = SendMessage16( wndPtr->parent->hwndSelf, + WM_MOUSEACTIVATE, wParam, lParam ); if (ret) return ret; } return MA_ACTIVATE; case WM_ACTIVATE: - if (LOWORD(wParam) != WA_INACTIVE) SetFocus( hwnd ); + if (LOWORD(wParam) != WA_INACTIVE) SetFocus( wndPtr->hwndSelf ); break; case WM_ERASEBKGND: @@ -172,12 +169,13 @@ static LRESULT DEFWND_DefWinProc( WND *wndPtr, UINT32 msg, WPARAM32 wParam, HBRUSH hbrush; hbrush = CreateSolidBrush( GetSysColor(((DWORD)wndPtr->class->hbrBackground)-1)); - FillWindow( GetParent(hwnd), hwnd, (HDC)wParam, hbrush); + FillWindow( GetParent(wndPtr->hwndSelf), wndPtr->hwndSelf, + (HDC)wParam, hbrush); DeleteObject (hbrush); } else - FillWindow( GetParent(hwnd), hwnd, (HDC)wParam, - wndPtr->class->hbrBackground ); + FillWindow( GetParent(wndPtr->hwndSelf), wndPtr->hwndSelf, + (HDC)wParam, wndPtr->class->hbrBackground ); return 1; } @@ -226,10 +224,11 @@ static LRESULT DEFWND_DefWinProc( WND *wndPtr, UINT32 msg, WPARAM32 wParam, if (SendMessage16(wndPtr->parent->hwndSelf, WM_SETCURSOR, wParam, lParam)) return TRUE; - return NC_HandleSetCursor( hwnd, wParam, lParam ); + return NC_HandleSetCursor( wndPtr->hwndSelf, wParam, lParam ); case WM_SYSCOMMAND: - return NC_HandleSysCommand( hwnd, wParam, MAKEPOINT16(lParam) ); + return NC_HandleSysCommand( wndPtr->hwndSelf, wParam, + MAKEPOINT16(lParam) ); case WM_KEYDOWN: if(wParam == VK_F10) iF10Key = VK_F10; @@ -251,8 +250,8 @@ static LRESULT DEFWND_DefWinProc( WND *wndPtr, UINT32 msg, WPARAM32 wParam, iF10Key = 1; else if( wParam == VK_ESCAPE && GetKeyState(VK_SHIFT) < 0 ) - SendMessage16( hwnd, WM_SYSCOMMAND, (WPARAM)SC_KEYMENU, - (LPARAM)VK_SPACE); + SendMessage16( wndPtr->hwndSelf, WM_SYSCOMMAND, + (WPARAM)SC_KEYMENU, (LPARAM)VK_SPACE); break; case WM_KEYUP: @@ -260,8 +259,8 @@ static LRESULT DEFWND_DefWinProc( WND *wndPtr, UINT32 msg, WPARAM32 wParam, /* Press and release F10 or ALT */ if (((wParam == VK_MENU) && iMenuSysKey) || ((wParam == VK_F10) && iF10Key)) - SendMessage16( WIN_GetTopParent(hwnd), WM_SYSCOMMAND, - SC_KEYMENU, 0L ); + SendMessage16( WIN_GetTopParent(wndPtr->hwndSelf), + WM_SYSCOMMAND, SC_KEYMENU, 0L ); iMenuSysKey = iF10Key = 0; break; @@ -269,7 +268,8 @@ static LRESULT DEFWND_DefWinProc( WND *wndPtr, UINT32 msg, WPARAM32 wParam, iMenuSysKey = 0; if (wParam == VK_RETURN && (wndPtr->dwStyle & WS_MINIMIZE)) { - PostMessage(hwnd, WM_SYSCOMMAND, (WPARAM)SC_RESTORE, 0L ); + PostMessage( wndPtr->hwndSelf, WM_SYSCOMMAND, + (WPARAM)SC_RESTORE, 0L ); break; } if ((HIWORD(lParam) & KEYDATA_ALT) && wParam) @@ -278,7 +278,8 @@ static LRESULT DEFWND_DefWinProc( WND *wndPtr, UINT32 msg, WPARAM32 wParam, if (wParam == VK_SPACE && (wndPtr->dwStyle & WS_CHILD)) SendMessage16( wndPtr->parent->hwndSelf, msg, wParam, lParam ); else - SendMessage16( hwnd, WM_SYSCOMMAND, (WPARAM)SC_KEYMENU, (LPARAM)(DWORD)wParam ); + SendMessage16( wndPtr->hwndSelf, WM_SYSCOMMAND, + (WPARAM)SC_KEYMENU, (LPARAM)(DWORD)wParam ); } else /* check for Ctrl-Esc */ if (wParam != VK_ESCAPE) MessageBeep(0); @@ -289,7 +290,7 @@ static LRESULT DEFWND_DefWinProc( WND *wndPtr, UINT32 msg, WPARAM32 wParam, if (!(wndPtr->dwStyle & WS_POPUP) || !wndPtr->owner) return 0; if ((wndPtr->dwStyle & WS_VISIBLE) && wParam) return 0; else if (!(wndPtr->dwStyle & WS_VISIBLE) && !wParam) return 0; - ShowWindow( hwnd, wParam ? SW_SHOWNOACTIVATE : SW_HIDE ); + ShowWindow( wndPtr->hwndSelf, wParam ? SW_SHOWNOACTIVATE : SW_HIDE ); break; case WM_INITMENUPOPUP: @@ -302,7 +303,7 @@ static LRESULT DEFWND_DefWinProc( WND *wndPtr, UINT32 msg, WPARAM32 wParam, case WM_CANCELMODE: /* EndMenu() should be called if in menu state but currently it's impossible to detect - menu code should be updated*/ - if (GetCapture() == hwnd) ReleaseCapture(); + if (GetCapture() == wndPtr->hwndSelf) ReleaseCapture(); break; case WM_VKEYTOITEM: @@ -344,6 +345,7 @@ LRESULT DefWindowProc16( HWND16 hwnd, UINT16 msg, WPARAM16 wParam, WND * wndPtr = WIN_FindWndPtr( hwnd ); LRESULT result = 0; + if (!wndPtr) return 0; SPY_EnterMessage( SPY_DEFWNDPROC16, hwnd, msg, wParam, lParam ); switch(msg) @@ -376,7 +378,7 @@ LRESULT DefWindowProc16( HWND16 hwnd, UINT16 msg, WPARAM16 wParam, case WM_GETTEXT: if (wParam && wndPtr->text) { - lstrcpyn( (LPSTR)PTR_SEG_TO_LIN(lParam), wndPtr->text, wParam ); + lstrcpyn32A( (LPSTR)PTR_SEG_TO_LIN(lParam), wndPtr->text, wParam ); result = (LRESULT)strlen( (LPSTR)PTR_SEG_TO_LIN(lParam) ) + 1; } break; @@ -405,6 +407,7 @@ LRESULT DefWindowProc32A( HWND32 hwnd, UINT32 msg, WPARAM32 wParam, WND * wndPtr = WIN_FindWndPtr( hwnd ); LRESULT result = 0; + if (!wndPtr) return 0; SPY_EnterMessage( SPY_DEFWNDPROC32, hwnd, msg, wParam, lParam ); switch(msg) @@ -441,7 +444,7 @@ LRESULT DefWindowProc32A( HWND32 hwnd, UINT32 msg, WPARAM32 wParam, case WM_GETTEXT: if (wParam && wndPtr->text) { - lstrcpyn( (LPSTR)lParam, wndPtr->text, wParam ); + lstrcpyn32A( (LPSTR)lParam, wndPtr->text, wParam ); result = (LRESULT)strlen( (LPSTR)lParam ) + 1; } break; @@ -483,6 +486,7 @@ LRESULT DefWindowProc32W( HWND32 hwnd, UINT32 msg, WPARAM32 wParam, } result = 1; } + break; case WM_GETTEXT: { diff --git a/windows/dialog.c b/windows/dialog.c index 4e010bcd020..8d4c82ba90c 100644 --- a/windows/dialog.c +++ b/windows/dialog.c @@ -65,7 +65,7 @@ static WORD xBaseUnit = 0, yBaseUnit = 0; */ BOOL DIALOG_Init() { - TEXTMETRIC tm; + TEXTMETRIC16 tm; HDC hdc; /* Calculate the dialog base units */ @@ -154,7 +154,7 @@ static LPCSTR DIALOG_GetControl16( LPCSTR p, DLG_CONTROL_INFO *info ) dprintf_dialog(stddeb,"'%s'", info->windowName ); } - info->data = (LPVOID)(*p ? p + 1 : NULL); /* FIXME: is this right? */ + info->data = (LPVOID)(*p ? p + 1 : NULL); /* FIXME: should be a segptr */ p += *p + 1; dprintf_dialog( stddeb," %d, %d, %d, %d, %d, %08lx, %08lx\n", @@ -200,7 +200,7 @@ static const WORD *DIALOG_GetControl32( const WORD *p, DLG_CONTROL_INFO *info ) else { info->className = (LPCSTR)p; - p += STRING32_lstrlenW( (LPCWSTR)p ) + 1; + p += lstrlen32W( (LPCWSTR)p ) + 1; } dprintf_dialog(stddeb, " %p ", info->className ); @@ -213,7 +213,7 @@ static const WORD *DIALOG_GetControl32( const WORD *p, DLG_CONTROL_INFO *info ) else { info->windowName = (LPCSTR)p; - p += STRING32_lstrlenW( (LPCWSTR)p ) + 1; + p += lstrlen32W( (LPCWSTR)p ) + 1; dprintf_dialog(stddeb,"'%p'", info->windowName ); } @@ -427,7 +427,7 @@ static LPCSTR DIALOG_ParseTemplate32( LPCSTR template, DLG_TEMPLATE * result ) default: result->menuName = (LPCSTR)p; dprintf_dialog( stddeb, " MENU '%p'\n", p ); - p += STRING32_lstrlenW( (LPCWSTR)p ) + 1; + p += lstrlen32W( (LPCWSTR)p ) + 1; break; } @@ -447,14 +447,14 @@ static LPCSTR DIALOG_ParseTemplate32( LPCSTR template, DLG_TEMPLATE * result ) default: result->className = (LPCSTR)p; dprintf_dialog( stddeb, " CLASS '%p'\n", p ); - p += STRING32_lstrlenW( (LPCWSTR)p ) + 1; + p += lstrlen32W( (LPCWSTR)p ) + 1; break; } /* Get the window caption */ result->caption = (LPCSTR)p; - p += STRING32_lstrlenW( (LPCWSTR)p ) + 1; + p += lstrlen32W( (LPCWSTR)p ) + 1; dprintf_dialog( stddeb, " CAPTION '%p'\n", result->caption ); /* Get the font name */ @@ -464,7 +464,7 @@ static LPCSTR DIALOG_ParseTemplate32( LPCSTR template, DLG_TEMPLATE * result ) result->pointSize = GET_WORD(p); p++; result->faceName = (LPCSTR)p; - p += STRING32_lstrlenW( (LPCWSTR)p ) + 1; + p += lstrlen32W( (LPCWSTR)p ) + 1; dprintf_dialog( stddeb, " FONT %d,'%p'\n", result->pointSize, result->faceName ); } @@ -517,7 +517,7 @@ static HWND DIALOG_CreateIndirect( HINSTANCE hInst, LPCSTR dlgTemplate, template.faceName ); /* FIXME: win32 */ if (hFont) { - TEXTMETRIC tm; + TEXTMETRIC16 tm; HFONT oldFont; HDC hdc; @@ -577,7 +577,6 @@ static HWND DIALOG_CreateIndirect( HINSTANCE hInst, LPCSTR dlgTemplate, /* Initialise dialog extra data */ dlgInfo = (DIALOGINFO *)wndPtr->wExtra; - dlgInfo->dlgProc = dlgProc; dlgInfo->hUserFont = hFont; dlgInfo->hMenu = hMenu; dlgInfo->xBaseUnit = xUnit; @@ -596,6 +595,7 @@ static HWND DIALOG_CreateIndirect( HINSTANCE hInst, LPCSTR dlgTemplate, /* Send initialisation messages and set focus */ + dlgInfo->dlgProc = dlgProc; dlgInfo->hwndFocus = DIALOG_GetFirstTabItem( hwnd ); if (dlgInfo->hUserFont) SendMessage32A( hwnd, WM_SETFONT, (WPARAM)dlgInfo->hUserFont, 0 ); @@ -610,7 +610,7 @@ static HWND DIALOG_CreateIndirect( HINSTANCE hInst, LPCSTR dlgTemplate, * CreateDialog16 (USER.89) */ HWND16 CreateDialog16( HINSTANCE16 hInst, SEGPTR dlgTemplate, - HWND16 owner, DLGPROC dlgProc ) + HWND16 owner, DLGPROC16 dlgProc ) { return CreateDialogParam16( hInst, dlgTemplate, owner, dlgProc, 0 ); } @@ -620,7 +620,7 @@ HWND16 CreateDialog16( HINSTANCE16 hInst, SEGPTR dlgTemplate, * CreateDialogParam16 (USER.241) */ HWND16 CreateDialogParam16( HINSTANCE16 hInst, SEGPTR dlgTemplate, - HWND16 owner, DLGPROC dlgProc, LPARAM param ) + HWND16 owner, DLGPROC16 dlgProc, LPARAM param ) { HWND16 hwnd = 0; HRSRC hRsrc; @@ -644,7 +644,7 @@ HWND16 CreateDialogParam16( HINSTANCE16 hInst, SEGPTR dlgTemplate, * CreateDialogParam32A (USER32.72) */ HWND32 CreateDialogParam32A( HINSTANCE32 hInst, LPCSTR name, - HWND32 owner, DLGPROC dlgProc, LPARAM param ) + HWND32 owner, DLGPROC32 dlgProc, LPARAM param ) { if (HIWORD(name)) { @@ -661,7 +661,7 @@ HWND32 CreateDialogParam32A( HINSTANCE32 hInst, LPCSTR name, * CreateDialogParam32W (USER32.73) */ HWND32 CreateDialogParam32W( HINSTANCE32 hInst, LPCWSTR name, - HWND32 owner, DLGPROC dlgProc, LPARAM param ) + HWND32 owner, DLGPROC32 dlgProc, LPARAM param ) { HANDLE32 hrsrc = FindResource32( hInst, name, (LPWSTR)RT_DIALOG ); if (!hrsrc) return 0; @@ -674,7 +674,7 @@ HWND32 CreateDialogParam32W( HINSTANCE32 hInst, LPCWSTR name, * CreateDialogIndirect16 (USER.219) */ HWND16 CreateDialogIndirect16( HINSTANCE16 hInst, LPCVOID dlgTemplate, - HWND16 owner, DLGPROC dlgProc ) + HWND16 owner, DLGPROC16 dlgProc ) { return CreateDialogIndirectParam16( hInst, dlgTemplate, owner, dlgProc, 0); } @@ -684,7 +684,7 @@ HWND16 CreateDialogIndirect16( HINSTANCE16 hInst, LPCVOID dlgTemplate, * CreateDialogIndirectParam16 (USER.242) */ HWND16 CreateDialogIndirectParam16( HINSTANCE16 hInst, LPCVOID dlgTemplate, - HWND16 owner, DLGPROC dlgProc, + HWND16 owner, DLGPROC16 dlgProc, LPARAM param ) { HANDLE32 proc = WINPROC_AllocWinProc( (UINT32)dlgProc, WIN_PROC_16 ); @@ -697,7 +697,7 @@ HWND16 CreateDialogIndirectParam16( HINSTANCE16 hInst, LPCVOID dlgTemplate, * CreateDialogIndirectParam32A (USER32.69) */ HWND32 CreateDialogIndirectParam32A( HINSTANCE32 hInst, LPCVOID dlgTemplate, - HWND32 owner, DLGPROC dlgProc, + HWND32 owner, DLGPROC32 dlgProc, LPARAM param ) { HANDLE32 proc = WINPROC_AllocWinProc( (UINT32)dlgProc, WIN_PROC_32A ); @@ -710,7 +710,7 @@ HWND32 CreateDialogIndirectParam32A( HINSTANCE32 hInst, LPCVOID dlgTemplate, * CreateDialogIndirectParam32W (USER32.71) */ HWND32 CreateDialogIndirectParam32W( HINSTANCE32 hInst, LPCVOID dlgTemplate, - HWND32 owner, DLGPROC dlgProc, + HWND32 owner, DLGPROC32 dlgProc, LPARAM param ) { HANDLE32 proc = WINPROC_AllocWinProc( (UINT32)dlgProc, WIN_PROC_32W ); @@ -727,14 +727,14 @@ static INT32 DIALOG_DoDialogBox( HWND hwnd, HWND owner ) WND * wndPtr; DIALOGINFO * dlgInfo; HANDLE msgHandle; - MSG* lpmsg; + MSG16* lpmsg; INT32 retval; /* Owner must be a top-level window */ owner = WIN_GetTopParent( owner ); if (!(wndPtr = WIN_FindWndPtr( hwnd ))) return -1; - if (!(msgHandle = USER_HEAP_ALLOC( sizeof(MSG) ))) return -1; - lpmsg = (MSG *) USER_HEAP_LIN_ADDR( msgHandle ); + if (!(msgHandle = USER_HEAP_ALLOC( sizeof(MSG16) ))) return -1; + lpmsg = (MSG16 *) USER_HEAP_LIN_ADDR( msgHandle ); dlgInfo = (DIALOGINFO *)wndPtr->wExtra; EnableWindow( owner, FALSE ); ShowWindow( hwnd, SW_SHOW ); @@ -762,7 +762,7 @@ static INT32 DIALOG_DoDialogBox( HWND hwnd, HWND owner ) * DialogBox16 (USER.87) */ INT16 DialogBox16( HINSTANCE16 hInst, SEGPTR dlgTemplate, - HWND16 owner, DLGPROC dlgProc ) + HWND16 owner, DLGPROC16 dlgProc ) { return DialogBoxParam16( hInst, dlgTemplate, owner, dlgProc, 0 ); } @@ -772,7 +772,7 @@ INT16 DialogBox16( HINSTANCE16 hInst, SEGPTR dlgTemplate, * DialogBoxParam16 (USER.239) */ INT16 DialogBoxParam16( HINSTANCE16 hInst, SEGPTR template, - HWND16 owner, DLGPROC dlgProc, LPARAM param ) + HWND16 owner, DLGPROC16 dlgProc, LPARAM param ) { HWND16 hwnd = CreateDialogParam16( hInst, template, owner, dlgProc, param); if (hwnd) return (INT16)DIALOG_DoDialogBox( hwnd, owner ); @@ -784,7 +784,7 @@ INT16 DialogBoxParam16( HINSTANCE16 hInst, SEGPTR template, * DialogBoxParam32A (USER32.138) */ INT32 DialogBoxParam32A( HINSTANCE32 hInst, LPCSTR name, - HWND32 owner, DLGPROC dlgProc, LPARAM param ) + HWND32 owner, DLGPROC32 dlgProc, LPARAM param ) { HWND32 hwnd = CreateDialogParam32A( hInst, name, owner, dlgProc, param ); if (hwnd) return DIALOG_DoDialogBox( hwnd, owner ); @@ -796,7 +796,7 @@ INT32 DialogBoxParam32A( HINSTANCE32 hInst, LPCSTR name, * DialogBoxParam32W (USER32.139) */ INT32 DialogBoxParam32W( HINSTANCE32 hInst, LPCWSTR name, - HWND32 owner, DLGPROC dlgProc, LPARAM param ) + HWND32 owner, DLGPROC32 dlgProc, LPARAM param ) { HWND32 hwnd = CreateDialogParam32W( hInst, name, owner, dlgProc, param ); if (hwnd) return DIALOG_DoDialogBox( hwnd, owner ); @@ -808,7 +808,7 @@ INT32 DialogBoxParam32W( HINSTANCE32 hInst, LPCWSTR name, * DialogBoxIndirect16 (USER.218) */ INT16 DialogBoxIndirect16( HINSTANCE16 hInst, HANDLE16 dlgTemplate, - HWND16 owner, DLGPROC dlgProc ) + HWND16 owner, DLGPROC16 dlgProc ) { return DialogBoxIndirectParam16( hInst, dlgTemplate, owner, dlgProc, 0 ); } @@ -818,7 +818,7 @@ INT16 DialogBoxIndirect16( HINSTANCE16 hInst, HANDLE16 dlgTemplate, * DialogBoxIndirectParam16 (USER.240) */ INT16 DialogBoxIndirectParam16( HINSTANCE16 hInst, HANDLE16 dlgTemplate, - HWND16 owner, DLGPROC dlgProc, LPARAM param ) + HWND16 owner, DLGPROC16 dlgProc, LPARAM param ) { HWND16 hwnd; LPCVOID ptr; @@ -835,7 +835,7 @@ INT16 DialogBoxIndirectParam16( HINSTANCE16 hInst, HANDLE16 dlgTemplate, * DialogBoxIndirectParam32A (USER32.135) */ INT32 DialogBoxIndirectParam32A( HINSTANCE32 hInstance, LPCVOID template, - HWND32 owner, DLGPROC dlgProc ,LPARAM param ) + HWND32 owner, DLGPROC32 dlgProc ,LPARAM param) { HWND32 hwnd = CreateDialogIndirectParam32A( hInstance, template, owner, dlgProc, param ); @@ -848,7 +848,7 @@ INT32 DialogBoxIndirectParam32A( HINSTANCE32 hInstance, LPCVOID template, * DialogBoxIndirectParam32W (USER32.137) */ INT32 DialogBoxIndirectParam32W( HINSTANCE32 hInstance, LPCVOID template, - HWND32 owner, DLGPROC dlgProc ,LPARAM param ) + HWND32 owner, DLGPROC32 dlgProc ,LPARAM param) { HWND32 hwnd = CreateDialogIndirectParam32W( hInstance, template, owner, dlgProc, param ); @@ -874,7 +874,7 @@ BOOL16 EndDialog( HWND32 hwnd, INT32 retval ) /*********************************************************************** * IsDialogMessage (USER.90) */ -BOOL IsDialogMessage( HWND hwndDlg, LPMSG msg ) +BOOL IsDialogMessage( HWND hwndDlg, LPMSG16 msg ) { WND * wndPtr; int dlgCode; diff --git a/windows/event.c b/windows/event.c index ce75d90aac7..66fb8190b37 100644 --- a/windows/event.c +++ b/windows/event.c @@ -54,8 +54,8 @@ typedef char *XPointer; static XContext winContext = 0; /* State variables */ -BOOL MouseButtonsStates[NB_BUTTONS] = { FALSE, FALSE, FALSE }; -BOOL AsyncMouseButtonsStates[NB_BUTTONS] = { FALSE, FALSE, FALSE }; +BOOL MouseButtonsStates[NB_BUTTONS]; +BOOL AsyncMouseButtonsStates[NB_BUTTONS]; BYTE KeyStateTable[256]; BYTE AsyncKeyStateTable[256]; @@ -67,26 +67,26 @@ static HWND captureWnd = 0; static BOOL InputEnabled = TRUE; /* Keyboard translation tables */ -static int special_key[] = +static const int special_key[] = { VK_BACK, VK_TAB, 0, VK_CLEAR, 0, VK_RETURN, 0, 0, /* FF08 */ 0, 0, 0, VK_PAUSE, VK_SCROLL, 0, 0, 0, /* FF10 */ 0, 0, 0, VK_ESCAPE /* FF18 */ }; -static cursor_key[] = +static const int cursor_key[] = { VK_HOME, VK_LEFT, VK_UP, VK_RIGHT, VK_DOWN, VK_PRIOR, VK_NEXT, VK_END /* FF50 */ }; -static misc_key[] = +static const int misc_key[] = { VK_SELECT, VK_SNAPSHOT, VK_EXECUTE, VK_INSERT, 0, 0, 0, 0, /* FF60 */ VK_CANCEL, VK_HELP, VK_CANCEL, VK_MENU /* FF68 */ }; -static keypad_key[] = +static const int keypad_key[] = { VK_MENU, VK_NUMLOCK, /* FF7E */ 0, 0, 0, 0, 0, 0, 0, 0, /* FF80 */ @@ -101,14 +101,14 @@ static keypad_key[] = VK_NUMPAD8, VK_NUMPAD9 /* FFB8 */ }; -static function_key[] = +static const int function_key[] = { VK_F1, VK_F2, /* FFBE */ VK_F3, VK_F4, VK_F5, VK_F6, VK_F7, VK_F8, VK_F9, VK_F10, /* FFC0 */ VK_F11, VK_F12, VK_F13, VK_F14, VK_F15, VK_F16 /* FFC8 */ }; -static modifier_key[] = +static const int modifier_key[] = { VK_SHIFT, VK_SHIFT, VK_CONTROL, VK_CONTROL, VK_CAPITAL, 0, 0, /* FFE1 */ @@ -133,7 +133,7 @@ typedef union static BOOL KeyDown = FALSE; -static const char *event_names[] = +static const char * const event_names[] = { "", "", "KeyPress", "KeyRelease", "ButtonPress", "ButtonRelease", "MotionNotify", "EnterNotify", "LeaveNotify", "FocusIn", "FocusOut", diff --git a/windows/mdi.c b/windows/mdi.c index a48aea37e46..01b0fcf4b8f 100644 --- a/windows/mdi.c +++ b/windows/mdi.c @@ -31,7 +31,6 @@ #include "stddebug.h" #include "debug.h" -#define MDIS_ALLCHILDSTYLES 0x1 static HBITMAP hBmpClose = 0; static HBITMAP hBmpRestore = 0; @@ -104,7 +103,7 @@ static BOOL MDI_MenuModifyItem(WND* clientWnd, HWND hWndChild ) if( !clientInfo->hWindowMenu ) return 0; - if (wndPtr->text) lstrcpyn(buffer + n, wndPtr->text, sizeof(buffer) - n ); + if (wndPtr->text) lstrcpyn32A(buffer + n, wndPtr->text, sizeof(buffer) - n ); n = GetMenuState(clientInfo->hWindowMenu,wndPtr->wIDmenu ,MF_BYCOMMAND); bRet = ModifyMenu32A(clientInfo->hWindowMenu , wndPtr->wIDmenu, @@ -148,7 +147,7 @@ static BOOL MDI_MenuDeleteItem(WND* clientWnd, HWND hWndChild ) n = sprintf(buffer, "%d ",index - clientInfo->idFirstChild); if (wndPtr->text) - lstrcpyn(buffer + n, wndPtr->text, sizeof(buffer) - n ); + lstrcpyn32A(buffer + n, wndPtr->text, sizeof(buffer) - n ); /* change menu */ ModifyMenu32A(clientInfo->hWindowMenu ,index ,MF_BYCOMMAND | MF_STRING, @@ -305,7 +304,7 @@ WORD MDIIconArrange(HWND parent) HWND MDICreateChild(WND *w, MDICLIENTINFO *ci, HWND parent, LPARAM lParam ) { POINT16 pos[2]; - MDICREATESTRUCT *cs = (MDICREATESTRUCT *)PTR_SEG_TO_LIN(lParam); + MDICREATESTRUCT16 *cs = (MDICREATESTRUCT16 *)PTR_SEG_TO_LIN(lParam); DWORD style = cs->style | (WS_CHILD | WS_CLIPSIBLINGS); HWND hwnd, hwndMax = 0; WORD wIDmenu = ci->idFirstChild + ci->nActiveChildren; @@ -911,7 +910,7 @@ void MDI_UpdateFrameText(WND *frameWnd, HWND hClient, BOOL repaint, LPCSTR lpTit int i_frame_text_length = strlen(ci->frameTitle); int i_child_text_length = strlen(childWnd->text); - lstrcpyn( lpBuffer, ci->frameTitle, MDI_MAXTITLELENGTH); + lstrcpyn32A( lpBuffer, ci->frameTitle, MDI_MAXTITLELENGTH); if( i_frame_text_length + 6 < MDI_MAXTITLELENGTH ) { @@ -924,9 +923,9 @@ void MDI_UpdateFrameText(WND *frameWnd, HWND hClient, BOOL repaint, LPCSTR lpTit } else { - lstrcpyn( lpBuffer + i_frame_text_length + 4, - childWnd->text, - MDI_MAXTITLELENGTH - i_frame_text_length - 5 ); + lstrcpyn32A( lpBuffer + i_frame_text_length + 4, + childWnd->text, + MDI_MAXTITLELENGTH - i_frame_text_length - 5 ); strcat( lpBuffer, "]" ); } } @@ -958,7 +957,7 @@ void MDI_UpdateFrameText(WND *frameWnd, HWND hClient, BOOL repaint, LPCSTR lpTit LRESULT MDIClientWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { LPCREATESTRUCT16 cs; - LPCLIENTCREATESTRUCT ccs; + LPCLIENTCREATESTRUCT16 ccs; MDICLIENTINFO *ci; RECT16 rect; WND *w = WIN_FindWndPtr(hwnd); @@ -970,7 +969,7 @@ LRESULT MDIClientWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { case WM_CREATE: cs = (LPCREATESTRUCT16) PTR_SEG_TO_LIN(lParam); - ccs = (LPCLIENTCREATESTRUCT) PTR_SEG_TO_LIN(cs->lpCreateParams); + ccs = (LPCLIENTCREATESTRUCT16) PTR_SEG_TO_LIN(cs->lpCreateParams); ci->hWindowMenu = ccs->hWindowMenu; ci->idFirstChild = ccs->idFirstChild; @@ -1501,7 +1500,7 @@ LRESULT DefMDIChildProc32W( HWND32 hwnd, UINT32 message, * TranslateMDISysAccel (USER.451) * */ -BOOL TranslateMDISysAccel(HWND hwndClient, LPMSG msg) +BOOL TranslateMDISysAccel(HWND hwndClient, LPMSG16 msg) { WND* clientWnd = WIN_FindWndPtr( hwndClient); WND* wnd; diff --git a/windows/message.c b/windows/message.c index e12db3351f9..8ff4af2688e 100644 --- a/windows/message.c +++ b/windows/message.c @@ -29,7 +29,7 @@ extern BYTE* KeyStateTable; /* event.c */ extern WPARAM lastEventChar; /* event.c */ -extern BOOL TIMER_CheckTimer( LONG *next, MSG *msg, +extern BOOL TIMER_CheckTimer( LONG *next, MSG16 *msg, HWND hwnd, BOOL remove ); /* timer.c */ DWORD MSG_WineStartTicks; /* Ticks at Wine startup */ @@ -51,7 +51,7 @@ static WORD doubleClickSpeed = 452; * the coordinates to client coordinates. * - Send the WM_SETCURSOR message. */ -static BOOL MSG_TranslateMouseMsg( MSG *msg, BOOL remove ) +static BOOL MSG_TranslateMouseMsg( MSG16 *msg, BOOL remove ) { WND *pWnd; BOOL eatMsg = FALSE; @@ -60,7 +60,7 @@ static BOOL MSG_TranslateMouseMsg( MSG *msg, BOOL remove ) static WORD lastClickMsg = 0; static POINT16 lastClickPos = { 0, 0 }; POINT16 pt = msg->pt; - MOUSEHOOKSTRUCT hook = { msg->pt, 0, HTCLIENT, 0 }; + MOUSEHOOKSTRUCT16 hook = { msg->pt, 0, HTCLIENT, 0 }; BOOL mouseClick = ((msg->message == WM_LBUTTONDOWN) || (msg->message == WM_RBUTTONDOWN) || @@ -170,7 +170,7 @@ static BOOL MSG_TranslateMouseMsg( MSG *msg, BOOL remove ) * Return value indicates whether the translated message must be passed * to the user. */ -static BOOL MSG_TranslateKeyboardMsg( MSG *msg, BOOL remove ) +static BOOL MSG_TranslateKeyboardMsg( MSG16 *msg, BOOL remove ) { /* Should check Ctrl-Esc and PrintScreen here */ @@ -195,7 +195,7 @@ static BOOL MSG_TranslateKeyboardMsg( MSG *msg, BOOL remove ) * * Peek for a hardware message matching the hwnd and message filters. */ -static BOOL MSG_PeekHardwareMsg( MSG *msg, HWND hwnd, WORD first, WORD last, +static BOOL MSG_PeekHardwareMsg( MSG16 *msg, HWND hwnd, WORD first, WORD last, BOOL remove ) { MESSAGEQUEUE *sysMsgQueue = QUEUE_GetSysQueue(); @@ -221,8 +221,8 @@ static BOOL MSG_PeekHardwareMsg( MSG *msg, HWND hwnd, WORD first, WORD last, } else /* Non-standard hardware event */ { - HARDWAREHOOKSTRUCT hook = { msg->hwnd, msg->message, - msg->wParam, msg->lParam }; + HARDWAREHOOKSTRUCT16 hook = { msg->hwnd, msg->message, + msg->wParam, msg->lParam }; if (HOOK_CallHooks( WH_HARDWARE, remove ? HC_ACTION : HC_NOREMOVE, 0, (LPARAM)MAKE_SEGPTR(&hook) )) continue; } @@ -237,7 +237,7 @@ static BOOL MSG_PeekHardwareMsg( MSG *msg, HWND hwnd, WORD first, WORD last, continue; /* Not for this task */ if (remove) { - MSG tmpMsg = *msg; /* FIXME */ + MSG16 tmpMsg = *msg; /* FIXME */ HOOK_CallHooks( WH_JOURNALRECORD, HC_ACTION, 0, (LPARAM)MAKE_SEGPTR(&tmpMsg) ); QUEUE_RemoveMsg( sysMsgQueue, pos ); @@ -274,7 +274,7 @@ WORD GetDoubleClickTime() * are not translated. * Warning: msg->hwnd is always 0. */ -BOOL MSG_GetHardwareMessage( LPMSG msg ) +BOOL MSG_GetHardwareMessage( LPMSG16 msg ) { #if 0 int pos; @@ -375,7 +375,7 @@ void ReplyMessage( LRESULT result ) /*********************************************************************** * MSG_PeekMessage */ -static BOOL MSG_PeekMessage( LPMSG msg, HWND hwnd, WORD first, WORD last, +static BOOL MSG_PeekMessage( LPMSG16 msg, HWND hwnd, WORD first, WORD last, WORD flags, BOOL peek ) { int pos, mask; @@ -525,37 +525,38 @@ BOOL MSG_InternalGetMessage( SEGPTR msg, HWND hwnd, HWND hwndOwner, short code, { if (sendIdle) { - if (!MSG_PeekMessage( (MSG *)PTR_SEG_TO_LIN(msg), + if (!MSG_PeekMessage( (MSG16 *)PTR_SEG_TO_LIN(msg), 0, 0, 0, flags, TRUE )) { /* No message present -> send ENTERIDLE and wait */ if (IsWindow(hwndOwner)) SendMessage16( hwndOwner, WM_ENTERIDLE, code, (LPARAM)hwnd ); - MSG_PeekMessage( (MSG *)PTR_SEG_TO_LIN(msg), + MSG_PeekMessage( (MSG16 *)PTR_SEG_TO_LIN(msg), 0, 0, 0, flags, FALSE ); } } else /* Always wait for a message */ - MSG_PeekMessage( (MSG *)PTR_SEG_TO_LIN(msg), + MSG_PeekMessage( (MSG16 *)PTR_SEG_TO_LIN(msg), 0, 0, 0, flags, FALSE ); if (!CallMsgFilter( msg, code )) - return (((MSG *)PTR_SEG_TO_LIN(msg))->message != WM_QUIT); + return (((MSG16 *)PTR_SEG_TO_LIN(msg))->message != WM_QUIT); /* Message filtered -> remove it from the queue */ /* if it's still there. */ if (!(flags & PM_REMOVE)) - MSG_PeekMessage( (MSG *)PTR_SEG_TO_LIN(msg), + MSG_PeekMessage( (MSG16 *)PTR_SEG_TO_LIN(msg), 0, 0, 0, PM_REMOVE, TRUE ); } } /*********************************************************************** - * PeekMessage (USER.109) + * PeekMessage16 (USER.109) */ -BOOL PeekMessage( LPMSG msg, HWND hwnd, WORD first, WORD last, WORD flags ) +BOOL16 PeekMessage16( LPMSG16 msg, HWND16 hwnd, UINT16 first, + UINT16 last, UINT16 flags ) { return MSG_PeekMessage( msg, hwnd, first, last, flags, TRUE ); } @@ -566,7 +567,7 @@ BOOL PeekMessage( LPMSG msg, HWND hwnd, WORD first, WORD last, WORD flags ) */ BOOL GetMessage( SEGPTR msg, HWND hwnd, UINT first, UINT last ) { - MSG* lpmsg = (MSG *)PTR_SEG_TO_LIN(msg); + MSG16 *lpmsg = (MSG16 *)PTR_SEG_TO_LIN(msg); MSG_PeekMessage( lpmsg, hwnd, first, last, PM_REMOVE, FALSE ); @@ -582,7 +583,7 @@ BOOL GetMessage( SEGPTR msg, HWND hwnd, UINT first, UINT last ) */ BOOL PostMessage( HWND hwnd, WORD message, WORD wParam, LONG lParam ) { - MSG msg; + MSG16 msg; WND *wndPtr; msg.hwnd = hwnd; @@ -625,7 +626,7 @@ BOOL PostMessage( HWND hwnd, WORD message, WORD wParam, LONG lParam ) */ BOOL PostAppMessage( HTASK hTask, WORD message, WORD wParam, LONG lParam ) { - MSG msg; + MSG16 msg; if (GetTaskQueue(hTask) == 0) return FALSE; msg.hwnd = 0; @@ -791,7 +792,7 @@ LRESULT SendMessage32W(HWND32 hwnd, UINT32 msg, WPARAM32 wParam, LPARAM lParam) */ void WaitMessage( void ) { - MSG msg; + MSG16 msg; MESSAGEQUEUE *queue; LONG nextExp = -1; /* Next timer expiration time */ @@ -820,7 +821,7 @@ void WaitMessage( void ) #define ASCII_CHAR_HACK 0x0800 -BOOL TranslateMessage( LPMSG msg ) +BOOL TranslateMessage( LPMSG16 msg ) { UINT message = msg->message; /* BYTE wparam[2]; */ @@ -851,7 +852,7 @@ BOOL TranslateMessage( LPMSG msg ) /*********************************************************************** * DispatchMessage (USER.114) */ -LONG DispatchMessage( const MSG* msg ) +LONG DispatchMessage( const MSG16* msg ) { WND * wndPtr; LONG retval; @@ -863,7 +864,7 @@ LONG DispatchMessage( const MSG* msg ) if (msg->lParam) { /* HOOK_CallHooks( WH_CALLWNDPROC, HC_ACTION, 0, FIXME ); */ - return CallWindowProc16( (WNDPROC)msg->lParam, msg->hwnd, + return CallWindowProc16( (WNDPROC16)msg->lParam, msg->hwnd, msg->message, msg->wParam, GetTickCount() ); } } diff --git a/windows/nonclient.c b/windows/nonclient.c index 37a916f6b23..a51ae71553a 100644 --- a/windows/nonclient.c +++ b/windows/nonclient.c @@ -882,7 +882,7 @@ static LONG NC_StartSizeMove( HWND hwnd, WPARAM wParam, POINT16 *capturePoint ) { LONG hittest = 0; POINT16 pt; - MSG msg; + MSG16 msg; WND * wndPtr = WIN_FindWndPtr( hwnd ); if ((wParam & 0xfff0) == SC_MOVE) @@ -963,7 +963,7 @@ static LONG NC_StartSizeMove( HWND hwnd, WPARAM wParam, POINT16 *capturePoint ) */ static void NC_DoSizeMove( HWND hwnd, WORD wParam, POINT16 pt ) { - MSG msg; + MSG16 msg; LONG hittest; RECT16 sizingRect, mouseRect; HDC hdc; @@ -1137,7 +1137,7 @@ static void NC_DoSizeMove( HWND hwnd, WORD wParam, POINT16 pt ) */ static void NC_TrackMinMaxBox( HWND hwnd, WORD wParam ) { - MSG msg; + MSG16 msg; HDC hdc = GetWindowDC( hwnd ); BOOL pressed = TRUE; @@ -1180,7 +1180,7 @@ static void NC_TrackMinMaxBox( HWND hwnd, WORD wParam ) */ static void NC_TrackScrollBar( HWND hwnd, WORD wParam, POINT16 pt ) { - MSG *msg; + MSG16 *msg; WORD scrollbar; WND *wndPtr = WIN_FindWndPtr( hwnd ); @@ -1195,7 +1195,7 @@ static void NC_TrackScrollBar( HWND hwnd, WORD wParam, POINT16 pt ) scrollbar = SB_VERT; } - if (!(msg = SEGPTR_NEW(MSG))) return; + if (!(msg = SEGPTR_NEW(MSG16))) return; pt.x -= wndPtr->rectWindow.left; pt.y -= wndPtr->rectWindow.top; SetCapture( hwnd ); diff --git a/windows/property.c b/windows/property.c index 6927be0f783..9d3a0dc1745 100644 --- a/windows/property.c +++ b/windows/property.c @@ -71,7 +71,7 @@ HANDLE GetProp( HWND hwnd, SEGPTR str ) PROPERTY *prop = (PROPERTY *)USER_HEAP_LIN_ADDR(hProp); if (HIWORD(str)) { - if (!prop->atom && !lstrcmpi( prop->string, PTR_SEG_TO_LIN(str))) + if (!prop->atom && !lstrcmpi32A(prop->string, PTR_SEG_TO_LIN(str))) return prop->hData; } else if (prop->atom && (prop->atom == LOWORD(str))) return prop->hData; @@ -96,7 +96,7 @@ HANDLE RemoveProp( HWND hwnd, SEGPTR str ) { PROPERTY *prop = (PROPERTY *)USER_HEAP_LIN_ADDR( *hProp ); if ((HIWORD(str) && !prop->atom && - !lstrcmpi( prop->string, PTR_SEG_TO_LIN(str))) || + !lstrcmpi32A( prop->string, PTR_SEG_TO_LIN(str))) || (!HIWORD(str) && prop->atom && (prop->atom == LOWORD(str)))) { HANDLE hNext = prop->next; diff --git a/windows/queue.c b/windows/queue.c index e465ebba7d5..eb457edb676 100644 --- a/windows/queue.c +++ b/windows/queue.c @@ -272,7 +272,7 @@ void QUEUE_ReceiveMessage( MESSAGEQUEUE *queue ) * * Add a message to the queue. Return FALSE if queue is full. */ -BOOL QUEUE_AddMsg( HQUEUE hQueue, MSG * msg, DWORD extraInfo ) +BOOL QUEUE_AddMsg( HQUEUE hQueue, MSG16 * msg, DWORD extraInfo ) { int pos; MESSAGEQUEUE *msgQueue; @@ -315,7 +315,7 @@ int QUEUE_FindMsg( MESSAGEQUEUE * msgQueue, HWND hwnd, int first, int last ) for (i = 0; i < msgQueue->msgCount; i++) { - MSG * msg = &msgQueue->messages[pos].msg; + MSG16 * msg = &msgQueue->messages[pos].msg; if (!hwnd || (msg->hwnd == hwnd)) { @@ -405,7 +405,7 @@ static void QUEUE_WakeSomeone( UINT message ) void hardware_event( WORD message, WORD wParam, LONG lParam, int xPos, int yPos, DWORD time, DWORD extraInfo ) { - MSG *msg; + MSG16 *msg; int pos; if (!sysMsgQueue) return; diff --git a/windows/syscolor.c b/windows/syscolor.c index 50e03b8e792..3c3ddee458b 100644 --- a/windows/syscolor.c +++ b/windows/syscolor.c @@ -14,9 +14,9 @@ /* #define DEBUG_SYSCOLOR */ #include "debug.h" -struct SysColorObjects sysColorObjects = { 0, }; +struct SysColorObjects sysColorObjects; -static char * DefSysColors[] = +static const char * const DefSysColors[] = { "Scrollbar", "224 224 224", /* COLOR_SCROLLBAR */ "Background", "192 192 192", /* COLOR_BACKGROUND */ @@ -132,7 +132,7 @@ static void SYSCOLOR_SetColor( int index, COLORREF color ) void SYSCOLOR_Init(void) { int i, r, g, b; - char **p; + const char * const *p; char buffer[100]; for (i = 0, p = DefSysColors; i < NUM_SYS_COLORS; i++, p += 2) diff --git a/windows/timer.c b/windows/timer.c index 189fc36be70..53156d2b70d 100644 --- a/windows/timer.c +++ b/windows/timer.c @@ -169,7 +169,7 @@ LONG TIMER_GetNextExp(void) * If 'hwnd' is not NULL, only consider timers for this window. * If 'remove' is TRUE, remove all expired timers up to the returned one. */ -BOOL TIMER_CheckTimer( LONG *next, MSG *msg, HWND hwnd, BOOL remove ) +BOOL TIMER_CheckTimer( LONG *next, MSG16 *msg, HWND hwnd, BOOL remove ) { TIMER * pTimer = pNextTimer; DWORD curTime = GetTickCount(); diff --git a/windows/win.c b/windows/win.c index a59225cc922..8c23889ac60 100644 --- a/windows/win.c +++ b/windows/win.c @@ -1005,7 +1005,7 @@ static HWND WIN_FindWindow( HWND parent, HWND child, ATOM className, /*********************************************************************** * FindWindow16 (USER.50) */ -HWND FindWindow16( SEGPTR className, LPCSTR title ) +HWND16 FindWindow16( SEGPTR className, LPCSTR title ) { return FindWindowEx16( 0, 0, className, title ); } @@ -1014,7 +1014,8 @@ HWND FindWindow16( SEGPTR className, LPCSTR title ) /*********************************************************************** * FindWindowEx16 (USER.427) */ -HWND FindWindowEx16( HWND parent, HWND child, SEGPTR className, LPCSTR title ) +HWND16 FindWindowEx16( HWND16 parent, HWND16 child, + SEGPTR className, LPCSTR title ) { ATOM atom; @@ -1026,7 +1027,7 @@ HWND FindWindowEx16( HWND parent, HWND child, SEGPTR className, LPCSTR title ) /*********************************************************************** * FindWindow32A (USER32.197) */ -HWND FindWindow32A( LPCSTR className, LPCSTR title ) +HWND32 FindWindow32A( LPCSTR className, LPCSTR title ) { return FindWindowEx32A( 0, 0, className, title ); } @@ -1035,7 +1036,8 @@ HWND FindWindow32A( LPCSTR className, LPCSTR title ) /*********************************************************************** * FindWindowEx32A (USER32.198) */ -HWND FindWindowEx32A( HWND parent, HWND child, LPCSTR className, LPCSTR title ) +HWND32 FindWindowEx32A( HWND32 parent, HWND32 child, + LPCSTR className, LPCSTR title ) { ATOM atom; @@ -1047,7 +1049,8 @@ HWND FindWindowEx32A( HWND parent, HWND child, LPCSTR className, LPCSTR title ) /*********************************************************************** * FindWindowEx32W (USER32.199) */ -HWND FindWindowEx32W(HWND parent, HWND child, LPCWSTR className, LPCWSTR title) +HWND32 FindWindowEx32W( HWND32 parent, HWND32 child, + LPCWSTR className, LPCWSTR title ) { ATOM atom; char *buffer; @@ -1064,7 +1067,7 @@ HWND FindWindowEx32W(HWND parent, HWND child, LPCWSTR className, LPCWSTR title) /*********************************************************************** * FindWindow32W (USER32.200) */ -HWND FindWindow32W( LPCWSTR className, LPCWSTR title ) +HWND32 FindWindow32W( LPCWSTR className, LPCWSTR title ) { return FindWindowEx32W( 0, 0, className, title ); } @@ -1838,7 +1841,7 @@ BOOL DRAG_QueryUpdate( HWND hQueryWnd, SEGPTR spDragInfo ) */ BOOL16 DragDetect(HWND16 hWnd, POINT16 pt) { - MSG msg; + MSG16 msg; RECT16 rect; rect.left = pt.x - wDragWidth; @@ -1851,7 +1854,7 @@ BOOL16 DragDetect(HWND16 hWnd, POINT16 pt) while(1) { - while(PeekMessage(&msg ,0 ,WM_MOUSEFIRST ,WM_MOUSELAST ,PM_REMOVE)) + while(PeekMessage16(&msg ,0 ,WM_MOUSEFIRST ,WM_MOUSELAST ,PM_REMOVE)) { if( msg.message == WM_LBUTTONUP ) { @@ -1880,7 +1883,7 @@ BOOL16 DragDetect(HWND16 hWnd, POINT16 pt) DWORD DragObject(HWND hwndScope, HWND hWnd, WORD wObj, HANDLE hOfStruct, WORD szList , HCURSOR hCursor) { - MSG msg; + MSG16 msg; LPDRAGINFO lpDragInfo; SEGPTR spDragInfo; HCURSOR hDragCursor=0, hOldCursor=0, hBummer=0; @@ -1933,7 +1936,7 @@ DWORD DragObject(HWND hwndScope, HWND hWnd, WORD wObj, HANDLE hOfStruct, { WaitMessage(); - if( !PeekMessage(&msg,0,WM_MOUSEFIRST,WM_MOUSELAST,PM_REMOVE) ) + if( !PeekMessage16(&msg,0,WM_MOUSEFIRST,WM_MOUSELAST,PM_REMOVE) ) continue; *(lpDragInfo+1) = *lpDragInfo; diff --git a/windows/winpos.c b/windows/winpos.c index 508867318d9..b1f1de3b21a 100644 --- a/windows/winpos.c +++ b/windows/winpos.c @@ -848,7 +848,7 @@ BOOL WINPOS_SetActiveWindow( HWND hWnd, BOOL fMouse, BOOL fChangeFocus ) { WND *wndPtr = WIN_FindWndPtr(hWnd); WND *wndTemp = WIN_FindWndPtr(hwndActive); - CBTACTIVATESTRUCT *cbtStruct; + CBTACTIVATESTRUCT16 *cbtStruct; FARPROC enumCallback = MODULE_GetWndProcEntry16("ActivateAppProc"); ACTIVATESTRUCT actStruct; WORD wIconized=0; @@ -872,7 +872,7 @@ BOOL WINPOS_SetActiveWindow( HWND hWnd, BOOL fMouse, BOOL fChangeFocus ) dprintf_win(stddeb,"WINPOS_ActivateWindow: no current active window.\n"); /* call CBT hook chain */ - if ((cbtStruct = SEGPTR_NEW(CBTACTIVATESTRUCT))) + if ((cbtStruct = SEGPTR_NEW(CBTACTIVATESTRUCT16))) { LRESULT wRet; cbtStruct->fMouse = fMouse; diff --git a/windows/winproc.c b/windows/winproc.c index 05d2a241f61..f206657b7bd 100644 --- a/windows/winproc.c +++ b/windows/winproc.c @@ -722,7 +722,7 @@ static LRESULT WINPROC_CallProc32WTo16( WNDPROC16 func, WORD ds, HWND32 hwnd, case WM_SETTEXT: { - LPSTR str = SEGPTR_ALLOC( STRING32_lstrlenW( (LPWSTR)lParam ) ); + LPSTR str = SEGPTR_ALLOC( lstrlen32W( (LPWSTR)lParam ) ); if (!str) return 0; STRING32_UniToAnsi( str, (LPWSTR)lParam ); result = CallWndProc16( func, ds, hwnd, msg, (WPARAM16)wParam,