Release 961102

Sat Nov  2 12:50:40 1996  Alexandre Julliard  <julliard@lrc.epfl.ch>

	* [files/dos_fs.c]
	Added long file name mask in DOSFS_FindNext().

	* [loader/pe_image.c] [loader/task.c]
	Moved Win32 task startup into TASK_CallToStart().

	* [objects/dc.c]
	Fixed SetDCState() for memory DC (thanks to Constantine
	Sapuntzakis for spotting this one).

	* [windows/winpos.c]
	Fixed WINPOS_ForceXWindowRaise() to preserve correct Z-order.

	* [*/*]
	Added Win32 version for many graphics functions.

Thu Oct 31 10:00:18 1996  Huw D. M. Davies <h.davies1@physics.oxford.ac.uk>

	* [controls/button.c]
	BUTTON_CheckAutoRadioButton() unchecks only auto radio buttons.

	* [controls/edit.c]
	EM_GETSEL result should have HIWORD(result) >= LOWORD(result); old
	EDIT_EM_GetSel() renamed to EDIT_GetSel(). 

	* [windows/dialog.c]
	DS_LOCALEDIT is a dialog style not an edit style.

	* [windows/winproc.c]
	Stop stack trashing when wndPtr->text == NULL.

Tue Oct 29 23:35:04 1996   Constantine P Sapuntzakis <csapuntz@mit.edu>

	* [windows/dce.c]
	GetDCEx32 - The determination of whether to use the DC cache or
 	not should be independent of DCX_USESTYLE.

Sat Oct 26 17:31:00 1996  Thomas Sandford <t.d.g.sandford@prds-grn.demon.co.uk>

	* [files/directory.c]
	Added errno.h to #includes

	* [tools/makedep.c]
	Close files once they have been processed.
This commit is contained in:
Alexandre Julliard 1996-11-02 14:24:07 +00:00
parent 530ee8407c
commit 139a4b1874
76 changed files with 2062 additions and 1231 deletions

View File

@ -1,13 +1,12 @@
This is release 961023 of Wine, the MS Windows emulator. This is still a This is release 961102 of Wine, the MS Windows emulator. This is still a
developer's only release. There are many bugs and many unimplemented API developer's only release. There are many bugs and many unimplemented API
features. Most applications still do not work correctly. features. Most applications still do not work correctly.
Patches should be submitted to "julliard@lrc.epfl.ch". Please don't Patches should be submitted to "julliard@lrc.epfl.ch". Please don't
forget to include a ChangeLog entry. forget to include a ChangeLog entry.
WHAT'S NEW with Wine-961023: (see ChangeLog for details) WHAT'S NEW with Wine-961102: (see ChangeLog for details)
- Printer driver fixes. - More Win32 functions.
- Faster make depend.
- Lots of bug fixes. - Lots of bug fixes.
See the README file in the distribution for installation instructions. 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 the release is available at the ftp sites. The sources will be available
from the following locations: from the following locations:
ftp://sunsite.unc.edu/pub/Linux/ALPHA/wine/development/Wine-961023.tar.gz ftp://sunsite.unc.edu/pub/Linux/ALPHA/wine/development/Wine-961102.tar.gz
ftp://tsx-11.mit.edu/pub/linux/ALPHA/Wine/development/Wine-961023.tar.gz ftp://tsx-11.mit.edu/pub/linux/ALPHA/Wine/development/Wine-961102.tar.gz
ftp://ftp.infomagic.com/pub/mirrors/linux/wine/development/Wine-961023.tar.gz ftp://ftp.infomagic.com/pub/mirrors/linux/wine/development/Wine-961102.tar.gz
ftp://aris.com/pub/linux/ALPHA/Wine/development/Wine-961023.tar.gz ftp://aris.com/pub/linux/ALPHA/Wine/development/Wine-961102.tar.gz
It should also be available from any site that mirrors tsx-11 or sunsite. It should also be available from any site that mirrors tsx-11 or sunsite.

View File

@ -1,3 +1,51 @@
----------------------------------------------------------------------
Sat Nov 2 12:50:40 1996 Alexandre Julliard <julliard@lrc.epfl.ch>
* [files/dos_fs.c]
Added long file name mask in DOSFS_FindNext().
* [loader/pe_image.c] [loader/task.c]
Moved Win32 task startup into TASK_CallToStart().
* [objects/dc.c]
Fixed SetDCState() for memory DC (thanks to Constantine
Sapuntzakis for spotting this one).
* [windows/winpos.c]
Fixed WINPOS_ForceXWindowRaise() to preserve correct Z-order.
* [*/*]
Added Win32 version for many graphics functions.
Thu Oct 31 10:00:18 1996 Huw D. M. Davies <h.davies1@physics.oxford.ac.uk>
* [controls/button.c]
BUTTON_CheckAutoRadioButton() unchecks only auto radio buttons.
* [controls/edit.c]
EM_GETSEL result should have HIWORD(result) >= LOWORD(result); old
EDIT_EM_GetSel() renamed to EDIT_GetSel().
* [windows/dialog.c]
DS_LOCALEDIT is a dialog style not an edit style.
* [windows/winproc.c]
Stop stack trashing when wndPtr->text == NULL.
Tue Oct 29 23:35:04 1996 Constantine P Sapuntzakis <csapuntz@mit.edu>
* [windows/dce.c]
GetDCEx32 - The determination of whether to use the DC cache or
not should be independent of DCX_USESTYLE.
Sat Oct 26 17:31:00 1996 Thomas Sandford <t.d.g.sandford@prds-grn.demon.co.uk>
* [files/directory.c]
Added errno.h to #includes
* [tools/makedep.c]
Close files once they have been processed.
---------------------------------------------------------------------- ----------------------------------------------------------------------
Tue Oct 22 20:09:52 1996 Alexandre Julliard <julliard@lrc.epfl.ch> Tue Oct 22 20:09:52 1996 Alexandre Julliard <julliard@lrc.epfl.ch>

View File

@ -1,4 +1,4 @@
# Global rules shared by all makefiles # Global rules shared by all makefiles -*-Makefile-*-
# #
# Each individual makefile should define the following variables: # Each individual makefile should define the following variables:
# TOPSRCDIR : top-level source directory # TOPSRCDIR : top-level source directory
@ -36,7 +36,7 @@ WINERC = $(TOPOBJDIR)/rc/winerc
SUBMAKE = $(MAKE) 'CC=$(CC)' 'CFLAGS=$(CFLAGS)' 'OPTIONS=$(OPTIONS)' SUBMAKE = $(MAKE) 'CC=$(CC)' 'CFLAGS=$(CFLAGS)' 'OPTIONS=$(OPTIONS)'
@SET_MAKE@ @SET_MAKE@
OBJS = $(C_SRCS:.c=.o) $(GEN_C_SRCS:.c=.o) $(ASM_SRCS:.S=.o) $(EXTRA_OBJS) OBJS = $(GEN_C_SRCS:.c=.o) $(C_SRCS:.c=.o) $(ASM_SRCS:.S=.o) $(EXTRA_OBJS)
# Implicit rules # Implicit rules

View File

@ -252,38 +252,38 @@ LRESULT ButtonWndProc(HWND32 hWnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam)
static void PB_Paint( WND *wndPtr, HDC32 hDC, WORD action ) static void PB_Paint( WND *wndPtr, HDC32 hDC, WORD action )
{ {
RECT32 rc; RECT32 rc;
HPEN16 hOldPen; HPEN32 hOldPen;
HBRUSH16 hOldBrush; HBRUSH32 hOldBrush;
BUTTONINFO *infoPtr = (BUTTONINFO *)wndPtr->wExtra; BUTTONINFO *infoPtr = (BUTTONINFO *)wndPtr->wExtra;
GetClientRect32( wndPtr->hwndSelf, &rc ); GetClientRect32( wndPtr->hwndSelf, &rc );
/* Send WM_CTLCOLOR to allow changing the font (the colors are fixed) */ /* Send WM_CTLCOLOR to allow changing the font (the colors are fixed) */
if (infoPtr->hFont) SelectObject( hDC, infoPtr->hFont ); if (infoPtr->hFont) SelectObject32( hDC, infoPtr->hFont );
BUTTON_SEND_CTLCOLOR( wndPtr, hDC ); BUTTON_SEND_CTLCOLOR( wndPtr, hDC );
hOldPen = (HPEN16)SelectObject(hDC, sysColorObjects.hpenWindowFrame); hOldPen = (HPEN32)SelectObject32(hDC, sysColorObjects.hpenWindowFrame);
hOldBrush = (HBRUSH16)SelectObject(hDC, sysColorObjects.hbrushBtnFace); hOldBrush = (HBRUSH32)SelectObject32(hDC, sysColorObjects.hbrushBtnFace);
SetBkMode(hDC, TRANSPARENT); SetBkMode(hDC, TRANSPARENT);
Rectangle(hDC, rc.left, rc.top, rc.right, rc.bottom); Rectangle32(hDC, rc.left, rc.top, rc.right, rc.bottom);
if (action == ODA_DRAWENTIRE) if (action == ODA_DRAWENTIRE)
{ {
SetPixel( hDC, rc.left, rc.top, GetSysColor(COLOR_WINDOW) ); SetPixel32( hDC, rc.left, rc.top, GetSysColor(COLOR_WINDOW) );
SetPixel( hDC, rc.left, rc.bottom-1, GetSysColor(COLOR_WINDOW) ); SetPixel32( hDC, rc.left, rc.bottom-1, GetSysColor(COLOR_WINDOW) );
SetPixel( hDC, rc.right-1, rc.top, GetSysColor(COLOR_WINDOW) ); SetPixel32( hDC, rc.right-1, rc.top, GetSysColor(COLOR_WINDOW) );
SetPixel( hDC, rc.right-1, rc.bottom-1, GetSysColor(COLOR_WINDOW) ); SetPixel32( hDC, rc.right-1, rc.bottom-1, GetSysColor(COLOR_WINDOW) );
} }
InflateRect32( &rc, -1, -1 ); InflateRect32( &rc, -1, -1 );
if ((wndPtr->dwStyle & 0x000f) == BS_DEFPUSHBUTTON) if ((wndPtr->dwStyle & 0x000f) == BS_DEFPUSHBUTTON)
{ {
Rectangle(hDC, rc.left, rc.top, rc.right, rc.bottom); Rectangle32(hDC, rc.left, rc.top, rc.right, rc.bottom);
InflateRect32( &rc, -1, -1 ); InflateRect32( &rc, -1, -1 );
} }
if (infoPtr->state & BUTTON_HIGHLIGHTED) if (infoPtr->state & BUTTON_HIGHLIGHTED)
{ {
/* draw button shadow: */ /* draw button shadow: */
SelectObject(hDC, sysColorObjects.hbrushBtnShadow ); SelectObject32(hDC, sysColorObjects.hbrushBtnShadow );
PatBlt(hDC, rc.left, rc.top, 1, rc.bottom-rc.top, PATCOPY ); PatBlt(hDC, rc.left, rc.top, 1, rc.bottom-rc.top, PATCOPY );
PatBlt(hDC, rc.left, rc.top, rc.right-rc.left, 1, PATCOPY ); PatBlt(hDC, rc.left, rc.top, rc.right-rc.left, 1, PATCOPY );
rc.left += 2; /* To position the text down and right */ rc.left += 2; /* To position the text down and right */
@ -324,8 +324,8 @@ static void PB_Paint( WND *wndPtr, HDC32 hDC, WORD action )
} }
} }
SelectObject( hDC, hOldPen ); SelectObject32( hDC, hOldPen );
SelectObject( hDC, hOldBrush ); SelectObject32( hDC, hOldBrush );
} }
@ -349,17 +349,17 @@ void PB_PaintGrayOnGray(HDC32 hDC,HFONT32 hFont,RECT32 *rc,char *text)
rect.left=(rc->right-rect.right)/2; /* for centering text bitmap */ rect.left=(rc->right-rect.right)/2; /* for centering text bitmap */
rect.top=(rc->bottom-rect.bottom)/2; rect.top=(rc->bottom-rect.bottom)/2;
hbmMem = CreateCompatibleBitmap( hDC,rect.right,rect.bottom); hbmMem = CreateCompatibleBitmap( hDC,rect.right,rect.bottom);
SelectObject( hdcMem, hbmMem); SelectObject32( hdcMem, hbmMem);
hBr = SelectObject( hdcMem,CreatePatternBrush(hbm)); hBr = SelectObject32( hdcMem, CreatePatternBrush32(hbm) );
DeleteObject( hbm); DeleteObject32( hbm );
PatBlt( hdcMem,0,0,rect.right,rect.bottom,WHITENESS); PatBlt( hdcMem,0,0,rect.right,rect.bottom,WHITENESS);
if (hFont) SelectObject( hdcMem, hFont); if (hFont) SelectObject32( hdcMem, hFont);
DrawText32A( hdcMem, text, -1, &rc2, DT_SINGLELINE); DrawText32A( hdcMem, text, -1, &rc2, DT_SINGLELINE);
PatBlt( hdcMem,0,0,rect.right,rect.bottom,0xFA0089); PatBlt( hdcMem,0,0,rect.right,rect.bottom,0xFA0089);
DeleteObject( SelectObject( hdcMem,hBr)); DeleteObject32( SelectObject32( hdcMem,hBr) );
BitBlt( hDC,rect.left,rect.top,rect.right,rect.bottom,hdcMem,0,0,0x990000); BitBlt( hDC,rect.left,rect.top,rect.right,rect.bottom,hdcMem,0,0,0x990000);
DeleteDC( hdcMem); DeleteDC( hdcMem);
DeleteObject( hbmMem); DeleteObject32( hbmMem );
} }
@ -377,7 +377,7 @@ static void CB_Paint( WND *wndPtr, HDC32 hDC, WORD action )
GetClientRect16(wndPtr->hwndSelf, &rc); GetClientRect16(wndPtr->hwndSelf, &rc);
if (infoPtr->hFont) SelectObject( hDC, infoPtr->hFont ); if (infoPtr->hFont) SelectObject32( hDC, infoPtr->hFont );
hBrush = BUTTON_SEND_CTLCOLOR( wndPtr, hDC ); hBrush = BUTTON_SEND_CTLCOLOR( wndPtr, hDC );
if (action == ODA_DRAWENTIRE) FillRect16( hDC, &rc, hBrush ); if (action == ODA_DRAWENTIRE) FillRect16( hDC, &rc, hBrush );
@ -427,7 +427,7 @@ static void CB_Paint( WND *wndPtr, HDC32 hDC, WORD action )
/********************************************************************** /**********************************************************************
* BUTTON_CheckAutoRadioButton * BUTTON_CheckAutoRadioButton
* *
* wndPtr is checked, uncheck everything else in group * wndPtr is checked, uncheck every other auto radio button in group
*/ */
static void BUTTON_CheckAutoRadioButton( WND *wndPtr ) static void BUTTON_CheckAutoRadioButton( WND *wndPtr )
{ {
@ -435,9 +435,10 @@ static void BUTTON_CheckAutoRadioButton( WND *wndPtr )
if (!(wndPtr->dwStyle & WS_CHILD)) return; if (!(wndPtr->dwStyle & WS_CHILD)) return;
parent = wndPtr->parent->hwndSelf; parent = wndPtr->parent->hwndSelf;
for(sibling = GetNextDlgGroupItem32( parent, wndPtr->hwndSelf, FALSE ); for(sibling = GetNextDlgGroupItem32( parent, wndPtr->hwndSelf, FALSE );
sibling != wndPtr->hwndSelf; sibling != wndPtr->hwndSelf && sibling != 0;
sibling = GetNextDlgGroupItem32( parent, sibling, FALSE )) sibling = GetNextDlgGroupItem32( parent, sibling, FALSE ))
SendMessage32A( sibling, BM_SETCHECK32, BUTTON_UNCHECKED, 0 ); if((WIN_FindWndPtr(sibling)->dwStyle & 0x0f) == BS_AUTORADIOBUTTON)
SendMessage32A( sibling, BM_SETCHECK32, BUTTON_UNCHECKED, 0 );
} }
@ -452,17 +453,17 @@ static void GB_Paint( WND *wndPtr, HDC32 hDC, WORD action )
if (action != ODA_DRAWENTIRE) return; if (action != ODA_DRAWENTIRE) return;
if (infoPtr->hFont) SelectObject( hDC, infoPtr->hFont ); if (infoPtr->hFont) SelectObject32( hDC, infoPtr->hFont );
BUTTON_SEND_CTLCOLOR( wndPtr, hDC ); BUTTON_SEND_CTLCOLOR( wndPtr, hDC );
SelectObject( hDC, sysColorObjects.hpenWindowFrame ); SelectObject32( hDC, sysColorObjects.hpenWindowFrame );
GetClientRect16( wndPtr->hwndSelf, &rc); GetClientRect16( wndPtr->hwndSelf, &rc);
MoveTo( hDC, rc.left, rc.top+2 ); MoveTo( hDC, rc.left, rc.top+2 );
LineTo( hDC, rc.right-1, rc.top+2 ); LineTo32( hDC, rc.right-1, rc.top+2 );
LineTo( hDC, rc.right-1, rc.bottom-1 ); LineTo32( hDC, rc.right-1, rc.bottom-1 );
LineTo( hDC, rc.left, rc.bottom-1 ); LineTo32( hDC, rc.left, rc.bottom-1 );
LineTo( hDC, rc.left, rc.top+2 ); LineTo32( hDC, rc.left, rc.top+2 );
if (!wndPtr->text) return; if (!wndPtr->text) return;
if (wndPtr->dwStyle & WS_DISABLED) if (wndPtr->dwStyle & WS_DISABLED)
@ -486,7 +487,7 @@ static void UB_Paint( WND *wndPtr, HDC32 hDC, WORD action )
GetClientRect16( wndPtr->hwndSelf, &rc); GetClientRect16( wndPtr->hwndSelf, &rc);
if (infoPtr->hFont) SelectObject( hDC, infoPtr->hFont ); if (infoPtr->hFont) SelectObject32( hDC, infoPtr->hFont );
hBrush = BUTTON_SEND_CTLCOLOR( wndPtr, hDC ); hBrush = BUTTON_SEND_CTLCOLOR( wndPtr, hDC );
FillRect16( hDC, &rc, hBrush ); FillRect16( hDC, &rc, hBrush );

View File

@ -224,8 +224,8 @@ static LRESULT CBPaint(HWND hwnd, WPARAM16 wParam, LPARAM lParam)
LPHEADCOMBO lphc = ComboGetStorageHeader(hwnd); LPHEADCOMBO lphc = ComboGetStorageHeader(hwnd);
LPLISTSTRUCT lpls; LPLISTSTRUCT lpls;
PAINTSTRUCT16 ps; PAINTSTRUCT16 ps;
HBRUSH16 hBrush; HBRUSH32 hBrush;
HFONT16 hOldFont; HFONT32 hOldFont;
HDC16 hdc; HDC16 hdc;
RECT16 rect; RECT16 rect;
@ -238,8 +238,8 @@ static LRESULT CBPaint(HWND hwnd, WPARAM16 wParam, LPARAM lParam)
if (hComboBit != 0 && !IsRectEmpty16(&lphc->RectButton)) if (hComboBit != 0 && !IsRectEmpty16(&lphc->RectButton))
{ {
Rectangle(hdc,lphc->RectButton.left-1,lphc->RectButton.top-1, Rectangle32(hdc,lphc->RectButton.left-1,lphc->RectButton.top-1,
lphc->RectButton.right+1,lphc->RectButton.bottom+1); lphc->RectButton.right+1,lphc->RectButton.bottom+1);
{ {
RECT32 r; RECT32 r;
CONV_RECT16TO32( &lphc->RectButton, &r ); CONV_RECT16TO32( &lphc->RectButton, &r );
@ -257,10 +257,10 @@ static LRESULT CBPaint(HWND hwnd, WPARAM16 wParam, LPARAM lParam)
return 0; return 0;
} }
hOldFont = SelectObject(hdc, lphl->hFont); hOldFont = SelectObject32(hdc, lphl->hFont);
hBrush = SendMessage32A( lphl->hParent, WM_CTLCOLORLISTBOX, hdc, hwnd ); hBrush = SendMessage32A( lphl->hParent, WM_CTLCOLORLISTBOX, hdc, hwnd );
if (hBrush == 0) hBrush = GetStockObject(WHITE_BRUSH); if (hBrush == 0) hBrush = GetStockObject32(WHITE_BRUSH);
lpls = ListBoxGetItem(lphl,lphl->ItemFocused); lpls = ListBoxGetItem(lphl,lphl->ItemFocused);
if (lpls != NULL) { if (lpls != NULL) {
@ -270,7 +270,7 @@ static LRESULT CBPaint(HWND hwnd, WPARAM16 wParam, LPARAM lParam)
ListBoxDrawItem (hwnd,lphl, hdc, lpls, &rect, ODA_FOCUS, ODS_FOCUS); ListBoxDrawItem (hwnd,lphl, hdc, lpls, &rect, ODA_FOCUS, ODS_FOCUS);
} }
else FillRect16(hdc, &rect, hBrush); else FillRect16(hdc, &rect, hBrush);
SelectObject(hdc,hOldFont); SelectObject32(hdc,hOldFont);
EndPaint16(hwnd, &ps); EndPaint16(hwnd, &ps);
return 0; return 0;
} }
@ -556,7 +556,7 @@ static LRESULT CBSetFont(HWND hwnd, WPARAM16 wParam, LPARAM lParam)
LPHEADCOMBO lphc = ComboGetStorageHeader(hwnd); LPHEADCOMBO lphc = ComboGetStorageHeader(hwnd);
if (wParam == 0) if (wParam == 0)
lphl->hFont = GetStockObject(SYSTEM_FONT); lphl->hFont = GetStockObject32(SYSTEM_FONT);
else else
lphl->hFont = (HFONT16)wParam; lphl->hFont = (HFONT16)wParam;
if (lphc->hWndEdit) if (lphc->hWndEdit)
@ -914,8 +914,8 @@ static LRESULT CBLPaint( HWND hwnd, WPARAM16 wParam, LPARAM lParam )
LPHEADLIST lphl = CLBoxGetListHeader(hwnd); LPHEADLIST lphl = CLBoxGetListHeader(hwnd);
LPLISTSTRUCT lpls; LPLISTSTRUCT lpls;
PAINTSTRUCT16 ps; PAINTSTRUCT16 ps;
HBRUSH16 hBrush; HBRUSH32 hBrush;
HFONT16 hOldFont; HFONT32 hOldFont;
WND * wndPtr = WIN_FindWndPtr(hwnd); WND * wndPtr = WIN_FindWndPtr(hwnd);
HWND combohwnd = CLBoxGetCombo(hwnd); HWND combohwnd = CLBoxGetCombo(hwnd);
HDC16 hdc; HDC16 hdc;
@ -930,9 +930,9 @@ static LRESULT CBLPaint( HWND hwnd, WPARAM16 wParam, LPARAM lParam )
return 0; return 0;
} }
hOldFont = SelectObject(hdc, lphl->hFont); hOldFont = SelectObject32(hdc, lphl->hFont);
/* listboxes should be white */ /* listboxes should be white */
hBrush = GetStockObject(WHITE_BRUSH); hBrush = GetStockObject32(WHITE_BRUSH);
GetClientRect16(hwnd, &rect); GetClientRect16(hwnd, &rect);
FillRect16(hdc, &rect, hBrush); FillRect16(hdc, &rect, hBrush);
@ -977,7 +977,7 @@ static LRESULT CBLPaint( HWND hwnd, WPARAM16 wParam, LPARAM lParam )
if (wndPtr->dwStyle & WS_VSCROLL) if (wndPtr->dwStyle & WS_VSCROLL)
SetScrollRange32(hwnd, SB_VERT, 0, ListMaxFirstVisible(lphl), TRUE); SetScrollRange32(hwnd, SB_VERT, 0, ListMaxFirstVisible(lphl), TRUE);
SelectObject(hdc,hOldFont); SelectObject32(hdc,hOldFont);
EndPaint16( hwnd, &ps ); EndPaint16( hwnd, &ps );
return 0; return 0;

View File

@ -80,7 +80,7 @@ static LRESULT DESKTOP_DoEraseBkgnd( HWND32 hwnd, HDC32 hdc,
RECT32 rect; RECT32 rect;
WND* Wnd = WIN_FindWndPtr( hwnd ); WND* Wnd = WIN_FindWndPtr( hwnd );
if( Wnd->hrgnUpdate > 1 ) DeleteObject( Wnd->hrgnUpdate ); if (Wnd->hrgnUpdate > 1) DeleteObject32( Wnd->hrgnUpdate );
Wnd->hrgnUpdate = 0; Wnd->hrgnUpdate = 0;
GetClientRect32( hwnd, &rect ); GetClientRect32( hwnd, &rect );
@ -208,7 +208,7 @@ BOOL32 SetDeskWallPaper32( LPCSTR filename )
hdc = GetDC32( 0 ); hdc = GetDC32( 0 );
hbitmap = DESKTOP_LoadBitmap( hdc, filename ); hbitmap = DESKTOP_LoadBitmap( hdc, filename );
ReleaseDC32( 0, hdc ); ReleaseDC32( 0, hdc );
if (infoPtr->hbitmapWallPaper) DeleteObject( infoPtr->hbitmapWallPaper ); if (infoPtr->hbitmapWallPaper) DeleteObject32( infoPtr->hbitmapWallPaper );
infoPtr->hbitmapWallPaper = hbitmap; infoPtr->hbitmapWallPaper = hbitmap;
infoPtr->fTileWallPaper = GetProfileInt( "desktop", "TileWallPaper", 0 ); infoPtr->fTileWallPaper = GetProfileInt( "desktop", "TileWallPaper", 0 );
if (hbitmap) if (hbitmap)
@ -233,7 +233,7 @@ BOOL32 DESKTOP_SetPattern( LPCSTR pattern )
DESKTOPINFO *infoPtr = (DESKTOPINFO *)wndPtr->wExtra; DESKTOPINFO *infoPtr = (DESKTOPINFO *)wndPtr->wExtra;
int pat[8]; int pat[8];
if (infoPtr->hbrushPattern) DeleteObject( infoPtr->hbrushPattern ); if (infoPtr->hbrushPattern) DeleteObject32( infoPtr->hbrushPattern );
memset( pat, 0, sizeof(pat) ); memset( pat, 0, sizeof(pat) );
if (pattern && sscanf( pattern, " %d %d %d %d %d %d %d %d", if (pattern && sscanf( pattern, " %d %d %d %d %d %d %d %d",
&pat[0], &pat[1], &pat[2], &pat[3], &pat[0], &pat[1], &pat[2], &pat[3],
@ -245,10 +245,10 @@ BOOL32 DESKTOP_SetPattern( LPCSTR pattern )
for (i = 0; i < 8; i++) pattern[i] = pat[i] & 0xffff; for (i = 0; i < 8; i++) pattern[i] = pat[i] & 0xffff;
hbitmap = CreateBitmap( 8, 8, 1, 1, (LPSTR)pattern ); hbitmap = CreateBitmap( 8, 8, 1, 1, (LPSTR)pattern );
infoPtr->hbrushPattern = CreatePatternBrush( hbitmap ); infoPtr->hbrushPattern = CreatePatternBrush32( hbitmap );
DeleteObject( hbitmap ); DeleteObject32( hbitmap );
} }
else infoPtr->hbrushPattern = CreateSolidBrush( GetSysColor(COLOR_BACKGROUND) ); else infoPtr->hbrushPattern = CreateSolidBrush32( GetSysColor(COLOR_BACKGROUND) );
return TRUE; return TRUE;
} }

View File

@ -119,6 +119,7 @@ static char * EDIT_GetPointer(WND *wndPtr);
static char * EDIT_GetPasswordPointer(WND *wndPtr); static char * EDIT_GetPasswordPointer(WND *wndPtr);
static LRESULT EDIT_GetRect(WND *wndPtr, WPARAM32 wParam, LPARAM lParam); static LRESULT EDIT_GetRect(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
static BOOL EDIT_GetRedraw(WND *wndPtr); static BOOL EDIT_GetRedraw(WND *wndPtr);
static LRESULT EDIT_GetSel(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
static UINT EDIT_GetTextWidth(WND *wndPtr); static UINT EDIT_GetTextWidth(WND *wndPtr);
static UINT EDIT_GetVisibleLineCount(WND *wndPtr); static UINT EDIT_GetVisibleLineCount(WND *wndPtr);
static UINT EDIT_GetWndWidth(WND *wndPtr); static UINT EDIT_GetWndWidth(WND *wndPtr);
@ -511,7 +512,7 @@ static void EDIT_BuildLineDefs(WND *wndPtr)
int ww = EDIT_GetWndWidth(wndPtr); int ww = EDIT_GetWndWidth(wndPtr);
HDC32 hdc; HDC32 hdc;
HFONT16 hFont; HFONT16 hFont;
HFONT16 oldFont = 0; HFONT32 oldFont = 0;
char *start, *cp; char *start, *cp;
int prev, next; int prev, next;
int width; int width;
@ -520,8 +521,7 @@ static void EDIT_BuildLineDefs(WND *wndPtr)
hdc = GetDC32(wndPtr->hwndSelf); hdc = GetDC32(wndPtr->hwndSelf);
hFont = (HFONT16)EDIT_WM_GetFont(wndPtr, 0, 0L); hFont = (HFONT16)EDIT_WM_GetFont(wndPtr, 0, 0L);
if (hFont) if (hFont) oldFont = SelectObject32(hdc, hFont);
oldFont = SelectObject(hdc, hFont);
if (!IsMultiLine(wndPtr)) { if (!IsMultiLine(wndPtr)) {
es->LineCount = 1; es->LineCount = 1;
@ -602,8 +602,7 @@ static void EDIT_BuildLineDefs(WND *wndPtr)
} }
} while (*start || (ending == END_SOFT) || (ending == END_HARD)); } while (*start || (ending == END_SOFT) || (ending == END_HARD));
} }
if (hFont) if (hFont) SelectObject32(hdc, oldFont);
SelectObject(hdc, oldFont);
ReleaseDC32(wndPtr->hwndSelf, hdc); ReleaseDC32(wndPtr->hwndSelf, hdc);
free(text); free(text);
@ -819,6 +818,22 @@ static BOOL EDIT_GetRedraw(WND *wndPtr)
} }
/*********************************************************************
*
* EDIT_GetSel
*
* Beware: This is not the function called on EM_GETSEL.
* It returns the start in the low word and the end in the high word.
* NB s can be greater than e.
*
*/
static LRESULT EDIT_GetSel(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
EDITSTATE *es = EDITSTATEPTR(wndPtr);
return MAKELONG(es->SelStart, es->SelEnd);
}
/********************************************************************* /*********************************************************************
* *
* EDIT_GetTextWidth * EDIT_GetTextWidth
@ -999,8 +1014,8 @@ static BOOL EDIT_MakeFit(WND *wndPtr, UINT size)
*/ */
static void EDIT_MoveBackward(WND *wndPtr, BOOL extend) static void EDIT_MoveBackward(WND *wndPtr, BOOL extend)
{ {
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L); UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L);
UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L); UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L);
@ -1024,8 +1039,8 @@ static void EDIT_MoveBackward(WND *wndPtr, BOOL extend)
*/ */
static void EDIT_MoveDownward(WND *wndPtr, BOOL extend) static void EDIT_MoveDownward(WND *wndPtr, BOOL extend)
{ {
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L); UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L);
UINT lc = (UINT)EDIT_EM_GetLineCount(wndPtr, e, 0L); UINT lc = (UINT)EDIT_EM_GetLineCount(wndPtr, e, 0L);
UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L); UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L);
@ -1050,8 +1065,8 @@ static void EDIT_MoveDownward(WND *wndPtr, BOOL extend)
*/ */
static void EDIT_MoveEnd(WND *wndPtr, BOOL extend) static void EDIT_MoveEnd(WND *wndPtr, BOOL extend)
{ {
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L); UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L);
UINT ll = (UINT)EDIT_EM_LineLength(wndPtr, e, 0L); UINT ll = (UINT)EDIT_EM_LineLength(wndPtr, e, 0L);
UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L); UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L);
@ -1070,8 +1085,8 @@ static void EDIT_MoveEnd(WND *wndPtr, BOOL extend)
*/ */
static void EDIT_MoveForward(WND *wndPtr, BOOL extend) static void EDIT_MoveForward(WND *wndPtr, BOOL extend)
{ {
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L); UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L);
UINT lc = (UINT)EDIT_EM_GetLineCount(wndPtr, e, 0L); UINT lc = (UINT)EDIT_EM_GetLineCount(wndPtr, e, 0L);
UINT ll = (UINT)EDIT_EM_LineLength(wndPtr, e, 0L); UINT ll = (UINT)EDIT_EM_LineLength(wndPtr, e, 0L);
@ -1097,8 +1112,8 @@ static void EDIT_MoveForward(WND *wndPtr, BOOL extend)
*/ */
static void EDIT_MoveHome(WND *wndPtr, BOOL extend) static void EDIT_MoveHome(WND *wndPtr, BOOL extend)
{ {
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L); UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L);
UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L); UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L);
@ -1116,8 +1131,8 @@ static void EDIT_MoveHome(WND *wndPtr, BOOL extend)
*/ */
static void EDIT_MovePageDown(WND *wndPtr, BOOL extend) static void EDIT_MovePageDown(WND *wndPtr, BOOL extend)
{ {
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L); UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L);
UINT lc = (UINT)EDIT_EM_GetLineCount(wndPtr, e, 0L); UINT lc = (UINT)EDIT_EM_GetLineCount(wndPtr, e, 0L);
UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L); UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L);
@ -1142,8 +1157,8 @@ static void EDIT_MovePageDown(WND *wndPtr, BOOL extend)
*/ */
static void EDIT_MovePageUp(WND *wndPtr, BOOL extend) static void EDIT_MovePageUp(WND *wndPtr, BOOL extend)
{ {
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L); UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L);
UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L); UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L);
INT x; INT x;
@ -1167,8 +1182,8 @@ static void EDIT_MovePageUp(WND *wndPtr, BOOL extend)
*/ */
static void EDIT_MoveUpward(WND *wndPtr, BOOL extend) static void EDIT_MoveUpward(WND *wndPtr, BOOL extend)
{ {
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L); UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L);
UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L); UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L);
INT x; INT x;
@ -1192,8 +1207,8 @@ static void EDIT_MoveUpward(WND *wndPtr, BOOL extend)
*/ */
static void EDIT_MoveWordBackward(WND *wndPtr, BOOL extend) static void EDIT_MoveWordBackward(WND *wndPtr, BOOL extend)
{ {
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L); UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L);
UINT ll = (UINT)EDIT_EM_LineLength(wndPtr, e, 0L); UINT ll = (UINT)EDIT_EM_LineLength(wndPtr, e, 0L);
UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L); UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L);
@ -1222,8 +1237,8 @@ static void EDIT_MoveWordBackward(WND *wndPtr, BOOL extend)
*/ */
static void EDIT_MoveWordForward(WND *wndPtr, BOOL extend) static void EDIT_MoveWordForward(WND *wndPtr, BOOL extend)
{ {
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L); UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L);
UINT lc = (UINT)EDIT_EM_GetLineCount(wndPtr, e, 0L); UINT lc = (UINT)EDIT_EM_GetLineCount(wndPtr, e, 0L);
UINT ll = (UINT)EDIT_EM_LineLength(wndPtr, e, 0L); UINT ll = (UINT)EDIT_EM_LineLength(wndPtr, e, 0L);
@ -1270,8 +1285,8 @@ static void EDIT_PaintLine(WND *wndPtr, HDC32 hdc, UINT line, BOOL rev)
y = EDIT_WndYFromLine(wndPtr, line); y = EDIT_WndYFromLine(wndPtr, line);
li = (UINT)EDIT_EM_LineIndex(wndPtr, line, 0L); li = (UINT)EDIT_EM_LineIndex(wndPtr, line, 0L);
ll = (UINT)EDIT_EM_LineLength(wndPtr, li, 0L); ll = (UINT)EDIT_EM_LineLength(wndPtr, li, 0L);
s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
ORDER_UINT(s, e); ORDER_UINT(s, e);
s = MIN(li + ll, MAX(li, s)); s = MIN(li + ll, MAX(li, s));
e = MIN(li + ll, MAX(li, e)); e = MIN(li + ll, MAX(li, e));
@ -1357,8 +1372,8 @@ static LRESULT EDIT_ReplaceSel(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
const char *str = (char *)lParam; const char *str = (char *)lParam;
int strl = strlen(str); int strl = strlen(str);
UINT tl = (UINT)EDIT_WM_GetTextLength(wndPtr, 0, 0L); UINT tl = (UINT)EDIT_WM_GetTextLength(wndPtr, 0, 0L);
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
int i; int i;
char *p; char *p;
char *text; char *text;
@ -1373,7 +1388,7 @@ static LRESULT EDIT_ReplaceSel(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
EDIT_WM_SetRedraw(wndPtr, FALSE, 0L); EDIT_WM_SetRedraw(wndPtr, FALSE, 0L);
EDIT_WM_Clear(wndPtr, 0, 0L); EDIT_WM_Clear(wndPtr, 0, 0L);
tl = EDIT_WM_GetTextLength(wndPtr, 0, 0L); tl = EDIT_WM_GetTextLength(wndPtr, 0, 0L);
e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
text = EDIT_GetPointer(wndPtr); text = EDIT_GetPointer(wndPtr);
for (p = text + tl ; p >= text + e ; p--) for (p = text + tl ; p >= text + e ; p--)
p[strl] = p[0]; p[strl] = p[0];
@ -1406,7 +1421,7 @@ static LRESULT EDIT_ReplaceSel(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
*/ */
static void EDIT_ScrollIntoView(WND *wndPtr) static void EDIT_ScrollIntoView(WND *wndPtr)
{ {
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L); UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L);
UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L); UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L);
UINT fv = (UINT)EDIT_EM_GetFirstVisibleLine(wndPtr, 0, 0L); UINT fv = (UINT)EDIT_EM_GetFirstVisibleLine(wndPtr, 0, 0L);
@ -1449,7 +1464,7 @@ static INT EDIT_WndXFromCol(WND *wndPtr, UINT line, UINT col)
INT ret; INT ret;
HDC32 hdc; HDC32 hdc;
HFONT16 hFont; HFONT16 hFont;
HFONT16 oldFont = 0; HFONT32 oldFont = 0;
UINT lc = (UINT)EDIT_EM_GetLineCount(wndPtr, 0, 0L); UINT lc = (UINT)EDIT_EM_GetLineCount(wndPtr, 0, 0L);
UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, line, 0L); UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, line, 0L);
UINT ll = (UINT)EDIT_EM_LineLength(wndPtr, li, 0L); UINT ll = (UINT)EDIT_EM_LineLength(wndPtr, li, 0L);
@ -1457,15 +1472,13 @@ static INT EDIT_WndXFromCol(WND *wndPtr, UINT line, UINT col)
hdc = GetDC32(wndPtr->hwndSelf); hdc = GetDC32(wndPtr->hwndSelf);
hFont = (HFONT16)EDIT_WM_GetFont(wndPtr, 0, 0L); hFont = (HFONT16)EDIT_WM_GetFont(wndPtr, 0, 0L);
if (hFont) if (hFont) oldFont = SelectObject32(hdc, hFont);
oldFont = SelectObject(hdc, hFont);
line = MAX(0, MIN(line, lc - 1)); line = MAX(0, MIN(line, lc - 1));
col = MIN(col, ll); col = MIN(col, ll);
ret = LOWORD(GetTabbedTextExtent(hdc, ret = LOWORD(GetTabbedTextExtent(hdc,
text + li, col, text + li, col,
es->NumTabStops, es->TabStops)) - xoff; es->NumTabStops, es->TabStops)) - xoff;
if (hFont) if (hFont) SelectObject32(hdc, oldFont);
SelectObject(hdc, oldFont);
ReleaseDC32(wndPtr->hwndSelf, hdc); ReleaseDC32(wndPtr->hwndSelf, hdc);
free(text); free(text);
return ret; return ret;
@ -1699,12 +1712,17 @@ static LRESULT EDIT_EM_GetRect(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
* *
* EM_GETSEL * EM_GETSEL
* *
* Returns the ordered selection range so that
* LOWORD(result) < HIWORD(result)
*
*/ */
static LRESULT EDIT_EM_GetSel(WND *wndPtr, WPARAM32 wParam, LPARAM lParam) static LRESULT EDIT_EM_GetSel(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{ {
EDITSTATE *es = EDITSTATEPTR(wndPtr); UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
return MAKELONG(es->SelStart, es->SelEnd); ORDER_UINT(s, e);
return MAKELONG(s, e);
} }
@ -1771,7 +1789,7 @@ static LRESULT EDIT_EM_LineFromChar(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
if (!IsMultiLine(wndPtr)) if (!IsMultiLine(wndPtr))
return 0L; return 0L;
if ((INT)wParam == -1) if ((INT)wParam == -1)
wParam = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); wParam = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
l = (UINT)EDIT_EM_GetLineCount(wndPtr, 0, 0L) - 1; l = (UINT)EDIT_EM_GetLineCount(wndPtr, 0, 0L) - 1;
while ((UINT)EDIT_EM_LineIndex(wndPtr, l, 0L) > (UINT)wParam) while ((UINT)EDIT_EM_LineIndex(wndPtr, l, 0L) > (UINT)wParam)
l--; l--;
@ -1792,7 +1810,7 @@ static LRESULT EDIT_EM_LineIndex(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
UINT lc = (UINT)EDIT_EM_GetLineCount(wndPtr, 0, 0L); UINT lc = (UINT)EDIT_EM_GetLineCount(wndPtr, 0, 0L);
if ((INT)wParam == -1) { if ((INT)wParam == -1) {
e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
l = lc - 1; l = lc - 1;
while (es->LineDefs[l].offset > e) while (es->LineDefs[l].offset > e)
l--; l--;
@ -1820,8 +1838,8 @@ static LRESULT EDIT_EM_LineLength(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
if (!IsMultiLine(wndPtr)) if (!IsMultiLine(wndPtr))
return (LRESULT)es->LineDefs[0].length; return (LRESULT)es->LineDefs[0].length;
if ((INT)wParam == -1) { if ((INT)wParam == -1) {
s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
sl = (UINT)EDIT_EM_LineFromChar(wndPtr, s, 0L); sl = (UINT)EDIT_EM_LineFromChar(wndPtr, s, 0L);
el = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L); el = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L);
return (LRESULT)(s - es->LineDefs[sl].offset + return (LRESULT)(s - es->LineDefs[sl].offset +
@ -2013,8 +2031,8 @@ static LRESULT EDIT_EM_SetSel(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
EDITSTATE *es = EDITSTATEPTR(wndPtr); EDITSTATE *es = EDITSTATEPTR(wndPtr);
UINT ns = LOWORD(lParam); UINT ns = LOWORD(lParam);
UINT ne = HIWORD(lParam); UINT ne = HIWORD(lParam);
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT el; UINT el;
UINT eli; UINT eli;
UINT tl = (UINT)EDIT_WM_GetTextLength(wndPtr, 0, 0L); UINT tl = (UINT)EDIT_WM_GetTextLength(wndPtr, 0, 0L);
@ -2148,8 +2166,8 @@ static LRESULT EDIT_WM_Char(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
*/ */
static LRESULT EDIT_WM_Clear(WND *wndPtr, WPARAM32 wParam, LPARAM lParam) static LRESULT EDIT_WM_Clear(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{ {
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
char *text; char *text;
BOOL redraw; BOOL redraw;
@ -2180,8 +2198,8 @@ static LRESULT EDIT_WM_Clear(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
*/ */
static LRESULT EDIT_WM_Copy(WND *wndPtr, WPARAM32 wParam, LPARAM lParam) static LRESULT EDIT_WM_Copy(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{ {
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
HGLOBAL16 hdst; HGLOBAL16 hdst;
char *text; char *text;
char *dst; char *dst;
@ -2317,15 +2335,15 @@ static LRESULT EDIT_WM_Enable(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
*/ */
static LRESULT EDIT_WM_EraseBkGnd(WND *wndPtr, WPARAM32 wParam, LPARAM lParam) static LRESULT EDIT_WM_EraseBkGnd(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{ {
HBRUSH16 hBrush; HBRUSH32 hBrush;
RECT16 rc; RECT16 rc;
hBrush = (HBRUSH16)EDIT_SEND_CTLCOLOR(wndPtr, wParam); hBrush = (HBRUSH16)EDIT_SEND_CTLCOLOR(wndPtr, wParam);
if (!hBrush) if (!hBrush) hBrush = (HBRUSH32)GetStockObject32(WHITE_BRUSH);
hBrush = (HBRUSH16)GetStockObject(WHITE_BRUSH);
GetClientRect16(wndPtr->hwndSelf, &rc); GetClientRect16(wndPtr->hwndSelf, &rc);
IntersectClipRect((HDC16)wParam, rc.left, rc.top, rc.right, rc.bottom); IntersectClipRect16( (HDC16)wParam, rc.left, rc.top,
rc.right, rc.bottom);
GetClipBox16((HDC16)wParam, &rc); GetClipBox16((HDC16)wParam, &rc);
/* /*
* FIXME: specs say that we should UnrealizeObject() the brush, * FIXME: specs say that we should UnrealizeObject() the brush,
@ -2468,8 +2486,8 @@ static LRESULT EDIT_WM_HScroll(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
*/ */
static LRESULT EDIT_WM_KeyDown(WND *wndPtr, WPARAM32 wParam, LPARAM lParam) static LRESULT EDIT_WM_KeyDown(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{ {
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
BOOL shift; BOOL shift;
BOOL control; BOOL control;
@ -2560,8 +2578,8 @@ static LRESULT EDIT_WM_KillFocus(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
DestroyCaret(); DestroyCaret();
if(!(wndPtr->dwStyle & ES_NOHIDESEL)) { if(!(wndPtr->dwStyle & ES_NOHIDESEL)) {
s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
EDIT_InvalidateText(wndPtr, s, e); EDIT_InvalidateText(wndPtr, s, e);
} }
EDIT_NOTIFY_PARENT(wndPtr, EN_KILLFOCUS); EDIT_NOTIFY_PARENT(wndPtr, EN_KILLFOCUS);
@ -2579,7 +2597,7 @@ static LRESULT EDIT_WM_KillFocus(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
static LRESULT EDIT_WM_LButtonDblClk(WND *wndPtr, WPARAM32 wParam, LPARAM lParam) static LRESULT EDIT_WM_LButtonDblClk(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{ {
UINT s; UINT s;
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L); UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L);
UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L); UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L);
UINT ll = (UINT)EDIT_EM_LineLength(wndPtr, e, 0L); UINT ll = (UINT)EDIT_EM_LineLength(wndPtr, e, 0L);
@ -2617,7 +2635,7 @@ static LRESULT EDIT_WM_LButtonDown(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L); li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L);
e = li + c; e = li + c;
if (GetKeyState(VK_SHIFT) & 0x8000) if (GetKeyState(VK_SHIFT) & 0x8000)
s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
else else
s = e; s = e;
EDIT_EM_SetSel(wndPtr, 0, MAKELPARAM(s, e)); EDIT_EM_SetSel(wndPtr, 0, MAKELPARAM(s, e));
@ -2663,7 +2681,7 @@ static LRESULT EDIT_WM_MouseMove(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
l = MIN(fv + vlc - 1, MAX(fv, l)); l = MIN(fv + vlc - 1, MAX(fv, l));
x = MIN(EDIT_GetWndWidth(wndPtr), MAX(0, x)); x = MIN(EDIT_GetWndWidth(wndPtr), MAX(0, x));
c = EDIT_ColFromWndX(wndPtr, l, x); c = EDIT_ColFromWndX(wndPtr, l, x);
s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L); li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L);
EDIT_EM_SetSel(wndPtr, 1, MAKELPARAM(s, li + c)); EDIT_EM_SetSel(wndPtr, 1, MAKELPARAM(s, li + c));
} }
@ -2685,7 +2703,7 @@ static LRESULT EDIT_WM_Paint(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
UINT lc = (UINT)EDIT_EM_GetLineCount(wndPtr, 0, 0L); UINT lc = (UINT)EDIT_EM_GetLineCount(wndPtr, 0, 0L);
HDC16 hdc; HDC16 hdc;
HFONT16 hFont; HFONT16 hFont;
HFONT16 oldFont = 0; HFONT32 oldFont = 0;
RECT16 rc; RECT16 rc;
RECT16 rcLine; RECT16 rcLine;
RECT16 rcRgn; RECT16 rcRgn;
@ -2695,10 +2713,9 @@ static LRESULT EDIT_WM_Paint(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
hdc = BeginPaint16(wndPtr->hwndSelf, &ps); hdc = BeginPaint16(wndPtr->hwndSelf, &ps);
GetClientRect16(wndPtr->hwndSelf, &rc); GetClientRect16(wndPtr->hwndSelf, &rc);
IntersectClipRect(hdc, rc.left, rc.top, rc.right, rc.bottom); IntersectClipRect16( hdc, rc.left, rc.top, rc.right, rc.bottom );
hFont = EDIT_WM_GetFont(wndPtr, 0, 0L); hFont = EDIT_WM_GetFont(wndPtr, 0, 0L);
if (hFont) if (hFont) oldFont = SelectObject32(hdc, hFont);
oldFont = SelectObject(hdc, hFont);
EDIT_SEND_CTLCOLOR(wndPtr, hdc); EDIT_SEND_CTLCOLOR(wndPtr, hdc);
if (!IsWindowEnabled(wndPtr->hwndSelf)) if (!IsWindowEnabled(wndPtr->hwndSelf))
SetTextColor(hdc, GetSysColor(COLOR_GRAYTEXT)); SetTextColor(hdc, GetSysColor(COLOR_GRAYTEXT));
@ -2708,8 +2725,7 @@ static LRESULT EDIT_WM_Paint(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
if (IntersectRect16(&rc, &rcRgn, &rcLine)) if (IntersectRect16(&rc, &rcRgn, &rcLine))
EDIT_PaintLine(wndPtr, hdc, i, rev); EDIT_PaintLine(wndPtr, hdc, i, rev);
} }
if (hFont) if (hFont) SelectObject32(hdc, oldFont);
SelectObject(hdc, oldFont);
EndPaint16(wndPtr->hwndSelf, &ps); EndPaint16(wndPtr->hwndSelf, &ps);
return 0L; return 0L;
} }
@ -2758,8 +2774,8 @@ static LRESULT EDIT_WM_SetCursor(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
*/ */
static LRESULT EDIT_WM_SetFocus(WND *wndPtr, WPARAM32 wParam, LPARAM lParam) static LRESULT EDIT_WM_SetFocus(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{ {
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L)); UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
CreateCaret(wndPtr->hwndSelf, 0, 2, EDIT_GetLineHeight(wndPtr)); CreateCaret(wndPtr->hwndSelf, 0, 2, EDIT_GetLineHeight(wndPtr));
EDIT_EM_SetSel(wndPtr, 1, MAKELPARAM(s, e)); EDIT_EM_SetSel(wndPtr, 1, MAKELPARAM(s, e));
@ -2780,19 +2796,17 @@ static LRESULT EDIT_WM_SetFont(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{ {
TEXTMETRIC16 tm; TEXTMETRIC16 tm;
EDITSTATE *es = EDITSTATEPTR(wndPtr); EDITSTATE *es = EDITSTATEPTR(wndPtr);
LPARAM sel = EDIT_EM_GetSel(wndPtr, 0, 0L); LPARAM sel = EDIT_GetSel(wndPtr, 0, 0L);
HDC32 hdc; HDC32 hdc;
HFONT16 oldFont = 0; HFONT32 oldFont = 0;
es->hFont = (HFONT16)wParam; es->hFont = (HFONT16)wParam;
hdc = GetDC32(wndPtr->hwndSelf); hdc = GetDC32(wndPtr->hwndSelf);
if (es->hFont) if (es->hFont) oldFont = SelectObject32(hdc, es->hFont);
oldFont = SelectObject(hdc, es->hFont);
GetTextMetrics16(hdc, &tm); GetTextMetrics16(hdc, &tm);
es->LineHeight = HIWORD(GetTextExtent(hdc, "X", 1)); es->LineHeight = HIWORD(GetTextExtent(hdc, "X", 1));
es->AveCharWidth = tm.tmAveCharWidth; es->AveCharWidth = tm.tmAveCharWidth;
if (es->hFont) if (es->hFont) SelectObject32(hdc, oldFont);
SelectObject(hdc, oldFont);
ReleaseDC32(wndPtr->hwndSelf, hdc); ReleaseDC32(wndPtr->hwndSelf, hdc);
EDIT_BuildLineDefs(wndPtr); EDIT_BuildLineDefs(wndPtr);
if ((BOOL)lParam && EDIT_GetRedraw(wndPtr)) if ((BOOL)lParam && EDIT_GetRedraw(wndPtr))

View File

@ -74,7 +74,7 @@ void CreateListBoxStruct(HWND hwnd, WORD CtlType, LONG styles, HWND parent)
lphl->bRedrawFlag = TRUE; lphl->bRedrawFlag = TRUE;
lphl->iNumStops = 0; lphl->iNumStops = 0;
lphl->TabStops = NULL; lphl->TabStops = NULL;
lphl->hFont = GetStockObject(SYSTEM_FONT); lphl->hFont = GetStockObject32(SYSTEM_FONT);
lphl->hSelf = hwnd; lphl->hSelf = hwnd;
if (CtlType==ODT_COMBOBOX) /* use the "faked" style for COMBOLBOX */ if (CtlType==ODT_COMBOBOX) /* use the "faked" style for COMBOLBOX */
/* LBS_SORT instead CBS_SORT e.g. */ /* LBS_SORT instead CBS_SORT e.g. */
@ -227,7 +227,7 @@ void ListBoxDrawItem(HWND hwnd, LPHEADLIST lphl, HDC16 hdc, LPLISTSTRUCT lpls,
if (itemState != 0) { if (itemState != 0) {
dwOldTextColor = SetTextColor(hdc, 0x00FFFFFFL); dwOldTextColor = SetTextColor(hdc, 0x00FFFFFFL);
FillRect16(hdc, rect, GetStockObject(BLACK_BRUSH)); FillRect16(hdc, rect, GetStockObject32(BLACK_BRUSH));
} }
if (lphl->dwStyle & LBS_USETABSTOPS) { if (lphl->dwStyle & LBS_USETABSTOPS) {
@ -783,7 +783,8 @@ LONG ListBoxDirectory(LPHEADLIST lphl, UINT attrib, LPCSTR filespec)
skip = ret = 0; skip = ret = 0;
attrib &= ~FA_LABEL; attrib &= ~FA_LABEL;
while ((count = DOSFS_FindNext( path, mask, 0, attrib, skip, &entry )) > 0) while ((count = DOSFS_FindNext( path, mask, NULL, 0,
attrib, skip, &entry )) > 0)
{ {
skip += count; skip += count;
if (entry.attr & FA_DIRECTORY) if (entry.attr & FA_DIRECTORY)
@ -1407,7 +1408,7 @@ static LONG LBSetFont(HWND hwnd, WPARAM16 wParam, LPARAM lParam)
HDC32 hdc; HDC32 hdc;
if (wParam == 0) if (wParam == 0)
lphl->hFont = GetStockObject(SYSTEM_FONT); lphl->hFont = GetStockObject32(SYSTEM_FONT);
else else
lphl->hFont = (HFONT16)wParam; lphl->hFont = (HFONT16)wParam;
@ -1436,7 +1437,7 @@ static LONG LBPaint(HWND hwnd, WORD wParam, LONG lParam)
LPLISTSTRUCT lpls; LPLISTSTRUCT lpls;
PAINTSTRUCT16 ps; PAINTSTRUCT16 ps;
HBRUSH16 hBrush; HBRUSH16 hBrush;
HFONT16 hOldFont; HFONT32 hOldFont;
HDC16 hdc = BeginPaint16( hwnd, &ps ); HDC16 hdc = BeginPaint16( hwnd, &ps );
DC *dc = (DC *)GDI_GetObjPtr(hdc, DC_MAGIC); DC *dc = (DC *)GDI_GetObjPtr(hdc, DC_MAGIC);
RECT16 rect, paintRect, scratchRect; RECT16 rect, paintRect, scratchRect;
@ -1453,11 +1454,11 @@ static LONG LBPaint(HWND hwnd, WORD wParam, LONG lParam)
GetClientRect16(hwnd, &rect); GetClientRect16(hwnd, &rect);
IntersectRect16(&paintRect,&rect,&paintRect); IntersectRect16(&paintRect,&rect,&paintRect);
hOldFont = SelectObject(hdc, lphl->hFont); hOldFont = SelectObject32(hdc, lphl->hFont);
hBrush = (HBRUSH16)SendMessage32A( lphl->hParent, WM_CTLCOLORLISTBOX, hBrush = (HBRUSH16)SendMessage32A( lphl->hParent, WM_CTLCOLORLISTBOX,
(WPARAM32)hdc, (LPARAM)hwnd); (WPARAM32)hdc, (LPARAM)hwnd);
if (hBrush == 0) hBrush = GetStockObject(WHITE_BRUSH); if (hBrush == 0) hBrush = GetStockObject32(WHITE_BRUSH);
FillRect16(hdc, &rect, hBrush); FillRect16(hdc, &rect, hBrush);
@ -1520,7 +1521,7 @@ static LONG LBPaint(HWND hwnd, WORD wParam, LONG lParam)
lpls = lpls->lpNext; lpls = lpls->lpNext;
} }
ListBoxUpdateWindow(hwnd,lphl,FALSE); ListBoxUpdateWindow(hwnd,lphl,FALSE);
SelectObject(hdc,hOldFont); SelectObject32(hdc,hOldFont);
EndPaint16( hwnd, &ps ); EndPaint16( hwnd, &ps );
return 0; return 0;
} }
@ -1537,14 +1538,14 @@ static LONG LBSetFocus(HWND hwnd, WORD wParam, LONG lParam)
if( lphl->ItemsCount && lphl->ItemFocused != -1) if( lphl->ItemsCount && lphl->ItemFocused != -1)
{ {
HDC32 hDC = GetDC32(hwnd); HDC32 hDC = GetDC32(hwnd);
HFONT16 hOldFont = SelectObject(hDC, lphl->hFont); HFONT32 hOldFont = SelectObject32(hDC, lphl->hFont);
LPLISTSTRUCT lpls; LPLISTSTRUCT lpls;
lpls = ListBoxGetItem(lphl,lphl->ItemFocused); lpls = ListBoxGetItem(lphl,lphl->ItemFocused);
lpls->itemState |= ODS_FOCUS; lpls->itemState |= ODS_FOCUS;
ListBoxDrawItem(hwnd,lphl,hDC,lpls,&lpls->itemRect, ODA_FOCUS, lpls->itemState); ListBoxDrawItem(hwnd,lphl,hDC,lpls,&lpls->itemRect, ODA_FOCUS, lpls->itemState);
SelectObject(hDC, hOldFont); SelectObject32(hDC, hOldFont);
ReleaseDC32(hwnd,hDC); ReleaseDC32(hwnd,hDC);
} }
@ -1567,14 +1568,14 @@ static LONG LBKillFocus(HWND hwnd, WORD wParam, LONG lParam)
if( lphl->ItemFocused != -1 ) if( lphl->ItemFocused != -1 )
{ {
HDC32 hDC = GetDC32(hwnd); HDC32 hDC = GetDC32(hwnd);
HFONT16 hOldFont = SelectObject(hDC, lphl->hFont); HFONT32 hOldFont = SelectObject32(hDC, lphl->hFont);
LPLISTSTRUCT lpls; LPLISTSTRUCT lpls;
lpls = ListBoxGetItem(lphl,lphl->ItemFocused); lpls = ListBoxGetItem(lphl,lphl->ItemFocused);
lpls->itemState &= ~ODS_FOCUS; lpls->itemState &= ~ODS_FOCUS;
ListBoxDrawItem(hwnd,lphl,hDC,lpls,&lpls->itemRect, ODA_FOCUS, lpls->itemState); ListBoxDrawItem(hwnd,lphl,hDC,lpls,&lpls->itemRect, ODA_FOCUS, lpls->itemState);
SelectObject(hDC, hOldFont); SelectObject32(hDC, hOldFont);
ReleaseDC32(hwnd,hDC); ReleaseDC32(hwnd,hDC);
} }
else else

View File

@ -591,15 +591,15 @@ static void MENU_DrawMenuItem( HWND hwnd, HDC32 hdc, MENUITEM *lpitem,
if (!menuBar && (lpitem->item_flags & MF_MENUBARBREAK)) if (!menuBar && (lpitem->item_flags & MF_MENUBARBREAK))
{ {
SelectObject( hdc, sysColorObjects.hpenWindowFrame ); SelectObject32( hdc, sysColorObjects.hpenWindowFrame );
MoveTo( hdc, rect.left, 0 ); MoveTo( hdc, rect.left, 0 );
LineTo( hdc, rect.left, height ); LineTo32( hdc, rect.left, height );
} }
if (lpitem->item_flags & MF_SEPARATOR) if (lpitem->item_flags & MF_SEPARATOR)
{ {
SelectObject( hdc, sysColorObjects.hpenWindowFrame ); SelectObject32( hdc, sysColorObjects.hpenWindowFrame );
MoveTo( hdc, rect.left, rect.top + SEPARATOR_HEIGHT/2 ); MoveTo( hdc, rect.left, rect.top + SEPARATOR_HEIGHT/2 );
LineTo( hdc, rect.right, rect.top + SEPARATOR_HEIGHT/2 ); LineTo32( hdc, rect.right, rect.top + SEPARATOR_HEIGHT/2 );
return; return;
} }
@ -741,9 +741,9 @@ UINT MENU_DrawMenuBar( HDC32 hDC, LPRECT16 lprect, HWND hwnd,
if (suppress_draw) return lppop->Height; if (suppress_draw) return lppop->Height;
FillRect16(hDC, lprect, sysColorObjects.hbrushMenu ); FillRect16(hDC, lprect, sysColorObjects.hbrushMenu );
SelectObject( hDC, sysColorObjects.hpenWindowFrame ); SelectObject32( hDC, sysColorObjects.hpenWindowFrame );
MoveTo( hDC, lprect->left, lprect->bottom ); MoveTo( hDC, lprect->left, lprect->bottom );
LineTo( hDC, lprect->right, lprect->bottom ); LineTo32( hDC, lprect->right, lprect->bottom );
if (lppop->nItems == 0) return SYSMETRICS_CYMENU; if (lppop->nItems == 0) return SYSMETRICS_CYMENU;
for (i = 0; i < lppop->nItems; i++) for (i = 0; i < lppop->nItems; i++)

View File

@ -312,7 +312,7 @@ static void SCROLL_DrawArrows( HDC32 hdc, SCROLLBAR_INFO *infoPtr,
BOOL32 top_pressed, BOOL32 bottom_pressed ) BOOL32 top_pressed, BOOL32 bottom_pressed )
{ {
HDC32 hdcMem = CreateCompatibleDC( hdc ); HDC32 hdcMem = CreateCompatibleDC( hdc );
HBITMAP32 hbmpPrev = SelectObject( hdcMem, vertical ? HBITMAP32 hbmpPrev = SelectObject32( hdcMem, vertical ?
TOP_ARROW(infoPtr->flags, top_pressed) TOP_ARROW(infoPtr->flags, top_pressed)
: LEFT_ARROW(infoPtr->flags, top_pressed)); : LEFT_ARROW(infoPtr->flags, top_pressed));
SetStretchBltMode( hdc, STRETCH_DELETESCANS ); SetStretchBltMode( hdc, STRETCH_DELETESCANS );
@ -323,9 +323,9 @@ static void SCROLL_DrawArrows( HDC32 hdc, SCROLLBAR_INFO *infoPtr,
SYSMETRICS_CXVSCROLL + 1, SYSMETRICS_CYHSCROLL + 1, SYSMETRICS_CXVSCROLL + 1, SYSMETRICS_CYHSCROLL + 1,
SRCCOPY ); SRCCOPY );
SelectObject( hdcMem, vertical ? SelectObject32( hdcMem, vertical ?
BOTTOM_ARROW( infoPtr->flags, bottom_pressed ) BOTTOM_ARROW( infoPtr->flags, bottom_pressed )
: RIGHT_ARROW( infoPtr->flags, bottom_pressed ) ); : RIGHT_ARROW( infoPtr->flags, bottom_pressed ) );
if (vertical) if (vertical)
StretchBlt( hdc, rect->left, rect->bottom - arrowSize - 1, StretchBlt( hdc, rect->left, rect->bottom - arrowSize - 1,
rect->right - rect->left, arrowSize + 1, rect->right - rect->left, arrowSize + 1,
@ -338,7 +338,7 @@ static void SCROLL_DrawArrows( HDC32 hdc, SCROLLBAR_INFO *infoPtr,
hdcMem, 0, 0, hdcMem, 0, 0,
SYSMETRICS_CXVSCROLL + 1, SYSMETRICS_CYHSCROLL + 1, SYSMETRICS_CXVSCROLL + 1, SYSMETRICS_CYHSCROLL + 1,
SRCCOPY ); SRCCOPY );
SelectObject( hdcMem, hbmpPrev ); SelectObject32( hdcMem, hbmpPrev );
DeleteDC( hdcMem ); DeleteDC( hdcMem );
} }
@ -389,11 +389,11 @@ static void SCROLL_DrawInterior( HWND32 hwnd, HDC32 hdc, INT32 nBar,
/* Select the correct brush and pen */ /* Select the correct brush and pen */
SelectObject( hdc, sysColorObjects.hpenWindowFrame ); SelectObject32( hdc, sysColorObjects.hpenWindowFrame );
if ((flags & ESB_DISABLE_BOTH) == ESB_DISABLE_BOTH) if ((flags & ESB_DISABLE_BOTH) == ESB_DISABLE_BOTH)
{ {
/* This ought to be the color of the parent window */ /* This ought to be the color of the parent window */
SelectObject( hdc, sysColorObjects.hbrushWindow ); SelectObject32( hdc, sysColorObjects.hbrushWindow );
} }
else else
{ {
@ -401,9 +401,9 @@ static void SCROLL_DrawInterior( HWND32 hwnd, HDC32 hdc, INT32 nBar,
{ {
HBRUSH32 hbrush = SendMessage32A(GetParent32(hwnd), HBRUSH32 hbrush = SendMessage32A(GetParent32(hwnd),
WM_CTLCOLORSCROLLBAR, hdc, hwnd ); WM_CTLCOLORSCROLLBAR, hdc, hwnd );
SelectObject( hdc, hbrush ); SelectObject32( hdc, hbrush );
} }
else SelectObject( hdc, sysColorObjects.hbrushScrollbar ); else SelectObject32( hdc, sysColorObjects.hbrushScrollbar );
} }
/* Calculate the scroll rectangle */ /* Calculate the scroll rectangle */
@ -423,10 +423,10 @@ static void SCROLL_DrawInterior( HWND32 hwnd, HDC32 hdc, INT32 nBar,
/* Draw the scroll bar frame */ /* Draw the scroll bar frame */
MoveTo( hdc, r.left, r.top ); MoveTo( hdc, r.left, r.top );
LineTo( hdc, r.right-1, r.top ); LineTo32( hdc, r.right-1, r.top );
LineTo( hdc, r.right-1, r.bottom-1 ); LineTo32( hdc, r.right-1, r.bottom-1 );
LineTo( hdc, r.left, r.bottom-1 ); LineTo32( hdc, r.left, r.bottom-1 );
LineTo( hdc, r.left, r.top ); LineTo32( hdc, r.left, r.top );
/* Draw the scroll rectangles and thumb */ /* Draw the scroll rectangles and thumb */
@ -466,8 +466,8 @@ static void SCROLL_DrawInterior( HWND32 hwnd, HDC32 hdc, INT32 nBar,
/* Draw the thumb */ /* Draw the thumb */
SelectObject( hdc, sysColorObjects.hbrushBtnFace ); SelectObject32( hdc, sysColorObjects.hbrushBtnFace );
Rectangle( hdc, r.left, r.top, r.right, r.bottom ); Rectangle32( hdc, r.left, r.top, r.right, r.bottom );
InflateRect32( &r, -1, -1 ); InflateRect32( &r, -1, -1 );
GRAPH_DrawReliefRect( hdc, &r, 1, 2, FALSE ); GRAPH_DrawReliefRect( hdc, &r, 1, 2, FALSE );
if (SCROLL_MovingThumb && if (SCROLL_MovingThumb &&

View File

@ -220,10 +220,10 @@ static void STATIC_PaintTextfn( WND *wndPtr, HDC32 hdc )
if (style & SS_NOPREFIX) if (style & SS_NOPREFIX)
wFormat |= DT_NOPREFIX; wFormat |= DT_NOPREFIX;
if (infoPtr->hFont) SelectObject( hdc, infoPtr->hFont ); if (infoPtr->hFont) SelectObject32( hdc, infoPtr->hFont );
hBrush = SendMessage32A( GetParent32(wndPtr->hwndSelf), WM_CTLCOLORSTATIC, hBrush = SendMessage32A( GetParent32(wndPtr->hwndSelf), WM_CTLCOLORSTATIC,
hdc, wndPtr->hwndSelf ); hdc, wndPtr->hwndSelf );
if (!hBrush) hBrush = GetStockObject(WHITE_BRUSH); if (!hBrush) hBrush = GetStockObject32(WHITE_BRUSH);
FillRect16(hdc, &rc, hBrush); FillRect16(hdc, &rc, hBrush);
if (wndPtr->text) DrawText16( hdc, wndPtr->text, -1, &rc, wFormat ); if (wndPtr->text) DrawText16( hdc, wndPtr->text, -1, &rc, wFormat );
} }
@ -231,40 +231,40 @@ static void STATIC_PaintTextfn( WND *wndPtr, HDC32 hdc )
static void STATIC_PaintRectfn( WND *wndPtr, HDC32 hdc ) static void STATIC_PaintRectfn( WND *wndPtr, HDC32 hdc )
{ {
RECT16 rc; RECT16 rc;
HBRUSH16 hBrush; HBRUSH32 hBrush;
GetClientRect16( wndPtr->hwndSelf, &rc); GetClientRect16( wndPtr->hwndSelf, &rc);
switch (wndPtr->dwStyle & 0x0f) switch (wndPtr->dwStyle & 0x0f)
{ {
case SS_BLACKRECT: case SS_BLACKRECT:
hBrush = CreateSolidBrush(color_windowframe); hBrush = CreateSolidBrush32(color_windowframe);
FillRect16( hdc, &rc, hBrush ); FillRect16( hdc, &rc, hBrush );
break; break;
case SS_GRAYRECT: case SS_GRAYRECT:
hBrush = CreateSolidBrush(color_background); hBrush = CreateSolidBrush32(color_background);
FillRect16( hdc, &rc, hBrush ); FillRect16( hdc, &rc, hBrush );
break; break;
case SS_WHITERECT: case SS_WHITERECT:
hBrush = CreateSolidBrush(color_window); hBrush = CreateSolidBrush32(color_window);
FillRect16( hdc, &rc, hBrush ); FillRect16( hdc, &rc, hBrush );
break; break;
case SS_BLACKFRAME: case SS_BLACKFRAME:
hBrush = CreateSolidBrush(color_windowframe); hBrush = CreateSolidBrush32(color_windowframe);
FrameRect16( hdc, &rc, hBrush ); FrameRect16( hdc, &rc, hBrush );
break; break;
case SS_GRAYFRAME: case SS_GRAYFRAME:
hBrush = CreateSolidBrush(color_background); hBrush = CreateSolidBrush32(color_background);
FrameRect16( hdc, &rc, hBrush ); FrameRect16( hdc, &rc, hBrush );
break; break;
case SS_WHITEFRAME: case SS_WHITEFRAME:
hBrush = CreateSolidBrush(color_window); hBrush = CreateSolidBrush32(color_window);
FrameRect16( hdc, &rc, hBrush ); FrameRect16( hdc, &rc, hBrush );
break; break;
default: default:
return; return;
} }
DeleteObject( hBrush ); DeleteObject32( hBrush );
} }

View File

@ -49,19 +49,19 @@ void DrawStatusText32A( HDC32 hdc, LPRECT32 lprc, LPCSTR text, UINT32 style )
if (style == 0 || if (style == 0 ||
style == SBT_POPOUT) { style == SBT_POPOUT) {
InflateRect32(&r, -1, -1); InflateRect32(&r, -1, -1);
SelectObject(hdc, sysColorObjects.hbrushScrollbar); SelectObject32(hdc, sysColorObjects.hbrushScrollbar);
Rectangle(hdc, r.left, r.top, r.right, r.bottom); Rectangle32(hdc, r.left, r.top, r.right, r.bottom);
/* draw border */ /* draw border */
SelectObject(hdc, sysColorObjects.hpenWindowFrame); SelectObject32(hdc, sysColorObjects.hpenWindowFrame);
if (style == 0) if (style == 0)
DrawEdge32(hdc, &r, EDGE_SUNKEN, BF_RECT); DrawEdge32(hdc, &r, EDGE_SUNKEN, BF_RECT);
else else
DrawEdge32(hdc, &r, EDGE_RAISED, BF_RECT); DrawEdge32(hdc, &r, EDGE_RAISED, BF_RECT);
} }
else if (style == SBT_NOBORDERS) { else if (style == SBT_NOBORDERS) {
SelectObject(hdc, sysColorObjects.hbrushScrollbar); SelectObject32(hdc, sysColorObjects.hbrushScrollbar);
Rectangle(hdc, r.left, r.top, r.right, r.bottom); Rectangle32(hdc, r.left, r.top, r.right, r.bottom);
} }
else { /* fixme for SBT_OWNERDRAW, SBT_RTLREADING */ else { /* fixme for SBT_OWNERDRAW, SBT_RTLREADING */
@ -69,7 +69,7 @@ void DrawStatusText32A( HDC32 hdc, LPRECT32 lprc, LPCSTR text, UINT32 style )
/* now draw text */ /* now draw text */
if ((style != SBT_OWNERDRAW) && text) { if ((style != SBT_OWNERDRAW) && text) {
SelectObject(hdc, sysColorObjects.hpenWindowText); SelectObject32(hdc, sysColorObjects.hpenWindowText);
oldbkmode = SetBkMode(hdc, TRANSPARENT); oldbkmode = SetBkMode(hdc, TRANSPARENT);
rt = r; rt = r;
rt.left += 3; rt.left += 3;

View File

@ -1,4 +1,4 @@
/* /* -*-C-*-
* Lexical scanner for command line parsing * Lexical scanner for command line parsing
* *
* Copyright 1993 Eric Youngdale * Copyright 1993 Eric Youngdale
@ -26,6 +26,8 @@ void flush_symbols();
#endif /* DONT_USE_READLINE */ #endif /* DONT_USE_READLINE */
#define YY_NO_UNPUT
static int syntax_error; static int syntax_error;
%} %}

View File

@ -7,6 +7,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
#include <errno.h>
#include "windows.h" #include "windows.h"
#include "dos_fs.h" #include "dos_fs.h"

View File

@ -244,11 +244,11 @@ const char *DOSFS_ToDosDTAFormat( const char *name )
/*********************************************************************** /***********************************************************************
* DOSFS_Match * DOSFS_MatchShort
* *
* Check a DOS file name against a mask (both in FCB format). * Check a DOS file name against a mask (both in FCB format).
*/ */
int DOSFS_Match( const char *mask, const char *name ) static int DOSFS_MatchShort( const char *mask, const char *name )
{ {
int i; int i;
for (i = 11; i > 0; i--, mask++, name++) for (i = 11; i > 0; i--, mask++, name++)
@ -257,6 +257,40 @@ int DOSFS_Match( const char *mask, const char *name )
} }
/***********************************************************************
* DOSFS_MatchLong
*
* Check a long file name against a mask.
*/
static int DOSFS_MatchLong( const char *mask, const char *name,
int case_sensitive )
{
while (*name && *mask)
{
if (*mask == '*')
{
mask++;
while (*mask == '*') mask++; /* Skip consecutive '*' */
if (!*mask) return 1;
if (case_sensitive) while (*name && (*name != *mask)) name++;
else while (*name && (toupper(*name) != toupper(*mask))) name++;
if (!*name) return 0;
}
else if (*mask != '?')
{
if (case_sensitive)
{
if (*mask != *name) return 0;
}
else if (toupper(*mask) != toupper(*name)) return 0;
}
mask++;
name++;
}
return (!*name && !*mask);
}
/*********************************************************************** /***********************************************************************
* DOSFS_ToDosDateTime * DOSFS_ToDosDateTime
* *
@ -273,6 +307,31 @@ void DOSFS_ToDosDateTime( time_t unixtime, WORD *pDate, WORD *pTime )
} }
/***********************************************************************
* DOSFS_UnixTimeToFileTime
*
* Convert a Unix time to FILETIME format.
*/
void DOSFS_UnixTimeToFileTime( time_t unixtime, FILETIME *filetime )
{
/* FIXME :-) */
filetime->dwLowDateTime = unixtime;
filetime->dwHighDateTime = 0;
}
/***********************************************************************
* DOSFS_FileTimeToUnixTime
*
* Convert a FILETIME format to Unix time.
*/
time_t DOSFS_FileTimeToUnixTime( FILETIME *filetime )
{
/* FIXME :-) */
return filetime->dwLowDateTime;
}
/*********************************************************************** /***********************************************************************
* DOSFS_Hash * DOSFS_Hash
* *
@ -665,9 +724,12 @@ const char * DOSFS_GetDosTrueName( const char *name, int unix_format )
* *
* Find the next matching file. Return the number of entries read to find * Find the next matching file. Return the number of entries read to find
* the matching one, or 0 if no more entries. * the matching one, or 0 if no more entries.
* 'short_mask' is the 8.3 mask (in FCB format), 'long_mask' is the long
* file name mask. Either or both can be NULL.
*/ */
int DOSFS_FindNext( const char *path, const char *mask, int drive, int DOSFS_FindNext( const char *path, const char *short_mask,
BYTE attr, int skip, DOS_DIRENT *entry ) const char *long_mask, int drive, BYTE attr,
int skip, DOS_DIRENT *entry )
{ {
static DIR *dir = NULL; static DIR *dir = NULL;
struct dirent *dirent; struct dirent *dirent;
@ -714,20 +776,38 @@ int DOSFS_FindNext( const char *path, const char *mask, int drive,
p = buffer + strlen(buffer); p = buffer + strlen(buffer);
attr |= FA_UNUSED | FA_ARCHIVE | FA_RDONLY; attr |= FA_UNUSED | FA_ARCHIVE | FA_RDONLY;
flags = DRIVE_GetFlags( drive ); flags = DRIVE_GetFlags( drive );
hash_name = NULL;
while ((dirent = readdir( dir )) != NULL) while ((dirent = readdir( dir )) != NULL)
{ {
if (skip-- > 0) continue; if (skip-- > 0) continue;
count++; count++;
hash_name = DOSFS_Hash( dirent->d_name, TRUE,
!(flags & DRIVE_CASE_SENSITIVE) );
if (!DOSFS_Match( mask, hash_name )) continue;
/* Don't return '.' and '..' in the root of the drive */ /* Don't return '.' and '..' in the root of the drive */
if (drive_root && (dirent->d_name[0] == '.') && if (drive_root && (dirent->d_name[0] == '.') &&
(!dirent->d_name[1] || (!dirent->d_name[1] ||
((dirent->d_name[1] == '.') && !dirent->d_name[2]))) continue; ((dirent->d_name[1] == '.') && !dirent->d_name[2]))) continue;
lstrcpyn32A( p, dirent->d_name, sizeof(buffer) - (int)(p - buffer) );
/* Check the long mask */
if (long_mask)
{
if (!DOSFS_MatchLong( long_mask, dirent->d_name,
flags & DRIVE_CASE_SENSITIVE )) continue;
}
/* Check the short mask */
if (short_mask)
{
hash_name = DOSFS_Hash( dirent->d_name, TRUE,
!(flags & DRIVE_CASE_SENSITIVE) );
if (!DOSFS_MatchShort( short_mask, hash_name )) continue;
}
/* Check the file attributes */
lstrcpyn32A( p, dirent->d_name, sizeof(buffer) - (int)(p - buffer) );
if (!FILE_Stat( buffer, &entry->attr, &entry->size, if (!FILE_Stat( buffer, &entry->attr, &entry->size,
&entry->date, &entry->time )) &entry->date, &entry->time ))
{ {
@ -735,6 +815,12 @@ int DOSFS_FindNext( const char *path, const char *mask, int drive,
continue; continue;
} }
if (entry->attr & ~attr) continue; if (entry->attr & ~attr) continue;
/* We now have a matching entry; fill the result and return */
if (!hash_name)
hash_name = DOSFS_Hash( dirent->d_name, TRUE,
!(flags & DRIVE_CASE_SENSITIVE) );
strcpy( entry->name, hash_name ); strcpy( entry->name, hash_name );
lstrcpyn32A( entry->unixname, dirent->d_name, sizeof(entry->unixname)); lstrcpyn32A( entry->unixname, dirent->d_name, sizeof(entry->unixname));
if (!(flags & DRIVE_CASE_PRESERVING)) AnsiLower( entry->unixname ); if (!(flags & DRIVE_CASE_PRESERVING)) AnsiLower( entry->unixname );
@ -778,6 +864,7 @@ DWORD GetShortPathName32W( LPCWSTR longpath, LPWSTR shortpath, DWORD shortlen )
return strlen(dostruename); return strlen(dostruename);
} }
/*********************************************************************** /***********************************************************************
* GetFullPathNameA (KERNEL32.272) * GetFullPathNameA (KERNEL32.272)
*/ */

View File

@ -658,7 +658,7 @@ BOOL32 WIN16DRV_CreateDC( DC *dc, LPCSTR driver, LPCSTR device, LPCSTR output,
/* Add this to the DC */ /* Add this to the DC */
dc->w.devCaps = printerDevCaps; dc->w.devCaps = printerDevCaps;
dc->w.hVisRgn = CreateRectRgn(0, 0, dc->w.devCaps->horzRes, dc->w.devCaps->vertRes); dc->w.hVisRgn = CreateRectRgn32(0, 0, dc->w.devCaps->horzRes, dc->w.devCaps->vertRes);
dc->w.bitsPerPixel = dc->w.devCaps->bitsPixel; dc->w.bitsPerPixel = dc->w.devCaps->bitsPixel;
printf("Got devcaps width %d height %d bits %d planes %d\n", printf("Got devcaps width %d height %d bits %d planes %d\n",

View File

@ -114,15 +114,15 @@ static BOOL32 X11DRV_CreateDC( DC *dc, LPCSTR driver, LPCSTR device,
physDev->drawable = bmp->pixmap; physDev->drawable = bmp->pixmap;
physDev->gc = XCreateGC( display, physDev->drawable, 0, NULL ); physDev->gc = XCreateGC( display, physDev->drawable, 0, NULL );
dc->w.bitsPerPixel = bmp->bitmap.bmBitsPixel; dc->w.bitsPerPixel = bmp->bitmap.bmBitsPixel;
dc->w.hVisRgn = CreateRectRgn( 0, 0, bmp->bitmap.bmWidth, dc->w.hVisRgn = CreateRectRgn32( 0, 0, bmp->bitmap.bmWidth,
bmp->bitmap.bmHeight ); bmp->bitmap.bmHeight );
} }
else else
{ {
physDev->drawable = rootWindow; physDev->drawable = rootWindow;
physDev->gc = XCreateGC( display, physDev->drawable, 0, NULL ); physDev->gc = XCreateGC( display, physDev->drawable, 0, NULL );
dc->w.bitsPerPixel = screenDepth; dc->w.bitsPerPixel = screenDepth;
dc->w.hVisRgn = CreateRectRgn( 0, 0, screenWidth, screenHeight ); dc->w.hVisRgn = CreateRectRgn32( 0, 0, screenWidth, screenHeight);
} }
if (!dc->w.hVisRgn) if (!dc->w.hVisRgn)

View File

@ -20,24 +20,23 @@ heap 65488 # 65536 - 16 (instance data) - 32 (stock objects)
16 pascal ScaleWindowExt(word s_word s_word s_word s_word) ScaleWindowExt 16 pascal ScaleWindowExt(word s_word s_word s_word s_word) ScaleWindowExt
17 pascal OffsetViewportOrg(word s_word s_word) OffsetViewportOrg 17 pascal OffsetViewportOrg(word s_word s_word) OffsetViewportOrg
18 pascal ScaleViewportExt(word s_word s_word s_word s_word) ScaleViewportExt 18 pascal ScaleViewportExt(word s_word s_word s_word s_word) ScaleViewportExt
19 pascal16 LineTo(word s_word s_word) LineTo 19 pascal16 LineTo(word s_word s_word) LineTo16
20 pascal MoveTo(word s_word s_word) MoveTo 20 pascal MoveTo(word s_word s_word) MoveTo
21 pascal16 ExcludeClipRect(word s_word s_word s_word s_word) ExcludeClipRect 21 pascal16 ExcludeClipRect(word s_word s_word s_word s_word) ExcludeClipRect16
22 pascal16 IntersectClipRect(word s_word s_word s_word s_word) 22 pascal16 IntersectClipRect(word s_word s_word s_word s_word) IntersectClipRect16
IntersectClipRect
23 pascal16 Arc(word s_word s_word s_word s_word s_word s_word s_word s_word) 23 pascal16 Arc(word s_word s_word s_word s_word s_word s_word s_word s_word)
Arc Arc16
24 pascal16 Ellipse(word s_word s_word s_word s_word) Ellipse 24 pascal16 Ellipse(word s_word s_word s_word s_word) Ellipse16
25 pascal16 FloodFill(word s_word s_word long) FloodFill 25 pascal16 FloodFill(word s_word s_word long) FloodFill16
26 pascal16 Pie(word s_word s_word s_word s_word s_word s_word s_word s_word) 26 pascal16 Pie(word s_word s_word s_word s_word s_word s_word s_word s_word)
Pie Pie16
27 pascal16 Rectangle(word s_word s_word s_word s_word) Rectangle 27 pascal16 Rectangle(word s_word s_word s_word s_word) Rectangle16
28 pascal16 RoundRect(word s_word s_word s_word s_word s_word s_word) 28 pascal16 RoundRect(word s_word s_word s_word s_word s_word s_word)
RoundRect RoundRect16
29 pascal16 PatBlt(word s_word s_word s_word s_word long) PatBlt 29 pascal16 PatBlt(word s_word s_word s_word s_word long) PatBlt
30 pascal16 SaveDC(word) SaveDC 30 pascal16 SaveDC(word) SaveDC
31 pascal SetPixel(word s_word s_word long) SetPixel 31 pascal SetPixel(word s_word s_word long) SetPixel16
32 pascal16 OffsetClipRgn(word s_word s_word) OffsetClipRgn 32 pascal16 OffsetClipRgn(word s_word s_word) OffsetClipRgn16
33 pascal16 TextOut(word s_word s_word ptr word) TextOut16 33 pascal16 TextOut(word s_word s_word ptr word) TextOut16
34 pascal16 BitBlt( word s_word s_word s_word s_word word s_word s_word long) 34 pascal16 BitBlt( word s_word s_word s_word s_word word s_word s_word long)
BitBlt BitBlt
@ -47,39 +46,39 @@ heap 65488 # 65536 - 16 (instance data) - 32 (stock objects)
37 pascal16 Polyline (word ptr word) Polyline16 37 pascal16 Polyline (word ptr word) Polyline16
38 pascal Escape(word word word segptr segptr) Escape 38 pascal Escape(word word word segptr segptr) Escape
39 pascal16 RestoreDC(word s_word) RestoreDC 39 pascal16 RestoreDC(word s_word) RestoreDC
40 pascal16 FillRgn(word word word) FillRgn 40 pascal16 FillRgn(word word word) FillRgn16
41 pascal16 FrameRgn(word word word word word) FrameRgn 41 pascal16 FrameRgn(word word word word word) FrameRgn16
42 pascal16 InvertRgn(word word) InvertRgn 42 pascal16 InvertRgn(word word) InvertRgn16
43 pascal16 PaintRgn(word word) PaintRgn 43 pascal16 PaintRgn(word word) PaintRgn16
44 pascal16 SelectClipRgn(word word) SelectClipRgn 44 pascal16 SelectClipRgn(word word) SelectClipRgn16
45 pascal16 SelectObject(word word) SelectObject 45 pascal16 SelectObject(word word) SelectObject16
#46 pascal __GP? #46 pascal __GP?
47 pascal16 CombineRgn(word word word s_word) CombineRgn 47 pascal16 CombineRgn(word word word s_word) CombineRgn16
48 pascal16 CreateBitmap(word word word word ptr) CreateBitmap 48 pascal16 CreateBitmap(word word word word ptr) CreateBitmap
49 pascal16 CreateBitmapIndirect(ptr) CreateBitmapIndirect16 49 pascal16 CreateBitmapIndirect(ptr) CreateBitmapIndirect16
50 pascal16 CreateBrushIndirect(ptr) CreateBrushIndirect 50 pascal16 CreateBrushIndirect(ptr) CreateBrushIndirect16
51 pascal16 CreateCompatibleBitmap(word word word) CreateCompatibleBitmap 51 pascal16 CreateCompatibleBitmap(word word word) CreateCompatibleBitmap
52 pascal16 CreateCompatibleDC(word) CreateCompatibleDC 52 pascal16 CreateCompatibleDC(word) CreateCompatibleDC
53 pascal16 CreateDC(ptr ptr ptr ptr) CreateDC 53 pascal16 CreateDC(ptr ptr ptr ptr) CreateDC
54 pascal16 CreateEllipticRgn(s_word s_word s_word s_word) CreateEllipticRgn 54 pascal16 CreateEllipticRgn(s_word s_word s_word s_word) CreateEllipticRgn16
55 pascal16 CreateEllipticRgnIndirect(ptr) CreateEllipticRgnIndirect16 55 pascal16 CreateEllipticRgnIndirect(ptr) CreateEllipticRgnIndirect16
56 pascal16 CreateFont(s_word s_word s_word s_word s_word word word word 56 pascal16 CreateFont(s_word s_word s_word s_word s_word word word word
word word word word word ptr) CreateFont16 word word word word word ptr) CreateFont16
57 pascal16 CreateFontIndirect(ptr) CreateFontIndirect16 57 pascal16 CreateFontIndirect(ptr) CreateFontIndirect16
58 pascal16 CreateHatchBrush(word long) CreateHatchBrush 58 pascal16 CreateHatchBrush(word long) CreateHatchBrush16
60 pascal16 CreatePatternBrush(word) CreatePatternBrush 60 pascal16 CreatePatternBrush(word) CreatePatternBrush16
61 pascal16 CreatePen(s_word s_word long) CreatePen 61 pascal16 CreatePen(s_word s_word long) CreatePen16
62 pascal16 CreatePenIndirect(ptr) CreatePenIndirect 62 pascal16 CreatePenIndirect(ptr) CreatePenIndirect16
63 pascal16 CreatePolygonRgn(ptr word word) CreatePolygonRgn16 63 pascal16 CreatePolygonRgn(ptr word word) CreatePolygonRgn16
64 pascal16 CreateRectRgn(s_word s_word s_word s_word) CreateRectRgn 64 pascal16 CreateRectRgn(s_word s_word s_word s_word) CreateRectRgn16
65 pascal16 CreateRectRgnIndirect(ptr) CreateRectRgnIndirect16 65 pascal16 CreateRectRgnIndirect(ptr) CreateRectRgnIndirect16
66 pascal16 CreateSolidBrush(long) CreateSolidBrush 66 pascal16 CreateSolidBrush(long) CreateSolidBrush16
67 pascal16 DPtoLP(word ptr s_word) DPtoLP16 67 pascal16 DPtoLP(word ptr s_word) DPtoLP16
68 pascal16 DeleteDC(word) DeleteDC 68 pascal16 DeleteDC(word) DeleteDC
69 pascal16 DeleteObject(word) DeleteObject 69 pascal16 DeleteObject(word) DeleteObject16
70 pascal16 EnumFonts(word ptr segptr long) THUNK_EnumFonts16 70 pascal16 EnumFonts(word ptr segptr long) THUNK_EnumFonts16
71 pascal16 EnumObjects(word word segptr long) THUNK_EnumObjects16 71 pascal16 EnumObjects(word word segptr long) THUNK_EnumObjects16
72 pascal16 EqualRgn(word word) EqualRgn 72 pascal16 EqualRgn(word word) EqualRgn16
73 pascal16 ExcludeVisRect(word s_word s_word s_word s_word) ExcludeVisRect 73 pascal16 ExcludeVisRect(word s_word s_word s_word s_word) ExcludeVisRect
74 pascal GetBitmapBits(word long ptr) GetBitmapBits 74 pascal GetBitmapBits(word long ptr) GetBitmapBits
75 pascal GetBkColor(word) GetBkColor 75 pascal GetBkColor(word) GetBkColor
@ -90,11 +89,11 @@ heap 65488 # 65536 - 16 (instance data) - 32 (stock objects)
80 pascal16 GetDeviceCaps(word s_word) GetDeviceCaps 80 pascal16 GetDeviceCaps(word s_word) GetDeviceCaps
81 pascal16 GetMapMode(word) GetMapMode 81 pascal16 GetMapMode(word) GetMapMode
82 pascal16 GetObject(word s_word ptr) GetObject16 82 pascal16 GetObject(word s_word ptr) GetObject16
83 pascal GetPixel(word s_word s_word) GetPixel 83 pascal GetPixel(word s_word s_word) GetPixel16
84 pascal16 GetPolyFillMode(word) GetPolyFillMode 84 pascal16 GetPolyFillMode(word) GetPolyFillMode
85 pascal16 GetROP2(word) GetROP2 85 pascal16 GetROP2(word) GetROP2
86 pascal16 GetRelAbs(word) GetRelAbs 86 pascal16 GetRelAbs(word) GetRelAbs
87 pascal16 GetStockObject(word) GetStockObject 87 pascal16 GetStockObject(word) GetStockObject16
88 pascal16 GetStretchBltMode(word) GetStretchBltMode 88 pascal16 GetStretchBltMode(word) GetStretchBltMode
89 pascal16 GetTextCharacterExtra(word) GetTextCharacterExtra 89 pascal16 GetTextCharacterExtra(word) GetTextCharacterExtra
90 pascal GetTextColor(word) GetTextColor 90 pascal GetTextColor(word) GetTextColor
@ -109,9 +108,9 @@ heap 65488 # 65536 - 16 (instance data) - 32 (stock objects)
IntersectVisRect IntersectVisRect
99 pascal16 LPtoDP(word ptr s_word) LPtoDP16 99 pascal16 LPtoDP(word ptr s_word) LPtoDP16
100 pascal16 LineDDA(s_word s_word s_word s_word segptr long) THUNK_LineDDA16 100 pascal16 LineDDA(s_word s_word s_word s_word segptr long) THUNK_LineDDA16
101 pascal16 OffsetRgn(word s_word s_word) OffsetRgn 101 pascal16 OffsetRgn(word s_word s_word) OffsetRgn16
102 pascal16 OffsetVisRgn(word s_word s_word) OffsetVisRgn 102 pascal16 OffsetVisRgn(word s_word s_word) OffsetVisRgn
103 pascal16 PtVisible(word s_word s_word) PtVisible 103 pascal16 PtVisible(word s_word s_word) PtVisible16
104 pascal16 RectVisibleOld(word ptr) RectVisible16 104 pascal16 RectVisibleOld(word ptr) RectVisible16
105 pascal16 SelectVisRgn(word word) SelectVisRgn 105 pascal16 SelectVisRgn(word word) SelectVisRgn
106 pascal SetBitmapBits(word long ptr) SetBitmapBits 106 pascal SetBitmapBits(word long ptr) SetBitmapBits
@ -135,7 +134,7 @@ heap 65488 # 65536 - 16 (instance data) - 32 (stock objects)
136 pascal16 RemoveFontResource(ptr) RemoveFontResource 136 pascal16 RemoveFontResource(ptr) RemoveFontResource
148 pascal SetBrushOrg(word s_word s_word) SetBrushOrg 148 pascal SetBrushOrg(word s_word s_word) SetBrushOrg
149 pascal GetBrushOrg(word) GetBrushOrg 149 pascal GetBrushOrg(word) GetBrushOrg
150 pascal16 UnrealizeObject(word) UnrealizeObject 150 pascal16 UnrealizeObject(word) UnrealizeObject16
151 pascal16 CopyMetaFile(word ptr) CopyMetaFile 151 pascal16 CopyMetaFile(word ptr) CopyMetaFile
153 pascal16 CreateIC(ptr ptr ptr ptr) CreateIC 153 pascal16 CreateIC(ptr ptr ptr ptr) CreateIC
154 pascal GetNearestColor(word long) GetNearestColor 154 pascal GetNearestColor(word long) GetNearestColor
@ -144,7 +143,7 @@ heap 65488 # 65536 - 16 (instance data) - 32 (stock objects)
158 pascal16 EnumCallback(ptr ptr word long) WineEnumDFontCallback 158 pascal16 EnumCallback(ptr ptr word long) WineEnumDFontCallback
159 pascal16 GetMetaFileBits(word) GetMetaFileBits 159 pascal16 GetMetaFileBits(word) GetMetaFileBits
160 pascal16 SetMetaFileBits(word) SetMetaFileBits 160 pascal16 SetMetaFileBits(word) SetMetaFileBits
161 pascal16 PtInRegion(word s_word s_word) PtInRegion 161 pascal16 PtInRegion(word s_word s_word) PtInRegion16
162 pascal GetBitmapDimension(word) GetBitmapDimension 162 pascal GetBitmapDimension(word) GetBitmapDimension
163 pascal SetBitmapDimension(word s_word s_word) SetBitmapDimension 163 pascal SetBitmapDimension(word s_word s_word) SetBitmapDimension
169 stub IsDCDirty 169 stub IsDCDirty
@ -233,7 +232,7 @@ heap 65488 # 65536 - 16 (instance data) - 32 (stock objects)
345 pascal16 GetTextAlign(word) GetTextAlign 345 pascal16 GetTextAlign(word) GetTextAlign
346 pascal16 SetTextAlign(word word) SetTextAlign 346 pascal16 SetTextAlign(word word) SetTextAlign
348 pascal16 Chord(word s_word s_word s_word s_word s_word s_word 348 pascal16 Chord(word s_word s_word s_word s_word s_word s_word
s_word s_word) Chord s_word s_word) Chord16
349 pascal SetMapperFlags(word long) SetMapperFlags 349 pascal SetMapperFlags(word long) SetMapperFlags
350 pascal16 GetCharWidth(word word word ptr) GetCharWidth 350 pascal16 GetCharWidth(word word word ptr) GetCharWidth
351 pascal16 ExtTextOut(word s_word s_word word ptr ptr word ptr) ExtTextOut16 351 pascal16 ExtTextOut(word s_word s_word word ptr ptr word ptr) ExtTextOut16
@ -251,7 +250,7 @@ heap 65488 # 65536 - 16 (instance data) - 32 (stock objects)
367 pascal16 AnimatePalette(word word word ptr) AnimatePalette 367 pascal16 AnimatePalette(word word word ptr) AnimatePalette
368 pascal16 ResizePalette(word word) ResizePalette 368 pascal16 ResizePalette(word word) ResizePalette
370 pascal16 GetNearestPaletteIndex(word long) GetNearestPaletteIndex 370 pascal16 GetNearestPaletteIndex(word long) GetNearestPaletteIndex
372 pascal16 ExtFloodFill(word s_word s_word long word) ExtFloodFill 372 pascal16 ExtFloodFill(word s_word s_word long word) ExtFloodFill16
373 pascal16 SetSystemPaletteUse(word word) SetSystemPaletteUse 373 pascal16 SetSystemPaletteUse(word word) SetSystemPaletteUse
374 pascal16 GetSystemPaletteUse(word) GetSystemPaletteUse 374 pascal16 GetSystemPaletteUse(word) GetSystemPaletteUse
375 pascal16 GetSystemPaletteEntries(word word word ptr) 375 pascal16 GetSystemPaletteEntries(word word word ptr)
@ -281,8 +280,8 @@ heap 65488 # 65536 - 16 (instance data) - 32 (stock objects)
443 pascal16 SetDIBitsToDevice(word s_word s_word word word word word 443 pascal16 SetDIBitsToDevice(word s_word s_word word word word word
word word ptr ptr word) SetDIBitsToDevice word word ptr ptr word) SetDIBitsToDevice
444 pascal16 CreateRoundRectRgn(s_word s_word s_word s_word s_word s_word) 444 pascal16 CreateRoundRectRgn(s_word s_word s_word s_word s_word s_word)
CreateRoundRectRgn CreateRoundRectRgn16
445 pascal16 CreateDIBPatternBrush(word word) CreateDIBPatternBrush 445 pascal16 CreateDIBPatternBrush(word word) CreateDIBPatternBrush16
449 stub DEVICECOLORMATCH 449 stub DEVICECOLORMATCH
450 pascal16 PolyPolygon(word ptr ptr word) PolyPolygon16 450 pascal16 PolyPolygon(word ptr ptr word) PolyPolygon16
451 pascal16 CreatePolyPolygonRgn(ptr ptr word word) CreatePolyPolygonRgn16 451 pascal16 CreatePolyPolygonRgn(ptr ptr word word) CreatePolyPolygonRgn16

View File

@ -9,19 +9,19 @@ base 1
0004 stub AddFontResourceW 0004 stub AddFontResourceW
0005 stub AngleArc 0005 stub AngleArc
0006 stub AnimatePalette 0006 stub AnimatePalette
0007 stub Arc 0007 stdcall Arc(long long long long long long long long long) Arc32
0008 stub ArcTo 0008 stub ArcTo
0009 stub BeginPath 0009 stub BeginPath
0010 stdcall BitBlt(long long long long long long long long long) BitBlt 0010 stdcall BitBlt(long long long long long long long long long) BitBlt
0011 stub CancelDC 0011 stub CancelDC
0012 stub CheckColorsInGamut 0012 stub CheckColorsInGamut
0013 stub ChoosePixelFormat 0013 stub ChoosePixelFormat
0014 stub Chord 0014 stdcall Chord(long long long long long long long long long) Chord32
0015 stub CloseEnhMetaFile 0015 stub CloseEnhMetaFile
0016 stub CloseFigure 0016 stub CloseFigure
0017 stub CloseMetaFile 0017 stub CloseMetaFile
0018 stub ColorMatchToTarget 0018 stub ColorMatchToTarget
0019 stdcall CombineRgn(long long long long) CombineRgn 0019 stdcall CombineRgn(long long long long) CombineRgn32
0020 stub CombineTransform 0020 stub CombineTransform
0021 stub CopyEnhMetaFileA 0021 stub CopyEnhMetaFileA
0022 stub CopyEnhMetaFileW 0022 stub CopyEnhMetaFileW
@ -29,19 +29,19 @@ base 1
0024 stub CopyMetaFileW 0024 stub CopyMetaFileW
0025 stdcall CreateBitmap(long long long long ptr) CreateBitmap 0025 stdcall CreateBitmap(long long long long ptr) CreateBitmap
0026 stdcall CreateBitmapIndirect(ptr) CreateBitmapIndirect32 0026 stdcall CreateBitmapIndirect(ptr) CreateBitmapIndirect32
0027 stub CreateBrushIndirect 0027 stdcall CreateBrushIndirect(ptr) CreateBrushIndirect32
0028 stub CreateColorSpaceA 0028 stub CreateColorSpaceA
0029 stub CreateColorSpaceW 0029 stub CreateColorSpaceW
0030 stdcall CreateCompatibleBitmap(long long long) CreateCompatibleBitmap 0030 stdcall CreateCompatibleBitmap(long long long) CreateCompatibleBitmap
0031 stdcall CreateCompatibleDC(long) CreateCompatibleDC 0031 stdcall CreateCompatibleDC(long) CreateCompatibleDC
0032 stub CreateDCA 0032 stub CreateDCA
0033 stub CreateDCW 0033 stub CreateDCW
0034 stdcall CreateDIBPatternBrush(long long) CreateDIBPatternBrush 0034 stdcall CreateDIBPatternBrush(long long) CreateDIBPatternBrush32
0035 stub CreateDIBPatternBrushPt 0035 stub CreateDIBPatternBrushPt
0036 stub CreateDIBSection 0036 stub CreateDIBSection
0037 stdcall CreateDIBitmap(long ptr long ptr ptr long) CreateDIBitmap 0037 stdcall CreateDIBitmap(long ptr long ptr ptr long) CreateDIBitmap
0038 stdcall CreateDiscardableBitmap(long long long) CreateDiscardableBitmap 0038 stdcall CreateDiscardableBitmap(long long long) CreateDiscardableBitmap
0039 stdcall CreateEllipticRgn(long long long long) CreateEllipticRgn 0039 stdcall CreateEllipticRgn(long long long long) CreateEllipticRgn32
0040 stdcall CreateEllipticRgnIndirect(ptr) CreateEllipticRgnIndirect32 0040 stdcall CreateEllipticRgnIndirect(ptr) CreateEllipticRgnIndirect32
0041 stub CreateEnhMetaFileA 0041 stub CreateEnhMetaFileA
0042 stub CreateEnhMetaFileW 0042 stub CreateEnhMetaFileW
@ -52,34 +52,35 @@ base 1
0046 stdcall CreateFontW(long long long long long long long long 0046 stdcall CreateFontW(long long long long long long long long
long long long long long ptr) CreateFont32W long long long long long ptr) CreateFont32W
0047 stub CreateHalftonePalette 0047 stub CreateHalftonePalette
0048 stub CreateHatchBrush 0048 stdcall CreateHatchBrush(long long) CreateHatchBrush32
0049 stdcall CreateICA(ptr ptr ptr ptr) CreateIC 0049 stdcall CreateICA(ptr ptr ptr ptr) CreateIC
0050 stub CreateICW 0050 stub CreateICW
0051 stub CreateMetaFileA 0051 stub CreateMetaFileA
0052 stub CreateMetaFileW 0052 stub CreateMetaFileW
0053 stdcall CreatePalette(ptr) CreatePalette 0053 stdcall CreatePalette(ptr) CreatePalette
0054 stdcall CreatePatternBrush(long) CreatePatternBrush 0054 stdcall CreatePatternBrush(long) CreatePatternBrush32
0055 stdcall CreatePen(long long long) CreatePen 0055 stdcall CreatePen(long long long) CreatePen32
0056 stub CreatePenIndirect 0056 stdcall CreatePenIndirect(ptr) CreatePenIndirect32
0057 stub CreatePolyPolygonRgn 0057 stub CreatePolyPolygonRgn
0058 stub CreatePolygonRgn 0058 stub CreatePolygonRgn
0059 stdcall CreateRectRgn(long long long long) CreateRectRgn 0059 stdcall CreateRectRgn(long long long long) CreateRectRgn32
0060 stdcall CreateRectRgnIndirect(ptr) CreateRectRgnIndirect32 0060 stdcall CreateRectRgnIndirect(ptr) CreateRectRgnIndirect32
0061 stdcall CreateRoundRectRgn(long long long long long long) CreateRoundRectRgn 0061 stdcall CreateRoundRectRgn(long long long long long long)
CreateRoundRectRgn32
0062 stub CreateScalableFontResourceA 0062 stub CreateScalableFontResourceA
0063 stub CreateScalableFontResourceW 0063 stub CreateScalableFontResourceW
0064 stdcall CreateSolidBrush(long) CreateSolidBrush 0064 stdcall CreateSolidBrush(long) CreateSolidBrush32
0065 stdcall DPtoLP(long ptr long) DPtoLP32 0065 stdcall DPtoLP(long ptr long) DPtoLP32
0066 stub DeleteColorSpace 0066 stub DeleteColorSpace
0067 stdcall DeleteDC(long) DeleteDC 0067 stdcall DeleteDC(long) DeleteDC
0068 stub DeleteEnhMetaFile 0068 stub DeleteEnhMetaFile
0069 stub DeleteMetaFile 0069 stub DeleteMetaFile
0070 stdcall DeleteObject(long) DeleteObject 0070 stdcall DeleteObject(long) DeleteObject32
0071 stub DescribePixelFormat 0071 stub DescribePixelFormat
0072 stub DeviceCapabilitiesExA 0072 stub DeviceCapabilitiesExA
0073 stub DeviceCapabilitiesExW 0073 stub DeviceCapabilitiesExW
0074 stub DrawEscape 0074 stub DrawEscape
0075 stub Ellipse 0075 stdcall Ellipse(long long long long long) Ellipse32
0076 stub EndDoc 0076 stub EndDoc
0077 stub EndPage 0077 stub EndPage
0078 stub EndPath 0078 stub EndPath
@ -93,23 +94,23 @@ base 1
0086 stub EnumICMProfilesA 0086 stub EnumICMProfilesA
0087 stub EnumICMProfilesW 0087 stub EnumICMProfilesW
0088 stub EnumMetaFile 0088 stub EnumMetaFile
0089 stub EnumObjects 0089 stdcall EnumObjects(long long ptr long) EnumObjects32
0090 stdcall EqualRgn(long long) EqualRgn 0090 stdcall EqualRgn(long long) EqualRgn32
0091 stub Escape 0091 stub Escape
0092 stub ExcludeClipRect 0092 stdcall ExcludeClipRect(long long long long long) ExcludeClipRect32
0093 stub ExtCreatePen 0093 stub ExtCreatePen
0094 stub ExtCreateRegion 0094 stub ExtCreateRegion
0095 stub ExtEscape 0095 stub ExtEscape
0096 stdcall ExtFloodFill(long long long long long) ExtFloodFill 0096 stdcall ExtFloodFill(long long long long long) ExtFloodFill32
0097 stub ExtSelectClipRgn 0097 stub ExtSelectClipRgn
0098 stdcall ExtTextOutA(long long long long ptr ptr long ptr) ExtTextOut32A 0098 stdcall ExtTextOutA(long long long long ptr ptr long ptr) ExtTextOut32A
0099 stdcall ExtTextOutW(long long long long ptr ptr long ptr) ExtTextOut32W 0099 stdcall ExtTextOutW(long long long long ptr ptr long ptr) ExtTextOut32W
0100 stub FillPath 0100 stub FillPath
0101 stub FillRgn 0101 stdcall FillRgn(long long long) FillRgn32
0102 stub FixBrushOrgEx 0102 stub FixBrushOrgEx
0103 stub FlattenPath 0103 stub FlattenPath
0104 stdcall FloodFill(long long long long) FloodFill 0104 stdcall FloodFill(long long long long) FloodFill32
0105 stub FrameRgn 0105 stdcall FrameRgn(long long long long long) FrameRgn32
0106 stub FreeImageColorMatcher 0106 stub FreeImageColorMatcher
0107 stub GdiAssociateObject 0107 stub GdiAssociateObject
0108 stub GdiCleanCacheDC 0108 stub GdiCleanCacheDC
@ -215,7 +216,7 @@ base 1
0208 stub GetOutlineTextMetricsW 0208 stub GetOutlineTextMetricsW
0209 stdcall GetPaletteEntries(long long long ptr) GetPaletteEntries 0209 stdcall GetPaletteEntries(long long long ptr) GetPaletteEntries
0210 stub GetPath 0210 stub GetPath
0211 stdcall GetPixel(long long long) GetPixel 0211 stdcall GetPixel(long long long) GetPixel32
0212 stub GetPixelFormat 0212 stub GetPixelFormat
0213 stub GetPolyFillMode 0213 stub GetPolyFillMode
0214 stub GetROP2 0214 stub GetROP2
@ -224,7 +225,7 @@ base 1
0217 stub GetRegionData 0217 stub GetRegionData
0218 stub GetRelAbs 0218 stub GetRelAbs
0219 stdcall GetRgnBox(long ptr) GetRgnBox32 0219 stdcall GetRgnBox(long ptr) GetRgnBox32
0220 stdcall GetStockObject(long) GetStockObject 0220 stdcall GetStockObject(long) GetStockObject32
0221 stub GetStretchBltMode 0221 stub GetStretchBltMode
0222 stdcall GetSystemPaletteEntries(long long long ptr) GetSystemPaletteEntries 0222 stdcall GetSystemPaletteEntries(long long long ptr) GetSystemPaletteEntries
0223 stub GetSystemPaletteUse 0223 stub GetSystemPaletteUse
@ -249,24 +250,24 @@ base 1
0242 stub GetWindowExtEx 0242 stub GetWindowExtEx
0243 stub GetWindowOrgEx 0243 stub GetWindowOrgEx
0244 stub GetWorldTransform 0244 stub GetWorldTransform
0245 stub IntersectClipRect 0245 stdcall IntersectClipRect(long long long long long) IntersectClipRect32
0246 stdcall InvertRgn(long long) InvertRgn 0246 stdcall InvertRgn(long long) InvertRgn32
0247 stdcall LPtoDP(long ptr long) LPtoDP32 0247 stdcall LPtoDP(long ptr long) LPtoDP32
0248 stdcall LineDDA(long long long long ptr long) THUNK_LineDDA32 0248 stdcall LineDDA(long long long long ptr long) THUNK_LineDDA32
0249 stdcall LineTo(long long long) LineTo 0249 stdcall LineTo(long long long) LineTo32
0250 stub LoadImageColorMatcherA 0250 stub LoadImageColorMatcherA
0251 stub LoadImageColorMatcherW 0251 stub LoadImageColorMatcherW
0252 stub MaskBlt 0252 stub MaskBlt
0253 stub ModifyWorldTransform 0253 stub ModifyWorldTransform
0254 stdcall MoveToEx(long long long ptr) MoveToEx32 0254 stdcall MoveToEx(long long long ptr) MoveToEx32
0255 stub OffsetClipRgn 0255 stdcall OffsetClipRgn(long long long) OffsetClipRgn32
0256 stdcall OffsetRgn(long long long) OffsetRgn 0256 stdcall OffsetRgn(long long long) OffsetRgn32
0257 stdcall OffsetViewportOrgEx(long long long ptr) OffsetViewportOrgEx32 0257 stdcall OffsetViewportOrgEx(long long long ptr) OffsetViewportOrgEx32
0258 stdcall OffsetWindowOrgEx(long long long ptr) OffsetWindowOrgEx32 0258 stdcall OffsetWindowOrgEx(long long long ptr) OffsetWindowOrgEx32
0259 stub PaintRgn 0259 stdcall PaintRgn(long long) PaintRgn32
0260 stdcall PatBlt(long long long long long long) PatBlt 0260 stdcall PatBlt(long long long long long long) PatBlt
0261 stub PathToRegion 0261 stub PathToRegion
0262 stub Pie 0262 stdcall Pie(long long long long long long long long long) Pie32
0263 stub PlayEnhMetaFile 0263 stub PlayEnhMetaFile
0264 stub PlayEnhMetaFileRecord 0264 stub PlayEnhMetaFileRecord
0265 stub PlayMetaFile 0265 stub PlayMetaFile
@ -282,12 +283,12 @@ base 1
0275 stub Polygon 0275 stub Polygon
0276 stub Polyline 0276 stub Polyline
0277 stub PolylineTo 0277 stub PolylineTo
0278 stdcall PtInRegion(long long long) PtInRegion 0278 stdcall PtInRegion(long long long) PtInRegion32
0279 stdcall PtVisible(long long long) PtVisible 0279 stdcall PtVisible(long long long) PtVisible32
0280 stdcall RealizePalette(long) RealizePalette 0280 stdcall RealizePalette(long) RealizePalette
0281 stdcall RectInRegion(long ptr) RectInRegion32 0281 stdcall RectInRegion(long ptr) RectInRegion32
0282 stdcall RectVisible(long ptr) RectVisible32 0282 stdcall RectVisible(long ptr) RectVisible32
0283 stdcall Rectangle(long long long long long) Rectangle 0283 stdcall Rectangle(long long long long long) Rectangle32
0284 stub RemoveFontResourceA 0284 stub RemoveFontResourceA
0285 stub RemoveFontResourceTracking 0285 stub RemoveFontResourceTracking
0286 stub RemoveFontResourceW 0286 stub RemoveFontResourceW
@ -295,15 +296,15 @@ base 1
0288 stub ResetDCW 0288 stub ResetDCW
0289 stub ResizePalette 0289 stub ResizePalette
0290 stdcall RestoreDC(long long) RestoreDC 0290 stdcall RestoreDC(long long) RestoreDC
0291 stub RoundRect 0291 stdcall RoundRect(long long long long long long long) RoundRect32
0292 stdcall SaveDC(long) SaveDC 0292 stdcall SaveDC(long) SaveDC
0293 stdcall ScaleViewportExtEx(long long long long long ptr) ScaleViewportExtEx32 0293 stdcall ScaleViewportExtEx(long long long long long ptr) ScaleViewportExtEx32
0294 stdcall ScaleWindowExtEx(long long long long long ptr) ScaleWindowExtEx32 0294 stdcall ScaleWindowExtEx(long long long long long ptr) ScaleWindowExtEx32
0295 stub SelectBrushLocal 0295 stub SelectBrushLocal
0296 stub SelectClipPath 0296 stub SelectClipPath
0297 stdcall SelectClipRgn(long long) SelectClipRgn 0297 stdcall SelectClipRgn(long long) SelectClipRgn32
0298 stub SelectFontLocal 0298 stub SelectFontLocal
0299 stdcall SelectObject(long long) SelectObject 0299 stdcall SelectObject(long long) SelectObject32
0300 stdcall SelectPalette(long long long) SelectPalette 0300 stdcall SelectPalette(long long long) SelectPalette
0301 stub SetAbortProc 0301 stub SetAbortProc
0302 stub SetArcDirection 0302 stub SetArcDirection
@ -332,7 +333,7 @@ base 1
0324 stub SetMetaRgn 0324 stub SetMetaRgn
0325 stub SetMiterLimit 0325 stub SetMiterLimit
0326 stub SetPaletteEntries 0326 stub SetPaletteEntries
0327 stdcall SetPixel(long long long long) SetPixel 0327 stdcall SetPixel(long long long long) SetPixel32
0328 stub SetPixelFormat 0328 stub SetPixelFormat
0329 stub SetPixelV 0329 stub SetPixelV
0330 stub SetPolyFillMode 0330 stub SetPolyFillMode
@ -364,7 +365,7 @@ base 1
0355 stdcall TextOutA(long long long ptr long) TextOut32A 0355 stdcall TextOutA(long long long ptr long) TextOut32A
0356 stdcall TextOutW(long long long ptr long) TextOut32W 0356 stdcall TextOutW(long long long ptr long) TextOut32W
0357 stub UnloadNetworkFonts 0357 stub UnloadNetworkFonts
0358 stdcall UnrealizeObject(long) UnrealizeObject 0358 stdcall UnrealizeObject(long) UnrealizeObject32
0359 stub UpdateColors 0359 stub UpdateColors
0360 stub WidenPath 0360 stub WidenPath
0361 stub pstackConnect 0361 stub pstackConnect

View File

@ -95,7 +95,18 @@ INT16 THUNK_EnumObjects16( HDC16 hdc, INT16 nObjType,
GOBJENUMPROC16 func, LPARAM lParam ) GOBJENUMPROC16 func, LPARAM lParam )
{ {
DECL_THUNK( thunk, func, CallTo16_word_ll ); DECL_THUNK( thunk, func, CallTo16_word_ll );
return EnumObjects( hdc, nObjType, (GOBJENUMPROC16)&thunk, lParam ); return EnumObjects16( hdc, nObjType, (GOBJENUMPROC16)&thunk, lParam );
}
/***********************************************************************
* THUNK_EnumObjects32 (GDI32.89)
*/
INT32 THUNK_EnumObjects32( HDC32 hdc, INT32 nObjType,
GOBJENUMPROC32 func, LPARAM lParam )
{
DECL_THUNK( thunk, func, CallTo32_4 );
return EnumObjects32( hdc, nObjType, (GOBJENUMPROC32)&thunk, lParam );
} }
@ -302,9 +313,11 @@ FARPROC16 THUNK_SetWindowsHook16( INT16 id, HOOKPROC16 proc )
*/ */
BOOL16 THUNK_UnhookWindowsHook16( INT16 id, HOOKPROC16 proc ) BOOL16 THUNK_UnhookWindowsHook16( INT16 id, HOOKPROC16 proc )
{ {
BOOL16 ret = FALSE; BOOL16 ret;
THUNK *thunk = THUNK_Find( (FARPROC16)proc ); THUNK *thunk = THUNK_Find( (FARPROC16)proc );
if (thunk) ret = UnhookWindowsHook16( id, (HOOKPROC16)thunk ); if (!thunk) return FALSE;
ret = UnhookWindowsHook16( id, (HOOKPROC16)thunk );
THUNK_Free( thunk );
return ret; return ret;
} }

View File

@ -284,7 +284,7 @@ heap 65520
278 pascal16 GetDesktopHwnd() GetDesktopHwnd 278 pascal16 GetDesktopHwnd() GetDesktopHwnd
279 stub OldSetDeskPattern 279 stub OldSetDeskPattern
280 stub SetSystemMenu 280 stub SetSystemMenu
281 pascal16 GetSysColorBrush(word) GetSysColorBrush 281 pascal16 GetSysColorBrush(word) GetSysColorBrush16
282 pascal16 SelectPalette(word word word) SelectPalette 282 pascal16 SelectPalette(word word word) SelectPalette
283 pascal16 RealizePalette(word) RealizePalette 283 pascal16 RealizePalette(word) RealizePalette
284 pascal16 GetFreeSystemResources(word) GetFreeSystemResources 284 pascal16 GetFreeSystemResources(word) GetFreeSystemResources

View File

@ -293,7 +293,7 @@ base 1
0286 return GetShellWindow 0 0 0286 return GetShellWindow 0 0
0287 stdcall GetSubMenu(long long) GetSubMenu 0287 stdcall GetSubMenu(long long) GetSubMenu
0288 stdcall GetSysColor(long) GetSysColor 0288 stdcall GetSysColor(long) GetSysColor
0289 stdcall GetSysColorBrush(long) GetSysColorBrush 0289 stdcall GetSysColorBrush(long) GetSysColorBrush32
0290 stdcall GetSystemMenu(long long) GetSystemMenu 0290 stdcall GetSystemMenu(long long) GetSystemMenu
0291 stdcall GetSystemMetrics(long) GetSystemMetrics 0291 stdcall GetSystemMetrics(long) GetSystemMetrics
0292 stub GetTabbedTextExtentA 0292 stub GetTabbedTextExtentA

View File

@ -21,7 +21,6 @@ type win16
21 pascal AboutDlgProc(word word word long) AboutDlgProc 21 pascal AboutDlgProc(word word word long) AboutDlgProc
22 pascal ComboLBoxWndProc(word word word long) ComboLBoxWndProc 22 pascal ComboLBoxWndProc(word word word long) ComboLBoxWndProc
24 pascal16 TASK_Reschedule() TASK_Reschedule 24 pascal16 TASK_Reschedule() TASK_Reschedule
26 register Win32CallToStart() PE_Win32CallToStart
27 pascal EntryAddrProc(word word) MODULE_GetEntryPoint 27 pascal EntryAddrProc(word word) MODULE_GetEntryPoint
28 pascal MyAlloc(word word word) MODULE_AllocateSegment 28 pascal MyAlloc(word word word) MODULE_AllocateSegment
30 pascal FormatCharDlgProc(word word word long) FormatCharDlgProc 30 pascal FormatCharDlgProc(word word word long) FormatCharDlgProc
@ -288,9 +287,9 @@ type win16
# VxDs. The first Vxd is at 400 # VxDs. The first Vxd is at 400
# #
#400+VXD_ID register <VxD handler>(word) <VxD handler> #400+VXD_ID register <VxD handler>() <VxD handler>
# #
414 register VXD_Comm(word) VXD_Comm 414 register VXD_Comm() VXD_Comm
#415 register VXD_Printer(word) VXD_Printer #415 register VXD_Printer() VXD_Printer
423 register VXD_Shell(word) VXD_Shell 423 register VXD_Shell() VXD_Shell
433 register VXD_PageFile(word) VXD_PageFile 433 register VXD_PageFile() VXD_PageFile

View File

@ -13,12 +13,13 @@
typedef struct typedef struct
{ {
GDIOBJHDR header; GDIOBJHDR header;
LOGBRUSH16 logbrush; LOGBRUSH32 logbrush;
} BRUSHOBJ; } BRUSHOBJ;
extern BOOL BRUSH_Init(void); extern BOOL32 BRUSH_Init(void);
extern int BRUSH_GetObject( BRUSHOBJ * brush, int count, LPSTR buffer ); extern INT16 BRUSH_GetObject16( BRUSHOBJ * brush, INT16 count, LPSTR buffer );
extern INT32 BRUSH_GetObject32( BRUSHOBJ * brush, INT32 count, LPSTR buffer );
extern BOOL32 BRUSH_DeleteObject( HBRUSH16 hbrush, BRUSHOBJ * brush ); extern BOOL32 BRUSH_DeleteObject( HBRUSH16 hbrush, BRUSHOBJ * brush );
extern HBRUSH16 BRUSH_SelectObject(DC * dc, HBRUSH16 hbrush, BRUSHOBJ * brush); extern HBRUSH32 BRUSH_SelectObject(DC * dc, HBRUSH32 hbrush, BRUSHOBJ * brush);
#endif /* __WINE_BRUSH_H */ #endif /* __WINE_BRUSH_H */

View File

@ -32,8 +32,9 @@ extern const char *DOSFS_IsDevice( const char *name );
extern const char * DOSFS_GetUnixFileName( const char * name, int check_last ); extern const char * DOSFS_GetUnixFileName( const char * name, int check_last );
extern const char * DOSFS_GetDosTrueName( const char *name, int unix_format ); extern const char * DOSFS_GetDosTrueName( const char *name, int unix_format );
extern int DOSFS_GetDosFileName( const char *name, char *buffer, int len ); extern int DOSFS_GetDosFileName( const char *name, char *buffer, int len );
extern int DOSFS_FindNext( const char *path, const char *mask, int drive, extern int DOSFS_FindNext( const char *path, const char *short_mask,
BYTE attr, int skip, DOS_DIRENT *entry ); const char *long_mask, int drive, BYTE attr,
int skip, DOS_DIRENT *entry );
extern int DOS_GetFreeSpace(int drive, long *size, long *available); extern int DOS_GetFreeSpace(int drive, long *size, long *available);

View File

@ -9,16 +9,17 @@
#include "win.h" #include "win.h"
extern void NC_GetMinMaxInfo( HWND hwnd, POINT16 *maxSize, POINT16 *maxPos, extern void NC_GetMinMaxInfo( WND *pWnd, POINT16 *maxSize, POINT16 *maxPos,
POINT16 *minTrack, POINT16 *maxTrack ); POINT16 *minTrack, POINT16 *maxTrack );
extern void NC_DoNCPaint( HWND hwnd, HRGN32 clip, BOOL suppress_menupaint ); extern void NC_DoNCPaint( HWND32 hwnd, HRGN32 clip, BOOL32 suppress_menupaint);
extern LONG NC_HandleNCPaint( HWND hwnd , HRGN32 clip); extern LONG NC_HandleNCPaint( HWND32 hwnd , HRGN32 clip);
extern LONG NC_HandleNCActivate( WND *pwnd, WPARAM16 wParam ); extern LONG NC_HandleNCActivate( WND *pwnd, WPARAM16 wParam );
extern LONG NC_HandleNCCalcSize( WND *pWnd, RECT16 *winRect ); extern LONG NC_HandleNCCalcSize( WND *pWnd, RECT16 *winRect );
extern LONG NC_HandleNCHitTest( HWND hwnd, POINT16 pt ); extern LONG NC_HandleNCHitTest( HWND32 hwnd, POINT16 pt );
extern LONG NC_HandleNCLButtonDown( HWND hwnd, WPARAM16 wParam, LPARAM lParam ); extern LONG NC_HandleNCLButtonDown( HWND32 hwnd, WPARAM16 wParam,
LPARAM lParam );
extern LONG NC_HandleNCLButtonDblClk( WND *pWnd, WPARAM16 wParam, LPARAM lParam); extern LONG NC_HandleNCLButtonDblClk( WND *pWnd, WPARAM16 wParam, LPARAM lParam);
extern LONG NC_HandleSysCommand( HWND hwnd, WPARAM16 wParam, POINT16 pt ); extern LONG NC_HandleSysCommand( HWND32 hwnd, WPARAM16 wParam, POINT16 pt );
extern LONG NC_HandleSetCursor( HWND hwnd, WPARAM16 wParam, LPARAM lParam ); extern LONG NC_HandleSetCursor( HWND32 hwnd, WPARAM16 wParam, LPARAM lParam );
#endif /* __WINE_NONCLIENT_H */ #endif /* __WINE_NONCLIENT_H */

View File

@ -13,10 +13,11 @@
typedef struct typedef struct
{ {
GDIOBJHDR header; GDIOBJHDR header;
LOGPEN16 logpen; LOGPEN32 logpen;
} PENOBJ; } PENOBJ;
extern int PEN_GetObject( PENOBJ * pen, int count, LPSTR buffer ); extern INT16 PEN_GetObject16( PENOBJ * pen, INT16 count, LPSTR buffer );
extern HPEN16 PEN_SelectObject( DC * dc, HPEN16 hpen, PENOBJ * pen ); extern INT32 PEN_GetObject32( PENOBJ * pen, INT32 count, LPSTR buffer );
extern HPEN32 PEN_SelectObject( DC * dc, HPEN32 hpen, PENOBJ * pen );
#endif /* __WINE_PEN_H */ #endif /* __WINE_PEN_H */

View File

@ -17,8 +17,8 @@ typedef struct
} RGNOBJ; } RGNOBJ;
extern BOOL16 REGION_DeleteObject( HRGN32 hrgn, RGNOBJ * obj ); extern BOOL32 REGION_DeleteObject( HRGN32 hrgn, RGNOBJ * obj );
extern BOOL16 REGION_UnionRectWithRgn( HRGN32 hrgn, LPRECT16 lpRect ); extern BOOL32 REGION_UnionRectWithRgn( HRGN32 hrgn, LPRECT16 lpRect );
extern BOOL16 REGION_FrameRgn( HRGN32 dest, HRGN32 src, INT32 x, INT32 y ); extern BOOL32 REGION_FrameRgn( HRGN32 dest, HRGN32 src, INT32 x, INT32 y );
#endif /* __WINE_REGION_H */ #endif /* __WINE_REGION_H */

View File

@ -11,27 +11,27 @@
struct SysColorObjects struct SysColorObjects
{ {
HBRUSH16 hbrushScrollbar; /* COLOR_SCROLLBAR */ HBRUSH32 hbrushScrollbar; /* COLOR_SCROLLBAR */
/* COLOR_BACKGROUND */ /* COLOR_BACKGROUND */
HBRUSH16 hbrushActiveCaption; /* COLOR_ACTIVECAPTION */ HBRUSH32 hbrushActiveCaption; /* COLOR_ACTIVECAPTION */
HBRUSH16 hbrushInactiveCaption; /* COLOR_INACTIVECAPTION */ HBRUSH32 hbrushInactiveCaption; /* COLOR_INACTIVECAPTION */
HBRUSH16 hbrushMenu; /* COLOR_MENU */ HBRUSH32 hbrushMenu; /* COLOR_MENU */
HBRUSH16 hbrushWindow; /* COLOR_WINDOW */ HBRUSH32 hbrushWindow; /* COLOR_WINDOW */
HPEN16 hpenWindowFrame; /* COLOR_WINDOWFRAME */ HPEN32 hpenWindowFrame; /* COLOR_WINDOWFRAME */
/* COLOR_MENUTEXT */ /* COLOR_MENUTEXT */
HPEN16 hpenWindowText; /* COLOR_WINDOWTEXT */ HPEN32 hpenWindowText; /* COLOR_WINDOWTEXT */
/* COLOR_CAPTIONTEXT */ /* COLOR_CAPTIONTEXT */
HBRUSH16 hbrushActiveBorder; /* COLOR_ACTIVEBORDER */ HBRUSH32 hbrushActiveBorder; /* COLOR_ACTIVEBORDER */
HBRUSH16 hbrushInactiveBorder; /* COLOR_INACTIVEBORDER */ HBRUSH32 hbrushInactiveBorder; /* COLOR_INACTIVEBORDER */
/* COLOR_APPWORKSPACE */ /* COLOR_APPWORKSPACE */
HBRUSH16 hbrushHighlight; /* COLOR_HIGHLIGHT */ HBRUSH32 hbrushHighlight; /* COLOR_HIGHLIGHT */
/* COLOR_HIGHLIGHTTEXT */ /* COLOR_HIGHLIGHTTEXT */
HBRUSH16 hbrushBtnFace; /* COLOR_BTNFACE */ HBRUSH32 hbrushBtnFace; /* COLOR_BTNFACE */
HBRUSH16 hbrushBtnShadow; /* COLOR_BTNSHADOW */ HBRUSH32 hbrushBtnShadow; /* COLOR_BTNSHADOW */
/* COLOR_GRAYTEXT */ /* COLOR_GRAYTEXT */
/* COLOR_BTNTEXT */ /* COLOR_BTNTEXT */
/* COLOR_INACTIVECAPTIONTEXT */ /* COLOR_INACTIVECAPTIONTEXT */
HBRUSH16 hbrushBtnHighlight; /* COLOR_BTNHIGHLIGHT */ HBRUSH32 hbrushBtnHighlight; /* COLOR_BTNHIGHLIGHT */
}; };
extern void SYSCOLOR_Init(void); extern void SYSCOLOR_Init(void);

View File

@ -805,16 +805,16 @@ DECL_WINELIB_TYPE(LPBITMAP);
typedef struct typedef struct
{ {
UINT16 lbStyle; UINT16 lbStyle;
COLORREF lbColor WINE_PACKED; COLORREF lbColor WINE_PACKED;
INT16 lbHatch; INT16 lbHatch;
} LOGBRUSH16, *LPLOGBRUSH16; } LOGBRUSH16, *LPLOGBRUSH16;
typedef struct typedef struct
{ {
UINT32 lbStyle; UINT32 lbStyle;
COLORREF lbColor; COLORREF lbColor;
INT32 lbHatch; INT32 lbHatch;
} LOGBRUSH32, *LPLOGBRUSH32; } LOGBRUSH32, *LPLOGBRUSH32;
DECL_WINELIB_TYPE(LOGBRUSH); DECL_WINELIB_TYPE(LOGBRUSH);
@ -3639,6 +3639,7 @@ BOOL16 DCHook(HDC16,WORD,DWORD,LPARAM);
VOID DirectedYield(HTASK16); VOID DirectedYield(HTASK16);
HGLOBAL16 DirectResAlloc(HINSTANCE16,WORD,UINT16); HGLOBAL16 DirectResAlloc(HINSTANCE16,WORD,UINT16);
BOOL16 EnableHardwareInput(BOOL16); BOOL16 EnableHardwareInput(BOOL16);
INT16 ExcludeVisRect(HDC16,INT16,INT16,INT16,INT16);
HANDLE16 FarGetOwner(HGLOBAL16); HANDLE16 FarGetOwner(HGLOBAL16);
VOID FarSetOwner(HGLOBAL16,HANDLE16); VOID FarSetOwner(HGLOBAL16,HANDLE16);
VOID FillWindow(HWND16,HWND16,HDC16,HBRUSH16); VOID FillWindow(HWND16,HWND16,HDC16,HBRUSH16);
@ -3673,12 +3674,16 @@ WORD GlobalDOSFree(WORD);
WORD GlobalPageLock(HGLOBAL16); WORD GlobalPageLock(HGLOBAL16);
WORD GlobalPageUnlock(HGLOBAL16); WORD GlobalPageUnlock(HGLOBAL16);
INT16 InitApp(HINSTANCE16); INT16 InitApp(HINSTANCE16);
INT16 IntersectVisRect(HDC16,INT16,INT16,INT16,INT16);
BOOL16 IsGDIObject(HGDIOBJ16);
BOOL16 IsSharedSelector(HANDLE16); BOOL16 IsSharedSelector(HANDLE16);
BOOL16 IsTask(HTASK16); BOOL16 IsTask(HTASK16);
HTASK16 IsTaskLocked(void); HTASK16 IsTaskLocked(void);
BOOL16 LocalInit(HANDLE16,WORD,WORD); BOOL16 LocalInit(HANDLE16,WORD,WORD);
HTASK16 LockCurrentTask(BOOL16); HTASK16 LockCurrentTask(BOOL16);
DWORD MoveTo(HDC16,INT16,INT16);
DWORD OffsetViewportOrg(HDC16,INT16,INT16); DWORD OffsetViewportOrg(HDC16,INT16,INT16);
INT16 OffsetVisRgn(HDC16,INT16,INT16);
DWORD OffsetWindowOrg(HDC16,INT16,INT16); DWORD OffsetWindowOrg(HDC16,INT16,INT16);
VOID OldYield(void); VOID OldYield(void);
INT16 OpenComm(LPCSTR,UINT16,UINT16); INT16 OpenComm(LPCSTR,UINT16,UINT16);
@ -3686,9 +3691,12 @@ VOID PaintRect(HWND16,HWND16,HDC16,HBRUSH16,const RECT16*);
VOID PostEvent(HTASK16); VOID PostEvent(HTASK16);
WORD PrestoChangoSelector(WORD,WORD); WORD PrestoChangoSelector(WORD,WORD);
INT16 ReadComm(INT16,LPSTR,INT16); INT16 ReadComm(INT16,LPSTR,INT16);
INT16 RestoreVisRgn(HDC16);
HRGN16 SaveVisRgn(HDC16);
DWORD ScaleViewportExt(HDC16,INT16,INT16,INT16,INT16); DWORD ScaleViewportExt(HDC16,INT16,INT16,INT16,INT16);
DWORD ScaleWindowExt(HDC16,INT16,INT16,INT16,INT16); DWORD ScaleWindowExt(HDC16,INT16,INT16,INT16,INT16);
WORD SelectorAccessRights(WORD,WORD,WORD); WORD SelectorAccessRights(WORD,WORD,WORD);
INT16 SelectVisRgn(HDC16,HRGN16);
DWORD SetBitmapDimension(HBITMAP16,INT16,INT16); DWORD SetBitmapDimension(HBITMAP16,INT16,INT16);
DWORD SetBrushOrg(HDC16,INT16,INT16); DWORD SetBrushOrg(HDC16,INT16,INT16);
UINT16* SetCommEventMask(INT16,UINT16); UINT16* SetCommEventMask(INT16,UINT16);
@ -3740,6 +3748,9 @@ DWORD GetFileInformationByHandle(HFILE,BY_HANDLE_FILE_INFORMATION*);
VOID GetLocalTime(LPSYSTEMTIME); VOID GetLocalTime(LPSYSTEMTIME);
DWORD GetLogicalDrives(void); DWORD GetLogicalDrives(void);
HANDLE32 GetProcessHeap(void); HANDLE32 GetProcessHeap(void);
DWORD GetShortPathName32A(LPCSTR,LPSTR,DWORD);
DWORD GetShortPathName32W(LPCWSTR,LPWSTR,DWORD);
#define GetShortPathName WINELIB_NAME_AW(GetShortPathName)
HFILE GetStdHandle(DWORD); HFILE GetStdHandle(DWORD);
BOOL32 GetSystemPowerStatus(LPSYSTEM_POWER_STATUS); BOOL32 GetSystemPowerStatus(LPSYSTEM_POWER_STATUS);
VOID GetSystemTime(LPSYSTEMTIME); VOID GetSystemTime(LPSYSTEMTIME);
@ -3801,21 +3812,14 @@ BOOL32 WriteFile(HFILE,LPVOID,DWORD,LPDWORD,LPOVERLAPPED);
BOOL16 CheckDlgButton(HWND32,INT32,UINT32); BOOL16 CheckDlgButton(HWND32,INT32,UINT32);
BOOL16 CheckRadioButton(HWND32,UINT32,UINT32,UINT32); BOOL16 CheckRadioButton(HWND32,UINT32,UINT32,UINT32);
INT16 CombineRgn(HRGN32,HRGN32,HRGN32,INT32);
LONG CopyLZFile(HFILE,HFILE); LONG CopyLZFile(HFILE,HFILE);
HBITMAP16 CreateBitmap(INT32,INT32,UINT32,UINT32,LPCVOID); HBITMAP16 CreateBitmap(INT32,INT32,UINT32,UINT32,LPCVOID);
BOOL16 CreateCaret(HWND32,HBITMAP32,INT32,INT32); BOOL16 CreateCaret(HWND32,HBITMAP32,INT32,INT32);
HBITMAP16 CreateCompatibleBitmap(HDC32,INT32,INT32); HBITMAP16 CreateCompatibleBitmap(HDC32,INT32,INT32);
HBITMAP16 CreateDiscardableBitmap(HDC32,INT32,INT32); HBITMAP16 CreateDiscardableBitmap(HDC32,INT32,INT32);
HRGN16 CreateEllipticRgn(INT32,INT32,INT32,INT32);
HRGN16 CreateRectRgn(INT32,INT32,INT32,INT32);
HRGN16 CreateRoundRectRgn(INT32,INT32,INT32,INT32,INT32,INT32);
BOOL16 DestroyCaret(void); BOOL16 DestroyCaret(void);
BOOL16 EndDialog(HWND32,INT32); BOOL16 EndDialog(HWND32,INT32);
BOOL16 EqualRgn(HRGN32,HRGN32);
INT16 ExcludeUpdateRgn(HDC32,HWND32); INT16 ExcludeUpdateRgn(HDC32,HWND32);
BOOL16 ExtFloodFill(HDC32,INT32,INT32,COLORREF,UINT32);
BOOL16 FloodFill(HDC32,INT32,INT32,COLORREF);
DWORD GetAppCompatFlags(HTASK32); DWORD GetAppCompatFlags(HTASK32);
LONG GetBitmapBits(HBITMAP32,LONG,LPVOID); LONG GetBitmapBits(HBITMAP32,LONG,LPVOID);
WORD GetClassWord(HWND32,INT32); WORD GetClassWord(HWND32,INT32);
@ -3833,9 +3837,7 @@ void LZDone(void);
HFILE LZInit(HFILE); HFILE LZInit(HFILE);
LONG LZSeek(HFILE,LONG,INT32); LONG LZSeek(HFILE,LONG,INT32);
INT16 LZStart(void); INT16 LZStart(void);
INT16 OffsetRgn(HRGN32,INT32,INT32);
HFILE OpenFile(LPCSTR,OFSTRUCT*,UINT32); HFILE OpenFile(LPCSTR,OFSTRUCT*,UINT32);
BOOL16 PtInRegion(HRGN32,INT32,INT32);
UINT16 RealizePalette(HDC32); UINT16 RealizePalette(HDC32);
DWORD RegCloseKey(HKEY); DWORD RegCloseKey(HKEY);
DWORD RegFlushKey(HKEY); DWORD RegFlushKey(HKEY);
@ -3879,6 +3881,9 @@ BOOL16 AppendMenu16(HMENU16,UINT16,UINT16,SEGPTR);
BOOL32 AppendMenu32A(HMENU32,UINT32,UINT32,LPCSTR); BOOL32 AppendMenu32A(HMENU32,UINT32,UINT32,LPCSTR);
BOOL32 AppendMenu32W(HMENU32,UINT32,UINT32,LPCWSTR); BOOL32 AppendMenu32W(HMENU32,UINT32,UINT32,LPCWSTR);
#define AppendMenu WINELIB_NAME_AW(AppendMenu) #define AppendMenu WINELIB_NAME_AW(AppendMenu)
BOOL16 Arc16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16);
BOOL32 Arc32(HDC32,INT32,INT32,INT32,INT32,INT32,INT32,INT32,INT32);
#define Arc WINELIB_NAME(Arc)
HDC16 BeginPaint16(HWND16,LPPAINTSTRUCT16); HDC16 BeginPaint16(HWND16,LPPAINTSTRUCT16);
HDC32 BeginPaint32(HWND32,LPPAINTSTRUCT32); HDC32 BeginPaint32(HWND32,LPPAINTSTRUCT32);
#define BeginPaint WINELIB_NAME(BeginPaint) #define BeginPaint WINELIB_NAME(BeginPaint)
@ -3930,6 +3935,9 @@ BOOL32 CharToOemBuff32W(LPCWSTR,LPSTR,DWORD);
HWND16 ChildWindowFromPoint16(HWND16,POINT16); HWND16 ChildWindowFromPoint16(HWND16,POINT16);
HWND32 ChildWindowFromPoint32(HWND32,POINT32); HWND32 ChildWindowFromPoint32(HWND32,POINT32);
#define ChildWindowFromPoint WINELIB_NAME(ChildWindowFromPoint) #define ChildWindowFromPoint WINELIB_NAME(ChildWindowFromPoint)
BOOL16 Chord16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16);
BOOL32 Chord32(HDC32,INT32,INT32,INT32,INT32,INT32,INT32,INT32,INT32);
#define Chord WINELIB_NAME(Chord)
INT16 ClearCommBreak16(INT16); INT16 ClearCommBreak16(INT16);
BOOL32 ClearCommBreak32(INT32); BOOL32 ClearCommBreak32(INT32);
#define ClearCommBreak WINELIB_NAME(ClearCommBreak) #define ClearCommBreak WINELIB_NAME(ClearCommBreak)
@ -3942,6 +3950,9 @@ BOOL32 ClipCursor32(const RECT32*);
HMETAFILE16 CloseMetaFile16(HDC16); HMETAFILE16 CloseMetaFile16(HDC16);
HMETAFILE32 CloseMetaFile32(HDC32); HMETAFILE32 CloseMetaFile32(HDC32);
#define CloseMetaFile WINELIB_NAME(CloseMetaFile) #define CloseMetaFile WINELIB_NAME(CloseMetaFile)
INT16 CombineRgn16(HRGN16,HRGN16,HRGN16,INT16);
INT32 CombineRgn32(HRGN32,HRGN32,HRGN32,INT32);
#define CombineRgn WINELIB_NAME(CombineRgn)
UINT16 CompareString16(DWORD,DWORD,LPCSTR,DWORD,LPCSTR,DWORD); UINT16 CompareString16(DWORD,DWORD,LPCSTR,DWORD,LPCSTR,DWORD);
UINT32 CompareString32A(DWORD,DWORD,LPCSTR,DWORD,LPCSTR,DWORD); UINT32 CompareString32A(DWORD,DWORD,LPCSTR,DWORD,LPCSTR,DWORD);
UINT32 CompareString32W(DWORD,DWORD,LPCWSTR,DWORD,LPCWSTR,DWORD); UINT32 CompareString32W(DWORD,DWORD,LPCWSTR,DWORD,LPCWSTR,DWORD);
@ -3958,6 +3969,9 @@ BOOL32 CopyRect32(RECT32*,const RECT32*);
HBITMAP16 CreateBitmapIndirect16(const BITMAP16*); HBITMAP16 CreateBitmapIndirect16(const BITMAP16*);
HBITMAP32 CreateBitmapIndirect32(const BITMAP32*); HBITMAP32 CreateBitmapIndirect32(const BITMAP32*);
#define CreateBitmapIndirect WINELIB_NAME(CreateBitmapIndirect) #define CreateBitmapIndirect WINELIB_NAME(CreateBitmapIndirect)
HBRUSH16 CreateBrushIndirect16(const LOGBRUSH16*);
HBRUSH32 CreateBrushIndirect32(const LOGBRUSH32*);
#define CreateBrushIndirect WINELIB_NAME(CreateBrushIndirect)
HWND16 CreateDialog16(HINSTANCE16,SEGPTR,HWND16,DLGPROC16); HWND16 CreateDialog16(HINSTANCE16,SEGPTR,HWND16,DLGPROC16);
#define CreateDialog32A(inst,ptr,hwnd,dlg) \ #define CreateDialog32A(inst,ptr,hwnd,dlg) \
CreateDialogParam32A(inst,ptr,hwnd,dlg,0) CreateDialogParam32A(inst,ptr,hwnd,dlg,0)
@ -3978,10 +3992,16 @@ HWND16 CreateDialogParam16(HINSTANCE16,SEGPTR,HWND16,DLGPROC16,LPARAM);
HWND32 CreateDialogParam32A(HINSTANCE32,LPCSTR,HWND32,DLGPROC32,LPARAM); HWND32 CreateDialogParam32A(HINSTANCE32,LPCSTR,HWND32,DLGPROC32,LPARAM);
HWND32 CreateDialogParam32W(HINSTANCE32,LPCWSTR,HWND32,DLGPROC32,LPARAM); HWND32 CreateDialogParam32W(HINSTANCE32,LPCWSTR,HWND32,DLGPROC32,LPARAM);
#define CreateDialogParam WINELIB_NAME_AW(CreateDialogParam) #define CreateDialogParam WINELIB_NAME_AW(CreateDialogParam)
HBRUSH16 CreateDIBPatternBrush16(HGLOBAL16,UINT16);
HBRUSH32 CreateDIBPatternBrush32(HGLOBAL32,UINT32);
#define CreateDIBPatternBrush WINELIB_NAME(CreateDIBPatternBrush)
BOOL16 CreateDirectory16(LPCSTR,LPVOID); BOOL16 CreateDirectory16(LPCSTR,LPVOID);
BOOL32 CreateDirectory32A(LPCSTR,LPSECURITY_ATTRIBUTES); BOOL32 CreateDirectory32A(LPCSTR,LPSECURITY_ATTRIBUTES);
BOOL32 CreateDirectory32W(LPCWSTR,LPSECURITY_ATTRIBUTES); BOOL32 CreateDirectory32W(LPCWSTR,LPSECURITY_ATTRIBUTES);
#define CreateDirectory WINELIB_NAME_AW(CreateDirectory) #define CreateDirectory WINELIB_NAME_AW(CreateDirectory)
HRGN16 CreateEllipticRgn16(INT16,INT16,INT16,INT16);
HRGN32 CreateEllipticRgn32(INT32,INT32,INT32,INT32);
#define CreateEllipticRgn WINELIB_NAME(CreateEllipticRgn)
HRGN16 CreateEllipticRgnIndirect16(const RECT16 *); HRGN16 CreateEllipticRgnIndirect16(const RECT16 *);
HRGN32 CreateEllipticRgnIndirect32(const RECT32 *); HRGN32 CreateEllipticRgnIndirect32(const RECT32 *);
#define CreateEllipticRgnIndirect WINELIB_NAME(CreateEllipticRgnIndirect) #define CreateEllipticRgnIndirect WINELIB_NAME(CreateEllipticRgnIndirect)
@ -3993,19 +4013,40 @@ HFONT16 CreateFontIndirect16(const LOGFONT16*);
HFONT32 CreateFontIndirect32A(const LOGFONT32A*); HFONT32 CreateFontIndirect32A(const LOGFONT32A*);
HFONT32 CreateFontIndirect32W(const LOGFONT32W*); HFONT32 CreateFontIndirect32W(const LOGFONT32W*);
#define CreateFontIndirect WINELIB_NAME_AW(CreateFontIndirect) #define CreateFontIndirect WINELIB_NAME_AW(CreateFontIndirect)
HBRUSH16 CreateHatchBrush16(INT16,COLORREF);
HBRUSH32 CreateHatchBrush32(INT32,COLORREF);
#define CreateHatchBrush WINELIB_NAME(CreateHatchBrush)
HDC16 CreateMetaFile16(LPCSTR); HDC16 CreateMetaFile16(LPCSTR);
HDC32 CreateMetaFile32A(LPCSTR); HDC32 CreateMetaFile32A(LPCSTR);
HDC32 CreateMetaFile32W(LPCWSTR); HDC32 CreateMetaFile32W(LPCWSTR);
#define CreateMetaFile WINELIB_NAME_AW(CreateMetaFile) #define CreateMetaFile WINELIB_NAME_AW(CreateMetaFile)
HBRUSH16 CreatePatternBrush16(HBITMAP16);
HBRUSH32 CreatePatternBrush32(HBITMAP32);
#define CreatePatternBrush WINELIB_NAME(CreatePatternBrush)
HPEN16 CreatePen16(INT16,INT16,COLORREF);
HPEN32 CreatePen32(INT32,INT32,COLORREF);
#define CreatePen WINELIB_NAME(CreatePen)
HPEN16 CreatePenIndirect16(const LOGPEN16*);
HPEN32 CreatePenIndirect32(const LOGPEN32*);
#define CreatePenIndirect WINELIB_NAME(CreatePenIndirect)
HRGN16 CreatePolyPolygonRgn16(const POINT16*,const INT16*,INT16,INT16); HRGN16 CreatePolyPolygonRgn16(const POINT16*,const INT16*,INT16,INT16);
HRGN32 CreatePolyPolygonRgn32(const POINT32*,const INT32*,INT32,INT32); HRGN32 CreatePolyPolygonRgn32(const POINT32*,const INT32*,INT32,INT32);
#define CreatePolyPolygonRgn WINELIB_NAME(CreatePolyPolygonRgn) #define CreatePolyPolygonRgn WINELIB_NAME(CreatePolyPolygonRgn)
HRGN16 CreatePolygonRgn16(const POINT16*,INT16,INT16); HRGN16 CreatePolygonRgn16(const POINT16*,INT16,INT16);
HRGN32 CreatePolygonRgn32(const POINT32*,INT32,INT32); HRGN32 CreatePolygonRgn32(const POINT32*,INT32,INT32);
#define CreatePolygonRgn WINELIB_NAME(CreatePolygonRgn) #define CreatePolygonRgn WINELIB_NAME(CreatePolygonRgn)
HRGN16 CreateRectRgn16(INT16,INT16,INT16,INT16);
HRGN32 CreateRectRgn32(INT32,INT32,INT32,INT32);
#define CreateRectRgn WINELIB_NAME(CreateRectRgn)
HRGN16 CreateRectRgnIndirect16(const RECT16*); HRGN16 CreateRectRgnIndirect16(const RECT16*);
HRGN32 CreateRectRgnIndirect32(const RECT32*); HRGN32 CreateRectRgnIndirect32(const RECT32*);
#define CreateRectRgnIndirect WINELIB_NAME(CreateRectRgnIndirect) #define CreateRectRgnIndirect WINELIB_NAME(CreateRectRgnIndirect)
HRGN16 CreateRoundRectRgn16(INT16,INT16,INT16,INT16,INT16,INT16);
HRGN32 CreateRoundRectRgn32(INT32,INT32,INT32,INT32,INT32,INT32);
#define CreateRoundRectRgn WINELIB_NAME(CreateRoundRectRgn)
HBRUSH16 CreateSolidBrush16(COLORREF);
HBRUSH32 CreateSolidBrush32(COLORREF);
#define CreateSolidBrush WINELIB_NAME(CreateSolidBrush)
HWND16 CreateWindow16(LPCSTR,LPCSTR,DWORD,INT16,INT16,INT16,INT16,HWND16,HMENU16,HINSTANCE16,LPVOID); HWND16 CreateWindow16(LPCSTR,LPCSTR,DWORD,INT16,INT16,INT16,INT16,HWND16,HMENU16,HINSTANCE16,LPVOID);
#define CreateWindow32A(className,titleName,style,x,y,width,height,\ #define CreateWindow32A(className,titleName,style,x,y,width,height,\
parent,menu,instance,param) \ parent,menu,instance,param) \
@ -4043,6 +4084,9 @@ BOOL32 DeleteFile32W(LPCWSTR);
BOOL16 DeleteMetaFile16(HMETAFILE16); BOOL16 DeleteMetaFile16(HMETAFILE16);
BOOL32 DeleteMetaFile32(HMETAFILE32); BOOL32 DeleteMetaFile32(HMETAFILE32);
#define DeleteMetaFile WINELIB_NAME(DeleteMetaFile) #define DeleteMetaFile WINELIB_NAME(DeleteMetaFile)
BOOL16 DeleteObject16(HGDIOBJ16);
BOOL32 DeleteObject32(HGDIOBJ32);
#define DeleteObject WINELIB_NAME(DeleteObject)
INT16 DialogBox16(HINSTANCE16,SEGPTR,HWND16,DLGPROC16); INT16 DialogBox16(HINSTANCE16,SEGPTR,HWND16,DLGPROC16);
#define DialogBox32A(inst,template,owner,func) \ #define DialogBox32A(inst,template,owner,func) \
DialogBoxParam32A(inst,template,owner,func,0) DialogBoxParam32A(inst,template,owner,func,0)
@ -4083,6 +4127,9 @@ INT16 DrawText16(HDC16,LPCSTR,INT16,LPRECT16,UINT16);
INT32 DrawText32A(HDC32,LPCSTR,INT32,LPRECT32,UINT32); INT32 DrawText32A(HDC32,LPCSTR,INT32,LPRECT32,UINT32);
INT32 DrawText32W(HDC32,LPCWSTR,INT32,LPRECT32,UINT32); INT32 DrawText32W(HDC32,LPCWSTR,INT32,LPRECT32,UINT32);
#define DrawText WINELIB_NAME_AW(DrawText) #define DrawText WINELIB_NAME_AW(DrawText)
BOOL16 Ellipse16(HDC16,INT16,INT16,INT16,INT16);
BOOL32 Ellipse32(HDC32,INT32,INT32,INT32,INT32);
#define Ellipse WINELIB_NAME(Ellipse)
BOOL16 EnableScrollBar16(HWND16,INT16,UINT16); BOOL16 EnableScrollBar16(HWND16,INT16,UINT16);
BOOL32 EnableScrollBar32(HWND32,INT32,UINT32); BOOL32 EnableScrollBar32(HWND32,INT32,UINT32);
#define EnableScrollBar WINELIB_NAME(EnableScrollBar) #define EnableScrollBar WINELIB_NAME(EnableScrollBar)
@ -4092,6 +4139,9 @@ BOOL32 EndPaint32(HWND32,const PAINTSTRUCT32*);
BOOL16 EnumChildWindows16(HWND16,WNDENUMPROC16,LPARAM); BOOL16 EnumChildWindows16(HWND16,WNDENUMPROC16,LPARAM);
BOOL32 EnumChildWindows32(HWND32,WNDENUMPROC32,LPARAM); BOOL32 EnumChildWindows32(HWND32,WNDENUMPROC32,LPARAM);
#define EnumChildWindows WINELIB_NAME(EnumChildWindows) #define EnumChildWindows WINELIB_NAME(EnumChildWindows)
INT16 EnumObjects16(HDC16,INT16,GOBJENUMPROC16,LPARAM);
INT32 EnumObjects32(HDC32,INT32,GOBJENUMPROC32,LPARAM);
#define EnumObjects WINELIB_NAME(EnumObjects)
INT16 EnumProps16(HWND16,PROPENUMPROC16); INT16 EnumProps16(HWND16,PROPENUMPROC16);
INT32 EnumProps32A(HWND32,PROPENUMPROC32A); INT32 EnumProps32A(HWND32,PROPENUMPROC32A);
INT32 EnumProps32W(HWND32,PROPENUMPROC32W); INT32 EnumProps32W(HWND32,PROPENUMPROC32W);
@ -4106,9 +4156,18 @@ BOOL32 EnumWindows32(WNDENUMPROC32,LPARAM);
BOOL16 EqualRect16(const RECT16*,const RECT16*); BOOL16 EqualRect16(const RECT16*,const RECT16*);
BOOL32 EqualRect32(const RECT32*,const RECT32*); BOOL32 EqualRect32(const RECT32*,const RECT32*);
#define EqualRect WINELIB_NAME(EqualRect) #define EqualRect WINELIB_NAME(EqualRect)
BOOL16 EqualRgn16(HRGN16,HRGN16);
BOOL32 EqualRgn32(HRGN32,HRGN32);
#define EqualRgn WINELIB_NAME(EqualRgn)
LONG EscapeCommFunction16(UINT16,UINT16); LONG EscapeCommFunction16(UINT16,UINT16);
BOOL32 EscapeCommFunction32(INT32,UINT32); BOOL32 EscapeCommFunction32(INT32,UINT32);
#define EscapeCommFunction WINELIB_NAME(EscapeCommFunction) #define EscapeCommFunction WINELIB_NAME(EscapeCommFunction)
INT16 ExcludeClipRect16(HDC16,INT16,INT16,INT16,INT16);
INT32 ExcludeClipRect32(HDC32,INT32,INT32,INT32,INT32);
#define ExcludeClipRect WINELIB_NAME(ExcludeClipRect)
BOOL16 ExtFloodFill16(HDC16,INT16,INT16,COLORREF,UINT16);
BOOL32 ExtFloodFill32(HDC32,INT32,INT32,COLORREF,UINT32);
#define ExtFloodFill WINELIB_NAME(ExtFloodFill)
BOOL16 ExtTextOut16(HDC16,INT16,INT16,UINT16,const RECT16*,LPCSTR,UINT16,const INT16*); BOOL16 ExtTextOut16(HDC16,INT16,INT16,UINT16,const RECT16*,LPCSTR,UINT16,const INT16*);
BOOL32 ExtTextOut32A(HDC32,INT32,INT32,UINT32,const RECT32*,LPCSTR,UINT32,const INT32*); BOOL32 ExtTextOut32A(HDC32,INT32,INT32,UINT32,const RECT32*,LPCSTR,UINT32,const INT32*);
BOOL32 ExtTextOut32W(HDC32,INT32,INT32,UINT32,const RECT32*,LPCWSTR,UINT32,const INT32*); BOOL32 ExtTextOut32W(HDC32,INT32,INT32,UINT32,const RECT32*,LPCWSTR,UINT32,const INT32*);
@ -4116,6 +4175,9 @@ BOOL32 ExtTextOut32W(HDC32,INT32,INT32,UINT32,const RECT32*,LPCWSTR,UINT32,c
INT16 FillRect16(HDC16,const RECT16*,HBRUSH16); INT16 FillRect16(HDC16,const RECT16*,HBRUSH16);
INT32 FillRect32(HDC32,const RECT32*,HBRUSH32); INT32 FillRect32(HDC32,const RECT32*,HBRUSH32);
#define FillRect WINELIB_NAME(FillRect) #define FillRect WINELIB_NAME(FillRect)
BOOL16 FillRgn16(HDC16,HRGN16,HBRUSH16);
BOOL32 FillRgn32(HDC32,HRGN32,HBRUSH32);
#define FillRgn WINELIB_NAME(FillRgn)
BOOL16 FindClose16(HANDLE16); BOOL16 FindClose16(HANDLE16);
BOOL32 FindClose32(HANDLE32); BOOL32 FindClose32(HANDLE32);
#define FindClose WINELIB_NAME(FindClose) #define FindClose WINELIB_NAME(FindClose)
@ -4139,9 +4201,15 @@ HWND16 FindWindowEx16(HWND16,HWND16,SEGPTR,LPCSTR);
HWND32 FindWindowEx32A(HWND32,HWND32,LPCSTR,LPCSTR); HWND32 FindWindowEx32A(HWND32,HWND32,LPCSTR,LPCSTR);
HWND32 FindWindowEx32W(HWND32,HWND32,LPCWSTR,LPCWSTR); HWND32 FindWindowEx32W(HWND32,HWND32,LPCWSTR,LPCWSTR);
#define FindWindowEx WINELIB_NAME_AW(FindWindowEx) #define FindWindowEx WINELIB_NAME_AW(FindWindowEx)
BOOL16 FloodFill16(HDC16,INT16,INT16,COLORREF);
BOOL32 FloodFill32(HDC32,INT32,INT32,COLORREF);
#define FloodFill WINELIB_NAME(FloodFill)
INT16 FrameRect16(HDC16,const RECT16*,HBRUSH16); INT16 FrameRect16(HDC16,const RECT16*,HBRUSH16);
INT32 FrameRect32(HDC32,const RECT32*,HBRUSH32); INT32 FrameRect32(HDC32,const RECT32*,HBRUSH32);
#define FrameRect WINELIB_NAME(FrameRect) #define FrameRect WINELIB_NAME(FrameRect)
BOOL16 FrameRgn16(HDC16,HRGN16,HBRUSH16,INT16,INT16);
BOOL32 FrameRgn32(HDC32,HRGN32,HBRUSH32,INT32,INT32);
#define FrameRgn WINELIB_NAME(FrameRgn)
BOOL16 FreeModule16(HMODULE16); BOOL16 FreeModule16(HMODULE16);
#define FreeModule32(handle) FreeLibrary32(handle) #define FreeModule32(handle) FreeLibrary32(handle)
#define FreeModule WINELIB_NAME(FreeModule) #define FreeModule WINELIB_NAME(FreeModule)
@ -4263,6 +4331,9 @@ INT32 GetObject32W(HANDLE32,INT32,LPVOID);
HWND16 GetParent16(HWND16); HWND16 GetParent16(HWND16);
HWND32 GetParent32(HWND32); HWND32 GetParent32(HWND32);
#define GetParent WINELIB_NAME(GetParent) #define GetParent WINELIB_NAME(GetParent)
COLORREF GetPixel16(HDC16,INT16,INT16);
COLORREF GetPixel32(HDC32,INT32,INT32);
#define GetPixel WINELIB_NAME(GetPixel)
FARPROC16 GetProcAddress16(HMODULE16,SEGPTR); FARPROC16 GetProcAddress16(HMODULE16,SEGPTR);
FARPROC32 GetProcAddress32(HMODULE32,LPCSTR); FARPROC32 GetProcAddress32(HMODULE32,LPCSTR);
#define GetProcAddress WINELIB_NAME(GetProcAddress) #define GetProcAddress WINELIB_NAME(GetProcAddress)
@ -4282,9 +4353,12 @@ INT32 GetScrollPos32(HWND32,INT32);
BOOL16 GetScrollRange16(HWND16,INT16,LPINT16,LPINT16); BOOL16 GetScrollRange16(HWND16,INT16,LPINT16,LPINT16);
BOOL32 GetScrollRange32(HWND32,INT32,LPINT32,LPINT32); BOOL32 GetScrollRange32(HWND32,INT32,LPINT32,LPINT32);
#define GetScrollRange WINELIB_NAME(GetScrollRange) #define GetScrollRange WINELIB_NAME(GetScrollRange)
DWORD GetShortPathName32A(LPCSTR,LPSTR,DWORD); HGDIOBJ16 GetStockObject16(INT16);
DWORD GetShortPathName32W(LPCWSTR,LPWSTR,DWORD); HGDIOBJ32 GetStockObject32(INT32);
#define GetShortPathName WINELIB_NAME_AW(GetShortPathName) #define GetStockObject WINELIB_NAME(GetStockObject)
HBRUSH16 GetSysColorBrush16(INT16);
HBRUSH32 GetSysColorBrush32(INT32);
#define GetSysColorBrush WINELIB_NAME(GetSysColorBrush)
HWND16 GetSysModalWindow16(void); HWND16 GetSysModalWindow16(void);
#define GetSysModalWindow32() ((HWND32)0) #define GetSysModalWindow32() ((HWND32)0)
#define GetSysModalWindow WINELIB_NAME(GetSysModalWindow) #define GetSysModalWindow WINELIB_NAME(GetSysModalWindow)
@ -4398,6 +4472,9 @@ BOOL16 InsertMenu16(HMENU16,UINT16,UINT16,UINT16,SEGPTR);
BOOL32 InsertMenu32A(HMENU32,UINT32,UINT32,UINT32,LPCSTR); BOOL32 InsertMenu32A(HMENU32,UINT32,UINT32,UINT32,LPCSTR);
BOOL32 InsertMenu32W(HMENU32,UINT32,UINT32,UINT32,LPCWSTR); BOOL32 InsertMenu32W(HMENU32,UINT32,UINT32,UINT32,LPCWSTR);
#define InsertMenu WINELIB_NAME_AW(InsertMenu) #define InsertMenu WINELIB_NAME_AW(InsertMenu)
INT16 IntersectClipRect16(HDC16,INT16,INT16,INT16,INT16);
INT32 IntersectClipRect32(HDC32,INT32,INT32,INT32,INT32);
#define IntersectClipRect WINELIB_NAME(IntersectClipRect)
BOOL16 IntersectRect16(LPRECT16,const RECT16*,const RECT16*); BOOL16 IntersectRect16(LPRECT16,const RECT16*,const RECT16*);
BOOL32 IntersectRect32(LPRECT32,const RECT32*,const RECT32*); BOOL32 IntersectRect32(LPRECT32,const RECT32*,const RECT32*);
#define IntersectRect WINELIB_NAME(IntersectRect) #define IntersectRect WINELIB_NAME(IntersectRect)
@ -4407,6 +4484,9 @@ void InvalidateRect32(HWND32,const RECT32*,BOOL32);
void InvertRect16(HDC16,const RECT16*); void InvertRect16(HDC16,const RECT16*);
void InvertRect32(HDC32,const RECT32*); void InvertRect32(HDC32,const RECT32*);
#define InvertRect WINELIB_NAME(InvertRect) #define InvertRect WINELIB_NAME(InvertRect)
BOOL16 InvertRgn16(HDC16,HRGN16);
BOOL32 InvertRgn32(HDC32,HRGN32);
#define InvertRgn WINELIB_NAME(InvertRgn)
BOOL16 IsBadCodePtr16(SEGPTR); BOOL16 IsBadCodePtr16(SEGPTR);
BOOL32 IsBadCodePtr32(FARPROC32); BOOL32 IsBadCodePtr32(FARPROC32);
#define IsBadCodePtr WINELIB_NAME(IsBadCodePtr) #define IsBadCodePtr WINELIB_NAME(IsBadCodePtr)
@ -4461,6 +4541,9 @@ INT32 LZRead32(HFILE,LPVOID,UINT32);
VOID LineDDA16(INT16,INT16,INT16,INT16,LINEDDAPROC16,LPARAM); VOID LineDDA16(INT16,INT16,INT16,INT16,LINEDDAPROC16,LPARAM);
BOOL32 LineDDA32(INT32,INT32,INT32,INT32,LINEDDAPROC32,LPARAM); BOOL32 LineDDA32(INT32,INT32,INT32,INT32,LINEDDAPROC32,LPARAM);
#define LineDDA WINELIB_NAME(LineDDA) #define LineDDA WINELIB_NAME(LineDDA)
BOOL16 LineTo16(HDC16,INT16,INT16);
BOOL32 LineTo32(HDC32,INT32,INT32);
#define LineTo WINELIB_NAME(LineTo)
HACCEL16 LoadAccelerators16(HINSTANCE16,SEGPTR); HACCEL16 LoadAccelerators16(HINSTANCE16,SEGPTR);
HACCEL32 LoadAccelerators32A(HINSTANCE32,LPCSTR); HACCEL32 LoadAccelerators32A(HINSTANCE32,LPCSTR);
HACCEL32 LoadAccelerators32W(HINSTANCE32,LPCWSTR); HACCEL32 LoadAccelerators32W(HINSTANCE32,LPCWSTR);
@ -4556,19 +4639,31 @@ BOOL32 OemToChar32W(LPCSTR,LPWSTR);
BOOL32 OemToCharBuff32A(LPSTR,LPSTR,DWORD); BOOL32 OemToCharBuff32A(LPSTR,LPSTR,DWORD);
BOOL32 OemToCharBuff32W(LPCSTR,LPWSTR,DWORD); BOOL32 OemToCharBuff32W(LPCSTR,LPWSTR,DWORD);
#define OemToCharBuff WINELIB_NAME_AW(OemToCharBuff) #define OemToCharBuff WINELIB_NAME_AW(OemToCharBuff)
INT16 OffsetClipRgn16(HDC16,INT16,INT16);
INT32 OffsetClipRgn32(HDC32,INT32,INT32);
#define OffsetClipRgn WINELIB_NAME(OffsetClipRgn)
void OffsetRect16(LPRECT16,INT16,INT16); void OffsetRect16(LPRECT16,INT16,INT16);
void OffsetRect32(LPRECT32,INT32,INT32); void OffsetRect32(LPRECT32,INT32,INT32);
#define OffsetRect WINELIB_NAME(OffsetRect) #define OffsetRect WINELIB_NAME(OffsetRect)
INT16 OffsetRgn16(HRGN16,INT16,INT16);
INT32 OffsetRgn32(HRGN32,INT32,INT32);
#define OffsetRgn WINELIB_NAME(OffsetRgn)
BOOL16 OffsetViewportOrgEx16(HDC16,INT16,INT16,LPPOINT16); BOOL16 OffsetViewportOrgEx16(HDC16,INT16,INT16,LPPOINT16);
BOOL32 OffsetViewportOrgEx32(HDC32,INT32,INT32,LPPOINT32); BOOL32 OffsetViewportOrgEx32(HDC32,INT32,INT32,LPPOINT32);
#define OffsetViewportOrgEx WINELIB_NAME(OffsetViewportOrgEx) #define OffsetViewportOrgEx WINELIB_NAME(OffsetViewportOrgEx)
BOOL16 OffsetWindowOrgEx16(HDC16,INT16,INT16,LPPOINT16); BOOL16 OffsetWindowOrgEx16(HDC16,INT16,INT16,LPPOINT16);
BOOL32 OffsetWindowOrgEx32(HDC32,INT32,INT32,LPPOINT32); BOOL32 OffsetWindowOrgEx32(HDC32,INT32,INT32,LPPOINT32);
#define OffsetWindowOrgEx WINELIB_NAME(OffsetWindowOrgEx) #define OffsetWindowOrgEx WINELIB_NAME(OffsetWindowOrgEx)
BOOL16 PaintRgn16(HDC16,HRGN16);
BOOL32 PaintRgn32(HDC32,HRGN32);
#define PaintRgn WINELIB_NAME(PaintRgn)
BOOL16 PeekMessage16(LPMSG16,HWND16,UINT16,UINT16,UINT16); BOOL16 PeekMessage16(LPMSG16,HWND16,UINT16,UINT16,UINT16);
BOOL32 PeekMessage32A(LPMSG32,HWND32,UINT32,UINT32,UINT32); BOOL32 PeekMessage32A(LPMSG32,HWND32,UINT32,UINT32,UINT32);
BOOL32 PeekMessage32W(LPMSG32,HWND32,UINT32,UINT32,UINT32); BOOL32 PeekMessage32W(LPMSG32,HWND32,UINT32,UINT32,UINT32);
#define PeekMessage WINELIB_NAME_AW(PeekMessage) #define PeekMessage WINELIB_NAME_AW(PeekMessage)
BOOL16 Pie16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16);
BOOL32 Pie32(HDC32,INT32,INT32,INT32,INT32,INT32,INT32,INT32,INT32);
#define Pie WINELIB_NAME(Pie)
BOOL16 PolyPolygon16(HDC16,LPPOINT16,LPINT16,UINT16); BOOL16 PolyPolygon16(HDC16,LPPOINT16,LPINT16,UINT16);
BOOL32 PolyPolygon32(HDC32,LPPOINT32,LPINT32,UINT32); BOOL32 PolyPolygon32(HDC32,LPPOINT32,LPINT32,UINT32);
#define PolyPolygon WINELIB_NAME(PolyPolygon) #define PolyPolygon WINELIB_NAME(PolyPolygon)
@ -4587,6 +4682,15 @@ BOOL16 PostAppMessage16(HTASK16,UINT16,WPARAM16,LPARAM);
BOOL16 PtInRect16(const RECT16*,POINT16); BOOL16 PtInRect16(const RECT16*,POINT16);
BOOL32 PtInRect32(const RECT32*,POINT32); BOOL32 PtInRect32(const RECT32*,POINT32);
#define PtInRect WINELIB_NAME(PtInRect) #define PtInRect WINELIB_NAME(PtInRect)
BOOL16 PtInRegion16(HRGN16,INT16,INT16);
BOOL32 PtInRegion32(HRGN32,INT32,INT32);
#define PtInRegion WINELIB_NAME(PtInRegion)
BOOL16 PtVisible16(HDC16,INT16,INT16);
BOOL32 PtVisible32(HDC32,INT32,INT32);
#define PtVisible WINELIB_NAME(PtVisible)
BOOL16 Rectangle16(HDC16,INT16,INT16,INT16,INT16);
BOOL32 Rectangle32(HDC32,INT32,INT32,INT32,INT32);
#define Rectangle WINELIB_NAME(Rectangle)
BOOL16 RectInRegion16(HRGN16,const RECT16 *); BOOL16 RectInRegion16(HRGN16,const RECT16 *);
BOOL32 RectInRegion32(HRGN32,const RECT32 *); BOOL32 RectInRegion32(HRGN32,const RECT32 *);
#define RectInRegion WINELIB_NAME(RectInRegion) #define RectInRegion WINELIB_NAME(RectInRegion)
@ -4659,6 +4763,9 @@ BOOL16 RemoveDirectory16(LPCSTR);
BOOL32 RemoveDirectory32A(LPCSTR); BOOL32 RemoveDirectory32A(LPCSTR);
BOOL32 RemoveDirectory32W(LPCWSTR); BOOL32 RemoveDirectory32W(LPCWSTR);
#define RemoveDirectory WINELIB_NAME_AW(RemoveDirectory) #define RemoveDirectory WINELIB_NAME_AW(RemoveDirectory)
BOOL16 RoundRect16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16);
BOOL32 RoundRect32(HDC32,INT32,INT32,INT32,INT32,INT32,INT32);
#define RoundRect WINELIB_NAME(RoundRect)
BOOL16 ScaleViewportExtEx16(HDC16,INT16,INT16,INT16,INT16,LPSIZE16); BOOL16 ScaleViewportExtEx16(HDC16,INT16,INT16,INT16,INT16,LPSIZE16);
BOOL32 ScaleViewportExtEx32(HDC32,INT32,INT32,INT32,INT32,LPSIZE32); BOOL32 ScaleViewportExtEx32(HDC32,INT32,INT32,INT32,INT32,LPSIZE32);
#define ScaleViewportExtEx WINELIB_NAME(ScaleViewportExtEx) #define ScaleViewportExtEx WINELIB_NAME(ScaleViewportExtEx)
@ -4668,6 +4775,12 @@ BOOL32 ScaleWindowExtEx32(HDC32,INT32,INT32,INT32,INT32,LPSIZE32);
void ScreenToClient16(HWND16,LPPOINT16); void ScreenToClient16(HWND16,LPPOINT16);
void ScreenToClient32(HWND32,LPPOINT32); void ScreenToClient32(HWND32,LPPOINT32);
#define ScreenToClient WINELIB_NAME(ScreenToClient) #define ScreenToClient WINELIB_NAME(ScreenToClient)
INT16 SelectClipRgn16(HDC16,HRGN16);
INT32 SelectClipRgn32(HDC32,HRGN32);
#define SelectClipRgn WINELIB_NAME(SelectClipRgn)
HGDIOBJ16 SelectObject16(HDC16,HGDIOBJ16);
HGDIOBJ32 SelectObject32(HDC32,HGDIOBJ32);
#define SelectObject WINELIB_NAME(SelectObject)
LRESULT SendDlgItemMessage16(HWND16,INT16,UINT16,WPARAM16,LPARAM); LRESULT SendDlgItemMessage16(HWND16,INT16,UINT16,WPARAM16,LPARAM);
LRESULT SendDlgItemMessage32A(HWND32,INT32,UINT32,WPARAM32,LPARAM); LRESULT SendDlgItemMessage32A(HWND32,INT32,UINT32,WPARAM32,LPARAM);
LRESULT SendDlgItemMessage32W(HWND32,INT32,UINT32,WPARAM32,LPARAM); LRESULT SendDlgItemMessage32W(HWND32,INT32,UINT32,WPARAM32,LPARAM);
@ -4718,6 +4831,9 @@ UINT32 SetHandleCount32(UINT32);
void SetInternalWindowPos16(HWND16,UINT16,LPRECT16,LPPOINT16); void SetInternalWindowPos16(HWND16,UINT16,LPRECT16,LPPOINT16);
void SetInternalWindowPos32(HWND32,UINT32,LPRECT32,LPPOINT32); void SetInternalWindowPos32(HWND32,UINT32,LPRECT32,LPPOINT32);
#define SetInternalWindowPos WINELIB_NAME(SetInternalWindowPos) #define SetInternalWindowPos WINELIB_NAME(SetInternalWindowPos)
COLORREF SetPixel16(HDC16,INT16,INT16,COLORREF);
COLORREF SetPixel32(HDC32,INT32,INT32,COLORREF);
#define SetPixel WINELIB_NAME(SetPixel)
BOOL16 SetProp16(HWND16,LPCSTR,HANDLE16); BOOL16 SetProp16(HWND16,LPCSTR,HANDLE16);
BOOL32 SetProp32A(HWND32,LPCSTR,HANDLE32); BOOL32 SetProp32A(HWND32,LPCSTR,HANDLE32);
BOOL32 SetProp32W(HWND32,LPCWSTR,HANDLE32); BOOL32 SetProp32W(HWND32,LPCWSTR,HANDLE32);
@ -4805,6 +4921,9 @@ BOOL32 UnionRect32(LPRECT32,const RECT32*,const RECT32*);
void UnlockSegment16(HGLOBAL16); void UnlockSegment16(HGLOBAL16);
#define UnlockSegment32(handle) GlobalUnfix((HANDLE32)(handle)) #define UnlockSegment32(handle) GlobalUnfix((HANDLE32)(handle))
#define UnlockSegment WINELIB_NAME(UnlockSegment) #define UnlockSegment WINELIB_NAME(UnlockSegment)
BOOL16 UnrealizeObject16(HGDIOBJ16);
BOOL32 UnrealizeObject32(HGDIOBJ32);
#define UnrealizeObject WINELIB_NAME(UnrealizeObject)
BOOL16 UnregisterClass16(SEGPTR,HINSTANCE16); BOOL16 UnregisterClass16(SEGPTR,HINSTANCE16);
BOOL32 UnregisterClass32A(LPCSTR,HINSTANCE32); BOOL32 UnregisterClass32A(LPCSTR,HINSTANCE32);
BOOL32 UnregisterClass32W(LPCWSTR,HINSTANCE32); BOOL32 UnregisterClass32W(LPCWSTR,HINSTANCE32);
@ -4938,7 +5057,6 @@ void AnsiToOemBuff(LPCSTR,LPSTR,UINT);
LPSTR AnsiUpper(LPSTR); LPSTR AnsiUpper(LPSTR);
UINT AnsiUpperBuff(LPSTR,UINT); UINT AnsiUpperBuff(LPSTR,UINT);
BOOL AnyPopup(void); BOOL AnyPopup(void);
BOOL Arc(HDC16,INT,INT,INT,INT,INT,INT,INT,INT);
UINT ArrangeIconicWindows(HWND); UINT ArrangeIconicWindows(HWND);
HDWP16 BeginDeferWindowPos(INT); HDWP16 BeginDeferWindowPos(INT);
BOOL BitBlt(HDC16,INT,INT,INT,INT,HDC16,INT,INT,DWORD); BOOL BitBlt(HDC16,INT,INT,INT,INT,HDC16,INT,INT,DWORD);
@ -4948,7 +5066,6 @@ BOOL CallMsgFilter(SEGPTR,INT);
LRESULT CallNextHookEx(HHOOK,INT,WPARAM16,LPARAM); LRESULT CallNextHookEx(HHOOK,INT,WPARAM16,LPARAM);
BOOL ChangeClipboardChain(HWND,HWND); BOOL ChangeClipboardChain(HWND,HWND);
INT CheckMenuItem(HMENU16,UINT,UINT); INT CheckMenuItem(HMENU16,UINT,UINT);
BOOL Chord(HDC16,INT,INT,INT,INT,INT,INT,INT,INT);
BOOL CloseClipboard(void); BOOL CloseClipboard(void);
void CloseSound(void); void CloseSound(void);
BOOL CloseWindow(HWND); BOOL CloseWindow(HWND);
@ -4956,29 +5073,21 @@ int ConvertRequest(HWND,LPKANJISTRUCT);
HMETAFILE16 CopyMetaFile(HMETAFILE16,LPCSTR); HMETAFILE16 CopyMetaFile(HMETAFILE16,LPCSTR);
INT CountClipboardFormats(void); INT CountClipboardFormats(void);
INT CountVoiceNotes(INT); INT CountVoiceNotes(INT);
HBRUSH16 CreateBrushIndirect(const LOGBRUSH16*);
HDC16 CreateCompatibleDC(HDC16); HDC16 CreateCompatibleDC(HDC16);
HCURSOR16 CreateCursor(HINSTANCE16,INT,INT,INT,INT,const BYTE*,const BYTE*); HCURSOR16 CreateCursor(HINSTANCE16,INT,INT,INT,INT,const BYTE*,const BYTE*);
HGLOBAL16 CreateCursorIconIndirect(HINSTANCE16,CURSORICONINFO*,const BYTE*,const BYTE*); HGLOBAL16 CreateCursorIconIndirect(HINSTANCE16,CURSORICONINFO*,const BYTE*,const BYTE*);
HDC16 CreateDC(LPCSTR,LPCSTR,LPCSTR,const DEVMODE*); HDC16 CreateDC(LPCSTR,LPCSTR,LPCSTR,const DEVMODE*);
HBRUSH16 CreateDIBPatternBrush(HGLOBAL16,UINT);
HBITMAP16 CreateDIBitmap(HDC16,BITMAPINFOHEADER*,DWORD,LPVOID,BITMAPINFO*,UINT); HBITMAP16 CreateDIBitmap(HDC16,BITMAPINFOHEADER*,DWORD,LPVOID,BITMAPINFO*,UINT);
HBRUSH16 CreateHatchBrush(INT,COLORREF);
HDC16 CreateIC(LPCSTR,LPCSTR,LPCSTR,const DEVMODE*); HDC16 CreateIC(LPCSTR,LPCSTR,LPCSTR,const DEVMODE*);
HICON16 CreateIcon(HINSTANCE16,INT,INT,BYTE,BYTE,const BYTE*,const BYTE*); HICON16 CreateIcon(HINSTANCE16,INT,INT,BYTE,BYTE,const BYTE*,const BYTE*);
HMENU16 CreateMenu(void); HMENU16 CreateMenu(void);
HPALETTE16 CreatePalette(const LOGPALETTE*); HPALETTE16 CreatePalette(const LOGPALETTE*);
HBRUSH16 CreatePatternBrush(HBITMAP16);
HPEN16 CreatePen(INT,INT,COLORREF);
HPEN16 CreatePenIndirect(const LOGPEN16*);
HMENU16 CreatePopupMenu(void); HMENU16 CreatePopupMenu(void);
HBRUSH16 CreateSolidBrush(COLORREF);
DWORD DefHookProc(short,WORD,DWORD,HHOOK*); DWORD DefHookProc(short,WORD,DWORD,HHOOK*);
HDWP16 DeferWindowPos(HDWP16,HWND,HWND,INT,INT,INT,INT,UINT); HDWP16 DeferWindowPos(HDWP16,HWND,HWND,INT,INT,INT,INT,UINT);
ATOM DeleteAtom(ATOM); ATOM DeleteAtom(ATOM);
BOOL DeleteDC(HDC16); BOOL DeleteDC(HDC16);
BOOL DeleteMenu(HMENU16,UINT,UINT); BOOL DeleteMenu(HMENU16,UINT,UINT);
BOOL DeleteObject(HGDIOBJ16);
BOOL DestroyCursor(HCURSOR16); BOOL DestroyCursor(HCURSOR16);
BOOL DestroyIcon(HICON16); BOOL DestroyIcon(HICON16);
BOOL DestroyMenu(HMENU16); BOOL DestroyMenu(HMENU16);
@ -4992,7 +5101,6 @@ DWORD DragObject(HWND, HWND, WORD, HANDLE16, WORD, HCURSOR16);
BOOL DrawIcon(HDC16,INT,INT,HICON16); BOOL DrawIcon(HDC16,INT,INT,HICON16);
void DrawMenuBar(HWND); void DrawMenuBar(HWND);
DWORD DumpIcon(SEGPTR,WORD*,SEGPTR*,SEGPTR*); DWORD DumpIcon(SEGPTR,WORD*,SEGPTR*,SEGPTR*);
BOOL Ellipse(HDC16,INT,INT,INT,INT);
BOOL EmptyClipboard(void); BOOL EmptyClipboard(void);
BOOL EnableMenuItem(HMENU16,UINT,UINT); BOOL EnableMenuItem(HMENU16,UINT,UINT);
BOOL EnableWindow(HWND,BOOL); BOOL EnableWindow(HWND,BOOL);
@ -5001,19 +5109,14 @@ UINT16 EnumClipboardFormats(UINT16);
INT EnumFontFamilies(HDC16,LPCSTR,FONTENUMPROC16,LPARAM); INT EnumFontFamilies(HDC16,LPCSTR,FONTENUMPROC16,LPARAM);
INT EnumFonts(HDC16,LPCSTR,FONTENUMPROC16,LPARAM); INT EnumFonts(HDC16,LPCSTR,FONTENUMPROC16,LPARAM);
BOOL EnumMetaFile(HDC16,HMETAFILE16,MFENUMPROC16,LPARAM); BOOL EnumMetaFile(HDC16,HMETAFILE16,MFENUMPROC16,LPARAM);
INT EnumObjects(HDC16,INT,GOBJENUMPROC16,LPARAM);
INT Escape(HDC16,INT,INT,SEGPTR,SEGPTR); INT Escape(HDC16,INT,INT,SEGPTR,SEGPTR);
int ExcludeClipRect(HDC16,short,short,short,short);
int ExcludeVisRect(HDC16,short,short,short,short);
BOOL ExitWindows(DWORD,WORD); BOOL ExitWindows(DWORD,WORD);
HICON16 ExtractIcon(HINSTANCE16,LPCSTR,WORD); HICON16 ExtractIcon(HINSTANCE16,LPCSTR,WORD);
void FatalAppExit(UINT,LPCSTR); void FatalAppExit(UINT,LPCSTR);
void FatalExit(int); void FatalExit(int);
BOOL FillRgn(HDC16,HRGN32,HBRUSH16);
ATOM FindAtom(SEGPTR); ATOM FindAtom(SEGPTR);
HINSTANCE16 FindExecutable(LPCSTR,LPCSTR,LPSTR); HINSTANCE16 FindExecutable(LPCSTR,LPCSTR,LPSTR);
BOOL FlashWindow(HWND,BOOL); BOOL FlashWindow(HWND,BOOL);
BOOL FrameRgn(HDC16,HRGN32,HBRUSH16,int,int);
void FreeLibrary(HINSTANCE16); void FreeLibrary(HINSTANCE16);
UINT GDIRealizePalette(HDC16); UINT GDIRealizePalette(HDC16);
HPALETTE16 GDISelectPalette(HDC16,HPALETTE16,WORD); HPALETTE16 GDISelectPalette(HDC16,HPALETTE16,WORD);
@ -5076,7 +5179,6 @@ WORD GetNearestPaletteIndex(HPALETTE16,DWORD);
HWND GetNextWindow(HWND,WORD); HWND GetNextWindow(HWND,WORD);
HWND GetOpenClipboardWindow(void); HWND GetOpenClipboardWindow(void);
WORD GetPaletteEntries(HPALETTE16,WORD,WORD,LPPALETTEENTRY); WORD GetPaletteEntries(HPALETTE16,WORD,WORD,LPPALETTEENTRY);
DWORD GetPixel(HDC16,short,short);
WORD GetPolyFillMode(HDC16); WORD GetPolyFillMode(HDC16);
int GetPriorityClipboardFormat(WORD*,short); int GetPriorityClipboardFormat(WORD*,short);
UINT GetPrivateProfileInt(LPCSTR,LPCSTR,INT,LPCSTR); UINT GetPrivateProfileInt(LPCSTR,LPCSTR,INT,LPCSTR);
@ -5087,7 +5189,6 @@ DWORD GetQueueStatus(UINT);
BOOL GetRasterizerCaps(LPRASTERIZER_STATUS,UINT); BOOL GetRasterizerCaps(LPRASTERIZER_STATUS,UINT);
WORD GetROP2(HDC16); WORD GetROP2(HDC16);
WORD GetRelAbs(HDC16); WORD GetRelAbs(HDC16);
HGDIOBJ16 GetStockObject(INT16);
WORD GetStretchBltMode(HDC16); WORD GetStretchBltMode(HDC16);
HMENU16 GetSubMenu(HMENU16,short); HMENU16 GetSubMenu(HMENU16,short);
HMENU16 GetSystemMenu(HWND,BOOL); HMENU16 GetSystemMenu(HWND,BOOL);
@ -5122,22 +5223,17 @@ BOOL HiliteMenuItem(HWND,HMENU16,UINT,UINT);
BOOL InSendMessage(void); BOOL InSendMessage(void);
WORD InitAtomTable(WORD); WORD InitAtomTable(WORD);
HRGN32 InquireVisRgn(HDC16); HRGN32 InquireVisRgn(HDC16);
int IntersectClipRect(HDC16,short,short,short,short);
int IntersectVisRect(HDC16,short,short,short,short);
void InvalidateRgn(HWND32,HRGN32,BOOL32); void InvalidateRgn(HWND32,HRGN32,BOOL32);
BOOL InvertRgn(HDC16,HRGN32);
BOOL IsChild(HWND,HWND); BOOL IsChild(HWND,HWND);
BOOL IsClipboardFormatAvailable(WORD); BOOL IsClipboardFormatAvailable(WORD);
BOOL IsDialogMessage(HWND,LPMSG16); BOOL IsDialogMessage(HWND,LPMSG16);
WORD IsDlgButtonChecked(HWND,WORD); WORD IsDlgButtonChecked(HWND,WORD);
BOOL16 IsGDIObject(HGDIOBJ16);
BOOL IsIconic(HWND); BOOL IsIconic(HWND);
BOOL IsMenu(HMENU16); BOOL IsMenu(HMENU16);
BOOL IsValidMetaFile(HMETAFILE16); BOOL IsValidMetaFile(HMETAFILE16);
BOOL IsWindowEnabled(HWND); BOOL IsWindowEnabled(HWND);
BOOL IsWindowVisible(HWND); BOOL IsWindowVisible(HWND);
BOOL IsZoomed(HWND); BOOL IsZoomed(HWND);
BOOL LineTo(HDC16,short,short);
HINSTANCE16 LoadLibrary(LPCSTR); HINSTANCE16 LoadLibrary(LPCSTR);
HINSTANCE16 LoadModule(LPCSTR,LPVOID); HINSTANCE16 LoadModule(LPCSTR,LPVOID);
FARPROC16 LocalNotify(FARPROC16); FARPROC16 LocalNotify(FARPROC16);
@ -5145,19 +5241,15 @@ HMENU16 LookupMenuHandle(HMENU16,INT);
WORD MapVirtualKey(WORD,WORD); WORD MapVirtualKey(WORD,WORD);
void MessageBeep(WORD); void MessageBeep(WORD);
int MessageBox(HWND,LPCSTR,LPCSTR,WORD); int MessageBox(HWND,LPCSTR,LPCSTR,WORD);
DWORD MoveTo(HDC16,short,short);
BOOL MoveWindow(HWND,short,short,short,short,BOOL); BOOL MoveWindow(HWND,short,short,short,short,BOOL);
DWORD OemKeyScan(WORD); DWORD OemKeyScan(WORD);
BOOL OemToAnsi(LPCSTR,LPSTR); BOOL OemToAnsi(LPCSTR,LPSTR);
void OemToAnsiBuff(LPCSTR,LPSTR,INT); void OemToAnsiBuff(LPCSTR,LPSTR,INT);
int OffsetClipRgn(HDC16,short,short);
BOOL OpenClipboard(HWND); BOOL OpenClipboard(HWND);
BOOL OpenIcon(HWND); BOOL OpenIcon(HWND);
int OpenSound(void); int OpenSound(void);
void OutputDebugString(LPCSTR); void OutputDebugString(LPCSTR);
BOOL PaintRgn(HDC16,HRGN32);
BOOL PatBlt(HDC16,short,short,short,short,DWORD); BOOL PatBlt(HDC16,short,short,short,short,DWORD);
BOOL Pie(HDC16,INT,INT,INT,INT,INT,INT,INT,INT);
BOOL PlayMetaFile(HDC16,HMETAFILE16); BOOL PlayMetaFile(HDC16,HMETAFILE16);
void PlayMetaFileRecord(HDC16,LPHANDLETABLE16,LPMETARECORD,WORD); void PlayMetaFileRecord(HDC16,LPHANDLETABLE16,LPMETARECORD,WORD);
BOOL PostMessage(HWND,WORD,WORD,LONG); BOOL PostMessage(HWND,WORD,WORD,LONG);
@ -5170,9 +5262,7 @@ void ProfSampRate(int,int);
void ProfSetup(int,int); void ProfSetup(int,int);
void ProfStart(void); void ProfStart(void);
void ProfStop(void); void ProfStop(void);
BOOL PtVisible(HDC16,short,short);
WORD RealizeDefaultPalette(HDC16); WORD RealizeDefaultPalette(HDC16);
BOOL Rectangle(HDC16,INT,INT,INT,INT);
WORD RegisterClipboardFormat(LPCSTR); WORD RegisterClipboardFormat(LPCSTR);
BOOL RemoveFontResource(LPSTR); BOOL RemoveFontResource(LPSTR);
BOOL RemoveMenu(HMENU16,UINT,UINT); BOOL RemoveMenu(HMENU16,UINT,UINT);
@ -5180,18 +5270,12 @@ void ReplyMessage(LRESULT);
HDC16 ResetDC(HDC16,LPVOID); HDC16 ResetDC(HDC16,LPVOID);
BOOL ResizePalette(HPALETTE16,UINT); BOOL ResizePalette(HPALETTE16,UINT);
BOOL RestoreDC(HDC16,short); BOOL RestoreDC(HDC16,short);
int RestoreVisRgn(HDC16);
BOOL RoundRect(HDC16,INT,INT,INT,INT,INT,INT);
int SaveDC(HDC16); int SaveDC(HDC16);
HRGN32 SaveVisRgn(HDC16);
void ScrollChildren(HWND,UINT,WPARAM16,LPARAM); void ScrollChildren(HWND,UINT,WPARAM16,LPARAM);
BOOL ScrollDC(HDC16,short,short,LPRECT16,LPRECT16,HRGN32,LPRECT16); BOOL ScrollDC(HDC16,short,short,LPRECT16,LPRECT16,HRGN32,LPRECT16);
void ScrollWindow(HWND,short,short,LPRECT16,LPRECT16); void ScrollWindow(HWND,short,short,LPRECT16,LPRECT16);
int ScrollWindowEx(HWND,short,short,LPRECT16,LPRECT16,HRGN32,LPRECT16,WORD); int ScrollWindowEx(HWND,short,short,LPRECT16,LPRECT16,HRGN32,LPRECT16,WORD);
int SelectClipRgn(HDC16,HRGN32);
HGDIOBJ16 SelectObject(HDC16,HGDIOBJ16);
HPALETTE16 SelectPalette(HDC16,HPALETTE16,BOOL); HPALETTE16 SelectPalette(HDC16,HPALETTE16,BOOL);
int SelectVisRgn(HDC16,HRGN32);
HWND SetActiveWindow(HWND); HWND SetActiveWindow(HWND);
WORD SetBkMode(HDC16,WORD); WORD SetBkMode(HDC16,WORD);
HANDLE16 SetClipboardData(WORD,HANDLE16); HANDLE16 SetClipboardData(WORD,HANDLE16);
@ -5215,7 +5299,6 @@ BOOL SetMessageQueue(int);
HMETAFILE16 SetMetaFileBits(HGLOBAL16); HMETAFILE16 SetMetaFileBits(HGLOBAL16);
WORD SetPaletteEntries(HPALETTE16,WORD,WORD,LPPALETTEENTRY); WORD SetPaletteEntries(HPALETTE16,WORD,WORD,LPPALETTEENTRY);
HWND SetParent(HWND,HWND); HWND SetParent(HWND,HWND);
COLORREF SetPixel(HDC16,short,short,COLORREF);
WORD SetPolyFillMode(HDC16,WORD); WORD SetPolyFillMode(HDC16,WORD);
WORD SetROP2(HDC16,WORD); WORD SetROP2(HDC16,WORD);
WORD SetRelAbs(HDC16,WORD); WORD SetRelAbs(HDC16,WORD);
@ -5254,7 +5337,6 @@ int ToAscii(WORD,WORD,LPSTR,LPVOID,WORD);
INT16 TranslateAccelerator(HWND,HACCEL16,LPMSG16); INT16 TranslateAccelerator(HWND,HACCEL16,LPMSG16);
BOOL TranslateMDISysAccel(HWND,LPMSG16); BOOL TranslateMDISysAccel(HWND,LPMSG16);
BOOL TranslateMessage(LPMSG16); BOOL TranslateMessage(LPMSG16);
BOOL UnrealizeObject(HGDIOBJ16);
int UpdateColors(HDC16); int UpdateColors(HDC16);
void ValidateCodeSegments(void); void ValidateCodeSegments(void);
LPSTR ValidateFreeSpaces(void); LPSTR ValidateFreeSpaces(void);

View File

@ -26,6 +26,7 @@
#include "stddebug.h" #include "stddebug.h"
#include "debug.h" #include "debug.h"
#include "callback.h" #include "callback.h"
#include "xmalloc.h"
extern HINSTANCE16 PE_LoadModule( int fd, OFSTRUCT *ofs, LOADPARAMS* params ); extern HINSTANCE16 PE_LoadModule( int fd, OFSTRUCT *ofs, LOADPARAMS* params );
@ -514,7 +515,7 @@ static HMODULE16 MODULE_LoadExeHeader( HFILE hFile, OFSTRUCT *ofs )
fastload_length=ne_header.fastload_length<<ne_header.align_shift_count; fastload_length=ne_header.fastload_length<<ne_header.align_shift_count;
dprintf_module( stddeb, "Using fast-load area offset=%x len=%d\n", dprintf_module( stddeb, "Using fast-load area offset=%x len=%d\n",
fastload_offset, fastload_length ); fastload_offset, fastload_length );
if ((fastload = (char *)malloc( fastload_length )) != NULL) if ((fastload = (char *)xmalloc( fastload_length )) != NULL)
{ {
_llseek( hFile, mz_header.ne_offset + fastload_offset, SEEK_SET ); _llseek( hFile, mz_header.ne_offset + fastload_offset, SEEK_SET );
if (_lread32(hFile, fastload, fastload_length) != fastload_length) if (_lread32(hFile, fastload, fastload_length) != fastload_length)
@ -536,7 +537,7 @@ static HMODULE16 MODULE_LoadExeHeader( HFILE hFile, OFSTRUCT *ofs )
/* Get the segment table */ /* Get the segment table */
pModule->seg_table = (int)pData - (int)pModule; pModule->seg_table = (int)pData - (int)pModule;
buffer = malloc( ne_header.n_segment_tab * sizeof(struct ne_segment_table_entry_s) ); buffer = xmalloc( ne_header.n_segment_tab * sizeof(struct ne_segment_table_entry_s) );
if (buffer) if (buffer)
{ {
int i; int i;

View File

@ -153,8 +153,9 @@ FARPROC32 PE_FindExportedFunction(struct pe_data *pe, LPCSTR funcName)
name++; name++;
} }
} else { } else {
if (funcName-exports->Base > exports->Number_Of_Functions) { if (LOWORD(funcName)-exports->Base > exports->Number_Of_Functions) {
dprintf_win32(stddeb," ordinal %d out of range!\n",funcName); dprintf_win32(stddeb," ordinal %d out of range!\n",
LOWORD(funcName));
return NULL; return NULL;
} }
return (FARPROC32)(load_addr+function[(int)funcName-exports->Base]); return (FARPROC32)(load_addr+function[(int)funcName-exports->Base]);
@ -224,7 +225,7 @@ fixup_imports (struct pe_data *pe, HMODULE16 hModule)
if ((unsigned) *import_list & 0x80000000) { if ((unsigned) *import_list & 0x80000000) {
int ordinal = *import_list & (0x80000000 - 1); int ordinal = *import_list & (0x80000000 - 1);
dprintf_win32 (stddeb, "--- Ordinal %s,%d\n", Module, ordinal); dprintf_win32 (stddeb, "--- Ordinal %s,%d\n", Module, ordinal);
*thunk_list = GetProcAddress32(MODULE_FindModule (Module), *thunk_list = (unsigned)GetProcAddress32(MODULE_FindModule (Module),
(LPCSTR) ordinal); (LPCSTR) ordinal);
if (!*thunk_list) { if (!*thunk_list) {
fprintf(stderr,"No implementation for %s.%d, setting to NULL\n", fprintf(stderr,"No implementation for %s.%d, setting to NULL\n",
@ -233,7 +234,7 @@ fixup_imports (struct pe_data *pe, HMODULE16 hModule)
} }
} else { /* import by name */ } else { /* import by name */
dprintf_win32 (stddeb, "--- %s %s.%d\n", pe_name->Name, Module, pe_name->Hint); dprintf_win32 (stddeb, "--- %s %s.%d\n", pe_name->Name, Module, pe_name->Hint);
*thunk_list = GetProcAddress32(MODULE_FindModule (Module), *thunk_list = (unsigned)GetProcAddress32(MODULE_FindModule (Module),
pe_name->Name); pe_name->Name);
if (!*thunk_list) { if (!*thunk_list) {
fprintf(stderr, "No implementation for %s.%d(%s), setting to NULL\n", fprintf(stderr, "No implementation for %s.%d(%s), setting to NULL\n",
@ -253,7 +254,7 @@ fixup_imports (struct pe_data *pe, HMODULE16 hModule)
/* not sure about this branch, but it seems to work */ /* not sure about this branch, but it seems to work */
int ordinal = *thunk_list & ~0x80000000; int ordinal = *thunk_list & ~0x80000000;
dprintf_win32(stddeb,"--- Ordinal %s.%d\n",Module,ordinal); dprintf_win32(stddeb,"--- Ordinal %s.%d\n",Module,ordinal);
*thunk_list = GetProcAddress32(MODULE_FindModule (Module), *thunk_list = (unsigned)GetProcAddress32(MODULE_FindModule (Module),
(LPCSTR) ordinal); (LPCSTR) ordinal);
if (!*thunk_list) { if (!*thunk_list) {
fprintf(stderr, "No implementation for %s.%d, setting to NULL\n", fprintf(stderr, "No implementation for %s.%d, setting to NULL\n",
@ -263,7 +264,7 @@ fixup_imports (struct pe_data *pe, HMODULE16 hModule)
} else { } else {
dprintf_win32(stddeb,"--- %s %s.%d\n", dprintf_win32(stddeb,"--- %s %s.%d\n",
pe_name->Name, Module, pe_name->Hint); pe_name->Name, Module, pe_name->Hint);
*thunk_list = GetProcAddress32(MODULE_FindModule(Module), *thunk_list = (unsigned)GetProcAddress32(MODULE_FindModule(Module),
pe_name->Name); pe_name->Name);
if (!*thunk_list) { if (!*thunk_list) {
fprintf(stderr, "No implementation for %s.%d, setting to NULL\n", fprintf(stderr, "No implementation for %s.%d, setting to NULL\n",
@ -373,7 +374,7 @@ static struct pe_data *PE_LoadImage( int fd, HMODULE16 hModule, WORD offset )
{ {
struct pe_data *pe; struct pe_data *pe;
int i, result; int i, result;
unsigned int load_addr; int load_addr;
struct Directory dir; struct Directory dir;
char buffer[200]; char buffer[200];
DBG_ADDR daddr; DBG_ADDR daddr;
@ -405,7 +406,7 @@ static struct pe_data *PE_LoadImage( int fd, HMODULE16 hModule, WORD offset )
I don't know if mmap("/dev/null"); would do any better. I don't know if mmap("/dev/null"); would do any better.
What I'd really like to do is a Win32 style VirtualAlloc/MapViewOfFile What I'd really like to do is a Win32 style VirtualAlloc/MapViewOfFile
sequence */ sequence */
load_addr = pe->load_addr = malloc(pe->vma_size); load_addr = pe->load_addr = (int)xmalloc(pe->vma_size);
dprintf_win32(stddeb, "Load addr is really %x, range %x\n", dprintf_win32(stddeb, "Load addr is really %x, range %x\n",
pe->load_addr, pe->vma_size); pe->load_addr, pe->vma_size);
@ -416,7 +417,7 @@ static struct pe_data *PE_LoadImage( int fd, HMODULE16 hModule, WORD offset )
if(pe->pe_seg[i].Characteristics & if(pe->pe_seg[i].Characteristics &
~ IMAGE_SCN_TYPE_CNT_UNINITIALIZED_DATA) ~ IMAGE_SCN_TYPE_CNT_UNINITIALIZED_DATA)
if(lseek(fd,pe->pe_seg[i].PointerToRawData,SEEK_SET) == -1 if(lseek(fd,pe->pe_seg[i].PointerToRawData,SEEK_SET) == -1
|| read(fd,load_addr + pe->pe_seg[i].Virtual_Address, || read(fd,(char *)load_addr + pe->pe_seg[i].Virtual_Address,
pe->pe_seg[i].Size_Of_Raw_Data) pe->pe_seg[i].Size_Of_Raw_Data)
!= pe->pe_seg[i].Size_Of_Raw_Data) != pe->pe_seg[i].Size_Of_Raw_Data)
{ {
@ -471,37 +472,37 @@ static struct pe_data *PE_LoadImage( int fd, HMODULE16 hModule, WORD offset )
if(dir.Size) if(dir.Size)
{ {
if(pe->pe_export && if(pe->pe_export &&
pe->pe_export!=load_addr+dir.Virtual_address) (int)pe->pe_export!=load_addr+dir.Virtual_address)
fprintf(stderr,"wrong export directory??\n"); fprintf(stderr,"wrong export directory??\n");
/* always trust the directory */ /* always trust the directory */
pe->pe_export = load_addr+dir.Virtual_address; pe->pe_export = (void *)(load_addr+dir.Virtual_address);
} }
dir=pe->pe_header->opt_coff.DataDirectory[IMAGE_FILE_IMPORT_DIRECTORY]; dir=pe->pe_header->opt_coff.DataDirectory[IMAGE_FILE_IMPORT_DIRECTORY];
if(dir.Size) if(dir.Size)
{ {
if(pe->pe_import && if(pe->pe_import &&
pe->pe_import!=load_addr+dir.Virtual_address) (int)pe->pe_import!=load_addr+dir.Virtual_address)
fprintf(stderr,"wrong import directory??\n"); fprintf(stderr,"wrong import directory??\n");
pe->pe_import = load_addr+dir.Virtual_address; pe->pe_import = (void *)(load_addr+dir.Virtual_address);
} }
dir=pe->pe_header->opt_coff.DataDirectory[IMAGE_FILE_RESOURCE_DIRECTORY]; dir=pe->pe_header->opt_coff.DataDirectory[IMAGE_FILE_RESOURCE_DIRECTORY];
if(dir.Size) if(dir.Size)
{ {
if(pe->pe_resource && if(pe->pe_resource &&
pe->pe_resource!=load_addr+dir.Virtual_address) (int)pe->pe_resource!=load_addr+dir.Virtual_address)
fprintf(stderr,"wrong resource directory??\n"); fprintf(stderr,"wrong resource directory??\n");
pe->pe_resource = load_addr+dir.Virtual_address; pe->pe_resource = (void *)(load_addr+dir.Virtual_address);
} }
dir=pe->pe_header->opt_coff.DataDirectory[IMAGE_FILE_BASE_RELOCATION_TABLE]; dir=pe->pe_header->opt_coff.DataDirectory[IMAGE_FILE_BASE_RELOCATION_TABLE];
if(dir.Size) if(dir.Size)
{ {
if(pe->pe_reloc && if(pe->pe_reloc &&
pe->pe_reloc!=load_addr+dir.Virtual_address) (int)pe->pe_reloc!=load_addr+dir.Virtual_address)
fprintf(stderr,"wrong relocation list??\n"); fprintf(stderr,"wrong relocation list??\n");
pe->pe_reloc = load_addr+dir.Virtual_address; pe->pe_reloc = (void *)(load_addr+dir.Virtual_address);
} }
if(pe->pe_header->opt_coff.DataDirectory if(pe->pe_header->opt_coff.DataDirectory
@ -566,8 +567,6 @@ HINSTANCE16 PE_LoadModule( int fd, OFSTRUCT *ofs, LOADPARAMS* params )
HMODULE16 hModule; HMODULE16 hModule;
HINSTANCE16 hInstance; HINSTANCE16 hInstance;
NE_MODULE *pModule; NE_MODULE *pModule;
SEGTABLEENTRY *pSegment;
FARPROC16 startup;
struct mz_header_s mz_header; struct mz_header_s mz_header;
if ((hModule = MODULE_CreateDummyModule( ofs )) < 32) return hModule; if ((hModule = MODULE_CreateDummyModule( ofs )) < 32) return hModule;
@ -577,13 +576,6 @@ HINSTANCE16 PE_LoadModule( int fd, OFSTRUCT *ofs, LOADPARAMS* params )
lseek( fd, 0, SEEK_SET ); lseek( fd, 0, SEEK_SET );
read( fd, &mz_header, sizeof(mz_header) ); read( fd, &mz_header, sizeof(mz_header) );
/* Set the startup address */
startup = MODULE_GetWndProcEntry16("Win32CallToStart");
pSegment = NE_SEG_TABLE(pModule) + pModule->cs - 1;
pSegment->selector = SELECTOROF(startup); /* FIXME */
pModule->ip = OFFSETOF(startup);
pModule->pe_module = PE_LoadImage( fd, hModule, mz_header.ne_offset ); pModule->pe_module = PE_LoadImage( fd, hModule, mz_header.ne_offset );
hInstance = MODULE_CreateInstance( hModule, params ); hInstance = MODULE_CreateInstance( hModule, params );
@ -598,28 +590,6 @@ HINSTANCE16 PE_LoadModule( int fd, OFSTRUCT *ofs, LOADPARAMS* params )
return hInstance; return hInstance;
} }
void PE_InitTEB(int hTEB);
void PE_InitializeDLLs(HMODULE16 hModule);
void PE_Win32CallToStart( SIGCONTEXT *context )
{
int fs;
HMODULE16 hModule;
NE_MODULE *pModule;
dprintf_win32(stddeb,"Going to start Win32 program\n");
InitTask( context );
hModule = GetExePtr( GetCurrentTask() );
pModule = MODULE_GetPtr( hModule );
InitApp( hModule );
fs=(int)GlobalAlloc16( GMEM_FIXED | GMEM_ZEROINIT, 0x10000 );
PE_InitTEB(fs);
__asm__ __volatile__("movw %w0,%%fs"::"r" (fs));
PE_InitializeDLLs( hModule );
CallTaskStart32( (FARPROC32)(pModule->pe_module->load_addr +
pModule->pe_module->pe_header->opt_coff.AddressOfEntryPoint) );
}
int PE_UnloadImage( HMODULE16 hModule ) int PE_UnloadImage( HMODULE16 hModule )
{ {
printf("PEunloadImage() called!\n"); printf("PEunloadImage() called!\n");
@ -647,7 +617,7 @@ static void PE_InitDLL(HMODULE16 hModule)
printf("InitPEDLL() called!\n"); printf("InitPEDLL() called!\n");
CallDLLEntryProc32( (FARPROC32)(pe->load_addr + CallDLLEntryProc32( (FARPROC32)(pe->load_addr +
pe->pe_header->opt_coff.AddressOfEntryPoint), pe->pe_header->opt_coff.AddressOfEntryPoint),
hModule, DLL_PROCESS_ATTACH, (void *)-1 ); hModule, DLL_PROCESS_ATTACH, -1 );
} }
} }
@ -655,12 +625,12 @@ static void PE_InitDLL(HMODULE16 hModule)
/* FIXME: This stuff is all on a "well it works" basis. An implementation /* FIXME: This stuff is all on a "well it works" basis. An implementation
based on some kind of documentation would be greatly appreciated :-) */ based on some kind of documentation would be greatly appreciated :-) */
typedef struct typedef struct _TEB
{ {
void *Except; void *Except;
void *stack; void *stack;
int dummy1[4]; int dummy1[4];
struct TEB *TEBDSAlias; struct _TEB *TEBDSAlias;
int dummy2[2]; int dummy2[2];
int taskid; int taskid;
} TEB; } TEB;
@ -672,7 +642,7 @@ void PE_InitTEB(int hTEB)
pTask = (TDB *)(GlobalLock16(GetCurrentTask() & 0xffff)); pTask = (TDB *)(GlobalLock16(GetCurrentTask() & 0xffff));
pTEB = (TEB *)(GlobalLock16(hTEB)); pTEB = (TEB *)(GlobalLock16(hTEB));
pTEB->stack = pTask->esp; pTEB->stack = (void *)pTask->esp;
pTEB->Except = (void *)(-1); pTEB->Except = (void *)(-1);
pTEB->TEBDSAlias = pTEB; pTEB->TEBDSAlias = pTEB;
pTEB->taskid = getpid(); pTEB->taskid = getpid();

View File

@ -349,38 +349,59 @@ static BOOL TASK_FreeThunk( HTASK16 hTask, SEGPTR thunk )
#ifndef WINELIB #ifndef WINELIB
static void TASK_CallToStart(void) static void TASK_CallToStart(void)
{ {
int cs_reg, ds_reg, ip_reg; int cs_reg, ds_reg, fs_reg, ip_reg;
TDB *pTask = (TDB *)GlobalLock16( hCurrentTask ); TDB *pTask = (TDB *)GlobalLock16( hCurrentTask );
NE_MODULE *pModule = MODULE_GetPtr( pTask->hModule ); NE_MODULE *pModule = MODULE_GetPtr( pTask->hModule );
SEGTABLEENTRY *pSegTable = NE_SEG_TABLE( pModule ); SEGTABLEENTRY *pSegTable = NE_SEG_TABLE( pModule );
/* Registers at initialization must be:
* ax zero
* bx stack size in bytes
* cx heap size in bytes
* si previous app instance
* di current app instance
* bp zero
* es selector to the PSP
* ds dgroup of the application
* ss stack selector
* sp top of the stack
*/
cs_reg = pSegTable[pModule->cs - 1].selector;
ip_reg = pModule->ip;
ds_reg = pSegTable[pModule->dgroup - 1].selector;
IF1632_Saved16_ss = pTask->ss; IF1632_Saved16_ss = pTask->ss;
IF1632_Saved16_sp = pTask->sp; IF1632_Saved16_sp = pTask->sp;
dprintf_task( stddeb, "Starting main program: cs:ip=%04x:%04x ds=%04x ss:sp=%04x:%04x\n",
cs_reg, ip_reg, ds_reg,
IF1632_Saved16_ss, IF1632_Saved16_sp);
CallTo16_regs_( (FARPROC16)(cs_reg << 16 | ip_reg), ds_reg, if (pModule->flags & NE_FFLAGS_WIN32)
pTask->hPDB /*es*/, 0 /*bp*/, 0 /*ax*/, {
pModule->stack_size /*bx*/, pModule->heap_size /*cx*/, /* FIXME: all this is an ugly hack */
0 /*dx*/, 0 /*si*/, ds_reg /*di*/ );
extern void PE_InitTEB( int hTEB );
extern void InitTask( SIGCONTEXT *context );
extern void PE_InitializeDLLs( HMODULE16 hModule );
InitTask( NULL );
InitApp( pTask->hModule );
fs_reg = (int)GlobalAlloc16( GMEM_FIXED | GMEM_ZEROINIT, 0x10000 );
PE_InitTEB( fs_reg );
__asm__ __volatile__("movw %w0,%%fs"::"r" (fs_reg));
PE_InitializeDLLs( pTask->hModule );
CallTaskStart32( (FARPROC32)(pModule->pe_module->load_addr +
pModule->pe_module->pe_header->opt_coff.AddressOfEntryPoint) );
}
else
{
/* Registers at initialization must be:
* ax zero
* bx stack size in bytes
* cx heap size in bytes
* si previous app instance
* di current app instance
* bp zero
* es selector to the PSP
* ds dgroup of the application
* ss stack selector
* sp top of the stack
*/
cs_reg = pSegTable[pModule->cs - 1].selector;
ip_reg = pModule->ip;
ds_reg = pSegTable[pModule->dgroup - 1].selector;
dprintf_task( stddeb, "Starting main program: cs:ip=%04x:%04x ds=%04x ss:sp=%04x:%04x\n",
cs_reg, ip_reg, ds_reg,
IF1632_Saved16_ss, IF1632_Saved16_sp);
CallTo16_regs_( (FARPROC16)(cs_reg << 16 | ip_reg), ds_reg,
pTask->hPDB /*es*/, 0 /*bp*/, 0 /*ax*/,
pModule->stack_size /*bx*/, pModule->heap_size /*cx*/,
0 /*dx*/, 0 /*si*/, ds_reg /*di*/ );
}
/* This should never return */ /* This should never return */
fprintf( stderr, "TASK_CallToStart: Main program returned!\n" ); fprintf( stderr, "TASK_CallToStart: Main program returned!\n" );
@ -814,7 +835,7 @@ void InitTask( SIGCONTEXT *context )
LONG stacklow, stackhi; LONG stacklow, stackhi;
#ifndef WINELIB #ifndef WINELIB
EAX_reg(context) = 0; if (context) EAX_reg(context) = 0;
#endif #endif
if (!(pTask = (TDB *)GlobalLock16( hCurrentTask ))) return; if (!(pTask = (TDB *)GlobalLock16( hCurrentTask ))) return;
if (!(pModule = MODULE_GetPtr( pTask->hModule ))) return; if (!(pModule = MODULE_GetPtr( pTask->hModule ))) return;
@ -822,21 +843,24 @@ void InitTask( SIGCONTEXT *context )
#ifndef WINELIB #ifndef WINELIB
NE_InitializeDLLs( pTask->hModule ); NE_InitializeDLLs( pTask->hModule );
/* Registers on return are: if (context)
* ax 1 if OK, 0 on error {
* cx stack limit in bytes /* Registers on return are:
* dx cmdShow parameter * ax 1 if OK, 0 on error
* si instance handle of the previous instance * cx stack limit in bytes
* di instance handle of the new task * dx cmdShow parameter
* es:bx pointer to command-line inside PSP * si instance handle of the previous instance
*/ * di instance handle of the new task
EAX_reg(context) = 1; * es:bx pointer to command-line inside PSP
EBX_reg(context) = 0x81; */
ECX_reg(context) = pModule->stack_size; EAX_reg(context) = 1;
EDX_reg(context) = pTask->nCmdShow; EBX_reg(context) = 0x81;
ESI_reg(context) = (DWORD)pTask->hPrevInstance; ECX_reg(context) = pModule->stack_size;
EDI_reg(context) = (DWORD)pTask->hInstance; EDX_reg(context) = pTask->nCmdShow;
ES_reg (context) = (WORD)pTask->hPDB; ESI_reg(context) = (DWORD)pTask->hPrevInstance;
EDI_reg(context) = (DWORD)pTask->hInstance;
ES_reg (context) = (WORD)pTask->hPDB;
}
/* Initialize the local heap */ /* Initialize the local heap */
if ( pModule->heap_size ) if ( pModule->heap_size )

View File

@ -144,7 +144,7 @@ void CLIPBOARD_DeleteRecord(LPCLIPFORMAT lpFormat)
{ {
if( lpFormat->wFormatID >= CF_GDIOBJFIRST && if( lpFormat->wFormatID >= CF_GDIOBJFIRST &&
lpFormat->wFormatID <= CF_GDIOBJLAST ) lpFormat->wFormatID <= CF_GDIOBJLAST )
DeleteObject(lpFormat->hData); DeleteObject32(lpFormat->hData);
else if( lpFormat->hData ) else if( lpFormat->hData )
GlobalFree16(lpFormat->hData); GlobalFree16(lpFormat->hData);

View File

@ -218,7 +218,7 @@ static LONG FILEDLG_WMDrawItem(HWND hWnd, WPARAM16 wParam, LPARAM lParam,int sav
{ {
LPDRAWITEMSTRUCT16 lpdis = (LPDRAWITEMSTRUCT16)PTR_SEG_TO_LIN(lParam); LPDRAWITEMSTRUCT16 lpdis = (LPDRAWITEMSTRUCT16)PTR_SEG_TO_LIN(lParam);
char *str; char *str;
HBRUSH16 hBrush; HBRUSH32 hBrush;
HBITMAP16 hBitmap, hPrevBitmap; HBITMAP16 hBitmap, hPrevBitmap;
BITMAP16 bm; BITMAP16 bm;
HDC16 hMemDC; HDC16 hMemDC;
@ -226,8 +226,8 @@ static LONG FILEDLG_WMDrawItem(HWND hWnd, WPARAM16 wParam, LPARAM lParam,int sav
if (lpdis->CtlType == ODT_LISTBOX && lpdis->CtlID == lst1) if (lpdis->CtlType == ODT_LISTBOX && lpdis->CtlID == lst1)
{ {
if (!(str = SEGPTR_ALLOC(512))) return FALSE; if (!(str = SEGPTR_ALLOC(512))) return FALSE;
hBrush = SelectObject(lpdis->hDC, GetStockObject(LTGRAY_BRUSH)); hBrush = SelectObject32(lpdis->hDC, GetStockObject32(LTGRAY_BRUSH));
SelectObject(lpdis->hDC, hBrush); SelectObject32(lpdis->hDC, hBrush);
FillRect16(lpdis->hDC, &lpdis->rcItem, hBrush); FillRect16(lpdis->hDC, &lpdis->rcItem, hBrush);
SendMessage16(lpdis->hwndItem, LB_GETTEXT16, lpdis->itemID, SendMessage16(lpdis->hwndItem, LB_GETTEXT16, lpdis->itemID,
(LPARAM)SEGPTR_GET(str)); (LPARAM)SEGPTR_GET(str));
@ -251,8 +251,8 @@ static LONG FILEDLG_WMDrawItem(HWND hWnd, WPARAM16 wParam, LPARAM lParam,int sav
if (lpdis->CtlType == ODT_LISTBOX && lpdis->CtlID == lst2) if (lpdis->CtlType == ODT_LISTBOX && lpdis->CtlID == lst2)
{ {
if (!(str = SEGPTR_ALLOC(512))) return FALSE; if (!(str = SEGPTR_ALLOC(512))) return FALSE;
hBrush = SelectObject(lpdis->hDC, GetStockObject(LTGRAY_BRUSH)); hBrush = SelectObject32(lpdis->hDC, GetStockObject32(LTGRAY_BRUSH));
SelectObject(lpdis->hDC, hBrush); SelectObject32(lpdis->hDC, hBrush);
FillRect16(lpdis->hDC, &lpdis->rcItem, hBrush); FillRect16(lpdis->hDC, &lpdis->rcItem, hBrush);
SendMessage16(lpdis->hwndItem, LB_GETTEXT16, lpdis->itemID, SendMessage16(lpdis->hwndItem, LB_GETTEXT16, lpdis->itemID,
(LPARAM)SEGPTR_GET(str)); (LPARAM)SEGPTR_GET(str));
@ -262,10 +262,10 @@ static LONG FILEDLG_WMDrawItem(HWND hWnd, WPARAM16 wParam, LPARAM lParam,int sav
TextOut16(lpdis->hDC, lpdis->rcItem.left + bm.bmWidth, TextOut16(lpdis->hDC, lpdis->rcItem.left + bm.bmWidth,
lpdis->rcItem.top, str, strlen(str)); lpdis->rcItem.top, str, strlen(str));
hMemDC = CreateCompatibleDC(lpdis->hDC); hMemDC = CreateCompatibleDC(lpdis->hDC);
hPrevBitmap = SelectObject(hMemDC, hBitmap); hPrevBitmap = SelectObject32(hMemDC, hBitmap);
BitBlt(lpdis->hDC, lpdis->rcItem.left, lpdis->rcItem.top, BitBlt(lpdis->hDC, lpdis->rcItem.left, lpdis->rcItem.top,
bm.bmWidth, bm.bmHeight, hMemDC, 0, 0, SRCCOPY); bm.bmWidth, bm.bmHeight, hMemDC, 0, 0, SRCCOPY);
SelectObject(hMemDC, hPrevBitmap); SelectObject32(hMemDC, hPrevBitmap);
DeleteDC(hMemDC); DeleteDC(hMemDC);
if (lpdis->itemState != 0) InvertRect16(lpdis->hDC, &lpdis->rcItem); if (lpdis->itemState != 0) InvertRect16(lpdis->hDC, &lpdis->rcItem);
SEGPTR_FREE(str); SEGPTR_FREE(str);
@ -274,8 +274,8 @@ static LONG FILEDLG_WMDrawItem(HWND hWnd, WPARAM16 wParam, LPARAM lParam,int sav
if (lpdis->CtlType == ODT_COMBOBOX && lpdis->CtlID == cmb2) if (lpdis->CtlType == ODT_COMBOBOX && lpdis->CtlID == cmb2)
{ {
if (!(str = SEGPTR_ALLOC(512))) return FALSE; if (!(str = SEGPTR_ALLOC(512))) return FALSE;
hBrush = SelectObject(lpdis->hDC, GetStockObject(LTGRAY_BRUSH)); hBrush = SelectObject32(lpdis->hDC, GetStockObject32(LTGRAY_BRUSH));
SelectObject(lpdis->hDC, hBrush); SelectObject32(lpdis->hDC, hBrush);
FillRect16(lpdis->hDC, &lpdis->rcItem, hBrush); FillRect16(lpdis->hDC, &lpdis->rcItem, hBrush);
SendMessage16(lpdis->hwndItem, CB_GETLBTEXT, lpdis->itemID, SendMessage16(lpdis->hwndItem, CB_GETLBTEXT, lpdis->itemID,
(LPARAM)SEGPTR_GET(str)); (LPARAM)SEGPTR_GET(str));
@ -291,10 +291,10 @@ static LONG FILEDLG_WMDrawItem(HWND hWnd, WPARAM16 wParam, LPARAM lParam,int sav
TextOut16(lpdis->hDC, lpdis->rcItem.left + bm.bmWidth, TextOut16(lpdis->hDC, lpdis->rcItem.left + bm.bmWidth,
lpdis->rcItem.top, str, strlen(str)); lpdis->rcItem.top, str, strlen(str));
hMemDC = CreateCompatibleDC(lpdis->hDC); hMemDC = CreateCompatibleDC(lpdis->hDC);
hPrevBitmap = SelectObject(hMemDC, hBitmap); hPrevBitmap = SelectObject32(hMemDC, hBitmap);
BitBlt(lpdis->hDC, lpdis->rcItem.left, lpdis->rcItem.top, BitBlt(lpdis->hDC, lpdis->rcItem.left, lpdis->rcItem.top,
bm.bmWidth, bm.bmHeight, hMemDC, 0, 0, SRCCOPY); bm.bmWidth, bm.bmHeight, hMemDC, 0, 0, SRCCOPY);
SelectObject(hMemDC, hPrevBitmap); SelectObject32(hMemDC, hPrevBitmap);
DeleteDC(hMemDC); DeleteDC(hMemDC);
if (lpdis->itemState != 0) InvertRect16(lpdis->hDC, &lpdis->rcItem); if (lpdis->itemState != 0) InvertRect16(lpdis->hDC, &lpdis->rcItem);
SEGPTR_FREE(str); SEGPTR_FREE(str);
@ -1476,24 +1476,24 @@ static void CC_PaintSelectedColor(HWND hDlg,COLORREF cr)
{ {
RECT16 rect; RECT16 rect;
HDC32 hdc; HDC32 hdc;
HBRUSH16 hBrush; HBRUSH32 hBrush;
HWND hwnd=GetDlgItem(hDlg,0x2c5); HWND hwnd=GetDlgItem(hDlg,0x2c5);
if (IsWindowVisible(GetDlgItem(hDlg,0x2c6))) /* if full size */ if (IsWindowVisible(GetDlgItem(hDlg,0x2c6))) /* if full size */
{ {
hdc=GetDC32(hwnd); hdc=GetDC32(hwnd);
GetClientRect16 (hwnd, &rect) ; GetClientRect16 (hwnd, &rect) ;
hBrush = CreateSolidBrush(cr); hBrush = CreateSolidBrush32(cr);
if (hBrush) if (hBrush)
{ {
hBrush = SelectObject (hdc, hBrush) ; hBrush = SelectObject32 (hdc, hBrush) ;
Rectangle (hdc, rect.left,rect.top,rect.right/2,rect.bottom); Rectangle32(hdc, rect.left,rect.top,rect.right/2,rect.bottom);
DeleteObject (SelectObject (hdc,hBrush)) ; DeleteObject32 (SelectObject32 (hdc,hBrush)) ;
hBrush=CreateSolidBrush(GetNearestColor(hdc,cr)); hBrush=CreateSolidBrush32(GetNearestColor(hdc,cr));
if (hBrush) if (hBrush)
{ {
hBrush= SelectObject (hdc, hBrush) ; hBrush= SelectObject32 (hdc, hBrush) ;
Rectangle (hdc, rect.right/2-1,rect.top,rect.right,rect.bottom); Rectangle32( hdc, rect.right/2-1,rect.top,rect.right,rect.bottom);
DeleteObject (SelectObject (hdc, hBrush)) ; DeleteObject32( SelectObject32 (hdc, hBrush)) ;
} }
} }
ReleaseDC32(hwnd,hdc); ReleaseDC32(hwnd,hdc);
@ -1534,7 +1534,7 @@ static void CC_PaintTriangle(HWND hDlg,int y)
points[2].x=points[1].x=points[0].x + w; points[2].x=points[1].x=points[0].x + w;
if (lpp->old3angle.left) if (lpp->old3angle.left)
FillRect16(hDC,&lpp->old3angle,GetStockObject(WHITE_BRUSH)); FillRect16(hDC,&lpp->old3angle,GetStockObject32(WHITE_BRUSH));
lpp->old3angle.left =points[0].x; lpp->old3angle.left =points[0].x;
lpp->old3angle.right =points[1].x+1; lpp->old3angle.right =points[1].x+1;
lpp->old3angle.top =points[2].y-1; lpp->old3angle.top =points[2].y-1;
@ -1556,15 +1556,15 @@ static void CC_PaintCross(HWND hDlg,int x,int y)
struct CCPRIVATE * lpp=(struct CCPRIVATE *)GetWindowLong32A(hDlg, DWL_USER); struct CCPRIVATE * lpp=(struct CCPRIVATE *)GetWindowLong32A(hDlg, DWL_USER);
RECT16 rect; RECT16 rect;
POINT16 point; POINT16 point;
HPEN16 hPen; HPEN32 hPen;
if (IsWindowVisible(GetDlgItem(hDlg,0x2c6))) /* if full size */ if (IsWindowVisible(GetDlgItem(hDlg,0x2c6))) /* if full size */
{ {
GetClientRect16(hwnd,&rect); GetClientRect16(hwnd,&rect);
hDC=GetDC32(hwnd); hDC=GetDC32(hwnd);
SelectClipRgn(hDC,CreateRectRgnIndirect16(&rect)); SelectClipRgn32(hDC,CreateRectRgnIndirect16(&rect));
hPen=CreatePen(PS_SOLID,2,0); hPen=CreatePen32(PS_SOLID,2,0);
hPen=SelectObject(hDC,hPen); hPen=SelectObject32(hDC,hPen);
point.x=((long)rect.right*(long)x)/(long)MAXHORI; point.x=((long)rect.right*(long)x)/(long)MAXHORI;
point.y=rect.bottom-((long)rect.bottom*(long)y)/(long)MAXVERT; point.y=rect.bottom-((long)rect.bottom*(long)y)/(long)MAXVERT;
if (lpp->oldcross.left!=lpp->oldcross.right) if (lpp->oldcross.left!=lpp->oldcross.right)
@ -1578,10 +1578,10 @@ static void CC_PaintCross(HWND hDlg,int x,int y)
lpp->oldcross.bottom=point.y+w+1; lpp->oldcross.bottom=point.y+w+1;
MoveTo(hDC,point.x-w,point.y); MoveTo(hDC,point.x-w,point.y);
LineTo(hDC,point.x+w,point.y); LineTo32(hDC,point.x+w,point.y);
MoveTo(hDC,point.x,point.y-w); MoveTo(hDC,point.x,point.y-w);
LineTo(hDC,point.x,point.y+w); LineTo32(hDC,point.x,point.y+w);
DeleteObject(SelectObject(hDC,hPen)); DeleteObject32(SelectObject32(hDC,hPen));
ReleaseDC32(hwnd,hDC); ReleaseDC32(hwnd,hDC);
} }
} }
@ -1599,7 +1599,7 @@ static void CC_PrepareColorGraph(HWND hDlg)
int sdif,hdif,xdif,ydif,r,g,b,hue,sat; int sdif,hdif,xdif,ydif,r,g,b,hue,sat;
HWND hwnd=GetDlgItem(hDlg,0x2c6); HWND hwnd=GetDlgItem(hDlg,0x2c6);
struct CCPRIVATE * lpp=(struct CCPRIVATE *)GetWindowLong32A(hDlg, DWL_USER); struct CCPRIVATE * lpp=(struct CCPRIVATE *)GetWindowLong32A(hDlg, DWL_USER);
HBRUSH16 hbrush; HBRUSH32 hbrush;
HDC32 hdc ; HDC32 hdc ;
RECT16 rect,client; RECT16 rect,client;
HCURSOR16 hcursor=SetCursor(LoadCursor16(0,IDC_WAIT)); HCURSOR16 hcursor=SetCursor(LoadCursor16(0,IDC_WAIT));
@ -1608,7 +1608,7 @@ static void CC_PrepareColorGraph(HWND hDlg)
hdc=GetDC32(hwnd); hdc=GetDC32(hwnd);
lpp->hdcMem = CreateCompatibleDC(hdc); lpp->hdcMem = CreateCompatibleDC(hdc);
lpp->hbmMem = CreateCompatibleBitmap(hdc,client.right,client.bottom); lpp->hbmMem = CreateCompatibleBitmap(hdc,client.right,client.bottom);
SelectObject(lpp->hdcMem,lpp->hbmMem); SelectObject32(lpp->hdcMem,lpp->hbmMem);
xdif=client.right /XSTEPS; xdif=client.right /XSTEPS;
ydif=client.bottom/YSTEPS+1; ydif=client.bottom/YSTEPS+1;
@ -1624,9 +1624,9 @@ static void CC_PrepareColorGraph(HWND hDlg)
r=CC_HSLtoRGB('R',hue,sat,120); r=CC_HSLtoRGB('R',hue,sat,120);
g=CC_HSLtoRGB('G',hue,sat,120); g=CC_HSLtoRGB('G',hue,sat,120);
b=CC_HSLtoRGB('B',hue,sat,120); b=CC_HSLtoRGB('B',hue,sat,120);
hbrush=CreateSolidBrush(RGB(r,g,b)); hbrush=CreateSolidBrush32(RGB(r,g,b));
FillRect16(lpp->hdcMem,&rect,hbrush); FillRect16(lpp->hdcMem,&rect,hbrush);
DeleteObject(hbrush); DeleteObject32(hbrush);
rect.bottom=rect.top; rect.bottom=rect.top;
} }
rect.left=rect.right; rect.left=rect.right;
@ -1666,7 +1666,7 @@ static void CC_PaintLumBar(HWND hDlg,int hue,int sat)
HWND hwnd=GetDlgItem(hDlg,0x2be); HWND hwnd=GetDlgItem(hDlg,0x2be);
RECT16 rect,client; RECT16 rect,client;
int lum,ldif,ydif,r,g,b; int lum,ldif,ydif,r,g,b;
HBRUSH16 hbrush; HBRUSH32 hbrush;
HDC32 hDC; HDC32 hDC;
if (IsWindowVisible(hwnd)) if (IsWindowVisible(hwnd))
@ -1683,13 +1683,13 @@ static void CC_PaintLumBar(HWND hDlg,int hue,int sat)
r=CC_HSLtoRGB('R',hue,sat,lum); r=CC_HSLtoRGB('R',hue,sat,lum);
g=CC_HSLtoRGB('G',hue,sat,lum); g=CC_HSLtoRGB('G',hue,sat,lum);
b=CC_HSLtoRGB('B',hue,sat,lum); b=CC_HSLtoRGB('B',hue,sat,lum);
hbrush=CreateSolidBrush(RGB(r,g,b)); hbrush=CreateSolidBrush32(RGB(r,g,b));
FillRect16(hDC,&rect,hbrush); FillRect16(hDC,&rect,hbrush);
DeleteObject(hbrush); DeleteObject32(hbrush);
rect.bottom=rect.top; rect.bottom=rect.top;
} }
GetClientRect16(hwnd,&rect); GetClientRect16(hwnd,&rect);
FrameRect16(hDC,&rect,GetStockObject(BLACK_BRUSH)); FrameRect16(hDC,&rect,GetStockObject32(BLACK_BRUSH));
ReleaseDC32(hwnd,hDC); ReleaseDC32(hwnd,hDC);
} }
} }
@ -1776,7 +1776,7 @@ static void CC_PaintPredefColorArray(HWND hDlg,int rows,int cols)
HWND hwnd=GetDlgItem(hDlg,0x2d0); HWND hwnd=GetDlgItem(hDlg,0x2d0);
RECT16 rect; RECT16 rect;
HDC32 hdc; HDC32 hdc;
HBRUSH16 hBrush; HBRUSH32 hBrush;
int dx,dy,i,j,k; int dx,dy,i,j,k;
GetClientRect16(hwnd,&rect); GetClientRect16(hwnd,&rect);
@ -1791,14 +1791,14 @@ static void CC_PaintPredefColorArray(HWND hDlg,int rows,int cols)
{ {
for (i=0;i<cols;i++) for (i=0;i<cols;i++)
{ {
hBrush = CreateSolidBrush(predefcolors[j][i]); hBrush = CreateSolidBrush32(predefcolors[j][i]);
if (hBrush) if (hBrush)
{ {
hBrush = SelectObject (hdc, hBrush) ; hBrush = SelectObject32 (hdc, hBrush) ;
Rectangle (hdc, rect.left, rect.top, Rectangle32(hdc, rect.left, rect.top,
rect.left+dx-DISTANCE,rect.top+dy-DISTANCE); rect.left+dx-DISTANCE, rect.top+dy-DISTANCE);
rect.left=rect.left+dx; rect.left=rect.left+dx;
DeleteObject (SelectObject (hdc, hBrush)) ; DeleteObject32( SelectObject32 (hdc, hBrush)) ;
} }
} }
rect.top=rect.top+dy; rect.top=rect.top+dy;
@ -1815,7 +1815,7 @@ static void CC_PaintUserColorArray(HWND hDlg,int rows,int cols,COLORREF* lpcr)
HWND hwnd=GetDlgItem(hDlg,0x2d1); HWND hwnd=GetDlgItem(hDlg,0x2d1);
RECT16 rect; RECT16 rect;
HDC32 hdc; HDC32 hdc;
HBRUSH16 hBrush; HBRUSH32 hBrush;
int dx,dy,i,j,k; int dx,dy,i,j,k;
GetClientRect16(hwnd,&rect); GetClientRect16(hwnd,&rect);
@ -1831,14 +1831,14 @@ static void CC_PaintUserColorArray(HWND hDlg,int rows,int cols,COLORREF* lpcr)
{ {
for (i=0;i<cols;i++) for (i=0;i<cols;i++)
{ {
hBrush = CreateSolidBrush(lpcr[i+j*cols]); hBrush = CreateSolidBrush32(lpcr[i+j*cols]);
if (hBrush) if (hBrush)
{ {
hBrush = SelectObject (hdc, hBrush) ; hBrush = SelectObject32 (hdc, hBrush) ;
Rectangle (hdc, rect.left, rect.top, Rectangle32( hdc, rect.left, rect.top,
rect.left+dx-DISTANCE,rect.top+dy-DISTANCE); rect.left+dx-DISTANCE, rect.top+dy-DISTANCE);
rect.left=rect.left+dx; rect.left=rect.left+dx;
DeleteObject (SelectObject (hdc, hBrush)) ; DeleteObject32( SelectObject32 (hdc, hBrush)) ;
} }
} }
rect.top=rect.top+dy; rect.top=rect.top+dy;
@ -2165,7 +2165,7 @@ LRESULT ColorDlgProc(HWND hDlg, UINT message,
return CC_WMInitDialog(hDlg,wParam,lParam); return CC_WMInitDialog(hDlg,wParam,lParam);
case WM_NCDESTROY: case WM_NCDESTROY:
DeleteDC(lpp->hdcMem); DeleteDC(lpp->hdcMem);
DeleteObject(lpp->hbmMem); DeleteObject32(lpp->hbmMem);
free(lpp); free(lpp);
SetWindowLong32A(hDlg, DWL_USER, 0L); /* we don't need it anymore */ SetWindowLong32A(hDlg, DWL_USER, 0L); /* we don't need it anymore */
break; break;
@ -2321,10 +2321,10 @@ static int SetFontStylesToCombo2(HWND hwnd, HDC16 hdc, LPLOGFONT16 lplf,
lplf->lfItalic=fontstyles[i].italic; lplf->lfItalic=fontstyles[i].italic;
lplf->lfWeight=fontstyles[i].weight; lplf->lfWeight=fontstyles[i].weight;
hf=CreateFontIndirect16(lplf); hf=CreateFontIndirect16(lplf);
hf=SelectObject(hdc,hf); hf=SelectObject32(hdc,hf);
GetTextMetrics16(hdc,lptm); GetTextMetrics16(hdc,lptm);
hf=SelectObject(hdc,hf); hf=SelectObject32(hdc,hf);
DeleteObject(hf); DeleteObject32(hf);
if (lptm->tmWeight==fontstyles[i].weight && if (lptm->tmWeight==fontstyles[i].weight &&
lptm->tmItalic==fontstyles[i].italic) /* font successful created ? */ lptm->tmItalic==fontstyles[i].italic) /* font successful created ? */
@ -2568,8 +2568,8 @@ LRESULT CFn_WMDrawItem(HWND hDlg, WPARAM16 wParam, LPARAM lParam)
{ {
if (lpdi->CtlType == ODT_COMBOBOX) if (lpdi->CtlType == ODT_COMBOBOX)
{ {
hBrush = SelectObject(lpdi->hDC, GetStockObject(LTGRAY_BRUSH)); hBrush = SelectObject32(lpdi->hDC, GetStockObject32(LTGRAY_BRUSH));
SelectObject(lpdi->hDC, hBrush); SelectObject32(lpdi->hDC, hBrush);
FillRect16(lpdi->hDC, &lpdi->rcItem, hBrush); FillRect16(lpdi->hDC, &lpdi->rcItem, hBrush);
} }
else else
@ -2591,10 +2591,10 @@ LRESULT CFn_WMDrawItem(HWND hDlg, WPARAM16 wParam, LPARAM lParam)
if (nFontType&TRUETYPE_FONTTYPE) if (nFontType&TRUETYPE_FONTTYPE)
{ {
hMemDC = CreateCompatibleDC(lpdi->hDC); hMemDC = CreateCompatibleDC(lpdi->hDC);
hBitmap = SelectObject(hMemDC, hBitmapTT); hBitmap = SelectObject32(hMemDC, hBitmapTT);
BitBlt(lpdi->hDC, lpdi->rcItem.left, lpdi->rcItem.top, BitBlt(lpdi->hDC, lpdi->rcItem.left, lpdi->rcItem.top,
bm.bmWidth, bm.bmHeight, hMemDC, 0, 0, SRCCOPY); bm.bmWidth, bm.bmHeight, hMemDC, 0, 0, SRCCOPY);
SelectObject(hMemDC, hBitmap); SelectObject32(hMemDC, hBitmap);
DeleteDC(hMemDC); DeleteDC(hMemDC);
} }
#endif #endif
@ -2613,16 +2613,17 @@ LRESULT CFn_WMDrawItem(HWND hDlg, WPARAM16 wParam, LPARAM lParam)
TextOut16(lpdi->hDC, lpdi->rcItem.left + 25+5, TextOut16(lpdi->hDC, lpdi->rcItem.left + 25+5,
lpdi->rcItem.top, buffer, lstrlen16(buffer)); lpdi->rcItem.top, buffer, lstrlen16(buffer));
cr = SendMessage16(lpdi->hwndItem, CB_GETITEMDATA, lpdi->itemID,0L); cr = SendMessage16(lpdi->hwndItem, CB_GETITEMDATA, lpdi->itemID,0L);
hBrush = CreateSolidBrush(cr); hBrush = CreateSolidBrush32(cr);
if (hBrush) if (hBrush)
{ {
hBrush = SelectObject (lpdi->hDC, hBrush) ; hBrush = SelectObject32 (lpdi->hDC, hBrush) ;
rect.right=rect.left+25; rect.right=rect.left+25;
rect.top++; rect.top++;
rect.left+=5; rect.left+=5;
rect.bottom--; rect.bottom--;
Rectangle(lpdi->hDC,rect.left,rect.top,rect.right,rect.bottom); Rectangle32( lpdi->hDC, rect.left, rect.top,
DeleteObject (SelectObject (lpdi->hDC, hBrush)) ; rect.right, rect.bottom );
DeleteObject32( SelectObject32 (lpdi->hDC, hBrush)) ;
} }
rect=lpdi->rcItem; rect=lpdi->rcItem;
rect.left+=25+5; rect.left+=25+5;
@ -2648,7 +2649,7 @@ LRESULT CFn_WMCtlColor(HWND hDlg, WPARAM16 wParam, LPARAM lParam)
if (HIWORD(lParam)==CTLCOLOR_STATIC && GetDlgCtrlID(LOWORD(lParam))==stc6) if (HIWORD(lParam)==CTLCOLOR_STATIC && GetDlgCtrlID(LOWORD(lParam))==stc6)
{ {
SetTextColor(wParam,lpcf->rgbColors); SetTextColor(wParam,lpcf->rgbColors);
return GetStockObject(WHITE_BRUSH); return GetStockObject32(WHITE_BRUSH);
} }
return 0; return 0;
} }

View File

@ -1030,7 +1030,7 @@ LPVOID GetEnvironmentStringsW(void)
wenvtable[count]=(WCHAR)envtable[count]; wenvtable[count]=(WCHAR)envtable[count];
free(envtable); free(envtable);
return envtable; return wenvtable;
} }
void FreeEnvironmentStringsA(void *e) void FreeEnvironmentStringsA(void *e)

View File

@ -1204,7 +1204,8 @@ _w95_loadreg(char* fn,LPKEYSTRUCT lpkey) {
} }
free(data); free(data);
qsort(nr2da,nrofdkes,sizeof(nr2da[0]),_w95dkecomp); qsort(nr2da,nrofdkes,sizeof(nr2da[0]),
(int(*)(const void *,const void*))_w95dkecomp);
/* STEP 2: keydata & values */ /* STEP 2: keydata & values */
if (!GetFileInformationByHandle(hfd,&hfdinfo)) if (!GetFileInformationByHandle(hfd,&hfdinfo))

View File

@ -395,9 +395,9 @@ INT ShellAbout(HWND hWnd, LPCSTR szApp, LPCSTR szOtherStuff, HICON16 hIcon)
handle = SYSRES_LoadResource( SYSRES_DIALOG_SHELL_ABOUT_MSGBOX ); handle = SYSRES_LoadResource( SYSRES_DIALOG_SHELL_ABOUT_MSGBOX );
if (!handle) return FALSE; if (!handle) return FALSE;
bRet = DialogBoxIndirectParam16( WIN_GetWindowInstance( hWnd ), bRet = DialogBoxIndirectParam16( WIN_GetWindowInstance( hWnd ),
handle, hWnd, handle, hWnd,
MODULE_GetWndProcEntry16("AboutDlgProc"), (DLGPROC16)MODULE_GetWndProcEntry16("AboutDlgProc"),
(LONG)hIcon ); (LPARAM)hIcon );
SYSRES_FreeResource( handle ); SYSRES_FreeResource( handle );
return bRet; return bRet;
} }

View File

@ -408,31 +408,37 @@ VerFindFile16(
DWORD DWORD
VerFindFile32A( VerFindFile32A(
UINT32 flags,LPCSTR filename,LPCSTR windir,LPCSTR appdir, UINT32 flags,LPCSTR filename,LPCSTR windir,LPCSTR appdir,
LPSTR curdir,UINT32 *curdirlen,LPSTR destdir,UINT32 *destdirlen LPSTR curdir,UINT32 *pcurdirlen,LPSTR destdir,UINT32 *pdestdirlen )
) { {
return VerFindFile16(flags,filename,windir,appdir,curdir,curdirlen,destdir,destdirlen); UINT16 curdirlen, destdirlen;
DWORD ret = VerFindFile16(flags,filename,windir,appdir,
curdir,&curdirlen,destdir,&destdirlen);
*pcurdirlen = curdirlen;
*pdestdirlen = destdirlen;
return ret;
} }
/* VerFindFileW [VERSION.6] */ /* VerFindFileW [VERSION.6] */
DWORD DWORD
VerFindFile32W( VerFindFile32W(
UINT32 flags,LPCWSTR filename,LPCWSTR windir,LPCWSTR appdir, UINT32 flags,LPCWSTR filename,LPCWSTR windir,LPCWSTR appdir,
LPWSTR curdir,UINT32 *curdirlen,LPWSTR destdir,UINT32 *destdirlen LPWSTR curdir,UINT32 *pcurdirlen,LPWSTR destdir,UINT32 *pdestdirlen )
) { {
LPSTR wfn,wwd,wad,wdd,wcd; UINT16 curdirlen, destdirlen;
DWORD ret; LPSTR wfn,wwd,wad,wdd,wcd;
DWORD ret;
wfn = strdupW2A(filename); wfn = strdupW2A(filename);
wwd = strdupW2A(windir); wwd = strdupW2A(windir);
wad = strdupW2A(appdir); wad = strdupW2A(appdir);
wcd = (LPSTR)malloc(*curdirlen); wcd = (LPSTR)malloc(*pcurdirlen);
wdd = (LPSTR)malloc(*destdirlen); wdd = (LPSTR)malloc(*pdestdirlen);
ret=VerFindFile16(flags,wfn,wwd,wad,wcd,curdirlen,wdd,destdirlen); ret=VerFindFile16(flags,wfn,wwd,wad,wcd,&curdirlen,wdd,&destdirlen);
STRING32_AnsiToUni(curdir,wcd); STRING32_AnsiToUni(curdir,wcd);
STRING32_AnsiToUni(destdir,wdd); STRING32_AnsiToUni(destdir,wdd);
*curdirlen = strlen(wcd); *pcurdirlen = strlen(wcd);
*destdirlen = strlen(wdd); *pdestdirlen = strlen(wdd);
return ret; return ret;
} }
/* VerInstallFile [VER.9] */ /* VerInstallFile [VER.9] */
@ -454,9 +460,13 @@ VerInstallFile16(
DWORD DWORD
VerInstallFile32A( VerInstallFile32A(
UINT32 flags,LPCSTR srcfilename,LPCSTR destfilename,LPCSTR srcdir, UINT32 flags,LPCSTR srcfilename,LPCSTR destfilename,LPCSTR srcdir,
LPCSTR destdir,LPSTR tmpfile,UINT32 *tmpfilelen LPCSTR destdir,LPSTR tmpfile,UINT32 *tmpfilelen )
) { {
return VerInstallFile16(flags,srcfilename,destfilename,srcdir,destdir,tmpfile,tmpfilelen); UINT16 filelen;
DWORD ret= VerInstallFile16(flags,srcfilename,destfilename,srcdir,
destdir,tmpfile,&filelen);
*tmpfilelen = filelen;
return ret;
} }
/* VerFindFileW [VERSION.6] */ /* VerFindFileW [VERSION.6] */

View File

@ -592,7 +592,7 @@ static int INT21_FindNext( SIGCONTEXT *context )
int count; int count;
if (!dta->unixPath) return 0; if (!dta->unixPath) return 0;
if (!(count = DOSFS_FindNext( dta->unixPath, dta->mask, dta->drive, if (!(count = DOSFS_FindNext( dta->unixPath, dta->mask, NULL, dta->drive,
dta->search_attr, dta->count, &entry ))) dta->search_attr, dta->count, &entry )))
{ {
free( dta->unixPath ); free( dta->unixPath );
@ -741,7 +741,7 @@ static int INT21_FindNextFCB( SIGCONTEXT *context )
} }
if (!pFCB->unixPath) return 0; if (!pFCB->unixPath) return 0;
if (!(count = DOSFS_FindNext( pFCB->unixPath, pFCB->filename, if (!(count = DOSFS_FindNext( pFCB->unixPath, pFCB->filename, NULL,
DOS_GET_DRIVE( pFCB->drive ), attr, DOS_GET_DRIVE( pFCB->drive ), attr,
pFCB->count, &entry ))) pFCB->count, &entry )))
{ {

View File

@ -13,6 +13,14 @@
#include "debug.h" #include "debug.h"
#define VXD_BARF(context,name) \
fprintf( stderr, "vxd %s: unknown/not implemented parameters:\n" \
"vxd %s: AX %04x, BX %04x, CX %04x, DX %04x, " \
"SI %04x, DI %04x, DS %04x, ES %04x\n", \
(name), (name), AX_reg(context), BX_reg(context), \
CX_reg(context), DX_reg(context), SI_reg(context), \
DI_reg(context), DS_reg(context), ES_reg(context) )
/*********************************************************************** /***********************************************************************
* VXD_PageFile * VXD_PageFile
*/ */
@ -52,7 +60,7 @@ void VXD_PageFile( SIGCONTEXT *context )
case 0x05: /* cancel?? INTERRUP.D */ case 0x05: /* cancel?? INTERRUP.D */
case 0x06: /* test I/O valid INTERRUP.D */ case 0x06: /* test I/O valid INTERRUP.D */
default: default:
INT_BARF( context, 0x2f); VXD_BARF( context, "pagefile" );
break; break;
} }
} }
@ -79,7 +87,7 @@ void VXD_Shell( SIGCONTEXT *context )
case 0x0004: case 0x0004:
case 0x0005: case 0x0005:
dprintf_vxd(stddeb,"VxD Shell: EDX = %08lx\n",EDX_reg(context)); dprintf_vxd(stddeb,"VxD Shell: EDX = %08lx\n",EDX_reg(context));
INT_BARF( context, 0x2f); VXD_BARF( context, "shell" );
break; break;
case 0x0006: /* SHELL_Get_VM_State */ case 0x0006: /* SHELL_Get_VM_State */
@ -110,7 +118,7 @@ void VXD_Shell( SIGCONTEXT *context )
case 0x0016: case 0x0016:
default: default:
dprintf_vxd(stddeb,"VxD Shell: EDX = %08lx\n",EDX_reg(context)); dprintf_vxd(stddeb,"VxD Shell: EDX = %08lx\n",EDX_reg(context));
INT_BARF( context, 0x2f); VXD_BARF( context, "shell");
break; break;
} }
} }
@ -135,6 +143,6 @@ void VXD_Comm( SIGCONTEXT *context )
case 0x0002: /* get focus */ case 0x0002: /* get focus */
case 0x0003: /* virtualise port */ case 0x0003: /* virtualise port */
default: default:
INT_BARF( context, 0x2f); VXD_BARF( context, "comm" );
} }
} }

View File

@ -430,7 +430,7 @@ HBITMAP16 BITMAP_SelectObject( DC * dc, HBITMAP16 hbitmap,
SetRectRgn(dc->w.hVisRgn, 0, 0, bmp->bitmap.bmWidth, bmp->bitmap.bmHeight ); SetRectRgn(dc->w.hVisRgn, 0, 0, bmp->bitmap.bmWidth, bmp->bitmap.bmHeight );
else else
{ {
hrgn = CreateRectRgn( 0, 0, bmp->bitmap.bmWidth, bmp->bitmap.bmHeight ); hrgn = CreateRectRgn32(0, 0, bmp->bitmap.bmWidth, bmp->bitmap.bmHeight);
if (!hrgn) return 0; if (!hrgn) return 0;
dc->w.hVisRgn = hrgn; dc->w.hVisRgn = hrgn;
} }

View File

@ -4,6 +4,7 @@
* Copyright 1993, 1994 Alexandre Julliard * Copyright 1993, 1994 Alexandre Julliard
*/ */
#define NO_TRANSITION_TYPES /* This file is Win32-clean */
#include <stdlib.h> #include <stdlib.h>
#include "brush.h" #include "brush.h"
#include "bitmap.h" #include "bitmap.h"
@ -93,7 +94,7 @@ static XImage *ditherImage = NULL;
* *
* Create the X image used for dithering. * Create the X image used for dithering.
*/ */
BOOL BRUSH_Init(void) BOOL32 BRUSH_Init(void)
{ {
XCREATEIMAGE( ditherImage, MATRIX_SIZE, MATRIX_SIZE, screenDepth ); XCREATEIMAGE( ditherImage, MATRIX_SIZE, MATRIX_SIZE, screenDepth );
return (ditherImage != NULL); return (ditherImage != NULL);
@ -139,37 +140,76 @@ Pixmap BRUSH_DitherColor( DC *dc, COLORREF color )
/*********************************************************************** /***********************************************************************
* CreateBrushIndirect (GDI.50) * CreateBrushIndirect16 (GDI.50)
*/ */
HBRUSH16 CreateBrushIndirect( const LOGBRUSH16 * brush ) HBRUSH16 CreateBrushIndirect16( const LOGBRUSH16 * brush )
{ {
BRUSHOBJ * brushPtr; BRUSHOBJ * brushPtr;
HBRUSH16 hbrush = GDI_AllocObject( sizeof(BRUSHOBJ), BRUSH_MAGIC ); HBRUSH16 hbrush = GDI_AllocObject( sizeof(BRUSHOBJ), BRUSH_MAGIC );
if (!hbrush) return 0; if (!hbrush) return 0;
brushPtr = (BRUSHOBJ *) GDI_HEAP_LIN_ADDR( hbrush ); brushPtr = (BRUSHOBJ *) GDI_HEAP_LIN_ADDR( hbrush );
memcpy( &brushPtr->logbrush, brush, sizeof(*brush) ); brushPtr->logbrush.lbStyle = brush->lbStyle;
brushPtr->logbrush.lbColor = brush->lbColor;
brushPtr->logbrush.lbHatch = brush->lbHatch;
return hbrush; return hbrush;
} }
/*********************************************************************** /***********************************************************************
* CreateHatchBrush (GDI.58) * CreateBrushIndirect32 (GDI32.27)
*/ */
HBRUSH16 CreateHatchBrush( INT style, COLORREF color ) HBRUSH32 CreateBrushIndirect32( const LOGBRUSH32 * brush )
{ {
LOGBRUSH16 logbrush = { BS_HATCHED, color, style }; BRUSHOBJ * brushPtr;
dprintf_gdi(stddeb, "CreateHatchBrush: %d %06lx\n", style, color ); HBRUSH32 hbrush = GDI_AllocObject( sizeof(BRUSHOBJ), BRUSH_MAGIC );
if ((style < 0) || (style >= NB_HATCH_STYLES)) return 0; if (!hbrush) return 0;
return CreateBrushIndirect( &logbrush ); brushPtr = (BRUSHOBJ *) GDI_HEAP_LIN_ADDR( hbrush );
brushPtr->logbrush.lbStyle = brush->lbStyle;
brushPtr->logbrush.lbColor = brush->lbColor;
brushPtr->logbrush.lbHatch = brush->lbHatch;
return hbrush;
} }
/*********************************************************************** /***********************************************************************
* CreatePatternBrush (GDI.60) * CreateHatchBrush16 (GDI.58)
*/ */
HBRUSH16 CreatePatternBrush( HBITMAP16 hbitmap ) HBRUSH16 CreateHatchBrush16( INT16 style, COLORREF color )
{ {
LOGBRUSH16 logbrush = { BS_PATTERN, 0, 0 }; LOGBRUSH32 logbrush = { BS_HATCHED, color, style };
dprintf_gdi(stddeb, "CreateHatchBrush16: %d %06lx\n", style, color );
if ((style < 0) || (style >= NB_HATCH_STYLES)) return 0;
return CreateBrushIndirect32( &logbrush );
}
/***********************************************************************
* CreateHatchBrush32 (GDI32.48)
*/
HBRUSH32 CreateHatchBrush32( INT32 style, COLORREF color )
{
LOGBRUSH32 logbrush = { BS_HATCHED, color, style };
dprintf_gdi(stddeb, "CreateHatchBrush32: %d %06lx\n", style, color );
if ((style < 0) || (style >= NB_HATCH_STYLES)) return 0;
return CreateBrushIndirect32( &logbrush );
}
/***********************************************************************
* CreatePatternBrush16 (GDI.60)
*/
HBRUSH16 CreatePatternBrush16( HBITMAP16 hbitmap )
{
return (HBRUSH16)CreatePatternBrush32( hbitmap );
}
/***********************************************************************
* CreatePatternBrush32 (GDI32.54)
*/
HBRUSH32 CreatePatternBrush32( HBITMAP32 hbitmap )
{
LOGBRUSH32 logbrush = { BS_PATTERN, 0, 0 };
BITMAPOBJ *bmp, *newbmp; BITMAPOBJ *bmp, *newbmp;
dprintf_gdi(stddeb, "CreatePatternBrush: %04x\n", hbitmap ); dprintf_gdi(stddeb, "CreatePatternBrush: %04x\n", hbitmap );
@ -178,29 +218,30 @@ HBRUSH16 CreatePatternBrush( HBITMAP16 hbitmap )
if (!(bmp = (BITMAPOBJ *) GDI_GetObjPtr( hbitmap, BITMAP_MAGIC ))) if (!(bmp = (BITMAPOBJ *) GDI_GetObjPtr( hbitmap, BITMAP_MAGIC )))
return 0; return 0;
logbrush.lbHatch = (INT16)CreateBitmapIndirect16( &bmp->bitmap ); logbrush.lbHatch = (INT32)CreateBitmapIndirect16( &bmp->bitmap );
newbmp = (BITMAPOBJ *) GDI_GetObjPtr( (HGDIOBJ16)logbrush.lbHatch, BITMAP_MAGIC ); newbmp = (BITMAPOBJ *) GDI_GetObjPtr( (HGDIOBJ32)logbrush.lbHatch,
BITMAP_MAGIC );
if (!newbmp) return 0; if (!newbmp) return 0;
XCopyArea( display, bmp->pixmap, newbmp->pixmap, BITMAP_GC(bmp), XCopyArea( display, bmp->pixmap, newbmp->pixmap, BITMAP_GC(bmp),
0, 0, bmp->bitmap.bmWidth, bmp->bitmap.bmHeight, 0, 0 ); 0, 0, bmp->bitmap.bmWidth, bmp->bitmap.bmHeight, 0, 0 );
return CreateBrushIndirect( &logbrush ); return CreateBrushIndirect32( &logbrush );
} }
/*********************************************************************** /***********************************************************************
* CreateDIBPatternBrush (GDI.445) * CreateDIBPatternBrush16 (GDI.445)
*/ */
HBRUSH16 CreateDIBPatternBrush( HGLOBAL16 hbitmap, UINT coloruse ) HBRUSH16 CreateDIBPatternBrush16( HGLOBAL16 hbitmap, UINT16 coloruse )
{ {
LOGBRUSH16 logbrush = { BS_DIBPATTERN, coloruse, 0 }; LOGBRUSH32 logbrush = { BS_DIBPATTERN, coloruse, 0 };
BITMAPINFO *info, *newInfo; BITMAPINFO *info, *newInfo;
int size; INT32 size;
dprintf_gdi(stddeb, "CreateDIBPatternBrush: %04x\n", hbitmap ); dprintf_gdi(stddeb, "CreateDIBPatternBrush: %04x\n", hbitmap );
/* Make a copy of the bitmap */ /* Make a copy of the bitmap */
if (!(info = (BITMAPINFO *) GlobalLock16( hbitmap ))) return 0; if (!(info = (BITMAPINFO *)GlobalLock16( hbitmap ))) return 0;
if (info->bmiHeader.biCompression) if (info->bmiHeader.biCompression)
size = info->bmiHeader.biSizeImage; size = info->bmiHeader.biSizeImage;
@ -209,7 +250,7 @@ HBRUSH16 CreateDIBPatternBrush( HGLOBAL16 hbitmap, UINT coloruse )
* 8 * info->bmiHeader.biHeight; * 8 * info->bmiHeader.biHeight;
size += DIB_BitmapInfoSize( info, coloruse ); size += DIB_BitmapInfoSize( info, coloruse );
if (!(logbrush.lbHatch = (INT)GlobalAlloc16( GMEM_MOVEABLE, size ))) if (!(logbrush.lbHatch = (INT16)GlobalAlloc16( GMEM_MOVEABLE, size )))
{ {
GlobalUnlock16( hbitmap ); GlobalUnlock16( hbitmap );
return 0; return 0;
@ -218,18 +259,64 @@ HBRUSH16 CreateDIBPatternBrush( HGLOBAL16 hbitmap, UINT coloruse )
memcpy( newInfo, info, size ); memcpy( newInfo, info, size );
GlobalUnlock16( (HGLOBAL16)logbrush.lbHatch ); GlobalUnlock16( (HGLOBAL16)logbrush.lbHatch );
GlobalUnlock16( hbitmap ); GlobalUnlock16( hbitmap );
return CreateBrushIndirect( &logbrush ); return CreateBrushIndirect32( &logbrush );
}
/***********************************************************************
* CreateDIBPatternBrush32 (GDI32.34)
*/
HBRUSH32 CreateDIBPatternBrush32( HGLOBAL32 hbitmap, UINT32 coloruse )
{
LOGBRUSH32 logbrush = { BS_DIBPATTERN, coloruse, 0 };
BITMAPINFO *info, *newInfo;
INT32 size;
dprintf_gdi(stddeb, "CreateDIBPatternBrush: %04x\n", hbitmap );
/* Make a copy of the bitmap */
if (!(info = (BITMAPINFO *)GlobalLock32( hbitmap ))) return 0;
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 );
if (!(logbrush.lbHatch = (INT32)GlobalAlloc16( GMEM_MOVEABLE, size )))
{
GlobalUnlock16( hbitmap );
return 0;
}
newInfo = (BITMAPINFO *) GlobalLock16( (HGLOBAL16)logbrush.lbHatch );
memcpy( newInfo, info, size );
GlobalUnlock16( (HGLOBAL16)logbrush.lbHatch );
GlobalUnlock16( hbitmap );
return CreateBrushIndirect32( &logbrush );
} }
/*********************************************************************** /***********************************************************************
* CreateSolidBrush (GDI.66) * CreateSolidBrush (GDI.66)
*/ */
HBRUSH16 CreateSolidBrush( COLORREF color ) HBRUSH16 CreateSolidBrush16( COLORREF color )
{ {
LOGBRUSH16 logbrush = { BS_SOLID, color, 0 }; LOGBRUSH32 logbrush = { BS_SOLID, color, 0 };
dprintf_gdi(stddeb, "CreateSolidBrush: %06lx\n", color ); dprintf_gdi(stddeb, "CreateSolidBrush16: %06lx\n", color );
return CreateBrushIndirect( &logbrush ); return CreateBrushIndirect32( &logbrush );
}
/***********************************************************************
* CreateSolidBrush32 (GDI32.64)
*/
HBRUSH32 CreateSolidBrush32( COLORREF color )
{
LOGBRUSH32 logbrush = { BS_SOLID, color, 0 };
dprintf_gdi(stddeb, "CreateSolidBrush32: %06lx\n", color );
return CreateBrushIndirect32( &logbrush );
} }
@ -268,12 +355,22 @@ BOOL32 SetBrushOrgEx( HDC32 hdc, INT32 x, INT32 y, LPPOINT32 oldorg )
/*********************************************************************** /***********************************************************************
* GetSysColorBrush (USER.281) * GetSysColorBrush16 (USER.281)
*/ */
HBRUSH16 GetSysColorBrush(WORD x) HBRUSH16 GetSysColorBrush16( INT16 index )
{ {
fprintf( stderr, "Unimplemented stub: GetSysColorBrush(%d)\n", x ); fprintf( stderr, "Unimplemented stub: GetSysColorBrush16(%d)\n", index );
return GetStockObject(LTGRAY_BRUSH); return GetStockObject32(LTGRAY_BRUSH);
}
/***********************************************************************
* GetSysColorBrush32 (USER32.289)
*/
HBRUSH32 GetSysColorBrush32( INT32 index)
{
fprintf( stderr, "Unimplemented stub: GetSysColorBrush32(%d)\n", index );
return GetStockObject32(LTGRAY_BRUSH);
} }
@ -285,7 +382,7 @@ BOOL32 BRUSH_DeleteObject( HBRUSH16 hbrush, BRUSHOBJ * brush )
switch(brush->logbrush.lbStyle) switch(brush->logbrush.lbStyle)
{ {
case BS_PATTERN: case BS_PATTERN:
DeleteObject( (HGDIOBJ16)brush->logbrush.lbHatch ); DeleteObject32( (HGDIOBJ32)brush->logbrush.lbHatch );
break; break;
case BS_DIBPATTERN: case BS_DIBPATTERN:
GlobalFree16( (HGLOBAL16)brush->logbrush.lbHatch ); GlobalFree16( (HGLOBAL16)brush->logbrush.lbHatch );
@ -296,9 +393,25 @@ BOOL32 BRUSH_DeleteObject( HBRUSH16 hbrush, BRUSHOBJ * brush )
/*********************************************************************** /***********************************************************************
* BRUSH_GetObject * BRUSH_GetObject16
*/ */
int BRUSH_GetObject( BRUSHOBJ * brush, int count, LPSTR buffer ) INT16 BRUSH_GetObject16( BRUSHOBJ * brush, INT16 count, LPSTR buffer )
{
LOGBRUSH16 logbrush;
logbrush.lbStyle = brush->logbrush.lbStyle;
logbrush.lbColor = brush->logbrush.lbColor;
logbrush.lbHatch = brush->logbrush.lbHatch;
if (count > sizeof(logbrush)) count = sizeof(logbrush);
memcpy( buffer, &logbrush, count );
return count;
}
/***********************************************************************
* BRUSH_GetObject32
*/
INT32 BRUSH_GetObject32( BRUSHOBJ * brush, INT32 count, LPSTR buffer )
{ {
if (count > sizeof(brush->logbrush)) count = sizeof(brush->logbrush); if (count > sizeof(brush->logbrush)) count = sizeof(brush->logbrush);
memcpy( buffer, &brush->logbrush, count ); memcpy( buffer, &brush->logbrush, count );
@ -330,7 +443,7 @@ static void BRUSH_SelectSolidBrush( DC *dc, COLORREF color )
/*********************************************************************** /***********************************************************************
* BRUSH_SelectPatternBrush * BRUSH_SelectPatternBrush
*/ */
static BOOL BRUSH_SelectPatternBrush( DC * dc, HBITMAP16 hbitmap ) static BOOL32 BRUSH_SelectPatternBrush( DC * dc, HBITMAP32 hbitmap )
{ {
BITMAPOBJ * bmp = (BITMAPOBJ *) GDI_GetObjPtr( hbitmap, BITMAP_MAGIC ); BITMAPOBJ * bmp = (BITMAPOBJ *) GDI_GetObjPtr( hbitmap, BITMAP_MAGIC );
if (!bmp) return FALSE; if (!bmp) return FALSE;
@ -357,7 +470,7 @@ static BOOL BRUSH_SelectPatternBrush( DC * dc, HBITMAP16 hbitmap )
/*********************************************************************** /***********************************************************************
* BRUSH_SelectObject * BRUSH_SelectObject
*/ */
HBRUSH16 BRUSH_SelectObject( DC * dc, HBRUSH16 hbrush, BRUSHOBJ * brush ) HBRUSH32 BRUSH_SelectObject( DC * dc, HBRUSH32 hbrush, BRUSHOBJ * brush )
{ {
HBITMAP16 hBitmap; HBITMAP16 hBitmap;
BITMAPINFO * bmpInfo; BITMAPINFO * bmpInfo;
@ -367,22 +480,22 @@ HBRUSH16 BRUSH_SelectObject( DC * dc, HBRUSH16 hbrush, BRUSHOBJ * brush )
dc->hSelf,hbrush); dc->hSelf,hbrush);
if (dc->header.wMagic == METAFILE_DC_MAGIC) if (dc->header.wMagic == METAFILE_DC_MAGIC)
{ {
LOGBRUSH16 logbrush = { brush->logbrush.lbStyle,
brush->logbrush.lbColor,
brush->logbrush.lbHatch };
switch (brush->logbrush.lbStyle) switch (brush->logbrush.lbStyle)
{ {
case BS_SOLID: case BS_SOLID:
case BS_HATCHED: case BS_HATCHED:
case BS_HOLLOW: case BS_HOLLOW:
if (!MF_CreateBrushIndirect(dc, hbrush, &(brush->logbrush))) if (!MF_CreateBrushIndirect( dc, hbrush, &logbrush )) return 0;
return (HBRUSH16)0;
break; break;
case BS_PATTERN: case BS_PATTERN:
case BS_DIBPATTERN: case BS_DIBPATTERN:
if (!MF_CreatePatternBrush(dc, hbrush, &(brush->logbrush))) if (!MF_CreatePatternBrush( dc, hbrush, &logbrush )) return 0;
return (HBRUSH16)0;
break; break;
} }
return (HBRUSH16)1; return 1; /* FIXME? */
} }
dc->w.hBrush = hbrush; dc->w.hBrush = hbrush;
@ -427,7 +540,7 @@ HBRUSH16 BRUSH_SelectObject( DC * dc, HBRUSH16 hbrush, BRUSHOBJ * brush )
((char *)bmpInfo) + size, bmpInfo, ((char *)bmpInfo) + size, bmpInfo,
(WORD) brush->logbrush.lbColor ); (WORD) brush->logbrush.lbColor );
BRUSH_SelectPatternBrush( dc, hBitmap ); BRUSH_SelectPatternBrush( dc, hBitmap );
DeleteObject( hBitmap ); DeleteObject16( hBitmap );
GlobalUnlock16( (HGLOBAL16)brush->logbrush.lbHatch ); GlobalUnlock16( (HGLOBAL16)brush->logbrush.lbHatch );
} }

View File

@ -4,12 +4,12 @@
* Copyright 1993 Alexandre Julliard * Copyright 1993 Alexandre Julliard
*/ */
#define NO_TRANSITION_TYPES /* This file is Win32-clean */
#include <stdio.h> #include <stdio.h>
#include "dc.h" #include "dc.h"
#include "metafile.h" #include "metafile.h"
#include "region.h" #include "region.h"
#include "stddebug.h" #include "stddebug.h"
/* #define DEBUG_CLIPPING */
#include "debug.h" #include "debug.h"
#define UPDATE_DIRTY_DC(dc) \ #define UPDATE_DIRTY_DC(dc) \
@ -27,7 +27,7 @@
*/ */
void CLIPPING_UpdateGCRegion( DC * dc ) void CLIPPING_UpdateGCRegion( DC * dc )
{ {
if (!dc->w.hGCClipRgn) dc->w.hGCClipRgn = CreateRectRgn( 0, 0, 0, 0 ); if (!dc->w.hGCClipRgn) dc->w.hGCClipRgn = CreateRectRgn32( 0, 0, 0, 0 );
if (!dc->w.hVisRgn) if (!dc->w.hVisRgn)
{ {
@ -42,19 +42,28 @@ void CLIPPING_UpdateGCRegion( DC * dc )
} }
if (!dc->w.hClipRgn) if (!dc->w.hClipRgn)
CombineRgn( dc->w.hGCClipRgn, dc->w.hVisRgn, 0, RGN_COPY ); CombineRgn32( dc->w.hGCClipRgn, dc->w.hVisRgn, 0, RGN_COPY );
else else
CombineRgn( dc->w.hGCClipRgn, dc->w.hClipRgn, dc->w.hVisRgn, RGN_AND ); CombineRgn32(dc->w.hGCClipRgn, dc->w.hClipRgn, dc->w.hVisRgn, RGN_AND);
if (dc->funcs->pSetDeviceClipping) dc->funcs->pSetDeviceClipping( dc ); if (dc->funcs->pSetDeviceClipping) dc->funcs->pSetDeviceClipping( dc );
} }
/*********************************************************************** /***********************************************************************
* SelectClipRgn (GDI.44) * SelectClipRgn16 (GDI.44)
*/ */
int SelectClipRgn( HDC16 hdc, HRGN32 hrgn ) INT16 SelectClipRgn16( HDC16 hdc, HRGN16 hrgn )
{ {
int retval; return (INT16)SelectClipRgn32( hdc, hrgn );
}
/***********************************************************************
* SelectClipRgn32 (GDI32.297)
*/
INT32 SelectClipRgn32( HDC32 hdc, HRGN32 hrgn )
{
INT32 retval;
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
if (!dc) return ERROR; if (!dc) return ERROR;
@ -62,12 +71,12 @@ int SelectClipRgn( HDC16 hdc, HRGN32 hrgn )
if (hrgn) if (hrgn)
{ {
if (!dc->w.hClipRgn) dc->w.hClipRgn = CreateRectRgn(0,0,0,0); if (!dc->w.hClipRgn) dc->w.hClipRgn = CreateRectRgn32(0,0,0,0);
retval = CombineRgn( dc->w.hClipRgn, hrgn, 0, RGN_COPY ); retval = CombineRgn32( dc->w.hClipRgn, hrgn, 0, RGN_COPY );
} }
else else
{ {
if (dc->w.hClipRgn) DeleteObject( dc->w.hClipRgn ); if (dc->w.hClipRgn) DeleteObject16( dc->w.hClipRgn );
dc->w.hClipRgn = 0; dc->w.hClipRgn = 0;
retval = SIMPLEREGION; /* Clip region == whole DC */ retval = SIMPLEREGION; /* Clip region == whole DC */
} }
@ -80,7 +89,7 @@ int SelectClipRgn( HDC16 hdc, HRGN32 hrgn )
/*********************************************************************** /***********************************************************************
* SelectVisRgn (GDI.105) * SelectVisRgn (GDI.105)
*/ */
int SelectVisRgn( HDC16 hdc, HRGN32 hrgn ) INT16 SelectVisRgn( HDC16 hdc, HRGN16 hrgn )
{ {
int retval; int retval;
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
@ -90,16 +99,25 @@ int SelectVisRgn( HDC16 hdc, HRGN32 hrgn )
dc->w.flags &= ~DC_DIRTY; dc->w.flags &= ~DC_DIRTY;
retval = CombineRgn( dc->w.hVisRgn, hrgn, 0, RGN_COPY ); retval = CombineRgn16( dc->w.hVisRgn, hrgn, 0, RGN_COPY );
CLIPPING_UpdateGCRegion( dc ); CLIPPING_UpdateGCRegion( dc );
return retval; return retval;
} }
/*********************************************************************** /***********************************************************************
* OffsetClipRgn (GDI.32) * OffsetClipRgn16 (GDI.32)
*/ */
int OffsetClipRgn( HDC16 hdc, short x, short y ) INT16 OffsetClipRgn16( HDC16 hdc, INT16 x, INT16 y )
{
return (INT16)OffsetClipRgn32( hdc, x, y );
}
/***********************************************************************
* OffsetClipRgn32 (GDI32.255)
*/
INT32 OffsetClipRgn32( HDC32 hdc, INT32 x, INT32 y )
{ {
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
if (!dc) if (!dc)
@ -114,9 +132,9 @@ int OffsetClipRgn( HDC16 hdc, short x, short y )
if (dc->w.hClipRgn) if (dc->w.hClipRgn)
{ {
int retval = OffsetRgn( dc->w.hClipRgn, XLPTODP(dc,x), YLPTODP(dc,y) ); INT32 ret = OffsetRgn32( dc->w.hClipRgn, XLPTODP(dc,x), YLPTODP(dc,y));
CLIPPING_UpdateGCRegion( dc ); CLIPPING_UpdateGCRegion( dc );
return retval; return ret;
} }
else return SIMPLEREGION; /* Clip region == client area */ else return SIMPLEREGION; /* Clip region == client area */
} }
@ -125,13 +143,13 @@ int OffsetClipRgn( HDC16 hdc, short x, short y )
/*********************************************************************** /***********************************************************************
* OffsetVisRgn (GDI.102) * OffsetVisRgn (GDI.102)
*/ */
int OffsetVisRgn( HDC16 hdc, short x, short y ) INT16 OffsetVisRgn( HDC16 hdc, INT16 x, INT16 y )
{ {
int retval; INT16 retval;
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
if (!dc) return ERROR; if (!dc) return ERROR;
dprintf_clipping(stddeb, "OffsetVisRgn: %04x %d,%d\n", hdc, x, y ); dprintf_clipping(stddeb, "OffsetVisRgn: %04x %d,%d\n", hdc, x, y );
retval = OffsetRgn( dc->w.hVisRgn, x, y ); retval = OffsetRgn32( dc->w.hVisRgn, x, y );
CLIPPING_UpdateGCRegion( dc ); CLIPPING_UpdateGCRegion( dc );
return retval; return retval;
} }
@ -144,14 +162,14 @@ int OffsetVisRgn( HDC16 hdc, short x, short y )
* elsewhere (like ExtTextOut()) to skip redundant metafile update and * elsewhere (like ExtTextOut()) to skip redundant metafile update and
* coordinate conversion. * coordinate conversion.
*/ */
int CLIPPING_IntersectClipRect( DC * dc, short left, short top, INT32 CLIPPING_IntersectClipRect( DC * dc, INT32 left, INT32 top,
short right, short bottom, UINT16 flags) INT32 right, INT32 bottom, UINT32 flags )
{ {
HRGN32 newRgn; HRGN32 newRgn;
int ret; INT32 ret;
if ( !(newRgn = CreateRectRgn( left, top, right, bottom )) ) return ERROR; if (!(newRgn = CreateRectRgn32( left, top, right, bottom ))) return ERROR;
if ( !dc->w.hClipRgn ) if (!dc->w.hClipRgn)
{ {
if( flags & CLIP_INTERSECT ) if( flags & CLIP_INTERSECT )
{ {
@ -161,24 +179,34 @@ int CLIPPING_IntersectClipRect( DC * dc, short left, short top,
return SIMPLEREGION; return SIMPLEREGION;
} }
ret = CombineRgn( newRgn, dc->w.hClipRgn, newRgn, ret = CombineRgn32( newRgn, dc->w.hClipRgn, newRgn,
(flags & CLIP_EXCLUDE)? RGN_DIFF : RGN_AND); (flags & CLIP_EXCLUDE) ? RGN_DIFF : RGN_AND );
if (ret != ERROR) if (ret != ERROR)
{ {
if ( !(flags & CLIP_KEEPRGN) ) DeleteObject( dc->w.hClipRgn ); if (!(flags & CLIP_KEEPRGN)) DeleteObject32( dc->w.hClipRgn );
dc->w.hClipRgn = newRgn; dc->w.hClipRgn = newRgn;
CLIPPING_UpdateGCRegion( dc ); CLIPPING_UpdateGCRegion( dc );
} }
else DeleteObject( newRgn ); else DeleteObject32( newRgn );
return ret; return ret;
} }
/*********************************************************************** /***********************************************************************
* ExcludeClipRect (GDI.21) * ExcludeClipRect16 (GDI.21)
*/ */
int ExcludeClipRect( HDC16 hdc, short left, short top, INT16 ExcludeClipRect16( HDC16 hdc, INT16 left, INT16 top,
short right, short bottom ) INT16 right, INT16 bottom )
{
return (INT16)ExcludeClipRect32( hdc, left, top, right, bottom );
}
/***********************************************************************
* ExcludeClipRect32 (GDI32.92)
*/
INT32 ExcludeClipRect32( HDC32 hdc, INT32 left, INT32 top,
INT32 right, INT32 bottom )
{ {
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
if (!dc) if (!dc)
@ -201,10 +229,20 @@ int ExcludeClipRect( HDC16 hdc, short left, short top,
/*********************************************************************** /***********************************************************************
* IntersectClipRect (GDI.22) * IntersectClipRect16 (GDI.22)
*/ */
int IntersectClipRect( HDC16 hdc, short left, short top, INT16 IntersectClipRect16( HDC16 hdc, INT16 left, INT16 top,
short right, short bottom ) INT16 right, INT16 bottom )
{
return (INT16)IntersectClipRect32( hdc, left, top, right, bottom );
}
/***********************************************************************
* IntersectClipRect32 (GDI32.245)
*/
INT32 IntersectClipRect32( HDC32 hdc, INT32 left, INT32 top,
INT32 right, INT32 bottom )
{ {
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
if (!dc) if (!dc)
@ -231,37 +269,38 @@ int IntersectClipRect( HDC16 hdc, short left, short top,
* *
* Helper function for {Intersect,Exclude}VisRect * Helper function for {Intersect,Exclude}VisRect
*/ */
static int CLIPPING_IntersectVisRect( DC * dc, short left, short top, static INT32 CLIPPING_IntersectVisRect( DC * dc, INT32 left, INT32 top,
short right, short bottom, BOOL exclude ) INT32 right, INT32 bottom,
BOOL32 exclude )
{ {
HRGN32 tempRgn, newRgn; HRGN32 tempRgn, newRgn;
int ret; INT32 ret;
left = XLPTODP( dc, left ); left = XLPTODP( dc, left );
right = XLPTODP( dc, right ); right = XLPTODP( dc, right );
top = YLPTODP( dc, top ); top = YLPTODP( dc, top );
bottom = YLPTODP( dc, bottom ); bottom = YLPTODP( dc, bottom );
if (!(newRgn = CreateRectRgn( 0, 0, 0, 0 ))) return ERROR; if (!(newRgn = CreateRectRgn32( 0, 0, 0, 0 ))) return ERROR;
if (!(tempRgn = CreateRectRgn( left, top, right, bottom ))) if (!(tempRgn = CreateRectRgn32( left, top, right, bottom )))
{ {
DeleteObject( newRgn ); DeleteObject32( newRgn );
return ERROR; return ERROR;
} }
ret = CombineRgn( newRgn, dc->w.hVisRgn, tempRgn, ret = CombineRgn32( newRgn, dc->w.hVisRgn, tempRgn,
exclude ? RGN_DIFF : RGN_AND); exclude ? RGN_DIFF : RGN_AND );
DeleteObject( tempRgn ); DeleteObject32( tempRgn );
if (ret != ERROR) if (ret != ERROR)
{ {
RGNOBJ *newObj = (RGNOBJ*)GDI_GetObjPtr( newRgn, REGION_MAGIC); RGNOBJ *newObj = (RGNOBJ*)GDI_GetObjPtr( newRgn, REGION_MAGIC);
RGNOBJ *prevObj = (RGNOBJ*)GDI_GetObjPtr( dc->w.hVisRgn, REGION_MAGIC); RGNOBJ *prevObj = (RGNOBJ*)GDI_GetObjPtr( dc->w.hVisRgn, REGION_MAGIC);
if (newObj && prevObj) newObj->header.hNext = prevObj->header.hNext; if (newObj && prevObj) newObj->header.hNext = prevObj->header.hNext;
DeleteObject( dc->w.hVisRgn ); DeleteObject32( dc->w.hVisRgn );
dc->w.hVisRgn = newRgn; dc->w.hVisRgn = newRgn;
CLIPPING_UpdateGCRegion( dc ); CLIPPING_UpdateGCRegion( dc );
} }
else DeleteObject( newRgn ); else DeleteObject32( newRgn );
return ret; return ret;
} }
@ -269,8 +308,8 @@ static int CLIPPING_IntersectVisRect( DC * dc, short left, short top,
/*********************************************************************** /***********************************************************************
* ExcludeVisRect (GDI.73) * ExcludeVisRect (GDI.73)
*/ */
int ExcludeVisRect( HDC16 hdc, short left, short top, INT16 ExcludeVisRect( HDC16 hdc, INT16 left, INT16 top,
short right, short bottom ) INT16 right, INT16 bottom )
{ {
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
if (!dc) return ERROR; if (!dc) return ERROR;
@ -284,8 +323,8 @@ int ExcludeVisRect( HDC16 hdc, short left, short top,
/*********************************************************************** /***********************************************************************
* IntersectVisRect (GDI.98) * IntersectVisRect (GDI.98)
*/ */
int IntersectVisRect( HDC16 hdc, short left, short top, INT16 IntersectVisRect( HDC16 hdc, INT16 left, INT16 top,
short right, short bottom ) INT16 right, INT16 bottom )
{ {
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
if (!dc) return ERROR; if (!dc) return ERROR;
@ -297,9 +336,18 @@ int IntersectVisRect( HDC16 hdc, short left, short top,
/*********************************************************************** /***********************************************************************
* PtVisible (GDI.103) * PtVisible16 (GDI.103)
*/ */
BOOL PtVisible( HDC16 hdc, short x, short y ) BOOL16 PtVisible16( HDC16 hdc, INT16 x, INT16 y )
{
return PtVisible32( hdc, x, y );
}
/***********************************************************************
* PtVisible32 (GDI32.279)
*/
BOOL32 PtVisible32( HDC32 hdc, INT32 x, INT32 y )
{ {
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
if (!dc) return ERROR; if (!dc) return ERROR;
@ -310,7 +358,7 @@ BOOL PtVisible( HDC16 hdc, short x, short y )
if( dc->w.flags & DC_DIRTY ) UPDATE_DIRTY_DC(dc); if( dc->w.flags & DC_DIRTY ) UPDATE_DIRTY_DC(dc);
dc->w.flags &= ~DC_DIRTY; dc->w.flags &= ~DC_DIRTY;
return PtInRegion( dc->w.hGCClipRgn, XLPTODP(dc,x), YLPTODP(dc,y) ); return PtInRegion32( dc->w.hGCClipRgn, XLPTODP(dc,x), YLPTODP(dc,y) );
} }
@ -374,7 +422,7 @@ INT32 GetClipBox32( HDC32 hdc, LPRECT32 rect )
/*********************************************************************** /***********************************************************************
* SaveVisRgn (GDI.129) * SaveVisRgn (GDI.129)
*/ */
HRGN32 SaveVisRgn( HDC16 hdc ) HRGN16 SaveVisRgn( HDC16 hdc )
{ {
HRGN32 copy; HRGN32 copy;
RGNOBJ *obj, *copyObj; RGNOBJ *obj, *copyObj;
@ -391,8 +439,8 @@ HRGN32 SaveVisRgn( HDC16 hdc )
if (!(obj = (RGNOBJ *) GDI_GetObjPtr( dc->w.hVisRgn, REGION_MAGIC ))) if (!(obj = (RGNOBJ *) GDI_GetObjPtr( dc->w.hVisRgn, REGION_MAGIC )))
return 0; return 0;
if (!(copy = CreateRectRgn( 0, 0, 0, 0 ))) return 0; if (!(copy = CreateRectRgn32( 0, 0, 0, 0 ))) return 0;
CombineRgn( copy, dc->w.hVisRgn, 0, RGN_COPY ); CombineRgn32( copy, dc->w.hVisRgn, 0, RGN_COPY );
if (!(copyObj = (RGNOBJ *) GDI_GetObjPtr( copy, REGION_MAGIC ))) if (!(copyObj = (RGNOBJ *) GDI_GetObjPtr( copy, REGION_MAGIC )))
return 0; return 0;
copyObj->header.hNext = obj->header.hNext; copyObj->header.hNext = obj->header.hNext;
@ -404,7 +452,7 @@ HRGN32 SaveVisRgn( HDC16 hdc )
/*********************************************************************** /***********************************************************************
* RestoreVisRgn (GDI.130) * RestoreVisRgn (GDI.130)
*/ */
int RestoreVisRgn( HDC16 hdc ) INT16 RestoreVisRgn( HDC16 hdc )
{ {
HRGN32 saved; HRGN32 saved;
RGNOBJ *obj, *savedObj; RGNOBJ *obj, *savedObj;
@ -416,7 +464,7 @@ int RestoreVisRgn( HDC16 hdc )
if (!(saved = obj->header.hNext)) return ERROR; if (!(saved = obj->header.hNext)) return ERROR;
if (!(savedObj = (RGNOBJ *) GDI_GetObjPtr( saved, REGION_MAGIC ))) if (!(savedObj = (RGNOBJ *) GDI_GetObjPtr( saved, REGION_MAGIC )))
return ERROR; return ERROR;
DeleteObject( dc->w.hVisRgn ); DeleteObject32( dc->w.hVisRgn );
dc->w.hVisRgn = saved; dc->w.hVisRgn = saved;
CLIPPING_UpdateGCRegion( dc ); CLIPPING_UpdateGCRegion( dc );
return savedObj->xrgn ? COMPLEXREGION : NULLREGION; return savedObj->xrgn ? COMPLEXREGION : NULLREGION;

View File

@ -335,8 +335,8 @@ HGLOBAL16 CURSORICON_LoadHandler( HGLOBAL16 handle, HINSTANCE16 hInstance,
if (!(handle = GlobalAlloc16( GMEM_MOVEABLE, if (!(handle = GlobalAlloc16( GMEM_MOVEABLE,
sizeof(CURSORICONINFO) + sizeXor + sizeAnd))) sizeof(CURSORICONINFO) + sizeXor + sizeAnd)))
{ {
DeleteObject( hXorBits ); DeleteObject32( hXorBits );
DeleteObject( hAndBits ); DeleteObject32( hAndBits );
return 0; return 0;
} }
@ -356,8 +356,8 @@ HGLOBAL16 CURSORICON_LoadHandler( HGLOBAL16 handle, HINSTANCE16 hInstance,
GetBitmapBits( hAndBits, sizeAnd, (char *)(info + 1) ); GetBitmapBits( hAndBits, sizeAnd, (char *)(info + 1) );
GetBitmapBits( hXorBits, sizeXor, (char *)(info + 1) + sizeAnd ); GetBitmapBits( hXorBits, sizeXor, (char *)(info + 1) + sizeAnd );
DeleteObject( hXorBits ); DeleteObject32( hXorBits );
DeleteObject( hAndBits ); DeleteObject32( hAndBits );
GlobalUnlock16( handle ); GlobalUnlock16( handle );
return handle; return handle;
} }
@ -626,15 +626,15 @@ BOOL DrawIcon( HDC16 hdc, INT x, INT y, HICON16 hIcon )
if (hXorBits && hAndBits) if (hXorBits && hAndBits)
{ {
HBITMAP16 hBitTemp = SelectObject( hMemDC, hAndBits ); HBITMAP32 hBitTemp = SelectObject32( hMemDC, hAndBits );
BitBlt( hdc, x, y, ptr->nWidth, ptr->nHeight, hMemDC, 0, 0, SRCAND ); BitBlt( hdc, x, y, ptr->nWidth, ptr->nHeight, hMemDC, 0, 0, SRCAND );
SelectObject( hMemDC, hXorBits ); SelectObject32( hMemDC, hXorBits );
BitBlt( hdc, x, y, ptr->nWidth, ptr->nHeight, hMemDC, 0, 0, SRCINVERT); BitBlt( hdc, x, y, ptr->nWidth, ptr->nHeight, hMemDC, 0, 0, SRCINVERT);
SelectObject( hMemDC, hBitTemp ); SelectObject32( hMemDC, hBitTemp );
} }
DeleteDC( hMemDC ); DeleteDC( hMemDC );
if (hXorBits) DeleteObject( hXorBits ); if (hXorBits) DeleteObject32( hXorBits );
if (hAndBits) DeleteObject( hAndBits ); if (hAndBits) DeleteObject32( hAndBits );
GlobalUnlock16( hIcon ); GlobalUnlock16( hIcon );
SetTextColor( hdc, oldFg ); SetTextColor( hdc, oldFg );
SetBkColor( hdc, oldBg ); SetBkColor( hdc, oldBg );

View File

@ -185,9 +185,9 @@ void DC_InitDC( DC* dc )
RealizeDefaultPalette( dc->hSelf ); RealizeDefaultPalette( dc->hSelf );
SetTextColor( dc->hSelf, dc->w.textColor ); SetTextColor( dc->hSelf, dc->w.textColor );
SetBkColor( dc->hSelf, dc->w.backgroundColor ); SetBkColor( dc->hSelf, dc->w.backgroundColor );
SelectObject( dc->hSelf, dc->w.hPen ); SelectObject32( dc->hSelf, dc->w.hPen );
SelectObject( dc->hSelf, dc->w.hBrush ); SelectObject32( dc->hSelf, dc->w.hBrush );
SelectObject( dc->hSelf, dc->w.hFont ); SelectObject32( dc->hSelf, dc->w.hFont );
CLIPPING_UpdateGCRegion( dc ); CLIPPING_UpdateGCRegion( dc );
} }
@ -379,19 +379,18 @@ HDC16 GetDCState( HDC16 hdc )
memset( &newdc->u.x, 0, sizeof(newdc->u.x) ); memset( &newdc->u.x, 0, sizeof(newdc->u.x) );
memcpy( &newdc->w, &dc->w, sizeof(dc->w) ); memcpy( &newdc->w, &dc->w, sizeof(dc->w) );
memcpy( &newdc->u.x.pen, &dc->u.x.pen, sizeof(dc->u.x.pen) );
newdc->hSelf = (HDC32)handle; newdc->hSelf = (HDC32)handle;
newdc->saveLevel = 0; newdc->saveLevel = 0;
newdc->w.flags |= DC_SAVED; newdc->w.flags |= DC_SAVED;
newdc->w.hGCClipRgn = 0; newdc->w.hGCClipRgn = 0;
newdc->w.hVisRgn = CreateRectRgn( 0, 0, 0, 0 ); newdc->w.hVisRgn = CreateRectRgn32( 0, 0, 0, 0 );
CombineRgn( newdc->w.hVisRgn, dc->w.hVisRgn, 0, RGN_COPY ); CombineRgn32( newdc->w.hVisRgn, dc->w.hVisRgn, 0, RGN_COPY );
if (dc->w.hClipRgn) if (dc->w.hClipRgn)
{ {
newdc->w.hClipRgn = CreateRectRgn( 0, 0, 0, 0 ); newdc->w.hClipRgn = CreateRectRgn32( 0, 0, 0, 0 );
CombineRgn( newdc->w.hClipRgn, dc->w.hClipRgn, 0, RGN_COPY ); CombineRgn32( newdc->w.hClipRgn, dc->w.hClipRgn, 0, RGN_COPY );
} }
return handle; return handle;
} }
@ -402,37 +401,56 @@ HDC16 GetDCState( HDC16 hdc )
*/ */
void SetDCState( HDC16 hdc, HDC16 hdcs ) void SetDCState( HDC16 hdc, HDC16 hdcs )
{ {
DC * dc, * dcs; DC *dc, *dcs;
HRGN32 hVisRgn, hClipRgn, hGCClipRgn;
HFONT16 hfont;
HBRUSH16 hbrush;
if (!(dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ))) return; if (!(dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ))) return;
if (!(dcs = (DC *) GDI_GetObjPtr( hdcs, DC_MAGIC ))) return; if (!(dcs = (DC *) GDI_GetObjPtr( hdcs, DC_MAGIC ))) return;
if (!dcs->w.flags & DC_SAVED) return; if (!dcs->w.flags & DC_SAVED) return;
dprintf_dc(stddeb, "SetDCState: %04x %04x\n", hdc, hdcs ); dprintf_dc(stddeb, "SetDCState: %04x %04x\n", hdc, hdcs );
/* Save the regions, font & brush before overwriting everything */ dc->w.flags = dcs->w.flags & ~DC_SAVED;
hVisRgn = dc->w.hVisRgn; dc->w.devCaps = dcs->w.devCaps;
hClipRgn = dc->w.hClipRgn; dc->w.hFirstBitmap = dcs->w.hFirstBitmap;
hGCClipRgn = dc->w.hGCClipRgn; dc->w.hDevice = dcs->w.hDevice;
hfont = dc->w.hFont; dc->w.ROPmode = dcs->w.ROPmode;
hbrush = dc->w.hBrush; dc->w.polyFillMode = dcs->w.polyFillMode;
memcpy( &dc->w, &dcs->w, sizeof(dc->w) ); dc->w.stretchBltMode = dcs->w.stretchBltMode;
memcpy( &dc->u.x.pen, &dcs->u.x.pen, sizeof(dc->u.x.pen) ); dc->w.relAbsMode = dcs->w.relAbsMode;
dc->w.flags &= ~DC_SAVED; dc->w.backgroundMode = dcs->w.backgroundMode;
dc->w.backgroundColor = dcs->w.backgroundColor;
dc->w.textColor = dcs->w.textColor;
dc->w.backgroundPixel = dcs->w.backgroundPixel;
dc->w.textPixel = dcs->w.textPixel;
dc->w.brushOrgX = dcs->w.brushOrgX;
dc->w.brushOrgY = dcs->w.brushOrgY;
dc->w.textAlign = dcs->w.textAlign;
dc->w.charExtra = dcs->w.charExtra;
dc->w.breakTotalExtra = dcs->w.breakTotalExtra;
dc->w.breakCount = dcs->w.breakCount;
dc->w.breakExtra = dcs->w.breakExtra;
dc->w.breakRem = dcs->w.breakRem;
dc->w.MapMode = dcs->w.MapMode;
dc->w.DCOrgX = dcs->w.DCOrgX;
dc->w.DCOrgY = dcs->w.DCOrgY;
dc->w.CursPosX = dcs->w.CursPosX;
dc->w.CursPosY = dcs->w.CursPosY;
dc->w.WndOrgX = dcs->w.WndOrgX;
dc->w.WndOrgY = dcs->w.WndOrgY;
dc->w.WndExtX = dcs->w.WndExtX;
dc->w.WndExtY = dcs->w.WndExtY;
dc->w.VportOrgX = dcs->w.VportOrgX;
dc->w.VportOrgY = dcs->w.VportOrgY;
dc->w.VportExtX = dcs->w.VportExtX;
dc->w.VportExtY = dcs->w.VportExtY;
/* Restore the regions */ if (!(dc->w.flags & DC_MEMORY)) dc->w.bitsPerPixel = dcs->w.bitsPerPixel;
dc->w.hVisRgn = hVisRgn; CombineRgn32( dc->w.hVisRgn, dcs->w.hVisRgn, 0, RGN_COPY );
dc->w.hClipRgn = hClipRgn; SelectClipRgn32( hdc, dcs->w.hClipRgn );
dc->w.hGCClipRgn = hGCClipRgn; SelectObject32( hdc, dcs->w.hBitmap );
dc->w.hFont = hfont; SelectObject32( hdc, dcs->w.hBrush );
dc->w.hBrush = hbrush; SelectObject32( hdc, dcs->w.hFont );
CombineRgn( dc->w.hVisRgn, dcs->w.hVisRgn, 0, RGN_COPY ); SelectObject32( hdc, dcs->w.hPen );
SelectClipRgn( hdc, dcs->w.hClipRgn ); GDISelectPalette( hdc, dcs->w.hPalette, FALSE );
SelectObject( hdc, dcs->w.hBrush );
SelectObject( hdc, dcs->w.hFont );
} }
@ -564,7 +582,7 @@ HDC16 CreateCompatibleDC( HDC16 hdc )
!dc->funcs->pCreateDC( dc, NULL, NULL, NULL, NULL )) !dc->funcs->pCreateDC( dc, NULL, NULL, NULL, NULL ))
{ {
dprintf_dc( stddeb, "CreateDC: creation aborted by device\n" ); dprintf_dc( stddeb, "CreateDC: creation aborted by device\n" );
DeleteObject( hbitmap ); DeleteObject32( hbitmap );
GDI_HEAP_FREE( dc->hSelf ); GDI_HEAP_FREE( dc->hSelf );
return 0; return 0;
} }
@ -596,16 +614,16 @@ BOOL DeleteDC( HDC16 hdc )
if (!(dc->w.flags & DC_SAVED)) if (!(dc->w.flags & DC_SAVED))
{ {
SelectObject( hdc, STOCK_BLACK_PEN ); SelectObject32( hdc, STOCK_BLACK_PEN );
SelectObject( hdc, STOCK_WHITE_BRUSH ); SelectObject32( hdc, STOCK_WHITE_BRUSH );
SelectObject( hdc, STOCK_SYSTEM_FONT ); SelectObject32( hdc, STOCK_SYSTEM_FONT );
if (dc->w.flags & DC_MEMORY) DeleteObject( dc->w.hFirstBitmap ); if (dc->w.flags & DC_MEMORY) DeleteObject32( dc->w.hFirstBitmap );
if (dc->funcs->pDeleteDC) dc->funcs->pDeleteDC(dc); if (dc->funcs->pDeleteDC) dc->funcs->pDeleteDC(dc);
} }
if (dc->w.hClipRgn) DeleteObject( dc->w.hClipRgn ); if (dc->w.hClipRgn) DeleteObject32( dc->w.hClipRgn );
if (dc->w.hVisRgn) DeleteObject( dc->w.hVisRgn ); if (dc->w.hVisRgn) DeleteObject32( dc->w.hVisRgn );
if (dc->w.hGCClipRgn) DeleteObject( dc->w.hGCClipRgn ); if (dc->w.hGCClipRgn) DeleteObject32( dc->w.hGCClipRgn );
return GDI_FreeObject( hdc ); return GDI_FreeObject( hdc );
} }

View File

@ -632,12 +632,12 @@ int StretchDIBits( HDC16 hdc,
hBitmap = CreateDIBitmap( hdc, &info->bmiHeader, CBM_INIT, hBitmap = CreateDIBitmap( hdc, &info->bmiHeader, CBM_INIT,
bits, info, wUsage ); bits, info, wUsage );
hdcMem = CreateCompatibleDC( hdc ); hdcMem = CreateCompatibleDC( hdc );
hOldBitmap = SelectObject( hdcMem, hBitmap ); hOldBitmap = SelectObject32( hdcMem, hBitmap );
StretchBlt( hdc, xDest, yDest, wDestWidth, wDestHeight, StretchBlt( hdc, xDest, yDest, wDestWidth, wDestHeight,
hdcMem, xSrc, ySrc, wSrcWidth, wSrcHeight, dwRop ); hdcMem, xSrc, ySrc, wSrcWidth, wSrcHeight, dwRop );
SelectObject( hdcMem, hOldBitmap ); SelectObject32( hdcMem, hOldBitmap );
DeleteDC( hdcMem ); DeleteDC( hdcMem );
DeleteObject( hBitmap ); DeleteObject32( hBitmap );
return wSrcHeight; return wSrcHeight;
} }

View File

@ -1203,10 +1203,10 @@ INT EnumFonts(HDC16 hDC, LPCSTR lpFaceName, FONTENUMPROC16 lpEnumFunc, LPARAM lp
dprintf_font(stddeb,"EnumFonts // %p !\n", lpLogFontList[i]); dprintf_font(stddeb,"EnumFonts // %p !\n", lpLogFontList[i]);
memcpy(lpLogFont, lpLogFontList[i], sizeof(LOGFONT16) + LF_FACESIZE); memcpy(lpLogFont, lpLogFontList[i], sizeof(LOGFONT16) + LF_FACESIZE);
hFont = CreateFontIndirect16(lpLogFont); hFont = CreateFontIndirect16(lpLogFont);
hOldFont = SelectObject(hDC, hFont); hOldFont = SelectObject32(hDC, hFont);
GetTextMetrics16(hDC, lptm); GetTextMetrics16(hDC, lptm);
SelectObject(hDC, hOldFont); SelectObject32(hDC, hOldFont);
DeleteObject(hFont); DeleteObject32(hFont);
dprintf_font(stddeb,"EnumFonts // i=%d lpLogFont=%p lptm=%p\n", i, lpLogFont, lptm); dprintf_font(stddeb,"EnumFonts // i=%d lpLogFont=%p lptm=%p\n", i, lpLogFont, lptm);
nRet = lpEnumFunc( GDI_HEAP_SEG_ADDR(hLog), GDI_HEAP_SEG_ADDR(hMet), nRet = lpEnumFunc( GDI_HEAP_SEG_ADDR(hLog), GDI_HEAP_SEG_ADDR(hMet),
0, (LONG)lpData ); 0, (LONG)lpData );
@ -1272,10 +1272,10 @@ INT EnumFontFamilies(HDC16 hDC, LPCSTR lpszFamily, FONTENUMPROC16 lpEnumFunc, LP
strcpy(lpEnumLogFont->elfFullName,""); strcpy(lpEnumLogFont->elfFullName,"");
strcpy(lpEnumLogFont->elfStyle,""); strcpy(lpEnumLogFont->elfStyle,"");
hFont = CreateFontIndirect16((LPLOGFONT16)lpEnumLogFont); hFont = CreateFontIndirect16((LPLOGFONT16)lpEnumLogFont);
hOldFont = SelectObject(hDC, hFont); hOldFont = SelectObject32(hDC, hFont);
GetTextMetrics16(hDC, lptm); GetTextMetrics16(hDC, lptm);
SelectObject(hDC, hOldFont); SelectObject32(hDC, hOldFont);
DeleteObject(hFont); DeleteObject32(hFont);
dprintf_font(stddeb, "EnumFontFamilies // i=%d lpLogFont=%p lptm=%p\n", i, lpEnumLogFont, lptm); dprintf_font(stddeb, "EnumFontFamilies // i=%d lpLogFont=%p lptm=%p\n", i, lpEnumLogFont, lptm);
nRet = lpEnumFunc( GDI_HEAP_SEG_ADDR(hLog), GDI_HEAP_SEG_ADDR(hMet), nRet = lpEnumFunc( GDI_HEAP_SEG_ADDR(hLog), GDI_HEAP_SEG_ADDR(hMet),

View File

@ -4,6 +4,7 @@
* Copyright 1993 Alexandre Julliard * Copyright 1993 Alexandre Julliard
*/ */
#define NO_TRANSITION_TYPES /* This file is Win32-clean */
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#include "gdi.h" #include "gdi.h"
@ -242,14 +243,23 @@ GDIOBJHDR * GDI_GetObjPtr( HGDIOBJ16 handle, WORD magic )
/*********************************************************************** /***********************************************************************
* DeleteObject (GDI.69) * DeleteObject16 (GDI.69)
*/ */
BOOL DeleteObject( HGDIOBJ16 obj ) BOOL16 DeleteObject16( HGDIOBJ16 obj )
{
return DeleteObject32( obj );
}
/***********************************************************************
* DeleteObject32 (GDI32.70)
*/
BOOL32 DeleteObject32( HGDIOBJ32 obj )
{ {
/* Check if object is valid */ /* Check if object is valid */
GDIOBJHDR * header = (GDIOBJHDR *) GDI_HEAP_LIN_ADDR( obj ); GDIOBJHDR * header = (GDIOBJHDR *) GDI_HEAP_LIN_ADDR( obj );
if (!header) return FALSE; if (!header || HIWORD(obj)) return FALSE;
dprintf_gdi(stddeb, "DeleteObject: %04x\n", obj ); dprintf_gdi(stddeb, "DeleteObject: %04x\n", obj );
@ -269,9 +279,18 @@ BOOL DeleteObject( HGDIOBJ16 obj )
/*********************************************************************** /***********************************************************************
* GetStockObject (GDI.87) * GetStockObject16 (GDI.87)
*/ */
HGDIOBJ16 GetStockObject( INT16 obj ) HGDIOBJ16 GetStockObject16( INT16 obj )
{
return (HGDIOBJ16)GetStockObject32( obj );
}
/***********************************************************************
* GetStockObject32 (GDI32.220)
*/
HGDIOBJ32 GetStockObject32( INT32 obj )
{ {
if ((obj < 0) || (obj >= NB_STOCK_OBJECTS)) return 0; if ((obj < 0) || (obj >= NB_STOCK_OBJECTS)) return 0;
if (!StockObjects[obj]) return 0; if (!StockObjects[obj]) return 0;
@ -299,9 +318,9 @@ INT16 GetObject16( HANDLE16 handle, INT16 count, LPVOID buffer )
switch(ptr->wMagic) switch(ptr->wMagic)
{ {
case PEN_MAGIC: case PEN_MAGIC:
return PEN_GetObject( (PENOBJ *)ptr, count, buffer ); return PEN_GetObject16( (PENOBJ *)ptr, count, buffer );
case BRUSH_MAGIC: case BRUSH_MAGIC:
return BRUSH_GetObject( (BRUSHOBJ *)ptr, count, buffer ); return BRUSH_GetObject16( (BRUSHOBJ *)ptr, count, buffer );
case BITMAP_MAGIC: case BITMAP_MAGIC:
return BITMAP_GetObject16( (BITMAPOBJ *)ptr, count, buffer ); return BITMAP_GetObject16( (BITMAPOBJ *)ptr, count, buffer );
case FONT_MAGIC: case FONT_MAGIC:
@ -330,12 +349,14 @@ INT32 GetObject32A( HANDLE32 handle, INT32 count, LPVOID buffer )
switch(ptr->wMagic) switch(ptr->wMagic)
{ {
case PEN_MAGIC:
return PEN_GetObject32( (PENOBJ *)ptr, count, buffer );
case BRUSH_MAGIC:
return BRUSH_GetObject32( (BRUSHOBJ *)ptr, count, buffer );
case BITMAP_MAGIC: case BITMAP_MAGIC:
return BITMAP_GetObject32( (BITMAPOBJ *)ptr, count, buffer ); return BITMAP_GetObject32( (BITMAPOBJ *)ptr, count, buffer );
case FONT_MAGIC: case FONT_MAGIC:
return FONT_GetObject32A( (FONTOBJ *)ptr, count, buffer ); return FONT_GetObject32A( (FONTOBJ *)ptr, count, buffer );
case PEN_MAGIC:
case BRUSH_MAGIC:
case PALETTE_MAGIC: case PALETTE_MAGIC:
fprintf( stderr, "GetObject32: magic %04x not implemented\n", fprintf( stderr, "GetObject32: magic %04x not implemented\n",
ptr->wMagic ); ptr->wMagic );
@ -355,9 +376,18 @@ INT32 GetObject32W( HANDLE32 handle, INT32 count, LPVOID buffer )
/*********************************************************************** /***********************************************************************
* SelectObject (GDI.45) * SelectObject16 (GDI.45)
*/ */
HGDIOBJ16 SelectObject( HDC16 hdc, HGDIOBJ16 handle ) HGDIOBJ16 SelectObject16( HDC16 hdc, HGDIOBJ16 handle )
{
return (HGDIOBJ16)SelectObject32( hdc, handle );
}
/***********************************************************************
* SelectObject32 (GDI32.299)
*/
HGDIOBJ32 SelectObject32( HDC32 hdc, HGDIOBJ32 handle )
{ {
GDIOBJHDR * ptr = NULL; GDIOBJHDR * ptr = NULL;
DC * dc; DC * dc;
@ -387,16 +417,25 @@ HGDIOBJ16 SelectObject( HDC16 hdc, HGDIOBJ16 handle )
case FONT_MAGIC: case FONT_MAGIC:
return FONT_SelectObject( dc, handle, (FONTOBJ *)ptr ); return FONT_SelectObject( dc, handle, (FONTOBJ *)ptr );
case REGION_MAGIC: case REGION_MAGIC:
return (HGDIOBJ16)SelectClipRgn( hdc, handle ); return (HGDIOBJ16)SelectClipRgn16( hdc, handle );
} }
return 0; return 0;
} }
/*********************************************************************** /***********************************************************************
* UnrealizeObject (GDI.150) * UnrealizeObject16 (GDI.150)
*/ */
BOOL UnrealizeObject( HGDIOBJ16 obj ) BOOL16 UnrealizeObject16( HGDIOBJ16 obj )
{
return UnrealizeObject32( obj );
}
/***********************************************************************
* UnrealizeObject (GDI32.358)
*/
BOOL32 UnrealizeObject32( HGDIOBJ32 obj )
{ {
/* Check if object is valid */ /* Check if object is valid */
@ -421,10 +460,10 @@ BOOL UnrealizeObject( HGDIOBJ16 obj )
/*********************************************************************** /***********************************************************************
* EnumObjects (GDI.71) * EnumObjects16 (GDI.71)
*/ */
INT EnumObjects( HDC16 hdc, INT nObjType, GOBJENUMPROC16 lpEnumFunc, INT16 EnumObjects16( HDC16 hdc, INT16 nObjType, GOBJENUMPROC16 lpEnumFunc,
LPARAM lParam ) LPARAM lParam )
{ {
/* Solid colors to enumerate */ /* Solid colors to enumerate */
static const COLORREF solid_colors[] = static const COLORREF solid_colors[] =
@ -438,11 +477,11 @@ INT EnumObjects( HDC16 hdc, INT nObjType, GOBJENUMPROC16 lpEnumFunc,
RGB(0x80,0x80,0x80), RGB(0xc0,0xc0,0xc0) RGB(0x80,0x80,0x80), RGB(0xc0,0xc0,0xc0)
}; };
int i, retval = 0; INT16 i, retval = 0;
LOGPEN16 *pen; LOGPEN16 *pen;
LOGBRUSH16 *brush = NULL; LOGBRUSH16 *brush = NULL;
dprintf_gdi( stddeb, "EnumObjects: %04x %d %08lx %08lx\n", dprintf_gdi( stddeb, "EnumObjects16: %04x %d %08lx %08lx\n",
hdc, nObjType, (DWORD)lpEnumFunc, lParam ); hdc, nObjType, (DWORD)lpEnumFunc, lParam );
switch(nObjType) switch(nObjType)
{ {
@ -456,7 +495,7 @@ INT EnumObjects( HDC16 hdc, INT nObjType, GOBJENUMPROC16 lpEnumFunc,
pen->lopnWidth.y = 0; pen->lopnWidth.y = 0;
pen->lopnColor = solid_colors[i]; pen->lopnColor = solid_colors[i];
retval = lpEnumFunc( SEGPTR_GET(pen), lParam ); retval = lpEnumFunc( SEGPTR_GET(pen), lParam );
dprintf_gdi( stddeb, "EnumObject: solid pen %08lx, ret=%d\n", dprintf_gdi( stddeb, "EnumObjects16: solid pen %08lx, ret=%d\n",
solid_colors[i], retval); solid_colors[i], retval);
if (!retval) break; if (!retval) break;
} }
@ -472,7 +511,7 @@ INT EnumObjects( HDC16 hdc, INT nObjType, GOBJENUMPROC16 lpEnumFunc,
brush->lbColor = solid_colors[i]; brush->lbColor = solid_colors[i];
brush->lbHatch = 0; brush->lbHatch = 0;
retval = lpEnumFunc( SEGPTR_GET(brush), lParam ); retval = lpEnumFunc( SEGPTR_GET(brush), lParam );
dprintf_gdi( stddeb, "EnumObject: solid brush %08lx, ret=%d\n", dprintf_gdi( stddeb, "EnumObjects16: solid brush %08lx, ret=%d\n",
solid_colors[i], retval); solid_colors[i], retval);
if (!retval) break; if (!retval) break;
} }
@ -484,7 +523,7 @@ INT EnumObjects( HDC16 hdc, INT nObjType, GOBJENUMPROC16 lpEnumFunc,
brush->lbColor = RGB(0,0,0); brush->lbColor = RGB(0,0,0);
brush->lbHatch = i; brush->lbHatch = i;
retval = lpEnumFunc( SEGPTR_GET(brush), lParam ); retval = lpEnumFunc( SEGPTR_GET(brush), lParam );
dprintf_gdi( stddeb, "EnumObject: hatched brush %d, ret=%d\n", dprintf_gdi( stddeb, "EnumObjects16: hatched brush %d, ret=%d\n",
i, retval); i, retval);
if (!retval) break; if (!retval) break;
} }
@ -492,7 +531,83 @@ INT EnumObjects( HDC16 hdc, INT nObjType, GOBJENUMPROC16 lpEnumFunc,
break; break;
default: default:
fprintf( stderr, "EnumObjects: invalid type %d\n", nObjType ); fprintf( stderr, "EnumObjects16: invalid type %d\n", nObjType );
break;
}
return retval;
}
/***********************************************************************
* EnumObjects32 (GDI32.89)
*/
INT32 EnumObjects32( HDC32 hdc, INT32 nObjType, GOBJENUMPROC32 lpEnumFunc,
LPARAM lParam )
{
/* Solid colors to enumerate */
static const COLORREF solid_colors[] =
{ RGB(0x00,0x00,0x00), RGB(0xff,0xff,0xff),
RGB(0xff,0x00,0x00), RGB(0x00,0xff,0x00),
RGB(0x00,0x00,0xff), RGB(0xff,0xff,0x00),
RGB(0xff,0x00,0xff), RGB(0x00,0xff,0xff),
RGB(0x80,0x00,0x00), RGB(0x00,0x80,0x00),
RGB(0x80,0x80,0x00), RGB(0x00,0x00,0x80),
RGB(0x80,0x00,0x80), RGB(0x00,0x80,0x80),
RGB(0x80,0x80,0x80), RGB(0xc0,0xc0,0xc0)
};
INT32 i, retval = 0;
LOGPEN32 pen;
LOGBRUSH32 brush;
dprintf_gdi( stddeb, "EnumObjects32: %04x %d %08lx %08lx\n",
hdc, nObjType, (DWORD)lpEnumFunc, lParam );
switch(nObjType)
{
case OBJ_PEN:
/* Enumerate solid pens */
for (i = 0; i < sizeof(solid_colors)/sizeof(solid_colors[0]); i++)
{
pen.lopnStyle = PS_SOLID;
pen.lopnWidth.x = 1;
pen.lopnWidth.y = 0;
pen.lopnColor = solid_colors[i];
retval = lpEnumFunc( &pen, lParam );
dprintf_gdi( stddeb, "EnumObjects32: solid pen %08lx, ret=%d\n",
solid_colors[i], retval);
if (!retval) break;
}
break;
case OBJ_BRUSH:
/* Enumerate solid brushes */
for (i = 0; i < sizeof(solid_colors)/sizeof(solid_colors[0]); i++)
{
brush.lbStyle = BS_SOLID;
brush.lbColor = solid_colors[i];
brush.lbHatch = 0;
retval = lpEnumFunc( &brush, lParam );
dprintf_gdi( stddeb, "EnumObjects32: solid brush %08lx, ret=%d\n",
solid_colors[i], retval);
if (!retval) break;
}
/* Now enumerate hatched brushes */
if (retval) for (i = HS_HORIZONTAL; i <= HS_DIAGCROSS; i++)
{
brush.lbStyle = BS_HATCHED;
brush.lbColor = RGB(0,0,0);
brush.lbHatch = i;
retval = lpEnumFunc( &brush, lParam );
dprintf_gdi( stddeb, "EnumObjects32: hatched brush %d, ret=%d\n",
i, retval);
if (!retval) break;
}
break;
default:
/* FIXME: implement Win32 types */
fprintf( stderr, "EnumObjects32: invalid type %d\n", nObjType );
break; break;
} }
return retval; return retval;

View File

@ -284,7 +284,7 @@ BOOL PlayMetaFile(HDC16 hdc, HMETAFILE16 hmf)
/* free objects in handle table */ /* free objects in handle table */
for(i = 0; i < mh->mtNoObjects; i++) for(i = 0; i < mh->mtNoObjects; i++)
if(*(ht->objectHandle + i) != 0) if(*(ht->objectHandle + i) != 0)
DeleteObject(*(ht->objectHandle + i)); DeleteObject32(*(ht->objectHandle + i));
/* free handle table */ /* free handle table */
GlobalFree16(hHT); GlobalFree16(hHT);
@ -400,7 +400,7 @@ void PlayMetaFileRecord(HDC16 hdc, HANDLETABLE16 *ht, METARECORD *mr,
break; break;
case META_DELETEOBJECT: case META_DELETEOBJECT:
DeleteObject(*(ht->objectHandle + *(mr->rdParam))); DeleteObject32(*(ht->objectHandle + *(mr->rdParam)));
*(ht->objectHandle + *(mr->rdParam)) = 0; *(ht->objectHandle + *(mr->rdParam)) = 0;
break; break;
@ -471,7 +471,7 @@ void PlayMetaFileRecord(HDC16 hdc, HANDLETABLE16 *ht, METARECORD *mr,
break; break;
case META_LINETO: case META_LINETO:
LineTo(hdc, *(mr->rdParam + 1), *(mr->rdParam)); LineTo32(hdc, *(mr->rdParam + 1), *(mr->rdParam));
break; break;
case META_MOVETO: case META_MOVETO:
@ -479,46 +479,46 @@ void PlayMetaFileRecord(HDC16 hdc, HANDLETABLE16 *ht, METARECORD *mr,
break; break;
case META_EXCLUDECLIPRECT: case META_EXCLUDECLIPRECT:
ExcludeClipRect(hdc, *(mr->rdParam + 3), *(mr->rdParam + 2), ExcludeClipRect16( hdc, *(mr->rdParam + 3), *(mr->rdParam + 2),
*(mr->rdParam + 1), *(mr->rdParam)); *(mr->rdParam + 1), *(mr->rdParam) );
break; break;
case META_INTERSECTCLIPRECT: case META_INTERSECTCLIPRECT:
IntersectClipRect(hdc, *(mr->rdParam + 3), *(mr->rdParam + 2), IntersectClipRect16( hdc, *(mr->rdParam + 3), *(mr->rdParam + 2),
*(mr->rdParam + 1), *(mr->rdParam)); *(mr->rdParam + 1), *(mr->rdParam) );
break; break;
case META_ARC: case META_ARC:
Arc(hdc, *(mr->rdParam + 7), *(mr->rdParam + 6), *(mr->rdParam + 5), Arc32(hdc, *(mr->rdParam + 7), *(mr->rdParam + 6), *(mr->rdParam + 5),
*(mr->rdParam + 4), *(mr->rdParam + 3), *(mr->rdParam + 2), *(mr->rdParam + 4), *(mr->rdParam + 3), *(mr->rdParam + 2),
*(mr->rdParam + 1), *(mr->rdParam)); *(mr->rdParam + 1), *(mr->rdParam));
break; break;
case META_ELLIPSE: case META_ELLIPSE:
Ellipse(hdc, *(mr->rdParam + 3), *(mr->rdParam + 2), Ellipse32(hdc, *(mr->rdParam + 3), *(mr->rdParam + 2),
*(mr->rdParam + 1), *(mr->rdParam)); *(mr->rdParam + 1), *(mr->rdParam));
break; break;
case META_FLOODFILL: case META_FLOODFILL:
FloodFill(hdc, *(mr->rdParam + 3), *(mr->rdParam + 2), FloodFill32(hdc, *(mr->rdParam + 3), *(mr->rdParam + 2),
MAKELONG(*(mr->rdParam + 1), *(mr->rdParam))); MAKELONG(*(mr->rdParam + 1), *(mr->rdParam)));
break; break;
case META_PIE: case META_PIE:
Pie(hdc, *(mr->rdParam + 7), *(mr->rdParam + 6), *(mr->rdParam + 5), Pie32(hdc, *(mr->rdParam + 7), *(mr->rdParam + 6), *(mr->rdParam + 5),
*(mr->rdParam + 4), *(mr->rdParam + 3), *(mr->rdParam + 2), *(mr->rdParam + 4), *(mr->rdParam + 3), *(mr->rdParam + 2),
*(mr->rdParam + 1), *(mr->rdParam)); *(mr->rdParam + 1), *(mr->rdParam));
break; break;
case META_RECTANGLE: case META_RECTANGLE:
Rectangle(hdc, *(mr->rdParam + 3), *(mr->rdParam + 2), Rectangle32(hdc, *(mr->rdParam + 3), *(mr->rdParam + 2),
*(mr->rdParam + 1), *(mr->rdParam)); *(mr->rdParam + 1), *(mr->rdParam));
break; break;
case META_ROUNDRECT: case META_ROUNDRECT:
RoundRect(hdc, *(mr->rdParam + 5), *(mr->rdParam + 4), RoundRect32(hdc, *(mr->rdParam + 5), *(mr->rdParam + 4),
*(mr->rdParam + 3), *(mr->rdParam + 2), *(mr->rdParam + 3), *(mr->rdParam + 2),
*(mr->rdParam + 1), *(mr->rdParam)); *(mr->rdParam + 1), *(mr->rdParam));
break; break;
case META_PATBLT: case META_PATBLT:
@ -532,12 +532,12 @@ void PlayMetaFileRecord(HDC16 hdc, HANDLETABLE16 *ht, METARECORD *mr,
break; break;
case META_SETPIXEL: case META_SETPIXEL:
SetPixel(hdc, *(mr->rdParam + 3), *(mr->rdParam + 2), SetPixel32(hdc, *(mr->rdParam + 3), *(mr->rdParam + 2),
MAKELONG(*(mr->rdParam + 1), *(mr->rdParam))); MAKELONG(*(mr->rdParam + 1), *(mr->rdParam)));
break; break;
case META_OFFSETCLIPRGN: case META_OFFSETCLIPRGN:
OffsetClipRgn(hdc, *(mr->rdParam + 1), *(mr->rdParam)); OffsetClipRgn16( hdc, *(mr->rdParam + 1), *(mr->rdParam) );
break; break;
case META_TEXTOUT: case META_TEXTOUT:
@ -565,13 +565,13 @@ void PlayMetaFileRecord(HDC16 hdc, HANDLETABLE16 *ht, METARECORD *mr,
break; break;
case META_SELECTOBJECT: case META_SELECTOBJECT:
SelectObject(hdc, *(ht->objectHandle + *(mr->rdParam))); SelectObject32(hdc, *(ht->objectHandle + *(mr->rdParam)));
break; break;
case META_CHORD: case META_CHORD:
Chord(hdc, *(mr->rdParam + 7), *(mr->rdParam + 6), *(mr->rdParam + 5), Chord32(hdc, *(mr->rdParam + 7), *(mr->rdParam + 6), *(mr->rdParam+5),
*(mr->rdParam + 4), *(mr->rdParam + 3), *(mr->rdParam + 2), *(mr->rdParam + 4), *(mr->rdParam + 3), *(mr->rdParam + 2),
*(mr->rdParam + 1), *(mr->rdParam)); *(mr->rdParam + 1), *(mr->rdParam));
break; break;
case META_CREATEPATTERNBRUSH: case META_CREATEPATTERNBRUSH:
@ -580,7 +580,7 @@ void PlayMetaFileRecord(HDC16 hdc, HANDLETABLE16 *ht, METARECORD *mr,
case BS_PATTERN: case BS_PATTERN:
infohdr = (BITMAPINFOHEADER *)(mr->rdParam + 2); infohdr = (BITMAPINFOHEADER *)(mr->rdParam + 2);
MF_AddHandle(ht, nHandles, MF_AddHandle(ht, nHandles,
CreatePatternBrush(CreateBitmap(infohdr->biWidth, CreatePatternBrush32(CreateBitmap(infohdr->biWidth,
infohdr->biHeight, infohdr->biHeight,
infohdr->biPlanes, infohdr->biPlanes,
infohdr->biBitCount, infohdr->biBitCount,
@ -595,14 +595,14 @@ void PlayMetaFileRecord(HDC16 hdc, HANDLETABLE16 *ht, METARECORD *mr,
memcpy(ptr, mr->rdParam + 2, s1); memcpy(ptr, mr->rdParam + 2, s1);
GlobalUnlock16(hndl); GlobalUnlock16(hndl);
MF_AddHandle(ht, nHandles, MF_AddHandle(ht, nHandles,
CreateDIBPatternBrush(hndl, *(mr->rdParam + 1))); CreateDIBPatternBrush32(hndl, *(mr->rdParam + 1)));
GlobalFree16(hndl); GlobalFree16(hndl);
} }
break; break;
case META_CREATEPENINDIRECT: case META_CREATEPENINDIRECT:
MF_AddHandle(ht, nHandles, MF_AddHandle(ht, nHandles,
CreatePenIndirect((LOGPEN16 *)(&(mr->rdParam)))); CreatePenIndirect16((LOGPEN16 *)(&(mr->rdParam))));
break; break;
case META_CREATEFONTINDIRECT: case META_CREATEFONTINDIRECT:
@ -612,7 +612,7 @@ void PlayMetaFileRecord(HDC16 hdc, HANDLETABLE16 *ht, METARECORD *mr,
case META_CREATEBRUSHINDIRECT: case META_CREATEBRUSHINDIRECT:
MF_AddHandle(ht, nHandles, MF_AddHandle(ht, nHandles,
CreateBrushIndirect((LOGBRUSH16 *)(&(mr->rdParam)))); CreateBrushIndirect16((LOGBRUSH16 *)(&(mr->rdParam))));
break; break;
/* W. Magro: Some new metafile operations. Not all debugged. */ /* W. Magro: Some new metafile operations. Not all debugged. */
@ -704,7 +704,7 @@ void PlayMetaFileRecord(HDC16 hdc, HANDLETABLE16 *ht, METARECORD *mr,
mr->rdParam[13], /*Planes*/ mr->rdParam[13], /*Planes*/
mr->rdParam[14], /*BitsPixel*/ mr->rdParam[14], /*BitsPixel*/
(LPSTR)&mr->rdParam[15]); /*bits*/ (LPSTR)&mr->rdParam[15]); /*bits*/
SelectObject(hdcSrc,hbitmap); SelectObject32(hdcSrc,hbitmap);
StretchBlt(hdc,mr->rdParam[9],mr->rdParam[8], StretchBlt(hdc,mr->rdParam[9],mr->rdParam[8],
mr->rdParam[7],mr->rdParam[6], mr->rdParam[7],mr->rdParam[6],
hdcSrc,mr->rdParam[5],mr->rdParam[4], hdcSrc,mr->rdParam[5],mr->rdParam[4],
@ -720,7 +720,7 @@ void PlayMetaFileRecord(HDC16 hdc, HANDLETABLE16 *ht, METARECORD *mr,
HBITMAP16 hbitmap=CreateBitmap(mr->rdParam[7]/*Width */,mr->rdParam[8]/*Height*/, HBITMAP16 hbitmap=CreateBitmap(mr->rdParam[7]/*Width */,mr->rdParam[8]/*Height*/,
mr->rdParam[10]/*Planes*/,mr->rdParam[11]/*BitsPixel*/, mr->rdParam[10]/*Planes*/,mr->rdParam[11]/*BitsPixel*/,
(LPSTR)&mr->rdParam[12]/*bits*/); (LPSTR)&mr->rdParam[12]/*bits*/);
SelectObject(hdcSrc,hbitmap); SelectObject32(hdcSrc,hbitmap);
BitBlt(hdc,mr->rdParam[6],mr->rdParam[5], BitBlt(hdc,mr->rdParam[6],mr->rdParam[5],
mr->rdParam[4],mr->rdParam[3], mr->rdParam[4],mr->rdParam[3],
hdcSrc, hdcSrc,
@ -919,12 +919,12 @@ BOOL32 MF_MetaParam8(DC *dc, short func, short param1, short param2,
BOOL32 MF_CreateBrushIndirect(DC *dc, HBRUSH16 hBrush, LOGBRUSH16 *logbrush) BOOL32 MF_CreateBrushIndirect(DC *dc, HBRUSH16 hBrush, LOGBRUSH16 *logbrush)
{ {
int index; int index;
char buffer[sizeof(METARECORD) - 2 + sizeof(LOGBRUSH16)]; char buffer[sizeof(METARECORD) - 2 + sizeof(*logbrush)];
METARECORD *mr = (METARECORD *)&buffer; METARECORD *mr = (METARECORD *)&buffer;
mr->rdSize = (sizeof(METARECORD) + sizeof(LOGBRUSH16) - 2) / 2; mr->rdSize = (sizeof(METARECORD) + sizeof(*logbrush) - 2) / 2;
mr->rdFunction = META_CREATEBRUSHINDIRECT; mr->rdFunction = META_CREATEBRUSHINDIRECT;
memcpy(&(mr->rdParam), logbrush, sizeof(LOGBRUSH16)); memcpy(&(mr->rdParam), logbrush, sizeof(*logbrush));
if (!(MF_WriteRecord( dc, mr, mr->rdSize * 2))) return FALSE; if (!(MF_WriteRecord( dc, mr, mr->rdSize * 2))) return FALSE;
mr->rdSize = sizeof(METARECORD) / 2; mr->rdSize = sizeof(METARECORD) / 2;
@ -1024,12 +1024,12 @@ BOOL32 MF_CreatePatternBrush(DC *dc, HBRUSH16 hBrush, LOGBRUSH16 *logbrush)
BOOL32 MF_CreatePenIndirect(DC *dc, HPEN16 hPen, LOGPEN16 *logpen) BOOL32 MF_CreatePenIndirect(DC *dc, HPEN16 hPen, LOGPEN16 *logpen)
{ {
int index; int index;
char buffer[sizeof(METARECORD) - 2 + sizeof(LOGPEN16)]; char buffer[sizeof(METARECORD) - 2 + sizeof(*logpen)];
METARECORD *mr = (METARECORD *)&buffer; METARECORD *mr = (METARECORD *)&buffer;
mr->rdSize = (sizeof(METARECORD) + sizeof(LOGPEN16) - 2) / 2; mr->rdSize = (sizeof(METARECORD) + sizeof(*logpen) - 2) / 2;
mr->rdFunction = META_CREATEPENINDIRECT; mr->rdFunction = META_CREATEPENINDIRECT;
memcpy(&(mr->rdParam), logpen, sizeof(LOGPEN16)); memcpy(&(mr->rdParam), logpen, sizeof(*logpen));
if (!(MF_WriteRecord( dc, mr, mr->rdSize * 2))) return FALSE; if (!(MF_WriteRecord( dc, mr, mr->rdSize * 2))) return FALSE;
mr->rdSize = sizeof(METARECORD) / 2; mr->rdSize = sizeof(METARECORD) / 2;

View File

@ -5,6 +5,7 @@
* *
*/ */
#define NO_TRANSITION_TYPES /* This file is Win32-clean */
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <X11/Xlib.h> #include <X11/Xlib.h>
@ -77,7 +78,7 @@
static const struct static const struct
{ {
char** data; /* Pointer to bitmap data */ char** data; /* Pointer to bitmap data */
BOOL color; /* Is it a color bitmap? */ BOOL32 color; /* Is it a color bitmap? */
} OBM_Pixmaps_Data[OBM_LAST-OBM_FIRST+1] = { } OBM_Pixmaps_Data[OBM_LAST-OBM_FIRST+1] = {
{ obm_trtype, TRUE }, /* OBM_TRTYPE */ { obm_trtype, TRUE }, /* OBM_TRTYPE */
{ obm_cdrom, TRUE }, /* OBM_CDROM */ { obm_cdrom, TRUE }, /* OBM_CDROM */
@ -268,7 +269,7 @@ static XpmColorSymbol *OBM_Colors = NULL;
/*********************************************************************** /***********************************************************************
* OBM_InitColorSymbols * OBM_InitColorSymbols
*/ */
static BOOL OBM_InitColorSymbols() static BOOL32 OBM_InitColorSymbols()
{ {
int i; int i;
@ -328,8 +329,8 @@ static HBITMAP16 OBM_MakeBitmap( WORD width, WORD height,
* *
* Create the 2 bitmaps from XPM data. * Create the 2 bitmaps from XPM data.
*/ */
static BOOL OBM_CreateBitmaps( char **data, BOOL color, HBITMAP16 *hBitmap, static BOOL32 OBM_CreateBitmaps( char **data, BOOL32 color, HBITMAP16 *hBitmap,
HBITMAP16 *hBitmapMask, POINT16 *hotspot ) HBITMAP16 *hBitmapMask, POINT32 *hotspot )
{ {
Pixmap pixmap, pixmask; Pixmap pixmap, pixmask;
XpmAttributes *attrs; XpmAttributes *attrs;
@ -405,7 +406,7 @@ HGLOBAL16 OBM_LoadCursorIcon( WORD id, BOOL32 fCursor )
CURSORICONINFO *pInfo; CURSORICONINFO *pInfo;
BITMAPOBJ *bmpXor, *bmpAnd; BITMAPOBJ *bmpXor, *bmpAnd;
HBITMAP16 hXorBits, hAndBits; HBITMAP16 hXorBits, hAndBits;
POINT16 hotspot; POINT32 hotspot;
int sizeXor, sizeAnd; int sizeXor, sizeAnd;
if (fCursor) if (fCursor)
@ -443,8 +444,8 @@ HGLOBAL16 OBM_LoadCursorIcon( WORD id, BOOL32 fCursor )
if (!(handle = GlobalAlloc16( GMEM_MOVEABLE, if (!(handle = GlobalAlloc16( GMEM_MOVEABLE,
sizeof(CURSORICONINFO) + sizeXor + sizeAnd))) sizeof(CURSORICONINFO) + sizeXor + sizeAnd)))
{ {
DeleteObject( hXorBits ); DeleteObject32( hXorBits );
DeleteObject( hAndBits ); DeleteObject32( hAndBits );
return 0; return 0;
} }
@ -485,8 +486,8 @@ HGLOBAL16 OBM_LoadCursorIcon( WORD id, BOOL32 fCursor )
else memset( (char *)(pInfo + 1), 0xff, sizeAnd ); else memset( (char *)(pInfo + 1), 0xff, sizeAnd );
GetBitmapBits( hXorBits, sizeXor, (char *)(pInfo + 1) + sizeAnd ); GetBitmapBits( hXorBits, sizeXor, (char *)(pInfo + 1) + sizeAnd );
DeleteObject( hXorBits ); DeleteObject32( hXorBits );
DeleteObject( hAndBits ); DeleteObject32( hAndBits );
if (fCursor) OBM_Cursors[id] = handle; if (fCursor) OBM_Cursors[id] = handle;
return handle; return handle;

View File

@ -4,27 +4,45 @@
* Copyright 1993 Alexandre Julliard * Copyright 1993 Alexandre Julliard
*/ */
#define NO_TRANSITION_TYPES /* This file is Win32-clean */
#include "pen.h" #include "pen.h"
#include "metafile.h" #include "metafile.h"
#include "stddebug.h"
#include "color.h" #include "color.h"
#include "stddebug.h"
#include "debug.h" #include "debug.h"
static const char PEN_dash[] = { 5,3 }; /* ----- ----- ----- */
static const char PEN_dot[] = { 2,2 }; /* -- -- -- -- -- -- */
static const char PEN_dashdot[] = { 4,3,2,3 }; /* ---- -- ---- -- */
static const char PEN_dashdotdot[] = { 4,2,2,2,2,2 }; /* ---- -- -- ---- */
/*********************************************************************** /***********************************************************************
* CreatePen (GDI.61) * CreatePen16 (GDI.61)
*/ */
HPEN16 CreatePen( INT style, INT width, COLORREF color ) HPEN16 CreatePen16( INT16 style, INT16 width, COLORREF color )
{ {
LOGPEN16 logpen = { style, { width, 0 }, color }; LOGPEN32 logpen = { style, { width, 0 }, color };
dprintf_gdi(stddeb, "CreatePen: %d %d %06lx\n", style, width, color ); dprintf_gdi(stddeb, "CreatePen16: %d %d %06lx\n", style, width, color );
return CreatePenIndirect( &logpen ); return CreatePenIndirect32( &logpen );
} }
/*********************************************************************** /***********************************************************************
* CreatePenIndirect (GDI.62) * CreatePen32 (GDI32.55)
*/ */
HPEN16 CreatePenIndirect( const LOGPEN16 * pen ) HPEN32 CreatePen32( INT32 style, INT32 width, COLORREF color )
{
LOGPEN32 logpen = { style, { width, 0 }, color };
dprintf_gdi(stddeb, "CreatePen32: %d %d %06lx\n", style, width, color );
return CreatePenIndirect32( &logpen );
}
/***********************************************************************
* CreatePenIndirect16 (GDI.62)
*/
HPEN16 CreatePenIndirect16( const LOGPEN16 * pen )
{ {
PENOBJ * penPtr; PENOBJ * penPtr;
HPEN16 hpen; HPEN16 hpen;
@ -32,16 +50,52 @@ HPEN16 CreatePenIndirect( const LOGPEN16 * pen )
if (pen->lopnStyle > PS_INSIDEFRAME) return 0; if (pen->lopnStyle > PS_INSIDEFRAME) return 0;
hpen = GDI_AllocObject( sizeof(PENOBJ), PEN_MAGIC ); hpen = GDI_AllocObject( sizeof(PENOBJ), PEN_MAGIC );
if (!hpen) return 0; if (!hpen) return 0;
penPtr = (PENOBJ *) GDI_HEAP_LIN_ADDR( hpen ); penPtr = (PENOBJ *)GDI_HEAP_LIN_ADDR( hpen );
memcpy( &penPtr->logpen, pen, sizeof(*pen) ); penPtr->logpen.lopnStyle = pen->lopnStyle;
penPtr->logpen.lopnColor = pen->lopnColor;
CONV_POINT16TO32( &pen->lopnWidth, &penPtr->logpen.lopnWidth );
return hpen; return hpen;
} }
/*********************************************************************** /***********************************************************************
* PEN_GetObject * CreatePenIndirect32 (GDI32.56)
*/ */
int PEN_GetObject( PENOBJ * pen, int count, LPSTR buffer ) HPEN32 CreatePenIndirect32( const LOGPEN32 * pen )
{
PENOBJ * penPtr;
HPEN32 hpen;
if (pen->lopnStyle > PS_INSIDEFRAME) return 0;
hpen = GDI_AllocObject( sizeof(PENOBJ), PEN_MAGIC );
if (!hpen) return 0;
penPtr = (PENOBJ *)GDI_HEAP_LIN_ADDR( hpen );
penPtr->logpen.lopnStyle = pen->lopnStyle;
penPtr->logpen.lopnWidth = pen->lopnWidth;
penPtr->logpen.lopnColor = pen->lopnColor;
return hpen;
}
/***********************************************************************
* PEN_GetObject16
*/
INT16 PEN_GetObject16( PENOBJ * pen, INT16 count, LPSTR buffer )
{
LOGPEN16 logpen;
logpen.lopnStyle = pen->logpen.lopnStyle;
logpen.lopnColor = pen->logpen.lopnColor;
CONV_POINT32TO16( &pen->logpen.lopnWidth, &logpen.lopnWidth );
if (count > sizeof(logpen)) count = sizeof(logpen);
memcpy( buffer, &logpen, count );
return count;
}
/***********************************************************************
* PEN_GetObject32
*/
INT32 PEN_GetObject32( PENOBJ * pen, INT32 count, LPSTR buffer )
{ {
if (count > sizeof(pen->logpen)) count = sizeof(pen->logpen); if (count > sizeof(pen->logpen)) count = sizeof(pen->logpen);
memcpy( buffer, &pen->logpen, count ); memcpy( buffer, &pen->logpen, count );
@ -52,19 +106,19 @@ int PEN_GetObject( PENOBJ * pen, int count, LPSTR buffer )
/*********************************************************************** /***********************************************************************
* PEN_SelectObject * PEN_SelectObject
*/ */
HPEN16 PEN_SelectObject( DC * dc, HPEN16 hpen, PENOBJ * pen ) HPEN32 PEN_SelectObject( DC * dc, HPEN32 hpen, PENOBJ * pen )
{ {
static char dash_dash[] = { 5, 3 }; /* ----- ----- ----- */ HPEN32 prevHandle = dc->w.hPen;
static char dash_dot[] = { 2, 2 }; /* -- -- -- -- -- -- */
static char dash_dashdot[] = { 4,3,2,3 }; /* ---- -- ---- -- */
static char dash_dashdotdot[] = { 4,2,2,2,2,2 }; /* ---- -- -- ---- */
HPEN16 prevHandle = dc->w.hPen;
if (dc->header.wMagic == METAFILE_DC_MAGIC) if (dc->header.wMagic == METAFILE_DC_MAGIC)
if (MF_CreatePenIndirect(dc, hpen, &(pen->logpen))) {
return prevHandle; LOGPEN16 logpen = { pen->logpen.lopnStyle,
else { pen->logpen.lopnWidth.x,
return 0; pen->logpen.lopnWidth.y },
pen->logpen.lopnColor };
if (MF_CreatePenIndirect( dc, hpen, &logpen )) return prevHandle;
else return 0;
}
dc->w.hPen = hpen; dc->w.hPen = hpen;
@ -77,19 +131,19 @@ HPEN16 PEN_SelectObject( DC * dc, HPEN16 hpen, PENOBJ * pen )
switch(pen->logpen.lopnStyle) switch(pen->logpen.lopnStyle)
{ {
case PS_DASH: case PS_DASH:
dc->u.x.pen.dashes = dash_dash; dc->u.x.pen.dashes = (char *)PEN_dash;
dc->u.x.pen.dash_len = 2; dc->u.x.pen.dash_len = 2;
break; break;
case PS_DOT: case PS_DOT:
dc->u.x.pen.dashes = dash_dot; dc->u.x.pen.dashes = (char *)PEN_dot;
dc->u.x.pen.dash_len = 2; dc->u.x.pen.dash_len = 2;
break; break;
case PS_DASHDOT: case PS_DASHDOT:
dc->u.x.pen.dashes = dash_dashdot; dc->u.x.pen.dashes = (char *)PEN_dashdot;
dc->u.x.pen.dash_len = 4; dc->u.x.pen.dash_len = 4;
break; break;
case PS_DASHDOTDOT: case PS_DASHDOTDOT:
dc->u.x.pen.dashes = dash_dashdotdot; dc->u.x.pen.dashes = (char *)PEN_dashdotdot;
dc->u.x.pen.dash_len = 6; dc->u.x.pen.dash_len = 6;
break; break;
} }

View File

@ -15,7 +15,7 @@
/*********************************************************************** /***********************************************************************
* REGION_DeleteObject * REGION_DeleteObject
*/ */
BOOL16 REGION_DeleteObject( HRGN32 hrgn, RGNOBJ * obj ) BOOL32 REGION_DeleteObject( HRGN32 hrgn, RGNOBJ * obj )
{ {
dprintf_region(stddeb, "DeleteRegion: %04x\n", hrgn ); dprintf_region(stddeb, "DeleteRegion: %04x\n", hrgn );
if (obj->xrgn) XDestroyRegion( obj->xrgn ); if (obj->xrgn) XDestroyRegion( obj->xrgn );
@ -24,9 +24,18 @@ BOOL16 REGION_DeleteObject( HRGN32 hrgn, RGNOBJ * obj )
/*********************************************************************** /***********************************************************************
* OffsetRgn (GDI.101) (GDI32.256) * OffsetRgn16 (GDI.101)
*/ */
INT16 OffsetRgn( HRGN32 hrgn, INT32 x, INT32 y ) INT16 OffsetRgn16( HRGN16 hrgn, INT16 x, INT16 y )
{
return OffsetRgn32( hrgn, x, y );
}
/***********************************************************************
* OffsetRgn32 (GDI32.256)
*/
INT32 OffsetRgn32( HRGN32 hrgn, INT32 x, INT32 y )
{ {
RGNOBJ * obj = (RGNOBJ *) GDI_GetObjPtr( hrgn, REGION_MAGIC ); RGNOBJ * obj = (RGNOBJ *) GDI_GetObjPtr( hrgn, REGION_MAGIC );
if (!obj) return ERROR; if (!obj) return ERROR;
@ -74,11 +83,20 @@ INT32 GetRgnBox32( HRGN32 hrgn, LPRECT32 rect )
/*********************************************************************** /***********************************************************************
* CreateRectRgn (GDI.64) (GDI32.59) * CreateRectRgn16 (GDI.64)
*/ */
HRGN16 CreateRectRgn( INT32 left, INT32 top, INT32 right, INT32 bottom ) HRGN16 CreateRectRgn16( INT16 left, INT16 top, INT16 right, INT16 bottom )
{ {
HRGN16 hrgn; return (HRGN16)CreateRectRgn32( left, top, right, bottom );
}
/***********************************************************************
* CreateRectRgn32 (GDI32.59)
*/
HRGN32 CreateRectRgn32( INT32 left, INT32 top, INT32 right, INT32 bottom )
{
HRGN32 hrgn;
RGNOBJ *obj; RGNOBJ *obj;
if (!(hrgn = GDI_AllocObject( sizeof(RGNOBJ), REGION_MAGIC ))) return 0; if (!(hrgn = GDI_AllocObject( sizeof(RGNOBJ), REGION_MAGIC ))) return 0;
@ -105,7 +123,7 @@ HRGN16 CreateRectRgn( INT32 left, INT32 top, INT32 right, INT32 bottom )
*/ */
HRGN16 CreateRectRgnIndirect16( const RECT16* rect ) HRGN16 CreateRectRgnIndirect16( const RECT16* rect )
{ {
return CreateRectRgn( rect->left, rect->top, rect->right, rect->bottom ); return CreateRectRgn32( rect->left, rect->top, rect->right, rect->bottom );
} }
@ -114,7 +132,7 @@ HRGN16 CreateRectRgnIndirect16( const RECT16* rect )
*/ */
HRGN32 CreateRectRgnIndirect32( const RECT32* rect ) HRGN32 CreateRectRgnIndirect32( const RECT32* rect )
{ {
return CreateRectRgn( rect->left, rect->top, rect->right, rect->bottom ); return CreateRectRgn32( rect->left, rect->top, rect->right, rect->bottom );
} }
@ -141,13 +159,24 @@ VOID SetRectRgn( HRGN32 hrgn, INT32 left, INT32 top, INT32 right, INT32 bottom)
/*********************************************************************** /***********************************************************************
* CreateRoundRectRgn (GDI.444) (GDI32.61) * CreateRoundRectRgn16 (GDI.444)
*/ */
HRGN16 CreateRoundRectRgn( INT32 left, INT32 top, INT32 right, INT32 bottom, HRGN16 CreateRoundRectRgn16( INT16 left, INT16 top, INT16 right, INT16 bottom,
INT32 ellipse_width, INT32 ellipse_height ) INT16 ellipse_width, INT16 ellipse_height )
{
return (HRGN16)CreateRoundRectRgn32( left, top, right, bottom,
ellipse_width, ellipse_height );
}
/***********************************************************************
* CreateRoundRectRgn32 (GDI32.61)
*/
HRGN32 CreateRoundRectRgn32( INT32 left, INT32 top, INT32 right, INT32 bottom,
INT32 ellipse_width, INT32 ellipse_height )
{ {
RGNOBJ * obj; RGNOBJ * obj;
HRGN16 hrgn; HRGN32 hrgn;
XRectangle rect; XRectangle rect;
int asq, bsq, d, xd, yd; int asq, bsq, d, xd, yd;
@ -155,7 +184,7 @@ HRGN16 CreateRoundRectRgn( INT32 left, INT32 top, INT32 right, INT32 bottom,
if ((right <= left) || (bottom <= top) || if ((right <= left) || (bottom <= top) ||
(ellipse_width <= 0) || (ellipse_height <= 0)) (ellipse_width <= 0) || (ellipse_height <= 0))
return CreateRectRgn( left, top, right, bottom ); return CreateRectRgn32( left, top, right, bottom );
/* Create region */ /* Create region */
@ -237,12 +266,22 @@ HRGN16 CreateRoundRectRgn( INT32 left, INT32 top, INT32 right, INT32 bottom,
/*********************************************************************** /***********************************************************************
* CreateEllipticRgn (GDI.54) (GDI32.39) * CreateEllipticRgn16 (GDI.54)
*/ */
HRGN16 CreateEllipticRgn( INT32 left, INT32 top, INT32 right, INT32 bottom ) HRGN16 CreateEllipticRgn16( INT16 left, INT16 top, INT16 right, INT16 bottom )
{ {
return CreateRoundRectRgn( left, top, right, bottom, return (HRGN16)CreateRoundRectRgn32( left, top, right, bottom,
right-left, bottom-top ); right-left, bottom-top );
}
/***********************************************************************
* CreateEllipticRgn32 (GDI32.39)
*/
HRGN32 CreateEllipticRgn32( INT32 left, INT32 top, INT32 right, INT32 bottom )
{
return CreateRoundRectRgn32( left, top, right, bottom,
right-left, bottom-top );
} }
@ -251,8 +290,9 @@ HRGN16 CreateEllipticRgn( INT32 left, INT32 top, INT32 right, INT32 bottom )
*/ */
HRGN16 CreateEllipticRgnIndirect16( const RECT16 *rect ) HRGN16 CreateEllipticRgnIndirect16( const RECT16 *rect )
{ {
return CreateRoundRectRgn(rect->left, rect->top, rect->right, rect->bottom, return CreateRoundRectRgn32( rect->left, rect->top, rect->right,
rect->right-rect->left, rect->bottom-rect->top ); rect->bottom, rect->right - rect->left,
rect->bottom - rect->top );
} }
@ -261,8 +301,9 @@ HRGN16 CreateEllipticRgnIndirect16( const RECT16 *rect )
*/ */
HRGN32 CreateEllipticRgnIndirect32( const RECT32 *rect ) HRGN32 CreateEllipticRgnIndirect32( const RECT32 *rect )
{ {
return CreateRoundRectRgn(rect->left, rect->top, rect->right, rect->bottom, return CreateRoundRectRgn32( rect->left, rect->top, rect->right,
rect->right-rect->left, rect->bottom-rect->top ); rect->bottom, rect->right - rect->left,
rect->bottom - rect->top );
} }
@ -343,9 +384,18 @@ HRGN16 CreatePolyPolygonRgn16( const POINT16 * points, const INT16 * count,
/*********************************************************************** /***********************************************************************
* PtInRegion (GDI.161) (GDI32.278) * PtInRegion16 (GDI.161)
*/ */
BOOL16 PtInRegion( HRGN32 hrgn, INT32 x, INT32 y ) BOOL16 PtInRegion16( HRGN16 hrgn, INT16 x, INT16 y )
{
return PtInRegion32( hrgn, x, y );
}
/***********************************************************************
* PtInRegion32 (GDI32.278)
*/
BOOL32 PtInRegion32( HRGN32 hrgn, INT32 x, INT32 y )
{ {
RGNOBJ * obj; RGNOBJ * obj;
@ -386,9 +436,18 @@ BOOL32 RectInRegion32( HRGN32 hrgn, const RECT32 *rect )
/*********************************************************************** /***********************************************************************
* EqualRgn (GDI.72) (GDI32.90) * EqualRgn16 (GDI.72)
*/ */
BOOL16 EqualRgn( HRGN32 rgn1, HRGN32 rgn2 ) BOOL16 EqualRgn16( HRGN16 rgn1, HRGN16 rgn2 )
{
return EqualRgn32( rgn1, rgn2 );
}
/***********************************************************************
* EqualRgn32 (GDI32.90)
*/
BOOL32 EqualRgn32( HRGN32 rgn1, HRGN32 rgn2 )
{ {
RGNOBJ *obj1, *obj2; RGNOBJ *obj1, *obj2;
if (!(obj1 = (RGNOBJ *) GDI_GetObjPtr( rgn1, REGION_MAGIC ))) return FALSE; if (!(obj1 = (RGNOBJ *) GDI_GetObjPtr( rgn1, REGION_MAGIC ))) return FALSE;
@ -403,7 +462,7 @@ BOOL16 EqualRgn( HRGN32 rgn1, HRGN32 rgn2 )
* *
* Copy region src into dest. * Copy region src into dest.
*/ */
static int REGION_CopyRegion( RGNOBJ *src, RGNOBJ *dest ) static INT32 REGION_CopyRegion( RGNOBJ *src, RGNOBJ *dest )
{ {
Region tmprgn; Region tmprgn;
if (src->xrgn) if (src->xrgn)
@ -428,11 +487,11 @@ static int REGION_CopyRegion( RGNOBJ *src, RGNOBJ *dest )
* *
* Add rectangle to region * Add rectangle to region
*/ */
BOOL16 REGION_UnionRectWithRgn( HRGN32 hRgn, LPRECT16 rc ) BOOL32 REGION_UnionRectWithRgn( HRGN32 hRgn, LPRECT16 rc )
{ {
RGNOBJ *rgnObj = (RGNOBJ*) GDI_GetObjPtr( hRgn, REGION_MAGIC ); RGNOBJ *rgnObj = (RGNOBJ*) GDI_GetObjPtr( hRgn, REGION_MAGIC );
XRectangle rect = { rc->left, rc->top, rc->right - rc->left, rc->bottom - rc->top }; XRectangle rect = { rc->left, rc->top, rc->right - rc->left, rc->bottom - rc->top };
BOOL16 ret = 0; BOOL32 ret = FALSE;
if( rgnObj ) if( rgnObj )
{ {
@ -452,34 +511,45 @@ BOOL16 REGION_UnionRectWithRgn( HRGN32 hRgn, LPRECT16 rc )
return ret; return ret;
} }
/*********************************************************************** /***********************************************************************
* REGION_CreateFrameRgn * REGION_CreateFrameRgn
* *
* Create a region that is a frame around another region * Create a region that is a frame around another region
*/ */
BOOL16 REGION_FrameRgn( HRGN32 hDest, HRGN32 hSrc, INT32 x, INT32 y ) BOOL32 REGION_FrameRgn( HRGN32 hDest, HRGN32 hSrc, INT32 x, INT32 y )
{ {
RGNOBJ *destObj,*srcObj; RGNOBJ *destObj,*srcObj;
Region result; Region result;
destObj = (RGNOBJ*) GDI_GetObjPtr( hDest, REGION_MAGIC ); destObj = (RGNOBJ*) GDI_GetObjPtr( hDest, REGION_MAGIC );
srcObj = (RGNOBJ*) GDI_GetObjPtr( hSrc, REGION_MAGIC ); srcObj = (RGNOBJ*) GDI_GetObjPtr( hSrc, REGION_MAGIC );
if (!srcObj->xrgn) return 0; if (!srcObj->xrgn) return FALSE;
REGION_CopyRegion( srcObj, destObj ); REGION_CopyRegion( srcObj, destObj );
XShrinkRegion( destObj->xrgn, -x, -y ); XShrinkRegion( destObj->xrgn, -x, -y );
result = XCreateRegion(); result = XCreateRegion();
XSubtractRegion( destObj->xrgn, srcObj->xrgn, result ); XSubtractRegion( destObj->xrgn, srcObj->xrgn, result );
XDestroyRegion( destObj->xrgn ); XDestroyRegion( destObj->xrgn );
destObj->xrgn = result; destObj->xrgn = result;
return 1; return TRUE;
} }
/*********************************************************************** /***********************************************************************
* CombineRgn (GDI.451) (GDI32.19) * CombineRgn16 (GDI.451)
*
* The behavior is correct even if src and dest regions are the same.
*/ */
INT16 CombineRgn( HRGN32 hDest, HRGN32 hSrc1, HRGN32 hSrc2, INT32 mode ) INT16 CombineRgn16( HRGN16 hDest, HRGN16 hSrc1, HRGN16 hSrc2, INT16 mode )
{
return (INT16)CombineRgn32( hDest, hSrc1, hSrc2, mode );
}
/***********************************************************************
* CombineRgn32 (GDI32.19)
*
* Note: The behavior is correct even if src and dest regions are the same.
*/
INT32 CombineRgn32( HRGN32 hDest, HRGN32 hSrc1, HRGN32 hSrc2, INT32 mode )
{ {
RGNOBJ *destObj, *src1Obj, *src2Obj; RGNOBJ *destObj, *src1Obj, *src2Obj;
Region destrgn; Region destrgn;

View File

@ -256,12 +256,12 @@ INT16 DrawText16( HDC16 hdc, LPCSTR str, INT16 i_count,
rect, line, len, NULL )) return 0; rect, line, len, NULL )) return 0;
if (prefix_offset != -1) if (prefix_offset != -1)
{ {
HPEN16 hpen = CreatePen( PS_SOLID, 1, GetTextColor(hdc) ); HPEN32 hpen = CreatePen32( PS_SOLID, 1, GetTextColor(hdc) );
HPEN16 oldPen = SelectObject( hdc, hpen ); HPEN32 oldPen = SelectObject32( hdc, hpen );
MoveTo(hdc, x + prefix_x, y + tm.tmAscent + 1 ); MoveTo(hdc, x + prefix_x, y + tm.tmAscent + 1 );
LineTo(hdc, x + prefix_end, y + tm.tmAscent + 1 ); LineTo32(hdc, x + prefix_end, y + tm.tmAscent + 1 );
SelectObject( hdc, oldPen ); SelectObject32( hdc, oldPen );
DeleteObject( hpen ); DeleteObject32( hpen );
} }
} }
else if (size.cx > max_width) else if (size.cx > max_width)
@ -567,8 +567,7 @@ BOOL16 ExtTextOut16( HDC16 hdc, INT16 x, INT16 y, UINT16 flags,
if (flags & ETO_CLIPPED) if (flags & ETO_CLIPPED)
{ {
if( dc->w.flags & DC_MEMORY ) if (dc->w.flags & DC_MEMORY) SelectClipRgn16( hdc, hRgnClip );
SelectClipRgn( hdc, hRgnClip );
else RestoreVisRgn( hdc ); else RestoreVisRgn( hdc );
} }
return TRUE; return TRUE;

View File

@ -1,9 +1,9 @@
%{ /* -*-C-*-
/*
* *
* Copyright Martin von Loewis, 1994 * Copyright Martin von Loewis, 1994
* *
*/ */
%{
#include <string.h> #include <string.h>
#include <stdio.h> #include <stdio.h>
@ -11,6 +11,8 @@
#include "parser.h" #include "parser.h"
#include "y.tab.h" #include "y.tab.h"
#define YY_NO_UNPUT
int line_number=1; int line_number=1;
%} %}
%% %%

View File

@ -8,6 +8,10 @@
#include <stdlib.h> #include <stdlib.h>
#include "parser.h" #include "parser.h"
#include "windows.h" #include "windows.h"
int yylex(void);
int yyerror(const char *s);
%} %}
%union{ %union{
gen_res *res; gen_res *res;
@ -214,7 +218,7 @@ style_elm: NUMBER {$$=new_style();$$->or=$1;}
extern int line_number; extern int line_number;
extern char* yytext; extern char* yytext;
int yyerror(char *s) int yyerror( const char *s )
{ {
fprintf(stderr,"stdin:%d: %s before '%s'\n",line_number,s,yytext); fprintf(stderr,"stdin:%d: %s before '%s'\n",line_number,s,yytext);
return 0; return 0;

View File

@ -14,7 +14,6 @@
#include <string.h> #include <string.h>
#include "windows.h" #include "windows.h"
#include "parser.h" #include "parser.h"
#include "y.tab.h"
char usage[]="winerc -bdvc -p prefix -o outfile < infile \n" char usage[]="winerc -bdvc -p prefix -o outfile < infile \n"
" -b Create a C array from a binary .res file\n" " -b Create a C array from a binary .res file\n"

View File

@ -229,6 +229,7 @@ static void parse_file( INCL_FILE *pFile, int src )
*p = 0; *p = 0;
add_include( pFile, include ); add_include( pFile, include );
} }
fclose(file);
} }
@ -293,6 +294,7 @@ static void output_dependencies(void)
pFile, &column ); pFile, &column );
fprintf( file, "\n" ); fprintf( file, "\n" );
} }
fclose(file);
} }

View File

@ -372,8 +372,8 @@ static HGLOBAL32 CURSORICON32_LoadHandler( HANDLE32 handle,
if (!(hRes = GlobalAlloc16( GMEM_MOVEABLE, if (!(hRes = GlobalAlloc16( GMEM_MOVEABLE,
sizeof(CURSORICONINFO) + sizeXor + sizeAnd))) sizeof(CURSORICONINFO) + sizeXor + sizeAnd)))
{ {
DeleteObject( hXorBits ); DeleteObject32( hXorBits );
DeleteObject( hAndBits ); DeleteObject32( hAndBits );
return 0; return 0;
} }
@ -393,8 +393,8 @@ static HGLOBAL32 CURSORICON32_LoadHandler( HANDLE32 handle,
GetBitmapBits( hAndBits, sizeAnd, (char *)(info + 1) ); GetBitmapBits( hAndBits, sizeAnd, (char *)(info + 1) );
GetBitmapBits( hXorBits, sizeXor, (char *)(info + 1) + sizeAnd ); GetBitmapBits( hXorBits, sizeXor, (char *)(info + 1) + sizeAnd );
DeleteObject( hXorBits ); DeleteObject32( hXorBits );
DeleteObject( hAndBits ); DeleteObject32( hAndBits );
GlobalUnlock16( hRes ); GlobalUnlock16( hRes );
return hRes; return hRes;
} }

View File

@ -59,9 +59,9 @@ static void CARET_DisplayCaret( DISPLAY_CARET status )
Caret.on = !Caret.on; Caret.on = !Caret.on;
if (!(hdc = GetDCEx32( Caret.hwnd, 0, DCX_USESTYLE | DCX_CACHE ))) return; if (!(hdc = GetDCEx32( Caret.hwnd, 0, DCX_USESTYLE | DCX_CACHE ))) return;
hPrevBrush = SelectObject( hdc, Caret.hBrush ); hPrevBrush = SelectObject32( hdc, Caret.hBrush );
PatBlt( hdc, Caret.x, Caret.y, Caret.width, Caret.height, PATINVERT ); PatBlt( hdc, Caret.x, Caret.y, Caret.width, Caret.height, PATINVERT );
SelectObject( hdc, hPrevBrush ); SelectObject32( hdc, hPrevBrush );
ReleaseDC32( Caret.hwnd, hdc ); ReleaseDC32( Caret.hwnd, hdc );
} }
@ -134,14 +134,14 @@ BOOL16 CreateCaret( HWND32 hwnd, HBITMAP32 bitmap, INT32 width, INT32 height )
Caret.width = bmp.bmWidth; Caret.width = bmp.bmWidth;
Caret.height = bmp.bmHeight; Caret.height = bmp.bmHeight;
/* FIXME: we should make a copy of the bitmap instead of a brush */ /* FIXME: we should make a copy of the bitmap instead of a brush */
Caret.hBrush = CreatePatternBrush( bitmap ); Caret.hBrush = CreatePatternBrush32( bitmap );
} }
else else
{ {
Caret.width = width ? width : GetSystemMetrics(SM_CXBORDER); Caret.width = width ? width : GetSystemMetrics(SM_CXBORDER);
Caret.height = height ? height : GetSystemMetrics(SM_CYBORDER); Caret.height = height ? height : GetSystemMetrics(SM_CYBORDER);
Caret.hBrush = CreateSolidBrush( bitmap ? GetSysColor(COLOR_GRAYTEXT) : Caret.hBrush = CreateSolidBrush32(bitmap ? GetSysColor(COLOR_GRAYTEXT):
GetSysColor(COLOR_WINDOW) ); GetSysColor(COLOR_WINDOW) );
} }
Caret.hwnd = hwnd; Caret.hwnd = hwnd;
@ -165,7 +165,7 @@ BOOL16 DestroyCaret(void)
dprintf_caret(stddeb,"DestroyCaret: hwnd=%04x, timerid=%d\n", dprintf_caret(stddeb,"DestroyCaret: hwnd=%04x, timerid=%d\n",
Caret.hwnd, Caret.timerid); Caret.hwnd, Caret.timerid);
DeleteObject( Caret.hBrush ); DeleteObject32( Caret.hBrush );
CARET_KillTimer(); CARET_KillTimer();
CARET_DisplayCaret(CARET_OFF); CARET_DisplayCaret(CARET_OFF);
Caret.hwnd = 0; Caret.hwnd = 0;

View File

@ -182,7 +182,7 @@ static BOOL CLASS_FreeClass( CLASS *classPtr )
/* Delete the class */ /* Delete the class */
if (classPtr->dce) DCE_FreeDCE( classPtr->dce ); if (classPtr->dce) DCE_FreeDCE( classPtr->dce );
if (classPtr->hbrBackground) DeleteObject( classPtr->hbrBackground ); if (classPtr->hbrBackground) DeleteObject32( classPtr->hbrBackground );
GlobalDeleteAtom( classPtr->atomName ); GlobalDeleteAtom( classPtr->atomName );
CLASS_SetMenuNameA( classPtr, NULL ); CLASS_SetMenuNameA( classPtr, NULL );
WINPROC_FreeProc( classPtr->winproc ); WINPROC_FreeProc( classPtr->winproc );

View File

@ -87,7 +87,7 @@ void DCE_FreeDCE( DCE *dce )
DeleteDC( dce->hDC ); DeleteDC( dce->hDC );
if( dce->hClipRgn && !(dce->DCXflags & DCX_KEEPCLIPRGN) ) if( dce->hClipRgn && !(dce->DCXflags & DCX_KEEPCLIPRGN) )
DeleteObject(dce->hClipRgn); DeleteObject32(dce->hClipRgn);
HeapFree( SystemHeap, 0, dce ); HeapFree( SystemHeap, 0, dce );
} }
@ -242,9 +242,9 @@ static HRGN32 DCE_ClipWindows( WND *pWndStart, WND *pWndEnd,
HRGN32 hrgnNew; HRGN32 hrgnNew;
if (!pWndStart) return hrgn; if (!pWndStart) return hrgn;
if (!(hrgnNew = CreateRectRgn( 0, 0, 0, 0 ))) if (!(hrgnNew = CreateRectRgn32( 0, 0, 0, 0 )))
{ {
DeleteObject( hrgn ); DeleteObject32( hrgn );
return 0; return 0;
} }
for (; pWndStart != pWndEnd; pWndStart = pWndStart->next) for (; pWndStart != pWndEnd; pWndStart = pWndStart->next)
@ -254,12 +254,12 @@ static HRGN32 DCE_ClipWindows( WND *pWndStart, WND *pWndEnd,
pWndStart->rectWindow.top + yoffset, pWndStart->rectWindow.top + yoffset,
pWndStart->rectWindow.right + xoffset, pWndStart->rectWindow.right + xoffset,
pWndStart->rectWindow.bottom + yoffset ); pWndStart->rectWindow.bottom + yoffset );
if (!CombineRgn( hrgn, hrgn, hrgnNew, RGN_DIFF )) break; if (!CombineRgn32( hrgn, hrgn, hrgnNew, RGN_DIFF )) break;
} }
DeleteObject( hrgnNew ); DeleteObject32( hrgnNew );
if (pWndStart != pWndEnd) /* something went wrong */ if (pWndStart != pWndEnd) /* something went wrong */
{ {
DeleteObject( hrgn ); DeleteObject32( hrgn );
return 0; return 0;
} }
return hrgn; return hrgn;
@ -287,7 +287,7 @@ HRGN32 DCE_GetVisRgn( HWND hwnd, WORD flags )
if (!wndPtr || !DCE_GetVisRect( wndPtr, !(flags & DCX_WINDOW), &rect )) if (!wndPtr || !DCE_GetVisRect( wndPtr, !(flags & DCX_WINDOW), &rect ))
{ {
return CreateRectRgn( 0, 0, 0, 0 ); /* Visible region is empty */ return CreateRectRgn32( 0, 0, 0, 0 ); /* Visible region is empty */
} }
if (!(hrgn = CreateRectRgnIndirect16( &rect ))) return 0; if (!(hrgn = CreateRectRgnIndirect16( &rect ))) return 0;
@ -407,6 +407,8 @@ HDC32 GetDCEx32( HWND32 hwnd, HRGN32 hrgnClip, DWORD flags )
if (!(wndPtr = WIN_FindWndPtr( hwnd ))) return 0; if (!(wndPtr = WIN_FindWndPtr( hwnd ))) return 0;
if (!(wndPtr->class->style & (CS_OWNDC | CS_CLASSDC))) flags |= DCX_CACHE;
if (flags & DCX_USESTYLE) if (flags & DCX_USESTYLE)
{ {
flags &= ~( DCX_CLIPCHILDREN | DCX_CLIPSIBLINGS | DCX_PARENTCLIP); flags &= ~( DCX_CLIPCHILDREN | DCX_CLIPSIBLINGS | DCX_PARENTCLIP);
@ -416,9 +418,6 @@ HDC32 GetDCEx32( HWND32 hwnd, HRGN32 hrgnClip, DWORD flags )
if ( !(flags & DCX_WINDOW) ) if ( !(flags & DCX_WINDOW) )
{ {
if (!(wndPtr->class->style & (CS_OWNDC | CS_CLASSDC)))
flags |= DCX_CACHE;
if (wndPtr->class->style & CS_PARENTDC) flags |= DCX_PARENTCLIP; if (wndPtr->class->style & CS_PARENTDC) flags |= DCX_PARENTCLIP;
if (wndPtr->dwStyle & WS_CLIPCHILDREN && if (wndPtr->dwStyle & WS_CLIPCHILDREN &&
@ -469,7 +468,7 @@ HDC32 GetDCEx32( HWND32 hwnd, HRGN32 hrgnClip, DWORD flags )
if( hrgnClip && dce->hClipRgn && !(dce->DCXflags & DCX_KEEPCLIPRGN)) if( hrgnClip && dce->hClipRgn && !(dce->DCXflags & DCX_KEEPCLIPRGN))
{ {
fprintf(stdnimp,"GetDCEx: hClipRgn collision!\n"); fprintf(stdnimp,"GetDCEx: hClipRgn collision!\n");
DeleteObject(dce->hClipRgn); DeleteObject32( dce->hClipRgn );
need_update = TRUE; need_update = TRUE;
} }
} }
@ -498,17 +497,17 @@ HDC32 GetDCEx32( HWND32 hwnd, HRGN32 hrgnClip, DWORD flags )
dcx_flags |= DCX_CLIPSIBLINGS; dcx_flags |= DCX_CLIPSIBLINGS;
hrgnVisible = DCE_GetVisRgn( parentPtr->hwndSelf, dcx_flags ); hrgnVisible = DCE_GetVisRgn( parentPtr->hwndSelf, dcx_flags );
if (flags & DCX_WINDOW) if (flags & DCX_WINDOW)
OffsetRgn( hrgnVisible, -wndPtr->rectWindow.left, OffsetRgn32( hrgnVisible, -wndPtr->rectWindow.left,
-wndPtr->rectWindow.top ); -wndPtr->rectWindow.top );
else OffsetRgn( hrgnVisible, -wndPtr->rectClient.left, else OffsetRgn32( hrgnVisible, -wndPtr->rectClient.left,
-wndPtr->rectClient.top ); -wndPtr->rectClient.top );
} }
/* optimize away GetVisRgn for desktop if it isn't there */ /* optimize away GetVisRgn for desktop if it isn't there */
else if ((hwnd == GetDesktopWindow32()) && else if ((hwnd == GetDesktopWindow32()) &&
(rootWindow == DefaultRootWindow(display))) (rootWindow == DefaultRootWindow(display)))
hrgnVisible = CreateRectRgn( 0, 0, SYSMETRICS_CXSCREEN, hrgnVisible = CreateRectRgn32( 0, 0, SYSMETRICS_CXSCREEN,
SYSMETRICS_CYSCREEN); SYSMETRICS_CYSCREEN );
else hrgnVisible = DCE_GetVisRgn( hwnd, flags ); else hrgnVisible = DCE_GetVisRgn( hwnd, flags );
if( wndPtr->parent && wndPtr->window ) if( wndPtr->parent && wndPtr->window )
@ -526,7 +525,7 @@ HDC32 GetDCEx32( HWND32 hwnd, HRGN32 hrgnClip, DWORD flags )
dc->w.flags &= ~DC_DIRTY; dc->w.flags &= ~DC_DIRTY;
SelectVisRgn( hdc, hrgnVisible ); SelectVisRgn( hdc, hrgnVisible );
} }
else hrgnVisible = CreateRectRgn(0,0,0,0); else hrgnVisible = CreateRectRgn32( 0, 0, 0, 0 );
if ((flags & DCX_INTERSECTRGN) || (flags & DCX_EXCLUDERGN)) if ((flags & DCX_INTERSECTRGN) || (flags & DCX_EXCLUDERGN))
{ {
@ -536,11 +535,11 @@ HDC32 GetDCEx32( HWND32 hwnd, HRGN32 hrgnClip, DWORD flags )
dprintf_dc(stddeb, "\tsaved VisRgn, clipRgn = %04x\n", hrgnClip); dprintf_dc(stddeb, "\tsaved VisRgn, clipRgn = %04x\n", hrgnClip);
SaveVisRgn( hdc ); SaveVisRgn( hdc );
CombineRgn( hrgnVisible, InquireVisRgn( hdc ), hrgnClip, CombineRgn32( hrgnVisible, InquireVisRgn( hdc ), hrgnClip,
(flags & DCX_INTERSECTRGN) ? RGN_AND : RGN_DIFF ); (flags & DCX_INTERSECTRGN) ? RGN_AND : RGN_DIFF );
SelectVisRgn( hdc, hrgnVisible ); SelectVisRgn( hdc, hrgnVisible );
} }
DeleteObject( hrgnVisible ); DeleteObject32( hrgnVisible );
dprintf_dc(stddeb, "GetDCEx(%04x,%04x,0x%lx): returning %04x\n", dprintf_dc(stddeb, "GetDCEx(%04x,%04x,0x%lx): returning %04x\n",
hwnd, hrgnClip, flags, hdc); hwnd, hrgnClip, flags, hdc);
@ -622,7 +621,7 @@ INT32 ReleaseDC32( HWND32 hwnd, HDC32 hdc )
dce->DCXflags &= ~DCX_KEEPCLIPRGN; dce->DCXflags &= ~DCX_KEEPCLIPRGN;
else else
if( dce->hClipRgn > 1 ) if( dce->hClipRgn > 1 )
DeleteObject( dce->hClipRgn ); DeleteObject32( dce->hClipRgn );
dce->hClipRgn = 0; dce->hClipRgn = 0;
RestoreVisRgn(dce->hDC); RestoreVisRgn(dce->hDC);
@ -673,11 +672,11 @@ BOOL16 DCHook( HDC16 hDC, WORD code, DWORD data, LPARAM lParam )
(dce->hClipRgn == 1 && dce->DCXflags & DCX_EXCLUDERGN) ) (dce->hClipRgn == 1 && dce->DCXflags & DCX_EXCLUDERGN) )
SetRectRgn(hVisRgn,0,0,0,0); SetRectRgn(hVisRgn,0,0,0,0);
else else
CombineRgn(hVisRgn, hVisRgn, dce->hClipRgn, CombineRgn32(hVisRgn, hVisRgn, dce->hClipRgn,
(dce->DCXflags & DCX_EXCLUDERGN)? RGN_DIFF:RGN_AND); (dce->DCXflags & DCX_EXCLUDERGN)? RGN_DIFF:RGN_AND);
} }
SelectVisRgn(hDC, hVisRgn); SelectVisRgn(hDC, hVisRgn);
DeleteObject(hVisRgn); DeleteObject32( hVisRgn );
} }
else else
dprintf_dc(stddeb,"DCHook: DC is not in use!\n"); dprintf_dc(stddeb,"DCHook: DC is not in use!\n");

View File

@ -17,7 +17,7 @@
* Set the focus to a control of the dialog, selecting the text if * Set the focus to a control of the dialog, selecting the text if
* the control is an edit dialog. * the control is an edit dialog.
*/ */
static void DEFDLG_SetFocus( HWND hwndDlg, HWND hwndCtrl ) static void DEFDLG_SetFocus( HWND32 hwndDlg, HWND32 hwndCtrl )
{ {
HWND32 hwndPrev = GetFocus32(); HWND32 hwndPrev = GetFocus32();
@ -35,7 +35,7 @@ static void DEFDLG_SetFocus( HWND hwndDlg, HWND hwndCtrl )
/*********************************************************************** /***********************************************************************
* DEFDLG_SaveFocus * DEFDLG_SaveFocus
*/ */
static BOOL DEFDLG_SaveFocus( HWND hwnd, DIALOGINFO *infoPtr ) static BOOL32 DEFDLG_SaveFocus( HWND32 hwnd, DIALOGINFO *infoPtr )
{ {
HWND32 hwndFocus = GetFocus32(); HWND32 hwndFocus = GetFocus32();
@ -49,7 +49,7 @@ static BOOL DEFDLG_SaveFocus( HWND hwnd, DIALOGINFO *infoPtr )
/*********************************************************************** /***********************************************************************
* DEFDLG_RestoreFocus * DEFDLG_RestoreFocus
*/ */
static BOOL DEFDLG_RestoreFocus( HWND hwnd, DIALOGINFO *infoPtr ) static BOOL32 DEFDLG_RestoreFocus( HWND32 hwnd, DIALOGINFO *infoPtr )
{ {
if (!infoPtr->hwndFocus || IsIconic(hwnd)) return FALSE; if (!infoPtr->hwndFocus || IsIconic(hwnd)) return FALSE;
if (!IsWindow( infoPtr->hwndFocus )) return FALSE; if (!IsWindow( infoPtr->hwndFocus )) return FALSE;
@ -64,9 +64,9 @@ static BOOL DEFDLG_RestoreFocus( HWND hwnd, DIALOGINFO *infoPtr )
* *
* Find the current default push-button. * Find the current default push-button.
*/ */
static HWND DEFDLG_FindDefButton( HWND hwndDlg ) static HWND32 DEFDLG_FindDefButton( HWND32 hwndDlg )
{ {
HWND hwndChild = GetWindow( hwndDlg, GW_CHILD ); HWND32 hwndChild = GetWindow( hwndDlg, GW_CHILD );
while (hwndChild) while (hwndChild)
{ {
if (SendMessage16( hwndChild, WM_GETDLGCODE, 0, 0 ) & DLGC_DEFPUSHBUTTON) if (SendMessage16( hwndChild, WM_GETDLGCODE, 0, 0 ) & DLGC_DEFPUSHBUTTON)
@ -82,8 +82,8 @@ static HWND DEFDLG_FindDefButton( HWND hwndDlg )
* *
* Set the new default button to be hwndNew. * Set the new default button to be hwndNew.
*/ */
static BOOL DEFDLG_SetDefButton( HWND hwndDlg, DIALOGINFO *dlgInfo, static BOOL32 DEFDLG_SetDefButton( HWND32 hwndDlg, DIALOGINFO *dlgInfo,
HWND hwndNew ) HWND32 hwndNew )
{ {
if (hwndNew && if (hwndNew &&
!(SendMessage16(hwndNew, WM_GETDLGCODE, 0, 0 ) & DLGC_UNDEFPUSHBUTTON)) !(SendMessage16(hwndNew, WM_GETDLGCODE, 0, 0 ) & DLGC_UNDEFPUSHBUTTON))
@ -91,7 +91,7 @@ static BOOL DEFDLG_SetDefButton( HWND hwndDlg, DIALOGINFO *dlgInfo,
if (dlgInfo->msgResult) /* There's already a default pushbutton */ if (dlgInfo->msgResult) /* There's already a default pushbutton */
{ {
HWND hwndOld = GetDlgItem( hwndDlg, dlgInfo->msgResult ); HWND32 hwndOld = GetDlgItem( hwndDlg, dlgInfo->msgResult );
if (SendMessage32A( hwndOld, WM_GETDLGCODE, 0, 0) & DLGC_DEFPUSHBUTTON) if (SendMessage32A( hwndOld, WM_GETDLGCODE, 0, 0) & DLGC_DEFPUSHBUTTON)
SendMessage32A( hwndOld, BM_SETSTYLE32, BS_PUSHBUTTON, TRUE ); SendMessage32A( hwndOld, BM_SETSTYLE32, BS_PUSHBUTTON, TRUE );
} }
@ -114,7 +114,7 @@ static BOOL DEFDLG_SetDefButton( HWND hwndDlg, DIALOGINFO *dlgInfo,
static LRESULT DEFDLG_Proc( HWND32 hwnd, UINT32 msg, WPARAM32 wParam, static LRESULT DEFDLG_Proc( HWND32 hwnd, UINT32 msg, WPARAM32 wParam,
LPARAM lParam, DIALOGINFO *dlgInfo ) LPARAM lParam, DIALOGINFO *dlgInfo )
{ {
HWND hwndDefId; HWND32 hwndDefId;
switch(msg) switch(msg)
{ {
@ -138,7 +138,7 @@ static LRESULT DEFDLG_Proc( HWND32 hwnd, UINT32 msg, WPARAM32 wParam,
/* Delete font */ /* Delete font */
if (dlgInfo->hUserFont) if (dlgInfo->hUserFont)
{ {
DeleteObject( dlgInfo->hUserFont ); DeleteObject32( dlgInfo->hUserFont );
dlgInfo->hUserFont = 0; dlgInfo->hUserFont = 0;
} }
@ -186,7 +186,7 @@ static LRESULT DEFDLG_Proc( HWND32 hwnd, UINT32 msg, WPARAM32 wParam,
case WM_NEXTDLGCTL: case WM_NEXTDLGCTL:
{ {
HWND hwndDest = (HWND)wParam; HWND32 hwndDest = (HWND32)wParam;
if (!lParam) if (!lParam)
hwndDest = GetNextDlgTabItem32(hwnd, GetFocus32(), wParam); hwndDest = GetNextDlgTabItem32(hwnd, GetFocus32(), wParam);
if (hwndDest) DEFDLG_SetFocus( hwnd, hwndDest ); if (hwndDest) DEFDLG_SetFocus( hwnd, hwndDest );

View File

@ -172,11 +172,11 @@ static LRESULT DEFWND_DefWinProc( WND *wndPtr, UINT32 msg, WPARAM32 wParam,
if (wndPtr->class->hbrBackground <= (HBRUSH16)(COLOR_MAX+1)) if (wndPtr->class->hbrBackground <= (HBRUSH16)(COLOR_MAX+1))
{ {
HBRUSH16 hbrush = CreateSolidBrush( HBRUSH32 hbrush = CreateSolidBrush32(
GetSysColor(((DWORD)wndPtr->class->hbrBackground)-1)); GetSysColor(((DWORD)wndPtr->class->hbrBackground)-1));
FillWindow( GetParent16(wndPtr->hwndSelf), wndPtr->hwndSelf, FillWindow( GetParent16(wndPtr->hwndSelf), wndPtr->hwndSelf,
(HDC16)wParam, hbrush); (HDC16)wParam, hbrush);
DeleteObject (hbrush); DeleteObject32( hbrush );
} }
else FillWindow( GetParent16(wndPtr->hwndSelf), wndPtr->hwndSelf, else FillWindow( GetParent16(wndPtr->hwndSelf), wndPtr->hwndSelf,
(HDC16)wParam, wndPtr->class->hbrBackground ); (HDC16)wParam, wndPtr->class->hbrBackground );
@ -199,7 +199,7 @@ static LRESULT DEFWND_DefWinProc( WND *wndPtr, UINT32 msg, WPARAM32 wParam,
case WM_CTLCOLORSCROLLBAR: case WM_CTLCOLORSCROLLBAR:
SetBkColor( (HDC32)wParam, RGB(255, 255, 255) ); SetBkColor( (HDC32)wParam, RGB(255, 255, 255) );
SetTextColor( (HDC32)wParam, RGB(0, 0, 0) ); SetTextColor( (HDC32)wParam, RGB(0, 0, 0) );
UnrealizeObject( sysColorObjects.hbrushScrollbar ); UnrealizeObject32( sysColorObjects.hbrushScrollbar );
return (LRESULT)sysColorObjects.hbrushScrollbar; return (LRESULT)sysColorObjects.hbrushScrollbar;
case WM_CTLCOLOR: case WM_CTLCOLOR:
@ -208,7 +208,7 @@ static LRESULT DEFWND_DefWinProc( WND *wndPtr, UINT32 msg, WPARAM32 wParam,
{ {
SetBkColor( (HDC32)wParam, RGB(255, 255, 255) ); SetBkColor( (HDC32)wParam, RGB(255, 255, 255) );
SetTextColor( (HDC32)wParam, RGB(0, 0, 0) ); SetTextColor( (HDC32)wParam, RGB(0, 0, 0) );
UnrealizeObject( sysColorObjects.hbrushScrollbar ); UnrealizeObject32( sysColorObjects.hbrushScrollbar );
return (LRESULT)sysColorObjects.hbrushScrollbar; return (LRESULT)sysColorObjects.hbrushScrollbar;
} }
else else

View File

@ -237,7 +237,7 @@ static BOOL32 DIALOG_CreateControls( WND *pWnd, LPCSTR template, INT32 items,
HINSTANCE16 instance; HINSTANCE16 instance;
template = DIALOG_GetControl16( template, &info ); template = DIALOG_GetControl16( template, &info );
if (HIWORD(info.className) && !strcmp( info.className, "EDIT") && if (HIWORD(info.className) && !strcmp( info.className, "EDIT") &&
((info.style & DS_LOCALEDIT) != DS_LOCALEDIT)) ((pWnd->dwStyle & DS_LOCALEDIT) != DS_LOCALEDIT))
{ {
if (!dlgInfo->hDialogHeap) if (!dlgInfo->hDialogHeap)
{ {
@ -502,9 +502,9 @@ static HWND DIALOG_CreateIndirect( HINSTANCE32 hInst, LPCSTR dlgTemplate,
HFONT16 oldFont; HFONT16 oldFont;
HDC32 hdc = GetDC32(0); HDC32 hdc = GetDC32(0);
oldFont = SelectObject( hdc, hFont ); oldFont = SelectObject32( hdc, hFont );
GetTextMetrics16( hdc, &tm ); GetTextMetrics16( hdc, &tm );
SelectObject( hdc, oldFont ); SelectObject32( hdc, oldFont );
ReleaseDC32( 0, hdc ); ReleaseDC32( 0, hdc );
xUnit = tm.tmAveCharWidth; xUnit = tm.tmAveCharWidth;
yUnit = tm.tmHeight; yUnit = tm.tmHeight;
@ -551,7 +551,7 @@ static HWND DIALOG_CreateIndirect( HINSTANCE32 hInst, LPCSTR dlgTemplate,
owner, hMenu, hInst, NULL ); owner, hMenu, hInst, NULL );
if (!hwnd) if (!hwnd)
{ {
if (hFont) DeleteObject( hFont ); if (hFont) DeleteObject32( hFont );
if (hMenu) DestroyMenu( hMenu ); if (hMenu) DestroyMenu( hMenu );
return 0; return 0;
} }

View File

@ -771,7 +771,7 @@ static void EVENT_ConfigureNotify( HWND hwnd, XConfigureEvent *event )
hrgnOldPos = CreateRectRgnIndirect16( &wndPtr->rectWindow ); hrgnOldPos = CreateRectRgnIndirect16( &wndPtr->rectWindow );
hrgnNewPos = CreateRectRgnIndirect16( &newWindowRect ); hrgnNewPos = CreateRectRgnIndirect16( &newWindowRect );
CombineRgn( hrgnOldPos, hrgnOldPos, hrgnNewPos, RGN_DIFF ); CombineRgn32( hrgnOldPos, hrgnOldPos, hrgnNewPos, RGN_DIFF );
/* Set new size and position */ /* Set new size and position */
wndPtr->rectWindow = newWindowRect; wndPtr->rectWindow = newWindowRect;
@ -783,8 +783,8 @@ static void EVENT_ConfigureNotify( HWND hwnd, XConfigureEvent *event )
PAINT_RedrawWindow( 0, NULL, hrgnOldPos, RDW_INVALIDATE | PAINT_RedrawWindow( 0, NULL, hrgnOldPos, RDW_INVALIDATE |
RDW_ALLCHILDREN | RDW_ERASE | RDW_ERASENOW, RDW_ALLCHILDREN | RDW_ERASE | RDW_ERASENOW,
RDW_C_USEHRGN ); RDW_C_USEHRGN );
DeleteObject(hrgnOldPos); DeleteObject32(hrgnOldPos);
DeleteObject(hrgnNewPos); DeleteObject32(hrgnNewPos);
} }
} }

View File

@ -4,6 +4,7 @@
* Copyright 1993, 1994 Alexandre Julliard * Copyright 1993, 1994 Alexandre Julliard
*/ */
#define NO_TRANSITION_TYPES /* This file is Win32-clean */
#include <math.h> #include <math.h>
#include <stdlib.h> #include <stdlib.h>
#include <X11/Xlib.h> #include <X11/Xlib.h>
@ -26,9 +27,18 @@
#include "xmalloc.h" #include "xmalloc.h"
/*********************************************************************** /***********************************************************************
* LineTo (GDI.19) * LineTo16 (GDI.19)
*/ */
BOOL LineTo( HDC16 hdc, short x, short y ) BOOL16 LineTo16( HDC16 hdc, INT16 x, INT16 y )
{
return LineTo32( hdc, x, y );
}
/***********************************************************************
* LineTo32 (GDI32.249)
*/
BOOL32 LineTo32( HDC32 hdc, INT32 x, INT32 y )
{ {
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
if (!dc) if (!dc)
@ -54,9 +64,9 @@ BOOL LineTo( HDC16 hdc, short x, short y )
/*********************************************************************** /***********************************************************************
* MoveTo (GDI.20) * MoveTo (GDI.20)
*/ */
DWORD MoveTo( HDC16 hdc, short x, short y ) DWORD MoveTo( HDC16 hdc, INT16 x, INT16 y )
{ {
short oldx, oldy; DWORD ret;
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
if (!dc) if (!dc)
{ {
@ -65,12 +75,10 @@ DWORD MoveTo( HDC16 hdc, short x, short y )
MF_MetaParam2(dc, META_MOVETO, x, y); MF_MetaParam2(dc, META_MOVETO, x, y);
return 0; return 0;
} }
ret = MAKELONG( dc->w.CursPosX, dc->w.CursPosY );
oldx = dc->w.CursPosX;
oldy = dc->w.CursPosY;
dc->w.CursPosX = x; dc->w.CursPosX = x;
dc->w.CursPosY = y; dc->w.CursPosY = y;
return oldx | (oldy << 16); return ret;
} }
@ -110,10 +118,11 @@ BOOL32 MoveToEx32( HDC32 hdc, INT32 x, INT32 y, LPPOINT32 pt )
* Helper functions for Arc(), Chord() and Pie(). * Helper functions for Arc(), Chord() and Pie().
* 'lines' is the number of lines to draw: 0 for Arc, 1 for Chord, 2 for Pie. * 'lines' is the number of lines to draw: 0 for Arc, 1 for Chord, 2 for Pie.
*/ */
static BOOL GRAPH_DrawArc( HDC16 hdc, int left, int top, int right, int bottom, static BOOL32 GRAPH_DrawArc( HDC32 hdc, INT32 left, INT32 top, INT32 right,
int xstart, int ystart, int xend, int yend, int lines ) INT32 bottom, INT32 xstart, INT32 ystart,
INT32 xend, INT32 yend, INT32 lines )
{ {
int xcenter, ycenter, istart_angle, idiff_angle, tmp; INT32 xcenter, ycenter, istart_angle, idiff_angle, tmp;
double start_angle, end_angle; double start_angle, end_angle;
XPoint points[3]; XPoint points[3];
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
@ -157,8 +166,8 @@ static BOOL GRAPH_DrawArc( HDC16 hdc, int left, int top, int right, int bottom,
(double)(xstart-xcenter)*(bottom-top) ); (double)(xstart-xcenter)*(bottom-top) );
end_angle = atan2( (double)(ycenter-yend)*(right-left), end_angle = atan2( (double)(ycenter-yend)*(right-left),
(double)(xend-xcenter)*(bottom-top) ); (double)(xend-xcenter)*(bottom-top) );
istart_angle = (int)(start_angle * 180 * 64 / PI); istart_angle = (INT32)(start_angle * 180 * 64 / PI);
idiff_angle = (int)((end_angle - start_angle) * 180 * 64 / PI ); idiff_angle = (INT32)((end_angle - start_angle) * 180 * 64 / PI );
if (idiff_angle <= 0) idiff_angle += 360 * 64; if (idiff_angle <= 0) idiff_angle += 360 * 64;
if (left > right) { tmp=left; left=right; right=tmp; } if (left > right) { tmp=left; left=right; right=tmp; }
if (top > bottom) { tmp=top; top=bottom; bottom=tmp; } if (top > bottom) { tmp=top; top=bottom; bottom=tmp; }
@ -198,10 +207,10 @@ static BOOL GRAPH_DrawArc( HDC16 hdc, int left, int top, int right, int bottom,
/*********************************************************************** /***********************************************************************
* Arc (GDI.23) * Arc16 (GDI.23)
*/ */
BOOL Arc( HDC16 hdc, INT left, INT top, INT right, INT bottom, BOOL16 Arc16( HDC16 hdc, INT16 left, INT16 top, INT16 right, INT16 bottom,
INT xstart, INT ystart, INT xend, INT yend ) INT16 xstart, INT16 ystart, INT16 xend, INT16 yend )
{ {
return GRAPH_DrawArc( hdc, left, top, right, bottom, return GRAPH_DrawArc( hdc, left, top, right, bottom,
xstart, ystart, xend, yend, 0 ); xstart, ystart, xend, yend, 0 );
@ -209,10 +218,21 @@ BOOL Arc( HDC16 hdc, INT left, INT top, INT right, INT bottom,
/*********************************************************************** /***********************************************************************
* Pie (GDI.26) * Arc32 (GDI32.7)
*/ */
BOOL Pie( HDC16 hdc, INT left, INT top, INT right, INT bottom, BOOL32 Arc32( HDC32 hdc, INT32 left, INT32 top, INT32 right, INT32 bottom,
INT xstart, INT ystart, INT xend, INT yend ) INT32 xstart, INT32 ystart, INT32 xend, INT32 yend )
{
return GRAPH_DrawArc( hdc, left, top, right, bottom,
xstart, ystart, xend, yend, 0 );
}
/***********************************************************************
* Pie16 (GDI.26)
*/
BOOL16 Pie16( HDC16 hdc, INT16 left, INT16 top, INT16 right, INT16 bottom,
INT16 xstart, INT16 ystart, INT16 xend, INT16 yend )
{ {
return GRAPH_DrawArc( hdc, left, top, right, bottom, return GRAPH_DrawArc( hdc, left, top, right, bottom,
xstart, ystart, xend, yend, 2 ); xstart, ystart, xend, yend, 2 );
@ -220,10 +240,21 @@ BOOL Pie( HDC16 hdc, INT left, INT top, INT right, INT bottom,
/*********************************************************************** /***********************************************************************
* Chord (GDI.348) * Pie32 (GDI32.262)
*/ */
BOOL Chord( HDC16 hdc, INT left, INT top, INT right, INT bottom, BOOL32 Pie32( HDC32 hdc, INT32 left, INT32 top, INT32 right, INT32 bottom,
INT xstart, INT ystart, INT xend, INT yend ) INT32 xstart, INT32 ystart, INT32 xend, INT32 yend )
{
return GRAPH_DrawArc( hdc, left, top, right, bottom,
xstart, ystart, xend, yend, 2 );
}
/***********************************************************************
* Chord16 (GDI.348)
*/
BOOL16 Chord16( HDC16 hdc, INT16 left, INT16 top, INT16 right, INT16 bottom,
INT16 xstart, INT16 ystart, INT16 xend, INT16 yend )
{ {
return GRAPH_DrawArc( hdc, left, top, right, bottom, return GRAPH_DrawArc( hdc, left, top, right, bottom,
xstart, ystart, xend, yend, 1 ); xstart, ystart, xend, yend, 1 );
@ -231,9 +262,29 @@ BOOL Chord( HDC16 hdc, INT left, INT top, INT right, INT bottom,
/*********************************************************************** /***********************************************************************
* Ellipse (GDI.24) * Chord32 (GDI32.14)
*/ */
BOOL Ellipse( HDC16 hdc, INT left, INT top, INT right, INT bottom ) BOOL32 Chord32( HDC32 hdc, INT32 left, INT32 top, INT32 right, INT32 bottom,
INT32 xstart, INT32 ystart, INT32 xend, INT32 yend )
{
return GRAPH_DrawArc( hdc, left, top, right, bottom,
xstart, ystart, xend, yend, 1 );
}
/***********************************************************************
* Ellipse16 (GDI.24)
*/
BOOL16 Ellipse16( HDC16 hdc, INT16 left, INT16 top, INT16 right, INT16 bottom )
{
return Ellipse32( hdc, left, top, right, bottom );
}
/***********************************************************************
* Ellipse32 (GDI32.75)
*/
BOOL32 Ellipse32( HDC32 hdc, INT32 left, INT32 top, INT32 right, INT32 bottom )
{ {
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
if (!dc) if (!dc)
@ -250,8 +301,8 @@ BOOL Ellipse( HDC16 hdc, INT left, INT top, INT right, INT bottom )
bottom = YLPTODP( dc, bottom ); bottom = YLPTODP( dc, bottom );
if ((left == right) || (top == bottom)) return FALSE; if ((left == right) || (top == bottom)) return FALSE;
if (right < left) { INT tmp = right; right = left; left = tmp; } if (right < left) { INT32 tmp = right; right = left; left = tmp; }
if (bottom < top) { INT tmp = bottom; bottom = top; top = tmp; } if (bottom < top) { INT32 tmp = bottom; bottom = top; top = tmp; }
if ((dc->u.x.pen.style == PS_INSIDEFRAME) && if ((dc->u.x.pen.style == PS_INSIDEFRAME) &&
(dc->u.x.pen.width < right-left-1) && (dc->u.x.pen.width < right-left-1) &&
@ -276,9 +327,18 @@ BOOL Ellipse( HDC16 hdc, INT left, INT top, INT right, INT bottom )
/*********************************************************************** /***********************************************************************
* Rectangle (GDI.27) * Rectangle16 (GDI.27)
*/ */
BOOL Rectangle( HDC16 hdc, INT left, INT top, INT right, INT bottom ) BOOL16 Rectangle16(HDC16 hdc, INT16 left, INT16 top, INT16 right, INT16 bottom)
{
return Rectangle32( hdc, left, top, right, bottom );
}
/***********************************************************************
* Rectangle32 (GDI32.283)
*/
BOOL32 Rectangle32(HDC32 hdc, INT32 left, INT32 top, INT32 right, INT32 bottom)
{ {
INT32 width; INT32 width;
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
@ -294,8 +354,8 @@ BOOL Rectangle( HDC16 hdc, INT left, INT top, INT right, INT bottom )
right = XLPTODP( dc, right ); right = XLPTODP( dc, right );
bottom = YLPTODP( dc, bottom ); bottom = YLPTODP( dc, bottom );
if (right < left) { INT tmp = right; right = left; left = tmp; } if (right < left) { INT32 tmp = right; right = left; left = tmp; }
if (bottom < top) { INT tmp = bottom; bottom = top; top = tmp; } if (bottom < top) { INT32 tmp = bottom; bottom = top; top = tmp; }
if ((left == right) || (top == bottom)) if ((left == right) || (top == bottom))
{ {
@ -334,15 +394,25 @@ BOOL Rectangle( HDC16 hdc, INT left, INT top, INT right, INT bottom )
/*********************************************************************** /***********************************************************************
* RoundRect (GDI.28) * RoundRect16 (GDI.28)
*/ */
BOOL RoundRect( HDC16 hDC, INT left, INT top, INT right, INT bottom, BOOL16 RoundRect16( HDC16 hdc, INT16 left, INT16 top, INT16 right,
INT ell_width, INT ell_height ) INT16 bottom, INT16 ell_width, INT16 ell_height )
{ {
DC * dc = (DC *) GDI_GetObjPtr(hDC, DC_MAGIC); return RoundRect32( hdc, left, top, right, bottom, ell_width, ell_height );
}
/***********************************************************************
* RoundRect32 (GDI32.291)
*/
BOOL32 RoundRect32( HDC32 hdc, INT32 left, INT32 top, INT32 right,
INT32 bottom, INT32 ell_width, INT32 ell_height )
{
DC * dc = (DC *) GDI_GetObjPtr(hdc, DC_MAGIC);
if (!dc) if (!dc)
{ {
dc = (DC *)GDI_GetObjPtr(hDC, METAFILE_DC_MAGIC); dc = (DC *)GDI_GetObjPtr(hdc, METAFILE_DC_MAGIC);
if (!dc) return FALSE; if (!dc) return FALSE;
MF_MetaParam6(dc, META_ROUNDRECT, left, top, right, bottom, MF_MetaParam6(dc, META_ROUNDRECT, left, top, right, bottom,
ell_width, ell_height); ell_width, ell_height);
@ -360,8 +430,8 @@ BOOL RoundRect( HDC16 hDC, INT left, INT top, INT right, INT bottom,
/* Fix the coordinates */ /* Fix the coordinates */
if (right < left) { INT tmp = right; right = left; left = tmp; } if (right < left) { INT32 tmp = right; right = left; left = tmp; }
if (bottom < top) { INT tmp = bottom; bottom = top; top = tmp; } if (bottom < top) { INT32 tmp = bottom; bottom = top; top = tmp; }
if (ell_width > right - left) ell_width = right - left; if (ell_width > right - left) ell_width = right - left;
if (ell_height > bottom - top) ell_height = bottom - top; if (ell_height > bottom - top) ell_height = bottom - top;
@ -462,10 +532,10 @@ INT16 FillRect16( HDC16 hdc, const RECT16 *rect, HBRUSH16 hbrush )
* - do it in PatBlt() after LPtoDP(). * - do it in PatBlt() after LPtoDP().
*/ */
if (!(prevBrush = SelectObject( hdc, hbrush ))) return 0; if (!(prevBrush = SelectObject16( hdc, hbrush ))) return 0;
PatBlt( hdc, rect->left, rect->top, PatBlt( hdc, rect->left, rect->top,
rect->right - rect->left, rect->bottom - rect->top, PATCOPY ); rect->right - rect->left, rect->bottom - rect->top, PATCOPY );
SelectObject( hdc, prevBrush ); SelectObject16( hdc, prevBrush );
return 1; return 1;
} }
@ -475,12 +545,12 @@ INT16 FillRect16( HDC16 hdc, const RECT16 *rect, HBRUSH16 hbrush )
*/ */
INT32 FillRect32( HDC32 hdc, const RECT32 *rect, HBRUSH32 hbrush ) INT32 FillRect32( HDC32 hdc, const RECT32 *rect, HBRUSH32 hbrush )
{ {
HBRUSH16 prevBrush; HBRUSH32 prevBrush;
if (!(prevBrush = SelectObject( hdc, (HBRUSH16)hbrush ))) return 0; if (!(prevBrush = SelectObject32( hdc, hbrush ))) return 0;
PatBlt( hdc, rect->left, rect->top, PatBlt( hdc, rect->left, rect->top,
rect->right - rect->left, rect->bottom - rect->top, PATCOPY ); rect->right - rect->left, rect->bottom - rect->top, PATCOPY );
SelectObject( hdc, prevBrush ); SelectObject32( hdc, prevBrush );
return 1; return 1;
} }
@ -522,7 +592,7 @@ INT16 FrameRect16( HDC16 hdc, const RECT16 *rect, HBRUSH16 hbrush )
bottom = YLPTODP( dc, rect->bottom ); bottom = YLPTODP( dc, rect->bottom );
if ( (right <= left) || (bottom <= top) ) return 0; if ( (right <= left) || (bottom <= top) ) return 0;
if (!(prevBrush = SelectObject( hdc, hbrush ))) return 0; if (!(prevBrush = SelectObject16( hdc, hbrush ))) return 0;
if (DC_SetupGCForBrush( dc )) if (DC_SetupGCForBrush( dc ))
{ {
@ -535,7 +605,7 @@ INT16 FrameRect16( HDC16 hdc, const RECT16 *rect, HBRUSH16 hbrush )
PatBlt( hdc, rect->left, rect->bottom - 1, PatBlt( hdc, rect->left, rect->bottom - 1,
rect->right - rect->left, 1, PATCOPY ); rect->right - rect->left, 1, PATCOPY );
} }
SelectObject( hdc, prevBrush ); SelectObject16( hdc, prevBrush );
return 1; return 1;
} }
@ -552,9 +622,18 @@ INT32 FrameRect32( HDC32 hdc, const RECT32 *rect, HBRUSH32 hbrush )
/*********************************************************************** /***********************************************************************
* SetPixel (GDI.31) * SetPixel16 (GDI.31)
*/ */
COLORREF SetPixel( HDC16 hdc, short x, short y, COLORREF color ) COLORREF SetPixel16( HDC16 hdc, INT16 x, INT16 y, COLORREF color )
{
return SetPixel32( hdc, x, y, color );
}
/***********************************************************************
* SetPixel32 (GDI32.327)
*/
COLORREF SetPixel32( HDC32 hdc, INT32 x, INT32 y, COLORREF color )
{ {
Pixel pixel; Pixel pixel;
@ -582,9 +661,18 @@ COLORREF SetPixel( HDC16 hdc, short x, short y, COLORREF color )
/*********************************************************************** /***********************************************************************
* GetPixel (GDI.83) * GetPixel16 (GDI.83)
*/ */
COLORREF GetPixel( HDC16 hdc, short x, short y ) COLORREF GetPixel16( HDC16 hdc, INT16 x, INT16 y )
{
return GetPixel32( hdc, x, y );
}
/***********************************************************************
* GetPixel32 (GDI32.211)
*/
COLORREF GetPixel32( HDC32 hdc, INT32 x, INT32 y )
{ {
static Pixmap pixmap = 0; static Pixmap pixmap = 0;
XImage * image; XImage * image;
@ -597,7 +685,7 @@ COLORREF GetPixel( HDC16 hdc, short x, short y )
return 0; return 0;
#endif #endif
if (!PtVisible( hdc, x, y )) return 0; if (!PtVisible32( hdc, x, y )) return 0;
x = dc->w.DCOrgX + XLPTODP( dc, x ); x = dc->w.DCOrgX + XLPTODP( dc, x );
y = dc->w.DCOrgY + YLPTODP( dc, y ); y = dc->w.DCOrgY + YLPTODP( dc, y );
@ -624,11 +712,20 @@ COLORREF GetPixel( HDC16 hdc, short x, short y )
/*********************************************************************** /***********************************************************************
* PaintRgn (GDI.43) * PaintRgn16 (GDI.43)
*/ */
BOOL PaintRgn( HDC16 hdc, HRGN32 hrgn ) BOOL16 PaintRgn16( HDC16 hdc, HRGN16 hrgn )
{ {
RECT16 box; return PaintRgn32( hdc, hrgn );
}
/***********************************************************************
* PaintRgn32 (GDI32.259)
*/
BOOL32 PaintRgn32( HDC32 hdc, HRGN32 hrgn )
{
RECT32 box;
HRGN32 tmpVisRgn, prevVisRgn; HRGN32 tmpVisRgn, prevVisRgn;
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
if (!dc) return FALSE; if (!dc) return FALSE;
@ -636,18 +733,18 @@ BOOL PaintRgn( HDC16 hdc, HRGN32 hrgn )
/* Modify visible region */ /* Modify visible region */
if (!(prevVisRgn = SaveVisRgn( hdc ))) return FALSE; if (!(prevVisRgn = SaveVisRgn( hdc ))) return FALSE;
if (!(tmpVisRgn = CreateRectRgn( 0, 0, 0, 0 ))) if (!(tmpVisRgn = CreateRectRgn32( 0, 0, 0, 0 )))
{ {
RestoreVisRgn( hdc ); RestoreVisRgn( hdc );
return FALSE; return FALSE;
} }
CombineRgn( tmpVisRgn, prevVisRgn, hrgn, RGN_AND ); CombineRgn32( tmpVisRgn, prevVisRgn, hrgn, RGN_AND );
SelectVisRgn( hdc, tmpVisRgn ); SelectVisRgn( hdc, tmpVisRgn );
DeleteObject( tmpVisRgn ); DeleteObject32( tmpVisRgn );
/* Fill the region */ /* Fill the region */
GetRgnBox16( dc->w.hGCClipRgn, &box ); GetRgnBox32( dc->w.hGCClipRgn, &box );
if (DC_SetupGCForBrush( dc )) if (DC_SetupGCForBrush( dc ))
XFillRectangle( display, dc->u.x.drawable, dc->u.x.gc, XFillRectangle( display, dc->u.x.drawable, dc->u.x.gc,
dc->w.DCOrgX + box.left, dc->w.DCOrgY + box.top, dc->w.DCOrgX + box.left, dc->w.DCOrgY + box.top,
@ -661,39 +758,70 @@ BOOL PaintRgn( HDC16 hdc, HRGN32 hrgn )
/*********************************************************************** /***********************************************************************
* FillRgn (GDI.40) * FillRgn16 (GDI.40)
*/ */
BOOL FillRgn( HDC16 hdc, HRGN32 hrgn, HBRUSH16 hbrush ) BOOL16 FillRgn16( HDC16 hdc, HRGN16 hrgn, HBRUSH16 hbrush )
{ {
BOOL retval; return FillRgn32( hdc, hrgn, hbrush );
HBRUSH16 prevBrush = SelectObject( hdc, hbrush ); }
/***********************************************************************
* FillRgn32 (GDI32.101)
*/
BOOL32 FillRgn32( HDC32 hdc, HRGN32 hrgn, HBRUSH32 hbrush )
{
BOOL32 retval;
HBRUSH32 prevBrush = SelectObject32( hdc, hbrush );
if (!prevBrush) return FALSE; if (!prevBrush) return FALSE;
retval = PaintRgn( hdc, hrgn ); retval = PaintRgn32( hdc, hrgn );
SelectObject( hdc, prevBrush ); SelectObject32( hdc, prevBrush );
return retval; return retval;
} }
/***********************************************************************
* FrameRgn (GDI.41)
*/
BOOL FrameRgn( HDC16 hdc, HRGN32 hrgn, HBRUSH16 hbrush, int nWidth, int nHeight )
{
HRGN32 tmp = CreateRectRgn( 0, 0, 0, 0 );
if(!REGION_FrameRgn( tmp, hrgn, nWidth, nHeight )) return 0;
FillRgn( hdc, tmp, hbrush );
DeleteObject( tmp );
return 1;
}
/*********************************************************************** /***********************************************************************
* InvertRgn (GDI.42) * FrameRgn16 (GDI.41)
*/ */
BOOL InvertRgn( HDC16 hdc, HRGN32 hrgn ) BOOL16 FrameRgn16( HDC16 hdc, HRGN16 hrgn, HBRUSH16 hbrush,
INT16 nWidth, INT16 nHeight )
{ {
HBRUSH16 prevBrush = SelectObject( hdc, GetStockObject(BLACK_BRUSH) ); return FrameRgn32( hdc, hrgn, hbrush, nWidth, nHeight );
}
/***********************************************************************
* FrameRgn32 (GDI32.105)
*/
BOOL32 FrameRgn32( HDC32 hdc, HRGN32 hrgn, HBRUSH32 hbrush,
INT32 nWidth, INT32 nHeight )
{
HRGN32 tmp = CreateRectRgn32( 0, 0, 0, 0 );
if(!REGION_FrameRgn( tmp, hrgn, nWidth, nHeight )) return FALSE;
FillRgn32( hdc, tmp, hbrush );
DeleteObject32( tmp );
return TRUE;
}
/***********************************************************************
* InvertRgn16 (GDI.42)
*/
BOOL16 InvertRgn16( HDC16 hdc, HRGN16 hrgn )
{
return InvertRgn32( hdc, hrgn );
}
/***********************************************************************
* InvertRgn32 (GDI32.246)
*/
BOOL32 InvertRgn32( HDC32 hdc, HRGN32 hrgn )
{
HBRUSH32 prevBrush = SelectObject32( hdc, GetStockObject32(BLACK_BRUSH) );
WORD prevROP = SetROP2( hdc, R2_NOT ); WORD prevROP = SetROP2( hdc, R2_NOT );
BOOL retval = PaintRgn( hdc, hrgn ); BOOL32 retval = PaintRgn32( hdc, hrgn );
SelectObject( hdc, prevBrush ); SelectObject32( hdc, prevBrush );
SetROP2( hdc, prevROP ); SetROP2( hdc, prevROP );
return retval; return retval;
} }
@ -704,9 +832,21 @@ BOOL InvertRgn( HDC16 hdc, HRGN32 hrgn )
*/ */
void DrawFocusRect16( HDC16 hdc, const RECT16* rc ) void DrawFocusRect16( HDC16 hdc, const RECT16* rc )
{ {
HPEN16 hOldPen; RECT32 rect32;
int oldDrawMode, oldBkMode; CONV_RECT16TO32( rc, &rect32 );
int left, top, right, bottom; return DrawFocusRect32( hdc, &rect32 );
}
/***********************************************************************
* DrawFocusRect32 (USER32.155)
*/
void DrawFocusRect32( HDC32 hdc, const RECT32* rc )
{
HPEN32 hOldPen;
INT32 oldDrawMode, oldBkMode;
INT32 left, top, right, bottom;
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
if (!dc) return; if (!dc) return;
@ -715,7 +855,7 @@ void DrawFocusRect16( HDC16 hdc, const RECT16* rc )
right = XLPTODP( dc, rc->right ); right = XLPTODP( dc, rc->right );
bottom = YLPTODP( dc, rc->bottom ); bottom = YLPTODP( dc, rc->bottom );
hOldPen = (HPEN16)SelectObject(hdc, sysColorObjects.hpenWindowText ); hOldPen = SelectObject32( hdc, sysColorObjects.hpenWindowText );
oldDrawMode = SetROP2(hdc, R2_XORPEN); oldDrawMode = SetROP2(hdc, R2_XORPEN);
oldBkMode = SetBkMode(hdc, TRANSPARENT); oldBkMode = SetBkMode(hdc, TRANSPARENT);
@ -729,18 +869,7 @@ void DrawFocusRect16( HDC16 hdc, const RECT16* rc )
SetBkMode(hdc, oldBkMode); SetBkMode(hdc, oldBkMode);
SetROP2(hdc, oldDrawMode); SetROP2(hdc, oldDrawMode);
SelectObject(hdc, hOldPen); SelectObject32(hdc, hOldPen);
}
/***********************************************************************
* DrawFocusRect32 (USER32.155)
*/
void DrawFocusRect32( HDC32 hdc, const RECT32* rect )
{
RECT16 rect16;
CONV_RECT32TO16( rect, &rect16 );
return DrawFocusRect16( (HDC16)hdc, &rect16 );
} }
@ -786,10 +915,10 @@ BOOL32 GRAPH_DrawBitmap( HDC32 hdc, HBITMAP32 hbitmap, int xdest, int ydest,
void GRAPH_DrawReliefRect( HDC32 hdc, const RECT32 *rect, INT32 highlight_size, void GRAPH_DrawReliefRect( HDC32 hdc, const RECT32 *rect, INT32 highlight_size,
INT32 shadow_size, BOOL32 pressed ) INT32 shadow_size, BOOL32 pressed )
{ {
HBRUSH16 hbrushOld; HBRUSH32 hbrushOld;
int i; INT32 i;
hbrushOld = SelectObject( hdc, pressed ? sysColorObjects.hbrushBtnShadow : hbrushOld = SelectObject32(hdc, pressed ? sysColorObjects.hbrushBtnShadow :
sysColorObjects.hbrushBtnHighlight ); sysColorObjects.hbrushBtnHighlight );
for (i = 0; i < highlight_size; i++) for (i = 0; i < highlight_size; i++)
{ {
@ -799,8 +928,8 @@ void GRAPH_DrawReliefRect( HDC32 hdc, const RECT32 *rect, INT32 highlight_size,
rect->right - rect->left - i, 1, PATCOPY ); rect->right - rect->left - i, 1, PATCOPY );
} }
SelectObject( hdc, pressed ? sysColorObjects.hbrushBtnHighlight : SelectObject32( hdc, pressed ? sysColorObjects.hbrushBtnHighlight :
sysColorObjects.hbrushBtnShadow ); sysColorObjects.hbrushBtnShadow );
for (i = 0; i < shadow_size; i++) for (i = 0; i < shadow_size; i++)
{ {
PatBlt( hdc, rect->right - i - 1, rect->top + i, PatBlt( hdc, rect->right - i - 1, rect->top + i,
@ -809,7 +938,7 @@ void GRAPH_DrawReliefRect( HDC32 hdc, const RECT32 *rect, INT32 highlight_size,
rect->right - rect->left - i, 1, PATCOPY ); rect->right - rect->left - i, 1, PATCOPY );
} }
SelectObject( hdc, hbrushOld ); SelectObject32( hdc, hbrushOld );
} }
@ -896,8 +1025,8 @@ BOOL16 PolyPolygon16( HDC16 hdc, LPPOINT16 pt, LPINT16 counts, UINT16 polygons)
/* really correct either, it doesn't matter much... */ /* really correct either, it doesn't matter much... */
/* At least the outline will be correct :-) */ /* At least the outline will be correct :-) */
hrgn = CreatePolyPolygonRgn16( pt, counts, polygons, dc->w.polyFillMode ); hrgn = CreatePolyPolygonRgn16( pt, counts, polygons, dc->w.polyFillMode );
PaintRgn( hdc, hrgn ); PaintRgn32( hdc, hrgn );
DeleteObject( hrgn ); DeleteObject32( hrgn );
/* Draw the outline of the polygons */ /* Draw the outline of the polygons */
@ -1001,7 +1130,7 @@ static void GRAPH_InternalFloodFill( XImage *image, DC *dc,
* *
* Main flood-fill routine. * Main flood-fill routine.
*/ */
static BOOL16 GRAPH_DoFloodFill( DC *dc, RECT16 *rect, INT32 x, INT32 y, static BOOL32 GRAPH_DoFloodFill( DC *dc, RECT32 *rect, INT32 x, INT32 y,
COLORREF color, UINT32 fillType ) COLORREF color, UINT32 fillType )
{ {
XImage *image; XImage *image;
@ -1031,12 +1160,22 @@ static BOOL16 GRAPH_DoFloodFill( DC *dc, RECT16 *rect, INT32 x, INT32 y,
/********************************************************************** /**********************************************************************
* ExtFloodFill (GDI.372) (GDI32.96) * ExtFloodFill16 (GDI.372)
*/ */
BOOL16 ExtFloodFill( HDC32 hdc, INT32 x, INT32 y, COLORREF color, BOOL16 ExtFloodFill16( HDC16 hdc, INT16 x, INT16 y, COLORREF color,
UINT32 fillType ) UINT16 fillType )
{ {
RECT16 rect; return ExtFloodFill32( hdc, x, y, color, fillType );
}
/**********************************************************************
* ExtFloodFill32 (GDI32.96)
*/
BOOL32 ExtFloodFill32( HDC32 hdc, INT32 x, INT32 y, COLORREF color,
UINT32 fillType )
{
RECT32 rect;
DC *dc; DC *dc;
dprintf_graphics( stddeb, "ExtFloodFill %04x %d,%d %06lx %d\n", dprintf_graphics( stddeb, "ExtFloodFill %04x %d,%d %06lx %d\n",
@ -1051,8 +1190,8 @@ BOOL16 ExtFloodFill( HDC32 hdc, INT32 x, INT32 y, COLORREF color,
return TRUE; return TRUE;
} }
if (!PtVisible( hdc, x, y )) return FALSE; if (!PtVisible32( hdc, x, y )) return FALSE;
if (GetRgnBox16( dc->w.hGCClipRgn, &rect ) == ERROR) return FALSE; if (GetRgnBox32( dc->w.hGCClipRgn, &rect ) == ERROR) return FALSE;
return CallTo32_LargeStack( (int(*)())GRAPH_DoFloodFill, 6, return CallTo32_LargeStack( (int(*)())GRAPH_DoFloodFill, 6,
dc, &rect, x, y, color, fillType ); dc, &rect, x, y, color, fillType );
@ -1060,11 +1199,20 @@ BOOL16 ExtFloodFill( HDC32 hdc, INT32 x, INT32 y, COLORREF color,
/********************************************************************** /**********************************************************************
* FloodFill (GDI.25) (GDI32.104) * FloodFill16 (GDI.25)
*/ */
BOOL16 FloodFill( HDC32 hdc, INT32 x, INT32 y, COLORREF color ) BOOL16 FloodFill16( HDC16 hdc, INT16 x, INT16 y, COLORREF color )
{ {
return ExtFloodFill( hdc, x, y, color, FLOODFILLBORDER ); return ExtFloodFill32( hdc, x, y, color, FLOODFILLBORDER );
}
/**********************************************************************
* FloodFill32 (GDI32.104)
*/
BOOL32 FloodFill32( HDC32 hdc, INT32 x, INT32 y, COLORREF color )
{
return ExtFloodFill32( hdc, x, y, color, FLOODFILLBORDER );
} }
@ -1088,7 +1236,7 @@ BOOL16 DrawEdge16( HDC16 hdc, LPRECT16 rc, UINT16 edge, UINT16 flags )
*/ */
BOOL32 DrawEdge32( HDC32 hdc, LPRECT32 rc, UINT32 edge, UINT32 flags ) BOOL32 DrawEdge32( HDC32 hdc, LPRECT32 rc, UINT32 edge, UINT32 flags )
{ {
HBRUSH16 hbrushOld; HBRUSH32 hbrushOld;
if (flags >= BF_DIAGONAL) if (flags >= BF_DIAGONAL)
fprintf( stderr, "DrawEdge: unsupported flags %04x\n", flags ); fprintf( stderr, "DrawEdge: unsupported flags %04x\n", flags );
@ -1099,7 +1247,7 @@ BOOL32 DrawEdge32( HDC32 hdc, LPRECT32 rc, UINT32 edge, UINT32 flags )
/* First do all the raised edges */ /* First do all the raised edges */
SelectObject( hdc, sysColorObjects.hbrushBtnHighlight ); hbrushOld = SelectObject32( hdc, sysColorObjects.hbrushBtnHighlight );
if (edge & BDR_RAISEDOUTER) if (edge & BDR_RAISEDOUTER)
{ {
if (flags & BF_LEFT) PatBlt( hdc, rc->left, rc->top, if (flags & BF_LEFT) PatBlt( hdc, rc->left, rc->top,
@ -1131,7 +1279,7 @@ BOOL32 DrawEdge32( HDC32 hdc, LPRECT32 rc, UINT32 edge, UINT32 flags )
/* Then do all the sunken edges */ /* Then do all the sunken edges */
hbrushOld = SelectObject( hdc, sysColorObjects.hbrushBtnShadow ); SelectObject32( hdc, sysColorObjects.hbrushBtnShadow );
if (edge & BDR_SUNKENOUTER) if (edge & BDR_SUNKENOUTER)
{ {
if (flags & BF_LEFT) PatBlt( hdc, rc->left, rc->top, if (flags & BF_LEFT) PatBlt( hdc, rc->left, rc->top,
@ -1161,7 +1309,7 @@ BOOL32 DrawEdge32( HDC32 hdc, LPRECT32 rc, UINT32 edge, UINT32 flags )
rc->right - rc->left - 2, 1, PATCOPY ); rc->right - rc->left - 2, 1, PATCOPY );
} }
SelectObject( hdc, hbrushOld ); SelectObject32( hdc, hbrushOld );
return TRUE; return TRUE;
} }

View File

@ -326,7 +326,7 @@ FARPROC16 SetWindowsHook16( INT16 id, HOOKPROC16 proc )
*/ */
BOOL16 UnhookWindowsHook16( INT16 id, HOOKPROC16 proc ) BOOL16 UnhookWindowsHook16( INT16 id, HOOKPROC16 proc )
{ {
HANDLE16 hook = HOOK_GetHook( id , 0 ); HANDLE16 hook = HOOK_GetHook( id, GetTaskQueue(0) );
dprintf_hook( stddeb, "UnhookWindowsHook: %d %08lx\n", id, (DWORD)proc ); dprintf_hook( stddeb, "UnhookWindowsHook: %d %08lx\n", id, (DWORD)proc );
@ -380,7 +380,7 @@ HHOOK SetWindowsHookEx16( INT16 id, HOOKPROC16 proc, HINSTANCE16 hInst,
/*********************************************************************** /***********************************************************************
* UnhookWindowHookEx16 (USER.292) * UnhookWindowsHookEx16 (USER.292)
*/ */
BOOL16 UnhookWindowsHookEx16( HHOOK hhook ) BOOL16 UnhookWindowsHookEx16( HHOOK hhook )
{ {

View File

@ -668,17 +668,17 @@ HBITMAP16 CreateMDIMenuBitmap(void)
HBITMAP16 hbClose = LoadBitmap16(0, MAKEINTRESOURCE(OBM_CLOSE) ); HBITMAP16 hbClose = LoadBitmap16(0, MAKEINTRESOURCE(OBM_CLOSE) );
HBITMAP16 hbCopy,hb_src,hb_dest; HBITMAP16 hbCopy,hb_src,hb_dest;
hb_src = SelectObject(hDCSrc,hbClose); hb_src = SelectObject32(hDCSrc,hbClose);
hbCopy = CreateCompatibleBitmap(hDCSrc,SYSMETRICS_CXSIZE, SYSMETRICS_CYSIZE); hbCopy = CreateCompatibleBitmap(hDCSrc,SYSMETRICS_CXSIZE, SYSMETRICS_CYSIZE);
hb_dest = SelectObject(hDCDest,hbCopy); hb_dest = SelectObject32(hDCDest,hbCopy);
BitBlt(hDCDest, 0, 0, SYSMETRICS_CXSIZE, SYSMETRICS_CYSIZE, BitBlt(hDCDest, 0, 0, SYSMETRICS_CXSIZE, SYSMETRICS_CYSIZE,
hDCSrc, SYSMETRICS_CXSIZE, 0, SRCCOPY); hDCSrc, SYSMETRICS_CXSIZE, 0, SRCCOPY);
SelectObject(hDCSrc,hb_src); SelectObject32(hDCSrc,hb_src);
SelectObject(hDCDest,hb_dest); SelectObject32(hDCDest,hb_dest);
DeleteObject(hbClose); DeleteObject32(hbClose);
DeleteDC(hDCDest); DeleteDC(hDCDest);
DeleteDC(hDCSrc); DeleteDC(hDCSrc);

View File

@ -152,12 +152,11 @@ BOOL32 AdjustWindowRectEx32( LPRECT32 rect, DWORD style,
* *
* Get the minimized and maximized information for a window. * Get the minimized and maximized information for a window.
*/ */
void NC_GetMinMaxInfo( HWND hwnd, POINT16 *maxSize, POINT16 *maxPos, void NC_GetMinMaxInfo( WND *wndPtr, POINT16 *maxSize, POINT16 *maxPos,
POINT16 *minTrack, POINT16 *maxTrack ) POINT16 *minTrack, POINT16 *maxTrack )
{ {
MINMAXINFO16 *MinMax; MINMAXINFO16 *MinMax;
short xinc, yinc; short xinc, yinc;
WND *wndPtr = WIN_FindWndPtr( hwnd );
if (!(MinMax = SEGPTR_NEW(MINMAXINFO16))) return; if (!(MinMax = SEGPTR_NEW(MINMAXINFO16))) return;
@ -204,7 +203,8 @@ void NC_GetMinMaxInfo( HWND hwnd, POINT16 *maxSize, POINT16 *maxPos,
MinMax->ptMaxPosition.y = -yinc; MinMax->ptMaxPosition.y = -yinc;
} }
SendMessage16( hwnd, WM_GETMINMAXINFO, 0, (LPARAM)SEGPTR_GET(MinMax) ); SendMessage16( wndPtr->hwndSelf, WM_GETMINMAXINFO, 0,
(LPARAM)SEGPTR_GET(MinMax) );
/* Some sanity checks */ /* Some sanity checks */
@ -299,7 +299,7 @@ static void NC_GetInsideRect( HWND hwnd, RECT16 *rect )
* *
* Handle a WM_NCHITTEST message. Called from DefWindowProc(). * Handle a WM_NCHITTEST message. Called from DefWindowProc().
*/ */
LONG NC_HandleNCHitTest( HWND hwnd, POINT16 pt ) LONG NC_HandleNCHitTest( HWND32 hwnd, POINT16 pt )
{ {
RECT16 rect; RECT16 rect;
WND *wndPtr = WIN_FindWndPtr( hwnd ); WND *wndPtr = WIN_FindWndPtr( hwnd );
@ -442,11 +442,11 @@ void NC_DrawSysButton( HWND hwnd, HDC16 hdc, BOOL down )
{ {
NC_GetInsideRect( hwnd, &rect ); NC_GetInsideRect( hwnd, &rect );
hdcMem = CreateCompatibleDC( hdc ); hdcMem = CreateCompatibleDC( hdc );
hbitmap = SelectObject( hdcMem, hbitmapClose ); hbitmap = SelectObject32( hdcMem, hbitmapClose );
BitBlt( hdc, rect.left, rect.top, SYSMETRICS_CXSIZE, SYSMETRICS_CYSIZE, BitBlt( hdc, rect.left, rect.top, SYSMETRICS_CXSIZE, SYSMETRICS_CYSIZE,
hdcMem, (wndPtr->dwStyle & WS_CHILD) ? SYSMETRICS_CXSIZE : 0, 0, hdcMem, (wndPtr->dwStyle & WS_CHILD) ? SYSMETRICS_CXSIZE : 0, 0,
down ? NOTSRCCOPY : SRCCOPY ); down ? NOTSRCCOPY : SRCCOPY );
SelectObject( hdcMem, hbitmap ); SelectObject32( hdcMem, hbitmap );
DeleteDC( hdcMem ); DeleteDC( hdcMem );
} }
} }
@ -505,15 +505,15 @@ static void NC_DrawFrame( HDC16 hdc, RECT16 *rect, BOOL dlgFrame, BOOL active )
{ {
width = SYSMETRICS_CXDLGFRAME - 1; width = SYSMETRICS_CXDLGFRAME - 1;
height = SYSMETRICS_CYDLGFRAME - 1; height = SYSMETRICS_CYDLGFRAME - 1;
SelectObject( hdc, active ? sysColorObjects.hbrushActiveCaption : SelectObject32( hdc, active ? sysColorObjects.hbrushActiveCaption :
sysColorObjects.hbrushInactiveCaption ); sysColorObjects.hbrushInactiveCaption );
} }
else else
{ {
width = SYSMETRICS_CXFRAME - 1; width = SYSMETRICS_CXFRAME - 1;
height = SYSMETRICS_CYFRAME - 1; height = SYSMETRICS_CYFRAME - 1;
SelectObject( hdc, active ? sysColorObjects.hbrushActiveBorder : SelectObject32( hdc, active ? sysColorObjects.hbrushActiveBorder :
sysColorObjects.hbrushInactiveBorder ); sysColorObjects.hbrushInactiveBorder );
} }
/* Draw frame */ /* Draw frame */
@ -534,35 +534,35 @@ static void NC_DrawFrame( HDC16 hdc, RECT16 *rect, BOOL dlgFrame, BOOL active )
/* Draw inner rectangle */ /* Draw inner rectangle */
MoveTo( hdc, rect->left+width, rect->top+height ); MoveTo( hdc, rect->left+width, rect->top+height );
LineTo( hdc, rect->right-width-1, rect->top+height ); LineTo32( hdc, rect->right-width-1, rect->top+height );
LineTo( hdc, rect->right-width-1, rect->bottom-height-1 ); LineTo32( hdc, rect->right-width-1, rect->bottom-height-1 );
LineTo( hdc, rect->left+width, rect->bottom-height-1 ); LineTo32( hdc, rect->left+width, rect->bottom-height-1 );
LineTo( hdc, rect->left+width, rect->top+height ); LineTo32( hdc, rect->left+width, rect->top+height );
/* Draw the decorations */ /* Draw the decorations */
tmp = rect->top + SYSMETRICS_CYFRAME + SYSMETRICS_CYSIZE; tmp = rect->top + SYSMETRICS_CYFRAME + SYSMETRICS_CYSIZE;
MoveTo( hdc, rect->left, tmp); MoveTo( hdc, rect->left, tmp);
LineTo( hdc, rect->left+width, tmp ); LineTo32( hdc, rect->left+width, tmp );
MoveTo( hdc, rect->right-width-1, tmp ); MoveTo( hdc, rect->right-width-1, tmp );
LineTo( hdc, rect->right-1, tmp ); LineTo32( hdc, rect->right-1, tmp );
tmp = rect->bottom - 1 - SYSMETRICS_CYFRAME - SYSMETRICS_CYSIZE; tmp = rect->bottom - 1 - SYSMETRICS_CYFRAME - SYSMETRICS_CYSIZE;
MoveTo( hdc, rect->left, tmp ); MoveTo( hdc, rect->left, tmp );
LineTo( hdc, rect->left+width, tmp ); LineTo32( hdc, rect->left+width, tmp );
MoveTo( hdc, rect->right-width-1, tmp ); MoveTo( hdc, rect->right-width-1, tmp );
LineTo( hdc, rect->right-1, tmp ); LineTo32( hdc, rect->right-1, tmp );
tmp = rect->left + SYSMETRICS_CXFRAME + SYSMETRICS_CXSIZE; tmp = rect->left + SYSMETRICS_CXFRAME + SYSMETRICS_CXSIZE;
MoveTo( hdc, tmp, rect->top ); MoveTo( hdc, tmp, rect->top );
LineTo( hdc, tmp, rect->top+height ); LineTo32( hdc, tmp, rect->top+height );
MoveTo( hdc, tmp, rect->bottom-height-1 ); MoveTo( hdc, tmp, rect->bottom-height-1 );
LineTo( hdc, tmp, rect->bottom-1 ); LineTo32( hdc, tmp, rect->bottom-1 );
tmp = rect->right - 1 - SYSMETRICS_CXFRAME - SYSMETRICS_CYSIZE; tmp = rect->right - 1 - SYSMETRICS_CXFRAME - SYSMETRICS_CYSIZE;
MoveTo( hdc, tmp, rect->top ); MoveTo( hdc, tmp, rect->top );
LineTo( hdc, tmp, rect->top+height ); LineTo32( hdc, tmp, rect->top+height );
MoveTo( hdc, tmp, rect->bottom-height-1 ); MoveTo( hdc, tmp, rect->bottom-height-1 );
LineTo( hdc, tmp, rect->bottom-1 ); LineTo32( hdc, tmp, rect->bottom-1 );
InflateRect16( rect, -width-1, -height-1 ); InflateRect16( rect, -width-1, -height-1 );
} }
@ -577,7 +577,7 @@ static void NC_DrawMovingFrame( HDC16 hdc, RECT16 *rect, BOOL thickframe )
{ {
if (thickframe) if (thickframe)
{ {
SelectObject( hdc, GetStockObject( GRAY_BRUSH ) ); SelectObject32( hdc, GetStockObject32( GRAY_BRUSH ) );
PatBlt( hdc, rect->left, rect->top, PatBlt( hdc, rect->left, rect->top,
rect->right - rect->left - SYSMETRICS_CXFRAME, rect->right - rect->left - SYSMETRICS_CXFRAME,
SYSMETRICS_CYFRAME, PATINVERT ); SYSMETRICS_CYFRAME, PATINVERT );
@ -623,24 +623,24 @@ static void NC_DrawCaption( HDC16 hdc, RECT16 *rect, HWND hwnd,
if (wndPtr->dwExStyle & WS_EX_DLGMODALFRAME) if (wndPtr->dwExStyle & WS_EX_DLGMODALFRAME)
{ {
HBRUSH16 hbrushOld = SelectObject( hdc, sysColorObjects.hbrushWindow ); HBRUSH32 hbrushOld = SelectObject32(hdc, sysColorObjects.hbrushWindow);
PatBlt( hdc, r.left, r.top, 1, r.bottom-r.top+1,PATCOPY ); PatBlt( hdc, r.left, r.top, 1, r.bottom-r.top+1,PATCOPY );
PatBlt( hdc, r.right-1, r.top, 1, r.bottom-r.top+1, PATCOPY ); PatBlt( hdc, r.right-1, r.top, 1, r.bottom-r.top+1, PATCOPY );
PatBlt( hdc, r.left, r.top-1, r.right-r.left, 1, PATCOPY ); PatBlt( hdc, r.left, r.top-1, r.right-r.left, 1, PATCOPY );
r.left++; r.left++;
r.right--; r.right--;
SelectObject( hdc, hbrushOld ); SelectObject32( hdc, hbrushOld );
} }
MoveTo( hdc, r.left, r.bottom ); MoveTo( hdc, r.left, r.bottom );
LineTo( hdc, r.right-1, r.bottom ); LineTo32( hdc, r.right-1, r.bottom );
if (style & WS_SYSMENU) if (style & WS_SYSMENU)
{ {
NC_DrawSysButton( hwnd, hdc, FALSE ); NC_DrawSysButton( hwnd, hdc, FALSE );
r.left += SYSMETRICS_CXSIZE + 1; r.left += SYSMETRICS_CXSIZE + 1;
MoveTo( hdc, r.left - 1, r.top ); MoveTo( hdc, r.left - 1, r.top );
LineTo( hdc, r.left - 1, r.bottom ); LineTo32( hdc, r.left - 1, r.bottom );
} }
if (style & WS_MAXIMIZEBOX) if (style & WS_MAXIMIZEBOX)
{ {
@ -672,11 +672,11 @@ static void NC_DrawCaption( HDC16 hdc, RECT16 *rect, HWND hwnd,
* *
* Paint the non-client area. clip is currently unused. * Paint the non-client area. clip is currently unused.
*/ */
void NC_DoNCPaint( HWND hwnd, HRGN32 clip, BOOL suppress_menupaint ) void NC_DoNCPaint( HWND32 hwnd, HRGN32 clip, BOOL32 suppress_menupaint )
{ {
HDC32 hdc; HDC32 hdc;
RECT16 rect; RECT16 rect;
BOOL active; BOOL32 active;
WND *wndPtr = WIN_FindWndPtr( hwnd ); WND *wndPtr = WIN_FindWndPtr( hwnd );
@ -703,7 +703,7 @@ void NC_DoNCPaint( HWND hwnd, HRGN32 clip, BOOL suppress_menupaint )
rect.right = wndPtr->rectWindow.right - wndPtr->rectWindow.left; rect.right = wndPtr->rectWindow.right - wndPtr->rectWindow.left;
rect.bottom = wndPtr->rectWindow.bottom - wndPtr->rectWindow.top; rect.bottom = wndPtr->rectWindow.bottom - wndPtr->rectWindow.top;
SelectObject( hdc, sysColorObjects.hpenWindowFrame ); SelectObject32( hdc, sysColorObjects.hpenWindowFrame );
if (!(wndPtr->flags & WIN_MANAGED)) if (!(wndPtr->flags & WIN_MANAGED))
{ {
@ -711,10 +711,10 @@ void NC_DoNCPaint( HWND hwnd, HRGN32 clip, BOOL suppress_menupaint )
(wndPtr->dwExStyle & WS_EX_DLGMODALFRAME)) (wndPtr->dwExStyle & WS_EX_DLGMODALFRAME))
{ {
MoveTo( hdc, 0, 0 ); MoveTo( hdc, 0, 0 );
LineTo( hdc, rect.right-1, 0 ); LineTo32( hdc, rect.right-1, 0 );
LineTo( hdc, rect.right-1, rect.bottom-1 ); LineTo32( hdc, rect.right-1, rect.bottom-1 );
LineTo( hdc, 0, rect.bottom-1 ); LineTo32( hdc, 0, rect.bottom-1 );
LineTo( hdc, 0, 0 ); LineTo32( hdc, 0, 0 );
InflateRect16( &rect, -1, -1 ); InflateRect16( &rect, -1, -1 );
} }
@ -766,7 +766,7 @@ void NC_DoNCPaint( HWND hwnd, HRGN32 clip, BOOL suppress_menupaint )
* *
* Handle a WM_NCPAINT message. Called from DefWindowProc(). * Handle a WM_NCPAINT message. Called from DefWindowProc().
*/ */
LONG NC_HandleNCPaint( HWND hwnd , HRGN32 clip) LONG NC_HandleNCPaint( HWND32 hwnd , HRGN32 clip)
{ {
NC_DoNCPaint( hwnd, clip, FALSE ); NC_DoNCPaint( hwnd, clip, FALSE );
return 0; return 0;
@ -804,9 +804,9 @@ LONG NC_HandleNCActivate( WND *wndPtr, WPARAM16 wParam )
* *
* Handle a WM_SETCURSOR message. Called from DefWindowProc(). * Handle a WM_SETCURSOR message. Called from DefWindowProc().
*/ */
LONG NC_HandleSetCursor( HWND hwnd, WPARAM16 wParam, LPARAM lParam ) LONG NC_HandleSetCursor( HWND32 hwnd, WPARAM16 wParam, LPARAM lParam )
{ {
if (hwnd != (HWND)wParam) return 0; /* Don't set the cursor for child windows */ if (hwnd != (HWND32)wParam) return 0; /* Don't set the cursor for child windows */
switch(LOWORD(lParam)) switch(LOWORD(lParam))
{ {
@ -1029,7 +1029,7 @@ static void NC_DoSizeMove( HWND hwnd, WORD wParam, POINT16 pt )
/* Get min/max info */ /* Get min/max info */
NC_GetMinMaxInfo( hwnd, NULL, NULL, &minTrack, &maxTrack ); NC_GetMinMaxInfo( wndPtr, NULL, NULL, &minTrack, &maxTrack );
sizingRect = wndPtr->rectWindow; sizingRect = wndPtr->rectWindow;
if (wndPtr->dwStyle & WS_CHILD) if (wndPtr->dwStyle & WS_CHILD)
GetClientRect16( wndPtr->parent->hwndSelf, &mouseRect ); GetClientRect16( wndPtr->parent->hwndSelf, &mouseRect );
@ -1278,7 +1278,7 @@ static void NC_TrackScrollBar( HWND32 hwnd, WPARAM32 wParam, POINT32 pt )
* *
* Handle a WM_NCLBUTTONDOWN message. Called from DefWindowProc(). * Handle a WM_NCLBUTTONDOWN message. Called from DefWindowProc().
*/ */
LONG NC_HandleNCLButtonDown( HWND hwnd, WPARAM16 wParam, LPARAM lParam ) LONG NC_HandleNCLButtonDown( HWND32 hwnd, WPARAM16 wParam, LPARAM lParam )
{ {
HDC32 hdc; HDC32 hdc;
@ -1370,7 +1370,7 @@ LONG NC_HandleNCLButtonDblClk( WND *pWnd, WPARAM16 wParam, LPARAM lParam )
* *
* Handle a WM_SYSCOMMAND message. Called from DefWindowProc(). * Handle a WM_SYSCOMMAND message. Called from DefWindowProc().
*/ */
LONG NC_HandleSysCommand( HWND hwnd, WPARAM16 wParam, POINT16 pt ) LONG NC_HandleSysCommand( HWND32 hwnd, WPARAM16 wParam, POINT16 pt )
{ {
WND *wndPtr = WIN_FindWndPtr( hwnd ); WND *wndPtr = WIN_FindWndPtr( hwnd );
POINT32 pt32; POINT32 pt32;

View File

@ -41,29 +41,30 @@ void WIN_UpdateNCArea(WND* wnd, BOOL bUpdate)
{ {
ClientToScreen16(wnd->hwndSelf, &pt); ClientToScreen16(wnd->hwndSelf, &pt);
hClip = CreateRectRgn( 0, 0, 0, 0 ); hClip = CreateRectRgn32( 0, 0, 0, 0 );
if (!CombineRgn(hClip, wnd->hrgnUpdate, 0, RGN_COPY) ) if (!CombineRgn32( hClip, wnd->hrgnUpdate, 0, RGN_COPY ))
{ {
DeleteObject(hClip); DeleteObject32(hClip);
hClip = 1; hClip = 1;
} }
else else
OffsetRgn(hClip, pt.x, pt.y); OffsetRgn32( hClip, pt.x, pt.y );
if (bUpdate) if (bUpdate)
{ {
/* exclude non-client area from update region */ /* exclude non-client area from update region */
HRGN32 hrgn = CreateRectRgn(0, 0, wnd->rectClient.right - wnd->rectClient.left, HRGN32 hrgn = CreateRectRgn32( 0, 0,
wnd->rectClient.bottom - wnd->rectClient.top); wnd->rectClient.right - wnd->rectClient.left,
wnd->rectClient.bottom - wnd->rectClient.top);
if (hrgn && (CombineRgn(wnd->hrgnUpdate, wnd->hrgnUpdate, if (hrgn && (CombineRgn32( wnd->hrgnUpdate, wnd->hrgnUpdate,
hrgn, RGN_AND) == NULLREGION)) hrgn, RGN_AND) == NULLREGION))
{ {
DeleteObject(wnd->hrgnUpdate); DeleteObject32( wnd->hrgnUpdate );
wnd->hrgnUpdate = 1; wnd->hrgnUpdate = 1;
} }
DeleteObject( hrgn ); DeleteObject32( hrgn );
} }
} }
@ -73,13 +74,13 @@ void WIN_UpdateNCArea(WND* wnd, BOOL bUpdate)
!(wnd->flags & WIN_NCACTIVATED)) !(wnd->flags & WIN_NCACTIVATED))
{ {
wnd->flags |= WIN_NCACTIVATED; wnd->flags |= WIN_NCACTIVATED;
if( hClip > 1) DeleteObject(hClip); if( hClip > 1) DeleteObject32( hClip );
hClip = 1; hClip = 1;
} }
if (hClip) SendMessage16( wnd->hwndSelf, WM_NCPAINT, hClip, 0L ); if (hClip) SendMessage16( wnd->hwndSelf, WM_NCPAINT, hClip, 0L );
if (hClip > 1) DeleteObject( hClip ); if (hClip > 1) DeleteObject32( hClip );
} }
@ -280,8 +281,9 @@ BOOL32 PAINT_RedrawWindow( HWND32 hwnd, const RECT32 *rectUpdate,
if ((hrgn = hrgnUpdate) == 0) if ((hrgn = hrgnUpdate) == 0)
hrgn = CreateRectRgnIndirect32( rectUpdate ? rectUpdate : hrgn = CreateRectRgnIndirect32( rectUpdate ? rectUpdate :
&rectClient ); &rectClient );
rgnNotEmpty = CombineRgn( wndPtr->hrgnUpdate, wndPtr->hrgnUpdate, hrgn, RGN_OR ); rgnNotEmpty = CombineRgn32( wndPtr->hrgnUpdate, wndPtr->hrgnUpdate,
if (!hrgnUpdate) DeleteObject( hrgn ); hrgn, RGN_OR );
if (!hrgnUpdate) DeleteObject32( hrgn );
} }
else /* No update region yet */ else /* No update region yet */
{ {
@ -289,8 +291,9 @@ BOOL32 PAINT_RedrawWindow( HWND32 hwnd, const RECT32 *rectUpdate,
QUEUE_IncPaintCount( wndPtr->hmemTaskQ ); QUEUE_IncPaintCount( wndPtr->hmemTaskQ );
if (hrgnUpdate) if (hrgnUpdate)
{ {
wndPtr->hrgnUpdate = CreateRectRgn( 0, 0, 0, 0 ); wndPtr->hrgnUpdate = CreateRectRgn32( 0, 0, 0, 0 );
rgnNotEmpty = CombineRgn( wndPtr->hrgnUpdate, hrgnUpdate, 0, RGN_COPY ); rgnNotEmpty = CombineRgn32( wndPtr->hrgnUpdate, hrgnUpdate,
0, RGN_COPY );
} }
else wndPtr->hrgnUpdate = CreateRectRgnIndirect32( rectUpdate ? else wndPtr->hrgnUpdate = CreateRectRgnIndirect32( rectUpdate ?
rectUpdate : &rectClient ); rectUpdate : &rectClient );
@ -302,7 +305,7 @@ BOOL32 PAINT_RedrawWindow( HWND32 hwnd, const RECT32 *rectUpdate,
if ( rgnNotEmpty == NULLREGION ) if ( rgnNotEmpty == NULLREGION )
{ {
wndPtr->flags &= ~WIN_NEEDS_ERASEBKGND; wndPtr->flags &= ~WIN_NEEDS_ERASEBKGND;
DeleteObject(wndPtr->hrgnUpdate); DeleteObject32( wndPtr->hrgnUpdate );
wndPtr->hrgnUpdate=0; wndPtr->hrgnUpdate=0;
if (!(wndPtr->flags & WIN_INTERNAL_PAINT)) if (!(wndPtr->flags & WIN_INTERNAL_PAINT))
QUEUE_DecPaintCount( wndPtr->hmemTaskQ ); QUEUE_DecPaintCount( wndPtr->hmemTaskQ );
@ -319,20 +322,20 @@ BOOL32 PAINT_RedrawWindow( HWND32 hwnd, const RECT32 *rectUpdate,
if (!hrgnUpdate && !rectUpdate) if (!hrgnUpdate && !rectUpdate)
{ {
/* Special case: validate everything */ /* Special case: validate everything */
DeleteObject( wndPtr->hrgnUpdate ); DeleteObject32( wndPtr->hrgnUpdate );
wndPtr->hrgnUpdate = 0; wndPtr->hrgnUpdate = 0;
} }
else else
{ {
if ((hrgn = hrgnUpdate) == 0) if ((hrgn = hrgnUpdate) == 0)
hrgn = CreateRectRgnIndirect32( rectUpdate ); hrgn = CreateRectRgnIndirect32( rectUpdate );
if (CombineRgn( wndPtr->hrgnUpdate, wndPtr->hrgnUpdate, if (CombineRgn32( wndPtr->hrgnUpdate, wndPtr->hrgnUpdate,
hrgn, RGN_DIFF ) == NULLREGION) hrgn, RGN_DIFF ) == NULLREGION)
{ {
DeleteObject( wndPtr->hrgnUpdate ); DeleteObject32( wndPtr->hrgnUpdate );
wndPtr->hrgnUpdate = 0; wndPtr->hrgnUpdate = 0;
} }
if (!hrgnUpdate) DeleteObject( hrgn ); if (!hrgnUpdate) DeleteObject32( hrgn );
} }
if (!wndPtr->hrgnUpdate) /* No more update region */ if (!wndPtr->hrgnUpdate) /* No more update region */
if (!(wndPtr->flags & WIN_INTERNAL_PAINT)) if (!(wndPtr->flags & WIN_INTERNAL_PAINT))
@ -394,13 +397,13 @@ BOOL32 PAINT_RedrawWindow( HWND32 hwnd, const RECT32 *rectUpdate,
{ {
if ( hrgnUpdate || rectUpdate ) if ( hrgnUpdate || rectUpdate )
{ {
if( !(hrgn = CreateRectRgn( 0, 0, 0, 0 )) ) return TRUE; if (!(hrgn = CreateRectRgn32( 0, 0, 0, 0 ))) return TRUE;
if( !hrgnUpdate ) if( !hrgnUpdate )
{ {
control |= (RDW_C_DELETEHRGN | RDW_C_USEHRGN); control |= (RDW_C_DELETEHRGN | RDW_C_USEHRGN);
if( !(hrgnUpdate = CreateRectRgnIndirect32( rectUpdate )) ) if( !(hrgnUpdate = CreateRectRgnIndirect32( rectUpdate )) )
{ {
DeleteObject( hrgn ); DeleteObject32( hrgn );
return TRUE; return TRUE;
} }
} }
@ -409,7 +412,7 @@ BOOL32 PAINT_RedrawWindow( HWND32 hwnd, const RECT32 *rectUpdate,
{ {
if (wndPtr->class->style & CS_PARENTDC) if (wndPtr->class->style & CS_PARENTDC)
{ {
if (!CombineRgn( hrgn, hrgnUpdate, 0, RGN_COPY )) if (!CombineRgn32( hrgn, hrgnUpdate, 0, RGN_COPY ))
continue; continue;
} }
else else
@ -417,22 +420,16 @@ BOOL32 PAINT_RedrawWindow( HWND32 hwnd, const RECT32 *rectUpdate,
SetRectRgn( hrgn, wndPtr->rectWindow.left, SetRectRgn( hrgn, wndPtr->rectWindow.left,
wndPtr->rectWindow.top, wndPtr->rectWindow.top,
wndPtr->rectWindow.right, wndPtr->rectWindow.right,
wndPtr->rectWindow.bottom); wndPtr->rectWindow.bottom );
if (!CombineRgn( hrgn, hrgn, hrgnUpdate, RGN_AND )) if (!CombineRgn32( hrgn, hrgn, hrgnUpdate, RGN_AND ))
continue; continue;
} }
#if 0 OffsetRgn32( hrgn, -wndPtr->rectClient.left,
if( control & RDW_C_USEHRGN && -wndPtr->rectClient.top );
wndPtr->dwStyle & WS_CLIPSIBLINGS )
CombineRgn( hrgnUpdate, hrgnUpdate, hrgn, RGN_DIFF );
#endif
OffsetRgn( hrgn, -wndPtr->rectClient.left,
-wndPtr->rectClient.top );
PAINT_RedrawWindow( wndPtr->hwndSelf, NULL, hrgn, flags, RDW_C_USEHRGN ); PAINT_RedrawWindow( wndPtr->hwndSelf, NULL, hrgn, flags, RDW_C_USEHRGN );
} }
DeleteObject( hrgn ); DeleteObject32( hrgn );
if( control & RDW_C_DELETEHRGN ) DeleteObject( hrgnUpdate ); if (control & RDW_C_DELETEHRGN) DeleteObject32( hrgnUpdate );
} }
else for (wndPtr = wndPtr->child; wndPtr; wndPtr = wndPtr->next) else for (wndPtr = wndPtr->child; wndPtr; wndPtr = wndPtr->next)
PAINT_RedrawWindow( wndPtr->hwndSelf, NULL, 0, flags, 0 ); PAINT_RedrawWindow( wndPtr->hwndSelf, NULL, 0, flags, 0 );
@ -564,10 +561,10 @@ BOOL32 GetUpdateRect32( HWND32 hwnd, LPRECT32 rect, BOOL32 erase )
{ {
if (wndPtr->hrgnUpdate > 1) if (wndPtr->hrgnUpdate > 1)
{ {
HRGN32 hrgn = CreateRectRgn( 0, 0, 0, 0 ); HRGN32 hrgn = CreateRectRgn32( 0, 0, 0, 0 );
if (GetUpdateRgn( hwnd, hrgn, erase ) == ERROR) return FALSE; if (GetUpdateRgn( hwnd, hrgn, erase ) == ERROR) return FALSE;
GetRgnBox32( hrgn, rect ); GetRgnBox32( hrgn, rect );
DeleteObject( hrgn ); DeleteObject32( hrgn );
} }
else SetRectEmpty32( rect ); else SetRectEmpty32( rect );
} }
@ -580,7 +577,7 @@ BOOL32 GetUpdateRect32( HWND32 hwnd, LPRECT32 rect, BOOL32 erase )
*/ */
INT16 GetUpdateRgn( HWND32 hwnd, HRGN32 hrgn, BOOL32 erase ) INT16 GetUpdateRgn( HWND32 hwnd, HRGN32 hrgn, BOOL32 erase )
{ {
INT16 retval; INT32 retval;
WND * wndPtr = WIN_FindWndPtr( hwnd ); WND * wndPtr = WIN_FindWndPtr( hwnd );
if (!wndPtr) return ERROR; if (!wndPtr) return ERROR;
@ -589,7 +586,7 @@ INT16 GetUpdateRgn( HWND32 hwnd, HRGN32 hrgn, BOOL32 erase )
SetRectRgn( hrgn, 0, 0, 0, 0 ); SetRectRgn( hrgn, 0, 0, 0, 0 );
return NULLREGION; return NULLREGION;
} }
retval = CombineRgn( hrgn, wndPtr->hrgnUpdate, 0, RGN_COPY ); retval = CombineRgn32( hrgn, wndPtr->hrgnUpdate, 0, RGN_COPY );
if (erase) RedrawWindow32( hwnd, NULL, 0, RDW_ERASENOW | RDW_NOCHILDREN ); if (erase) RedrawWindow32( hwnd, NULL, 0, RDW_ERASENOW | RDW_NOCHILDREN );
return retval; return retval;
} }
@ -600,18 +597,18 @@ INT16 GetUpdateRgn( HWND32 hwnd, HRGN32 hrgn, BOOL32 erase )
*/ */
INT16 ExcludeUpdateRgn( HDC32 hdc, HWND32 hwnd ) INT16 ExcludeUpdateRgn( HDC32 hdc, HWND32 hwnd )
{ {
INT16 retval = ERROR; INT32 retval = ERROR;
HRGN32 hrgn; HRGN32 hrgn;
WND * wndPtr; WND * wndPtr;
if (!(wndPtr = WIN_FindWndPtr( hwnd ))) return ERROR; if (!(wndPtr = WIN_FindWndPtr( hwnd ))) return ERROR;
if ((hrgn = CreateRectRgn( 0, 0, 0, 0 )) != 0) if ((hrgn = CreateRectRgn32( 0, 0, 0, 0 )) != 0)
{ {
retval = CombineRgn( hrgn, InquireVisRgn(hdc), retval = CombineRgn32( hrgn, InquireVisRgn(hdc),
(wndPtr->hrgnUpdate>1)?wndPtr->hrgnUpdate:0, (wndPtr->hrgnUpdate>1) ? wndPtr->hrgnUpdate : 0,
(wndPtr->hrgnUpdate>1)?RGN_DIFF:RGN_COPY); (wndPtr->hrgnUpdate>1) ? RGN_DIFF : RGN_COPY );
if (retval) SelectVisRgn( hdc, hrgn ); if (retval) SelectVisRgn( hdc, hrgn );
DeleteObject( hrgn ); DeleteObject32( hrgn );
} }
return retval; return retval;
} }

View File

@ -53,7 +53,7 @@ void ScrollWindow(HWND hwnd, short dx, short dy, LPRECT16 rect, LPRECT16 clipRec
else hCaretWnd = 0; else hCaretWnd = 0;
hdc = GetDCEx32(hwnd, hrgnClip, DCX_CACHE | DCX_CLIPSIBLINGS); hdc = GetDCEx32(hwnd, hrgnClip, DCX_CACHE | DCX_CLIPSIBLINGS);
DeleteObject(hrgnClip); DeleteObject32( hrgnClip );
} }
else /* clip children */ else /* clip children */
{ {
@ -71,7 +71,7 @@ void ScrollWindow(HWND hwnd, short dx, short dy, LPRECT16 rect, LPRECT16 clipRec
else else
CopyRect16(&cliprc, clipRect); CopyRect16(&cliprc, clipRect);
hrgnUpdate = CreateRectRgn(0, 0, 0, 0); hrgnUpdate = CreateRectRgn32( 0, 0, 0, 0 );
ScrollDC(hdc, dx, dy, &rc, &cliprc, hrgnUpdate, NULL); ScrollDC(hdc, dx, dy, &rc, &cliprc, hrgnUpdate, NULL);
ReleaseDC32(hwnd, hdc); ReleaseDC32(hwnd, hdc);
@ -80,7 +80,7 @@ void ScrollWindow(HWND hwnd, short dx, short dy, LPRECT16 rect, LPRECT16 clipRec
WND* wndPtr; WND* wndPtr;
if( wndScroll->hrgnUpdate > 1 ) if( wndScroll->hrgnUpdate > 1 )
OffsetRgn( wndScroll->hrgnUpdate, dx, dy ); OffsetRgn32( wndScroll->hrgnUpdate, dx, dy );
for (wndPtr = wndScroll->child; wndPtr; wndPtr = wndPtr->next) for (wndPtr = wndScroll->child; wndPtr; wndPtr = wndPtr->next)
SetWindowPos(wndPtr->hwndSelf, 0, wndPtr->rectWindow.left + dx, SetWindowPos(wndPtr->hwndSelf, 0, wndPtr->rectWindow.left + dx,
@ -92,7 +92,7 @@ void ScrollWindow(HWND hwnd, short dx, short dy, LPRECT16 rect, LPRECT16 clipRec
PAINT_RedrawWindow( hwnd, NULL, hrgnUpdate, RDW_ALLCHILDREN | PAINT_RedrawWindow( hwnd, NULL, hrgnUpdate, RDW_ALLCHILDREN |
RDW_INVALIDATE | RDW_ERASE | RDW_ERASENOW, RDW_C_USEHRGN ); RDW_INVALIDATE | RDW_ERASE | RDW_ERASENOW, RDW_C_USEHRGN );
DeleteObject(hrgnUpdate); DeleteObject32( hrgnUpdate );
if( hCaretWnd ) ShowCaret(hCaretWnd); if( hCaretWnd ) ShowCaret(hCaretWnd);
} }
@ -135,13 +135,14 @@ BOOL ScrollDC(HDC16 hdc, short dx, short dy, LPRECT16 rc, LPRECT16 cliprc,
{ {
/* save a copy and change cliprgn directly */ /* save a copy and change cliprgn directly */
CombineRgn( hrgnScrollClip, hrgnClip, 0, RGN_COPY ); CombineRgn32( hrgnScrollClip, hrgnClip, 0, RGN_COPY );
SetRectRgn( hrgnClip, rectClip.left, rectClip.top, rectClip.right, rectClip.bottom ); SetRectRgn( hrgnClip, rectClip.left, rectClip.top,
rectClip.right, rectClip.bottom );
CLIPPING_UpdateGCRegion( dc ); CLIPPING_UpdateGCRegion( dc );
} }
else else
SelectClipRgn( hdc, hrgnScrollClip ); SelectClipRgn16( hdc, hrgnScrollClip );
/* translate coordinates */ /* translate coordinates */
@ -179,15 +180,18 @@ BOOL ScrollDC(HDC16 hdc, short dx, short dy, LPRECT16 rc, LPRECT16 cliprc,
if (hrgnUpdate || rcUpdate) if (hrgnUpdate || rcUpdate)
{ {
HRGN32 hrgn1 = (hrgnUpdate)?hrgnUpdate:CreateRectRgn( 0,0,0,0 ); HRGN32 hrgn1 = (hrgnUpdate) ? hrgnUpdate : CreateRectRgn32( 0,0,0,0 );
if( dc->w.hVisRgn ) if( dc->w.hVisRgn )
{ {
CombineRgn( hrgn1, dc->w.hVisRgn, 0, RGN_COPY); CombineRgn32( hrgn1, dc->w.hVisRgn, 0, RGN_COPY );
CombineRgn( hrgn1, hrgn1, (hrgnClip)?hrgnClip:hrgnScrollClip, RGN_AND); CombineRgn32( hrgn1, hrgn1, hrgnClip ? hrgnClip : hrgnScrollClip,
OffsetRgn( hrgn1, dx, dy ); RGN_AND );
CombineRgn( hrgn1, dc->w.hVisRgn, hrgn1, RGN_DIFF); OffsetRgn32( hrgn1, dx, dy );
RgnType = CombineRgn( hrgn1, hrgn1, (hrgnClip)?hrgnClip:hrgnScrollClip, RGN_AND); CombineRgn32( hrgn1, dc->w.hVisRgn, hrgn1, RGN_DIFF );
RgnType = CombineRgn32( hrgn1, hrgn1,
hrgnClip ? hrgnClip : hrgnScrollClip,
RGN_AND );
} }
else else
{ {
@ -208,13 +212,13 @@ BOOL ScrollDC(HDC16 hdc, short dx, short dy, LPRECT16 rc, LPRECT16 cliprc,
} }
if (rcUpdate) GetRgnBox16( hrgn1, rcUpdate ); if (rcUpdate) GetRgnBox16( hrgn1, rcUpdate );
if (!hrgnUpdate) DeleteObject( hrgn1 ); if (!hrgnUpdate) DeleteObject32( hrgn1 );
} }
/* restore clipping region */ /* restore clipping region */
SelectClipRgn( hdc, (hrgnClip)?hrgnScrollClip:0 ); SelectClipRgn32( hdc, hrgnClip ? hrgnScrollClip : 0 );
DeleteObject( hrgnScrollClip ); DeleteObject32( hrgnScrollClip );
return TRUE; return TRUE;
} }

View File

@ -57,70 +57,70 @@ static void SYSCOLOR_SetColor( int index, COLORREF color )
switch(index) switch(index)
{ {
case COLOR_SCROLLBAR: case COLOR_SCROLLBAR:
DeleteObject( sysColorObjects.hbrushScrollbar ); DeleteObject32( sysColorObjects.hbrushScrollbar );
sysColorObjects.hbrushScrollbar = CreateSolidBrush( color ); sysColorObjects.hbrushScrollbar = CreateSolidBrush32( color );
break; break;
case COLOR_BACKGROUND: case COLOR_BACKGROUND:
break; break;
case COLOR_ACTIVECAPTION: case COLOR_ACTIVECAPTION:
DeleteObject( sysColorObjects.hbrushActiveCaption ); DeleteObject32( sysColorObjects.hbrushActiveCaption );
sysColorObjects.hbrushActiveCaption = CreateSolidBrush( color ); sysColorObjects.hbrushActiveCaption = CreateSolidBrush32( color );
break; break;
case COLOR_INACTIVECAPTION: case COLOR_INACTIVECAPTION:
DeleteObject( sysColorObjects.hbrushInactiveCaption ); DeleteObject32( sysColorObjects.hbrushInactiveCaption );
sysColorObjects.hbrushInactiveCaption = CreateSolidBrush( color ); sysColorObjects.hbrushInactiveCaption = CreateSolidBrush32( color );
break; break;
case COLOR_MENU: case COLOR_MENU:
DeleteObject( sysColorObjects.hbrushMenu ); DeleteObject32( sysColorObjects.hbrushMenu );
sysColorObjects.hbrushMenu = CreateSolidBrush( MAKE_SOLID(color) ); sysColorObjects.hbrushMenu = CreateSolidBrush32( MAKE_SOLID(color) );
break; break;
case COLOR_WINDOW: case COLOR_WINDOW:
DeleteObject( sysColorObjects.hbrushWindow ); DeleteObject32( sysColorObjects.hbrushWindow );
sysColorObjects.hbrushWindow = CreateSolidBrush( color ); sysColorObjects.hbrushWindow = CreateSolidBrush32( color );
break; break;
case COLOR_WINDOWFRAME: case COLOR_WINDOWFRAME:
DeleteObject( sysColorObjects.hpenWindowFrame ); DeleteObject32( sysColorObjects.hpenWindowFrame );
sysColorObjects.hpenWindowFrame = CreatePen( PS_SOLID, 1, color ); sysColorObjects.hpenWindowFrame = CreatePen32( PS_SOLID, 1, color );
break; break;
case COLOR_MENUTEXT: case COLOR_MENUTEXT:
break; break;
case COLOR_WINDOWTEXT: case COLOR_WINDOWTEXT:
DeleteObject( sysColorObjects.hpenWindowText ); DeleteObject32( sysColorObjects.hpenWindowText );
sysColorObjects.hpenWindowText = CreatePen( PS_DOT, 1, color ); sysColorObjects.hpenWindowText = CreatePen32( PS_DOT, 1, color );
break; break;
case COLOR_CAPTIONTEXT: case COLOR_CAPTIONTEXT:
break; break;
case COLOR_ACTIVEBORDER: case COLOR_ACTIVEBORDER:
DeleteObject( sysColorObjects.hbrushActiveBorder ); DeleteObject32( sysColorObjects.hbrushActiveBorder );
sysColorObjects.hbrushActiveBorder = CreateSolidBrush( color ); sysColorObjects.hbrushActiveBorder = CreateSolidBrush32( color );
break; break;
case COLOR_INACTIVEBORDER: case COLOR_INACTIVEBORDER:
DeleteObject( sysColorObjects.hbrushInactiveBorder ); DeleteObject32( sysColorObjects.hbrushInactiveBorder );
sysColorObjects.hbrushInactiveBorder = CreateSolidBrush( color ); sysColorObjects.hbrushInactiveBorder = CreateSolidBrush32( color );
break; break;
case COLOR_APPWORKSPACE: case COLOR_APPWORKSPACE:
break; break;
case COLOR_HIGHLIGHT: case COLOR_HIGHLIGHT:
DeleteObject( sysColorObjects.hbrushHighlight ); DeleteObject32( sysColorObjects.hbrushHighlight );
sysColorObjects.hbrushHighlight = CreateSolidBrush( MAKE_SOLID(color)); sysColorObjects.hbrushHighlight = CreateSolidBrush32(MAKE_SOLID(color));
break; break;
case COLOR_HIGHLIGHTTEXT: case COLOR_HIGHLIGHTTEXT:
break; break;
case COLOR_BTNFACE: case COLOR_BTNFACE:
DeleteObject( sysColorObjects.hbrushBtnFace ); DeleteObject32( sysColorObjects.hbrushBtnFace );
sysColorObjects.hbrushBtnFace = CreateSolidBrush( color ); sysColorObjects.hbrushBtnFace = CreateSolidBrush32( color );
break; break;
case COLOR_BTNSHADOW: case COLOR_BTNSHADOW:
DeleteObject( sysColorObjects.hbrushBtnShadow ); DeleteObject32( sysColorObjects.hbrushBtnShadow );
sysColorObjects.hbrushBtnShadow = CreateSolidBrush( color ); sysColorObjects.hbrushBtnShadow = CreateSolidBrush32( color );
break; break;
case COLOR_GRAYTEXT: case COLOR_GRAYTEXT:
case COLOR_BTNTEXT: case COLOR_BTNTEXT:
case COLOR_INACTIVECAPTIONTEXT: case COLOR_INACTIVECAPTIONTEXT:
break; break;
case COLOR_BTNHIGHLIGHT: case COLOR_BTNHIGHLIGHT:
DeleteObject( sysColorObjects.hbrushBtnHighlight ); DeleteObject32( sysColorObjects.hbrushBtnHighlight );
sysColorObjects.hbrushBtnHighlight = CreateSolidBrush( color ); sysColorObjects.hbrushBtnHighlight = CreateSolidBrush32( color );
break; break;
} }
} }

View File

@ -342,7 +342,7 @@ static void WIN_DestroyWindow( WND* wndPtr )
if ((wndPtr->hrgnUpdate) || (wndPtr->flags & WIN_INTERNAL_PAINT)) if ((wndPtr->hrgnUpdate) || (wndPtr->flags & WIN_INTERNAL_PAINT))
{ {
if (wndPtr->hrgnUpdate) DeleteObject( wndPtr->hrgnUpdate ); if (wndPtr->hrgnUpdate) DeleteObject32( wndPtr->hrgnUpdate );
QUEUE_DecPaintCount( wndPtr->hmemTaskQ ); QUEUE_DecPaintCount( wndPtr->hmemTaskQ );
} }
@ -637,7 +637,7 @@ static HWND WIN_CreateWindowEx( CREATESTRUCT32A *cs, ATOM classAtom,
if ((cs->style & WS_THICKFRAME) || !(cs->style & (WS_POPUP | WS_CHILD))) if ((cs->style & WS_THICKFRAME) || !(cs->style & (WS_POPUP | WS_CHILD)))
{ {
NC_GetMinMaxInfo( hwnd, &maxSize, &maxPos, &minTrack, &maxTrack ); NC_GetMinMaxInfo( wndPtr, &maxSize, &maxPos, &minTrack, &maxTrack );
if (maxSize.x < cs->cx) cs->cx = maxSize.x; if (maxSize.x < cs->cx) cs->cx = maxSize.x;
if (maxSize.y < cs->cy) cs->cy = maxSize.y; if (maxSize.y < cs->cy) cs->cy = maxSize.y;
if (cs->cx < minTrack.x ) cs->cx = minTrack.x; if (cs->cx < minTrack.x ) cs->cx = minTrack.x;
@ -802,7 +802,7 @@ static HWND WIN_CreateWindowEx( CREATESTRUCT32A *cs, ATOM classAtom,
/* MinMaximize(hwnd, SW_SHOWMAXIMIZED, 1) */ /* MinMaximize(hwnd, SW_SHOWMAXIMIZED, 1) */
POINT16 maxSize, maxPos, minTrack, maxTrack; POINT16 maxSize, maxPos, minTrack, maxTrack;
NC_GetMinMaxInfo( hwnd, &maxSize, &maxPos, &minTrack, &maxTrack ); NC_GetMinMaxInfo( wndPtr, &maxSize, &maxPos, &minTrack, &maxTrack );
SetWindowPos( hwnd, 0, maxPos.x, maxPos.y, maxSize.x, maxSize.y, SetWindowPos( hwnd, 0, maxPos.x, maxPos.y, maxSize.x, maxSize.y,
((GetActiveWindow())? SWP_NOACTIVATE : 0) | SWP_FRAMECHANGED ); ((GetActiveWindow())? SWP_NOACTIVATE : 0) | SWP_FRAMECHANGED );
} }

View File

@ -621,7 +621,7 @@ BOOL ShowWindow( HWND hwnd, int cmd )
if (!(wndPtr->dwStyle & WS_MINIMIZE)) if (!(wndPtr->dwStyle & WS_MINIMIZE))
wndPtr->rectNormal = wndPtr->rectWindow; wndPtr->rectNormal = wndPtr->rectWindow;
NC_GetMinMaxInfo( hwnd, &maxSize, NC_GetMinMaxInfo( wndPtr, &maxSize,
&wndPtr->ptMaxPos, NULL, NULL ); &wndPtr->ptMaxPos, NULL, NULL );
x = wndPtr->ptMaxPos.x; x = wndPtr->ptMaxPos.x;
y = wndPtr->ptMaxPos.y; y = wndPtr->ptMaxPos.y;
@ -674,7 +674,7 @@ BOOL ShowWindow( HWND hwnd, int cmd )
if (wndPtr->flags & WIN_RESTORE_MAX) if (wndPtr->flags & WIN_RESTORE_MAX)
{ {
/* Restore to maximized position */ /* Restore to maximized position */
NC_GetMinMaxInfo( hwnd, &maxSize, &wndPtr->ptMaxPos, NC_GetMinMaxInfo( wndPtr, &maxSize, &wndPtr->ptMaxPos,
NULL, NULL ); NULL, NULL );
x = wndPtr->ptMaxPos.x; x = wndPtr->ptMaxPos.x;
y = wndPtr->ptMaxPos.y; y = wndPtr->ptMaxPos.y;
@ -891,44 +891,35 @@ BOOL32 SetWindowPlacement32( HWND32 hwnd, const WINDOWPLACEMENT32 *wndpl )
return TRUE; return TRUE;
} }
/*********************************************************************** /***********************************************************************
* WINPOS_ForceXWindowRaise * WINPOS_ForceXWindowRaise
*
* Raise a window on top of the X stacking order, while preserving
* the correct Windows Z order.
*/ */
void WINPOS_ForceXWindowRaise( WND* pWnd ) static void WINPOS_ForceXWindowRaise( WND* pWnd )
{ {
XWindowChanges winChanges; XWindowChanges winChanges;
WND *wndStop, *wndLast; WND *wndPrev;
if (!pWnd->window) return; /* Raise all windows up to pWnd according to their Z order.
wndLast = wndStop = pWnd;
winChanges.stack_mode = Above;
XReconfigureWMWindow( display, pWnd->window, 0, CWStackMode, &winChanges );
/* Recursively raise owned popups according to their z-order
* (it would be easier with sibling-related Below but it doesn't * (it would be easier with sibling-related Below but it doesn't
* work very well with SGI mwm for instance) * work very well with SGI mwm for instance)
*/ */
while (wndLast) winChanges.stack_mode = Above;
while (pWnd)
{ {
WND *wnd = WIN_GetDesktop()->child; if (pWnd->window) XReconfigureWMWindow( display, pWnd->window, 0,
wndLast = NULL; CWStackMode, &winChanges );
while (wnd != wndStop) wndPrev = WIN_GetDesktop()->child;
{ if (wndPrev == pWnd) break;
if (wnd->owner == pWnd && while (wndPrev && (wndPrev->next != pWnd)) wndPrev = wndPrev->next;
(wnd->dwStyle & WS_POPUP) && pWnd = wndPrev;
(wnd->dwStyle & WS_VISIBLE))
wndLast = wnd;
wnd = wnd->next;
}
if (wndLast)
{
WINPOS_ForceXWindowRaise( wndLast );
wndStop = wndLast;
}
} }
} }
/******************************************************************* /*******************************************************************
* WINPOS_SetActiveWindow * WINPOS_SetActiveWindow
* *
@ -1199,9 +1190,9 @@ LONG WINPOS_SendNCCalcSize( HWND32 hwnd, BOOL32 calcValidRect,
} }
result = SendMessage16( hwnd, WM_NCCALCSIZE, calcValidRect, result = SendMessage16( hwnd, WM_NCCALCSIZE, calcValidRect,
(LPARAM)SEGPTR_GET( params ) ); (LPARAM)SEGPTR_GET( params ) );
dprintf_win(stddeb, "WINPOS_SendNCCalcSize: %d %d %d %d\n", dprintf_win( stddeb, "WINPOS_SendNCCalcSize: %d,%d-%d,%d\n",
(int)params->rgrc[0].top, (int)params->rgrc[0].left, params->rgrc[0].left, params->rgrc[0].top,
(int)params->rgrc[0].bottom, (int)params->rgrc[0].right); params->rgrc[0].right, params->rgrc[0].bottom );
*newClientRect = params->rgrc[0]; *newClientRect = params->rgrc[0];
SEGPTR_FREE(params); SEGPTR_FREE(params);
return result; return result;
@ -1220,7 +1211,7 @@ LONG WINPOS_HandleWindowPosChanging16( WND *wndPtr, WINDOWPOS16 *winpos )
if ((wndPtr->dwStyle & WS_THICKFRAME) || if ((wndPtr->dwStyle & WS_THICKFRAME) ||
((wndPtr->dwStyle & (WS_POPUP | WS_CHILD)) == 0)) ((wndPtr->dwStyle & (WS_POPUP | WS_CHILD)) == 0))
{ {
NC_GetMinMaxInfo( winpos->hwnd, &maxSize, NULL, NULL, NULL ); NC_GetMinMaxInfo( wndPtr, &maxSize, NULL, NULL, NULL );
winpos->cx = MIN( winpos->cx, maxSize.x ); winpos->cx = MIN( winpos->cx, maxSize.x );
winpos->cy = MIN( winpos->cy, maxSize.y ); winpos->cy = MIN( winpos->cy, maxSize.y );
} }
@ -1240,7 +1231,7 @@ LONG WINPOS_HandleWindowPosChanging32( WND *wndPtr, WINDOWPOS32 *winpos )
if ((wndPtr->dwStyle & WS_THICKFRAME) || if ((wndPtr->dwStyle & WS_THICKFRAME) ||
((wndPtr->dwStyle & (WS_POPUP | WS_CHILD)) == 0)) ((wndPtr->dwStyle & (WS_POPUP | WS_CHILD)) == 0))
{ {
NC_GetMinMaxInfo( winpos->hwnd, &maxSize, NULL, NULL, NULL ); NC_GetMinMaxInfo( wndPtr, &maxSize, NULL, NULL, NULL );
winpos->cx = MIN( winpos->cx, maxSize.x ); winpos->cx = MIN( winpos->cx, maxSize.x );
winpos->cy = MIN( winpos->cy, maxSize.y ); winpos->cy = MIN( winpos->cy, maxSize.y );
} }
@ -1387,7 +1378,7 @@ HWND WINPOS_ReorderOwnedPopups(HWND hwndInsertAfter, WND* wndPtr, WORD flags)
static UINT WINPOS_SizeMoveClean(WND* Wnd, HRGN32 oldVisRgn, LPRECT16 lpOldWndRect, LPRECT16 lpOldClientRect, UINT uFlags ) static UINT WINPOS_SizeMoveClean(WND* Wnd, HRGN32 oldVisRgn, LPRECT16 lpOldWndRect, LPRECT16 lpOldClientRect, UINT uFlags )
{ {
HRGN32 newVisRgn = DCE_GetVisRgn(Wnd->hwndSelf,DCX_WINDOW | DCX_CLIPSIBLINGS); HRGN32 newVisRgn = DCE_GetVisRgn(Wnd->hwndSelf,DCX_WINDOW | DCX_CLIPSIBLINGS);
HRGN32 dirtyRgn = CreateRectRgn(0,0,0,0); HRGN32 dirtyRgn = CreateRectRgn32(0,0,0,0);
int other, my; int other, my;
dprintf_win(stddeb,"cleaning up...new wnd=(%i %i-%i %i) old wnd=(%i %i-%i %i)\n\ dprintf_win(stddeb,"cleaning up...new wnd=(%i %i-%i %i) old wnd=(%i %i-%i %i)\n\
@ -1401,29 +1392,30 @@ static UINT WINPOS_SizeMoveClean(WND* Wnd, HRGN32 oldVisRgn, LPRECT16 lpOldWndRe
(lpOldWndRect->bottom - lpOldWndRect->top) != (Wnd->rectWindow.bottom - Wnd->rectWindow.top) ) (lpOldWndRect->bottom - lpOldWndRect->top) != (Wnd->rectWindow.bottom - Wnd->rectWindow.top) )
uFlags |= SMC_DRAWFRAME; uFlags |= SMC_DRAWFRAME;
CombineRgn( dirtyRgn, newVisRgn, 0, RGN_COPY); CombineRgn32( dirtyRgn, newVisRgn, 0, RGN_COPY);
if( !(uFlags & SMC_NOCOPY) ) if( !(uFlags & SMC_NOCOPY) )
CombineRgn( newVisRgn, newVisRgn, oldVisRgn, RGN_AND ); CombineRgn32( newVisRgn, newVisRgn, oldVisRgn, RGN_AND );
/* map regions to the parent client area */ /* map regions to the parent client area */
OffsetRgn(dirtyRgn, Wnd->rectWindow.left, Wnd->rectWindow.top); OffsetRgn32( dirtyRgn, Wnd->rectWindow.left, Wnd->rectWindow.top );
OffsetRgn(oldVisRgn, lpOldWndRect->left, lpOldWndRect->top); OffsetRgn32( oldVisRgn, lpOldWndRect->left, lpOldWndRect->top );
/* compute invalidated region outside Wnd - (in client coordinates of the parent window) */ /* compute invalidated region outside Wnd - (in client coordinates of the parent window) */
other = CombineRgn(dirtyRgn, oldVisRgn, dirtyRgn, RGN_DIFF); other = CombineRgn32(dirtyRgn, oldVisRgn, dirtyRgn, RGN_DIFF);
/* map visible region to the Wnd client area */ /* map visible region to the Wnd client area */
OffsetRgn( newVisRgn, Wnd->rectWindow.left - Wnd->rectClient.left, OffsetRgn32( newVisRgn, Wnd->rectWindow.left - Wnd->rectClient.left,
Wnd->rectWindow.top - Wnd->rectClient.top ); Wnd->rectWindow.top - Wnd->rectClient.top );
/* substract previously invalidated region from the Wnd visible region */ /* substract previously invalidated region from the Wnd visible region */
my = (Wnd->hrgnUpdate > 1)? CombineRgn( newVisRgn, newVisRgn, Wnd->hrgnUpdate, RGN_DIFF) my = (Wnd->hrgnUpdate > 1) ? CombineRgn32( newVisRgn, newVisRgn,
: COMPLEXREGION; Wnd->hrgnUpdate, RGN_DIFF)
: COMPLEXREGION;
if( uFlags & SMC_NOCOPY ) /* invalidate Wnd visible region */ if( uFlags & SMC_NOCOPY ) /* invalidate Wnd visible region */
{ {
@ -1444,8 +1436,8 @@ static UINT WINPOS_SizeMoveClean(WND* Wnd, HRGN32 oldVisRgn, LPRECT16 lpOldWndRe
xfrom = lpOldClientRect->left; yfrom = lpOldClientRect->top; xfrom = lpOldClientRect->left; yfrom = lpOldClientRect->top;
xto = Wnd->rectClient.left; yto = Wnd->rectClient.top; xto = Wnd->rectClient.left; yto = Wnd->rectClient.top;
width = lpOldClientRect->right - xfrom; height = lpOldClientRect->bottom - yfrom; width = lpOldClientRect->right - xfrom; height = lpOldClientRect->bottom - yfrom;
updateRgn = CreateRectRgn( 0, 0, width, height ); updateRgn = CreateRectRgn32( 0, 0, width, height );
CombineRgn( newVisRgn, newVisRgn, updateRgn, RGN_AND ); CombineRgn32( newVisRgn, newVisRgn, updateRgn, RGN_AND );
SetRectRgn( updateRgn, 0, 0, Wnd->rectClient.right - xto, Wnd->rectClient.bottom - yto ); SetRectRgn( updateRgn, 0, 0, Wnd->rectClient.right - xto, Wnd->rectClient.bottom - yto );
} }
else else
@ -1453,17 +1445,17 @@ static UINT WINPOS_SizeMoveClean(WND* Wnd, HRGN32 oldVisRgn, LPRECT16 lpOldWndRe
xfrom = lpOldWndRect->left; yfrom = lpOldWndRect->top; xfrom = lpOldWndRect->left; yfrom = lpOldWndRect->top;
xto = Wnd->rectWindow.left; yto = Wnd->rectWindow.top; xto = Wnd->rectWindow.left; yto = Wnd->rectWindow.top;
width = lpOldWndRect->right - xfrom; height = lpOldWndRect->bottom - yfrom; width = lpOldWndRect->right - xfrom; height = lpOldWndRect->bottom - yfrom;
updateRgn = CreateRectRgn( xto - Wnd->rectClient.left, updateRgn = CreateRectRgn32( xto - Wnd->rectClient.left,
yto - Wnd->rectClient.top, yto - Wnd->rectClient.top,
Wnd->rectWindow.right - Wnd->rectClient.left, Wnd->rectWindow.right - Wnd->rectClient.left,
Wnd->rectWindow.bottom - Wnd->rectClient.top ); Wnd->rectWindow.bottom - Wnd->rectClient.top );
} }
CombineRgn( newVisRgn, newVisRgn, updateRgn, RGN_AND ); CombineRgn32( newVisRgn, newVisRgn, updateRgn, RGN_AND );
/* substract new visRgn from target rect to get a region that won't be copied */ /* substract new visRgn from target rect to get a region that won't be copied */
update = CombineRgn( updateRgn, updateRgn, newVisRgn, RGN_DIFF ); update = CombineRgn32( updateRgn, updateRgn, newVisRgn, RGN_DIFF );
/* Blt valid bits using parent window DC */ /* Blt valid bits using parent window DC */
@ -1472,8 +1464,8 @@ static UINT WINPOS_SizeMoveClean(WND* Wnd, HRGN32 oldVisRgn, LPRECT16 lpOldWndRe
/* compute clipping region in parent client coordinates */ /* compute clipping region in parent client coordinates */
OffsetRgn( newVisRgn, Wnd->rectClient.left, Wnd->rectClient.top); OffsetRgn32( newVisRgn, Wnd->rectClient.left, Wnd->rectClient.top );
CombineRgn( oldVisRgn, oldVisRgn, newVisRgn, RGN_OR ); CombineRgn32( oldVisRgn, oldVisRgn, newVisRgn, RGN_OR );
hDC = GetDCEx32( Wnd->parent->hwndSelf, oldVisRgn, hDC = GetDCEx32( Wnd->parent->hwndSelf, oldVisRgn,
DCX_KEEPCLIPRGN | DCX_INTERSECTRGN | DCX_KEEPCLIPRGN | DCX_INTERSECTRGN |
@ -1488,7 +1480,7 @@ static UINT WINPOS_SizeMoveClean(WND* Wnd, HRGN32 oldVisRgn, LPRECT16 lpOldWndRe
PAINT_RedrawWindow( Wnd->hwndSelf, NULL, updateRgn, RDW_INVALIDATE | PAINT_RedrawWindow( Wnd->hwndSelf, NULL, updateRgn, RDW_INVALIDATE |
RDW_FRAME | RDW_ALLCHILDREN | RDW_ERASE, RDW_C_USEHRGN ); RDW_FRAME | RDW_ALLCHILDREN | RDW_ERASE, RDW_C_USEHRGN );
else if( uFlags & SMC_DRAWFRAME ) Wnd->flags |= WIN_NEEDS_NCPAINT; else if( uFlags & SMC_DRAWFRAME ) Wnd->flags |= WIN_NEEDS_NCPAINT;
DeleteObject( updateRgn ); DeleteObject32( updateRgn );
} }
/* erase uncovered areas */ /* erase uncovered areas */
@ -1496,8 +1488,8 @@ static UINT WINPOS_SizeMoveClean(WND* Wnd, HRGN32 oldVisRgn, LPRECT16 lpOldWndRe
if( !(uFlags & SMC_NOPARENTERASE) && (other != NULLREGION ) ) if( !(uFlags & SMC_NOPARENTERASE) && (other != NULLREGION ) )
PAINT_RedrawWindow( Wnd->parent->hwndSelf, NULL, dirtyRgn, PAINT_RedrawWindow( Wnd->parent->hwndSelf, NULL, dirtyRgn,
RDW_INVALIDATE | RDW_ALLCHILDREN | RDW_ERASE, RDW_C_USEHRGN ); RDW_INVALIDATE | RDW_ALLCHILDREN | RDW_ERASE, RDW_C_USEHRGN );
DeleteObject(dirtyRgn); DeleteObject32(dirtyRgn);
DeleteObject(newVisRgn); DeleteObject32(newVisRgn);
return uFlags; return uFlags;
} }
@ -1835,7 +1827,7 @@ BOOL SetWindowPos( HWND hwnd, HWND hwndInsertAfter, INT x, INT y,
if( winpos->flags & SWP_NOZORDER ) uFlags |= SMC_NOPARENTERASE; if( winpos->flags & SWP_NOZORDER ) uFlags |= SMC_NOPARENTERASE;
} }
} }
DeleteObject(visRgn); DeleteObject32(visRgn);
} }
if (flags & SWP_SHOWWINDOW) if (flags & SWP_SHOWWINDOW)

View File

@ -1203,7 +1203,7 @@ void WINPROC_UnmapMsg32ATo16( UINT16 msg, WPARAM16 wParam, LPARAM lParam )
{ {
LPSTR str = (LPSTR)PTR_SEG_TO_LIN(lParam); LPSTR str = (LPSTR)PTR_SEG_TO_LIN(lParam);
lParam = *((LPARAM *)str - 1); lParam = *((LPARAM *)str - 1);
strcpy( (LPSTR)lParam, str ); lstrcpyn32A( (LPSTR)lParam, str, wParam );
SEGPTR_FREE( (LPARAM *)str - 1 ); SEGPTR_FREE( (LPARAM *)str - 1 );
} }
break; break;