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
features. Most applications still do not work correctly.
Patches should be submitted to "julliard@lrc.epfl.ch". Please don't
forget to include a ChangeLog entry.
WHAT'S NEW with Wine-961023: (see ChangeLog for details)
- Printer driver fixes.
- Faster make depend.
WHAT'S NEW with Wine-961102: (see ChangeLog for details)
- More Win32 functions.
- Lots of bug fixes.
See the README file in the distribution for installation instructions.
@ -16,10 +15,10 @@ Because of lags created by using mirror, this message may reach you before
the release is available at the ftp sites. The sources will be available
from the following locations:
ftp://sunsite.unc.edu/pub/Linux/ALPHA/wine/development/Wine-961023.tar.gz
ftp://tsx-11.mit.edu/pub/linux/ALPHA/Wine/development/Wine-961023.tar.gz
ftp://ftp.infomagic.com/pub/mirrors/linux/wine/development/Wine-961023.tar.gz
ftp://aris.com/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-961102.tar.gz
ftp://ftp.infomagic.com/pub/mirrors/linux/wine/development/Wine-961102.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.

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>

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:
# TOPSRCDIR : top-level source directory
@ -36,7 +36,7 @@ WINERC = $(TOPOBJDIR)/rc/winerc
SUBMAKE = $(MAKE) 'CC=$(CC)' 'CFLAGS=$(CFLAGS)' 'OPTIONS=$(OPTIONS)'
@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

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 )
{
RECT32 rc;
HPEN16 hOldPen;
HBRUSH16 hOldBrush;
HPEN32 hOldPen;
HBRUSH32 hOldBrush;
BUTTONINFO *infoPtr = (BUTTONINFO *)wndPtr->wExtra;
GetClientRect32( wndPtr->hwndSelf, &rc );
/* 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 );
hOldPen = (HPEN16)SelectObject(hDC, sysColorObjects.hpenWindowFrame);
hOldBrush = (HBRUSH16)SelectObject(hDC, sysColorObjects.hbrushBtnFace);
hOldPen = (HPEN32)SelectObject32(hDC, sysColorObjects.hpenWindowFrame);
hOldBrush = (HBRUSH32)SelectObject32(hDC, sysColorObjects.hbrushBtnFace);
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)
{
SetPixel( hDC, rc.left, rc.top, GetSysColor(COLOR_WINDOW) );
SetPixel( hDC, rc.left, rc.bottom-1, GetSysColor(COLOR_WINDOW) );
SetPixel( hDC, rc.right-1, rc.top, GetSysColor(COLOR_WINDOW) );
SetPixel( hDC, rc.right-1, rc.bottom-1, GetSysColor(COLOR_WINDOW) );
SetPixel32( hDC, rc.left, rc.top, GetSysColor(COLOR_WINDOW) );
SetPixel32( hDC, rc.left, rc.bottom-1, GetSysColor(COLOR_WINDOW) );
SetPixel32( hDC, rc.right-1, rc.top, GetSysColor(COLOR_WINDOW) );
SetPixel32( hDC, rc.right-1, rc.bottom-1, GetSysColor(COLOR_WINDOW) );
}
InflateRect32( &rc, -1, -1 );
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 );
}
if (infoPtr->state & BUTTON_HIGHLIGHTED)
{
/* 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, rc.right-rc.left, 1, PATCOPY );
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 );
SelectObject( hDC, hOldBrush );
SelectObject32( hDC, hOldPen );
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.top=(rc->bottom-rect.bottom)/2;
hbmMem = CreateCompatibleBitmap( hDC,rect.right,rect.bottom);
SelectObject( hdcMem, hbmMem);
hBr = SelectObject( hdcMem,CreatePatternBrush(hbm));
DeleteObject( hbm);
SelectObject32( hdcMem, hbmMem);
hBr = SelectObject32( hdcMem, CreatePatternBrush32(hbm) );
DeleteObject32( hbm );
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);
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);
DeleteDC( hdcMem);
DeleteObject( hbmMem);
DeleteObject32( hbmMem );
}
@ -377,7 +377,7 @@ static void CB_Paint( WND *wndPtr, HDC32 hDC, WORD action )
GetClientRect16(wndPtr->hwndSelf, &rc);
if (infoPtr->hFont) SelectObject( hDC, infoPtr->hFont );
if (infoPtr->hFont) SelectObject32( hDC, infoPtr->hFont );
hBrush = BUTTON_SEND_CTLCOLOR( wndPtr, hDC );
if (action == ODA_DRAWENTIRE) FillRect16( hDC, &rc, hBrush );
@ -427,7 +427,7 @@ static void CB_Paint( WND *wndPtr, HDC32 hDC, WORD action )
/**********************************************************************
* 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 )
{
@ -435,9 +435,10 @@ static void BUTTON_CheckAutoRadioButton( WND *wndPtr )
if (!(wndPtr->dwStyle & WS_CHILD)) return;
parent = wndPtr->parent->hwndSelf;
for(sibling = GetNextDlgGroupItem32( parent, wndPtr->hwndSelf, FALSE );
sibling != wndPtr->hwndSelf;
sibling != wndPtr->hwndSelf && sibling != 0;
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 (infoPtr->hFont) SelectObject( hDC, infoPtr->hFont );
if (infoPtr->hFont) SelectObject32( hDC, infoPtr->hFont );
BUTTON_SEND_CTLCOLOR( wndPtr, hDC );
SelectObject( hDC, sysColorObjects.hpenWindowFrame );
SelectObject32( hDC, sysColorObjects.hpenWindowFrame );
GetClientRect16( wndPtr->hwndSelf, &rc);
MoveTo( hDC, rc.left, rc.top+2 );
LineTo( hDC, rc.right-1, rc.top+2 );
LineTo( hDC, rc.right-1, rc.bottom-1 );
LineTo( hDC, rc.left, rc.bottom-1 );
LineTo( hDC, rc.left, rc.top+2 );
LineTo32( hDC, rc.right-1, rc.top+2 );
LineTo32( hDC, rc.right-1, rc.bottom-1 );
LineTo32( hDC, rc.left, rc.bottom-1 );
LineTo32( hDC, rc.left, rc.top+2 );
if (!wndPtr->text) return;
if (wndPtr->dwStyle & WS_DISABLED)
@ -486,7 +487,7 @@ static void UB_Paint( WND *wndPtr, HDC32 hDC, WORD action )
GetClientRect16( wndPtr->hwndSelf, &rc);
if (infoPtr->hFont) SelectObject( hDC, infoPtr->hFont );
if (infoPtr->hFont) SelectObject32( hDC, infoPtr->hFont );
hBrush = BUTTON_SEND_CTLCOLOR( wndPtr, hDC );
FillRect16( hDC, &rc, hBrush );

View File

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

View File

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

View File

@ -119,6 +119,7 @@ static char * EDIT_GetPointer(WND *wndPtr);
static char * EDIT_GetPasswordPointer(WND *wndPtr);
static LRESULT EDIT_GetRect(WND *wndPtr, WPARAM32 wParam, LPARAM lParam);
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_GetVisibleLineCount(WND *wndPtr);
static UINT EDIT_GetWndWidth(WND *wndPtr);
@ -511,7 +512,7 @@ static void EDIT_BuildLineDefs(WND *wndPtr)
int ww = EDIT_GetWndWidth(wndPtr);
HDC32 hdc;
HFONT16 hFont;
HFONT16 oldFont = 0;
HFONT32 oldFont = 0;
char *start, *cp;
int prev, next;
int width;
@ -520,8 +521,7 @@ static void EDIT_BuildLineDefs(WND *wndPtr)
hdc = GetDC32(wndPtr->hwndSelf);
hFont = (HFONT16)EDIT_WM_GetFont(wndPtr, 0, 0L);
if (hFont)
oldFont = SelectObject(hdc, hFont);
if (hFont) oldFont = SelectObject32(hdc, hFont);
if (!IsMultiLine(wndPtr)) {
es->LineCount = 1;
@ -602,8 +602,7 @@ static void EDIT_BuildLineDefs(WND *wndPtr)
}
} while (*start || (ending == END_SOFT) || (ending == END_HARD));
}
if (hFont)
SelectObject(hdc, oldFont);
if (hFont) SelectObject32(hdc, oldFont);
ReleaseDC32(wndPtr->hwndSelf, hdc);
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
@ -999,8 +1014,8 @@ static BOOL EDIT_MakeFit(WND *wndPtr, UINT size)
*/
static void EDIT_MoveBackward(WND *wndPtr, BOOL extend)
{
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 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)
{
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L);
UINT lc = (UINT)EDIT_EM_GetLineCount(wndPtr, e, 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)
{
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L);
UINT ll = (UINT)EDIT_EM_LineLength(wndPtr, e, 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)
{
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L);
UINT lc = (UINT)EDIT_EM_GetLineCount(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)
{
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 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)
{
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L);
UINT lc = (UINT)EDIT_EM_GetLineCount(wndPtr, e, 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)
{
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L);
UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L);
INT x;
@ -1167,8 +1182,8 @@ static void EDIT_MovePageUp(WND *wndPtr, BOOL extend)
*/
static void EDIT_MoveUpward(WND *wndPtr, BOOL extend)
{
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L);
UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 0L);
INT x;
@ -1192,8 +1207,8 @@ static void EDIT_MoveUpward(WND *wndPtr, BOOL extend)
*/
static void EDIT_MoveWordBackward(WND *wndPtr, BOOL extend)
{
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L);
UINT ll = (UINT)EDIT_EM_LineLength(wndPtr, e, 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)
{
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT l = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L);
UINT lc = (UINT)EDIT_EM_GetLineCount(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);
li = (UINT)EDIT_EM_LineIndex(wndPtr, line, 0L);
ll = (UINT)EDIT_EM_LineLength(wndPtr, li, 0L);
s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
ORDER_UINT(s, e);
s = MIN(li + ll, MAX(li, s));
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;
int strl = strlen(str);
UINT tl = (UINT)EDIT_WM_GetTextLength(wndPtr, 0, 0L);
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
int i;
char *p;
char *text;
@ -1373,7 +1388,7 @@ static LRESULT EDIT_ReplaceSel(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
EDIT_WM_SetRedraw(wndPtr, FALSE, 0L);
EDIT_WM_Clear(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);
for (p = text + tl ; p >= text + e ; p--)
p[strl] = p[0];
@ -1406,7 +1421,7 @@ static LRESULT EDIT_ReplaceSel(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
*/
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 li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 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;
HDC32 hdc;
HFONT16 hFont;
HFONT16 oldFont = 0;
HFONT32 oldFont = 0;
UINT lc = (UINT)EDIT_EM_GetLineCount(wndPtr, 0, 0L);
UINT li = (UINT)EDIT_EM_LineIndex(wndPtr, line, 0L);
UINT ll = (UINT)EDIT_EM_LineLength(wndPtr, li, 0L);
@ -1457,15 +1472,13 @@ static INT EDIT_WndXFromCol(WND *wndPtr, UINT line, UINT col)
hdc = GetDC32(wndPtr->hwndSelf);
hFont = (HFONT16)EDIT_WM_GetFont(wndPtr, 0, 0L);
if (hFont)
oldFont = SelectObject(hdc, hFont);
if (hFont) oldFont = SelectObject32(hdc, hFont);
line = MAX(0, MIN(line, lc - 1));
col = MIN(col, ll);
ret = LOWORD(GetTabbedTextExtent(hdc,
text + li, col,
es->NumTabStops, es->TabStops)) - xoff;
if (hFont)
SelectObject(hdc, oldFont);
if (hFont) SelectObject32(hdc, oldFont);
ReleaseDC32(wndPtr->hwndSelf, hdc);
free(text);
return ret;
@ -1699,12 +1712,17 @@ static LRESULT EDIT_EM_GetRect(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
*
* EM_GETSEL
*
* Returns the ordered selection range so that
* LOWORD(result) < HIWORD(result)
*
*/
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))
return 0L;
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;
while ((UINT)EDIT_EM_LineIndex(wndPtr, l, 0L) > (UINT)wParam)
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);
if ((INT)wParam == -1) {
e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
l = lc - 1;
while (es->LineDefs[l].offset > e)
l--;
@ -1820,8 +1838,8 @@ static LRESULT EDIT_EM_LineLength(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
if (!IsMultiLine(wndPtr))
return (LRESULT)es->LineDefs[0].length;
if ((INT)wParam == -1) {
s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
sl = (UINT)EDIT_EM_LineFromChar(wndPtr, s, 0L);
el = (UINT)EDIT_EM_LineFromChar(wndPtr, e, 0L);
return (LRESULT)(s - es->LineDefs[sl].offset +
@ -2013,8 +2031,8 @@ static LRESULT EDIT_EM_SetSel(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
EDITSTATE *es = EDITSTATEPTR(wndPtr);
UINT ns = LOWORD(lParam);
UINT ne = HIWORD(lParam);
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT el;
UINT eli;
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)
{
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
char *text;
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)
{
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
HGLOBAL16 hdst;
char *text;
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)
{
HBRUSH16 hBrush;
HBRUSH32 hBrush;
RECT16 rc;
hBrush = (HBRUSH16)EDIT_SEND_CTLCOLOR(wndPtr, wParam);
if (!hBrush)
hBrush = (HBRUSH16)GetStockObject(WHITE_BRUSH);
if (!hBrush) hBrush = (HBRUSH32)GetStockObject32(WHITE_BRUSH);
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);
/*
* 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)
{
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
BOOL shift;
BOOL control;
@ -2560,8 +2578,8 @@ static LRESULT EDIT_WM_KillFocus(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
DestroyCaret();
if(!(wndPtr->dwStyle & ES_NOHIDESEL)) {
s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
EDIT_InvalidateText(wndPtr, s, e);
}
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)
{
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 li = (UINT)EDIT_EM_LineIndex(wndPtr, l, 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);
e = li + c;
if (GetKeyState(VK_SHIFT) & 0x8000)
s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
else
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));
x = MIN(EDIT_GetWndWidth(wndPtr), MAX(0, 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);
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);
HDC16 hdc;
HFONT16 hFont;
HFONT16 oldFont = 0;
HFONT32 oldFont = 0;
RECT16 rc;
RECT16 rcLine;
RECT16 rcRgn;
@ -2695,10 +2713,9 @@ static LRESULT EDIT_WM_Paint(WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
hdc = BeginPaint16(wndPtr->hwndSelf, &ps);
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);
if (hFont)
oldFont = SelectObject(hdc, hFont);
if (hFont) oldFont = SelectObject32(hdc, hFont);
EDIT_SEND_CTLCOLOR(wndPtr, hdc);
if (!IsWindowEnabled(wndPtr->hwndSelf))
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))
EDIT_PaintLine(wndPtr, hdc, i, rev);
}
if (hFont)
SelectObject(hdc, oldFont);
if (hFont) SelectObject32(hdc, oldFont);
EndPaint16(wndPtr->hwndSelf, &ps);
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)
{
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT s = LOWORD(EDIT_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_GetSel(wndPtr, 0, 0L));
CreateCaret(wndPtr->hwndSelf, 0, 2, EDIT_GetLineHeight(wndPtr));
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;
EDITSTATE *es = EDITSTATEPTR(wndPtr);
LPARAM sel = EDIT_EM_GetSel(wndPtr, 0, 0L);
LPARAM sel = EDIT_GetSel(wndPtr, 0, 0L);
HDC32 hdc;
HFONT16 oldFont = 0;
HFONT32 oldFont = 0;
es->hFont = (HFONT16)wParam;
hdc = GetDC32(wndPtr->hwndSelf);
if (es->hFont)
oldFont = SelectObject(hdc, es->hFont);
if (es->hFont) oldFont = SelectObject32(hdc, es->hFont);
GetTextMetrics16(hdc, &tm);
es->LineHeight = HIWORD(GetTextExtent(hdc, "X", 1));
es->AveCharWidth = tm.tmAveCharWidth;
if (es->hFont)
SelectObject(hdc, oldFont);
if (es->hFont) SelectObject32(hdc, oldFont);
ReleaseDC32(wndPtr->hwndSelf, hdc);
EDIT_BuildLineDefs(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->iNumStops = 0;
lphl->TabStops = NULL;
lphl->hFont = GetStockObject(SYSTEM_FONT);
lphl->hFont = GetStockObject32(SYSTEM_FONT);
lphl->hSelf = hwnd;
if (CtlType==ODT_COMBOBOX) /* use the "faked" style for COMBOLBOX */
/* LBS_SORT instead CBS_SORT e.g. */
@ -227,7 +227,7 @@ void ListBoxDrawItem(HWND hwnd, LPHEADLIST lphl, HDC16 hdc, LPLISTSTRUCT lpls,
if (itemState != 0) {
dwOldTextColor = SetTextColor(hdc, 0x00FFFFFFL);
FillRect16(hdc, rect, GetStockObject(BLACK_BRUSH));
FillRect16(hdc, rect, GetStockObject32(BLACK_BRUSH));
}
if (lphl->dwStyle & LBS_USETABSTOPS) {
@ -783,7 +783,8 @@ LONG ListBoxDirectory(LPHEADLIST lphl, UINT attrib, LPCSTR filespec)
skip = ret = 0;
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;
if (entry.attr & FA_DIRECTORY)
@ -1407,7 +1408,7 @@ static LONG LBSetFont(HWND hwnd, WPARAM16 wParam, LPARAM lParam)
HDC32 hdc;
if (wParam == 0)
lphl->hFont = GetStockObject(SYSTEM_FONT);
lphl->hFont = GetStockObject32(SYSTEM_FONT);
else
lphl->hFont = (HFONT16)wParam;
@ -1436,7 +1437,7 @@ static LONG LBPaint(HWND hwnd, WORD wParam, LONG lParam)
LPLISTSTRUCT lpls;
PAINTSTRUCT16 ps;
HBRUSH16 hBrush;
HFONT16 hOldFont;
HFONT32 hOldFont;
HDC16 hdc = BeginPaint16( hwnd, &ps );
DC *dc = (DC *)GDI_GetObjPtr(hdc, DC_MAGIC);
RECT16 rect, paintRect, scratchRect;
@ -1453,11 +1454,11 @@ static LONG LBPaint(HWND hwnd, WORD wParam, LONG lParam)
GetClientRect16(hwnd, &rect);
IntersectRect16(&paintRect,&rect,&paintRect);
hOldFont = SelectObject(hdc, lphl->hFont);
hOldFont = SelectObject32(hdc, lphl->hFont);
hBrush = (HBRUSH16)SendMessage32A( lphl->hParent, WM_CTLCOLORLISTBOX,
(WPARAM32)hdc, (LPARAM)hwnd);
if (hBrush == 0) hBrush = GetStockObject(WHITE_BRUSH);
if (hBrush == 0) hBrush = GetStockObject32(WHITE_BRUSH);
FillRect16(hdc, &rect, hBrush);
@ -1520,7 +1521,7 @@ static LONG LBPaint(HWND hwnd, WORD wParam, LONG lParam)
lpls = lpls->lpNext;
}
ListBoxUpdateWindow(hwnd,lphl,FALSE);
SelectObject(hdc,hOldFont);
SelectObject32(hdc,hOldFont);
EndPaint16( hwnd, &ps );
return 0;
}
@ -1537,14 +1538,14 @@ static LONG LBSetFocus(HWND hwnd, WORD wParam, LONG lParam)
if( lphl->ItemsCount && lphl->ItemFocused != -1)
{
HDC32 hDC = GetDC32(hwnd);
HFONT16 hOldFont = SelectObject(hDC, lphl->hFont);
HFONT32 hOldFont = SelectObject32(hDC, lphl->hFont);
LPLISTSTRUCT lpls;
lpls = ListBoxGetItem(lphl,lphl->ItemFocused);
lpls->itemState |= ODS_FOCUS;
ListBoxDrawItem(hwnd,lphl,hDC,lpls,&lpls->itemRect, ODA_FOCUS, lpls->itemState);
SelectObject(hDC, hOldFont);
SelectObject32(hDC, hOldFont);
ReleaseDC32(hwnd,hDC);
}
@ -1567,14 +1568,14 @@ static LONG LBKillFocus(HWND hwnd, WORD wParam, LONG lParam)
if( lphl->ItemFocused != -1 )
{
HDC32 hDC = GetDC32(hwnd);
HFONT16 hOldFont = SelectObject(hDC, lphl->hFont);
HFONT32 hOldFont = SelectObject32(hDC, lphl->hFont);
LPLISTSTRUCT lpls;
lpls = ListBoxGetItem(lphl,lphl->ItemFocused);
lpls->itemState &= ~ODS_FOCUS;
ListBoxDrawItem(hwnd,lphl,hDC,lpls,&lpls->itemRect, ODA_FOCUS, lpls->itemState);
SelectObject(hDC, hOldFont);
SelectObject32(hDC, hOldFont);
ReleaseDC32(hwnd,hDC);
}
else

View File

@ -591,15 +591,15 @@ static void MENU_DrawMenuItem( HWND hwnd, HDC32 hdc, MENUITEM *lpitem,
if (!menuBar && (lpitem->item_flags & MF_MENUBARBREAK))
{
SelectObject( hdc, sysColorObjects.hpenWindowFrame );
SelectObject32( hdc, sysColorObjects.hpenWindowFrame );
MoveTo( hdc, rect.left, 0 );
LineTo( hdc, rect.left, height );
LineTo32( hdc, rect.left, height );
}
if (lpitem->item_flags & MF_SEPARATOR)
{
SelectObject( hdc, sysColorObjects.hpenWindowFrame );
SelectObject32( hdc, sysColorObjects.hpenWindowFrame );
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;
}
@ -741,9 +741,9 @@ UINT MENU_DrawMenuBar( HDC32 hDC, LPRECT16 lprect, HWND hwnd,
if (suppress_draw) return lppop->Height;
FillRect16(hDC, lprect, sysColorObjects.hbrushMenu );
SelectObject( hDC, sysColorObjects.hpenWindowFrame );
SelectObject32( hDC, sysColorObjects.hpenWindowFrame );
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;
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 )
{
HDC32 hdcMem = CreateCompatibleDC( hdc );
HBITMAP32 hbmpPrev = SelectObject( hdcMem, vertical ?
HBITMAP32 hbmpPrev = SelectObject32( hdcMem, vertical ?
TOP_ARROW(infoPtr->flags, top_pressed)
: LEFT_ARROW(infoPtr->flags, top_pressed));
SetStretchBltMode( hdc, STRETCH_DELETESCANS );
@ -323,9 +323,9 @@ static void SCROLL_DrawArrows( HDC32 hdc, SCROLLBAR_INFO *infoPtr,
SYSMETRICS_CXVSCROLL + 1, SYSMETRICS_CYHSCROLL + 1,
SRCCOPY );
SelectObject( hdcMem, vertical ?
BOTTOM_ARROW( infoPtr->flags, bottom_pressed )
: RIGHT_ARROW( infoPtr->flags, bottom_pressed ) );
SelectObject32( hdcMem, vertical ?
BOTTOM_ARROW( infoPtr->flags, bottom_pressed )
: RIGHT_ARROW( infoPtr->flags, bottom_pressed ) );
if (vertical)
StretchBlt( hdc, rect->left, rect->bottom - arrowSize - 1,
rect->right - rect->left, arrowSize + 1,
@ -338,7 +338,7 @@ static void SCROLL_DrawArrows( HDC32 hdc, SCROLLBAR_INFO *infoPtr,
hdcMem, 0, 0,
SYSMETRICS_CXVSCROLL + 1, SYSMETRICS_CYHSCROLL + 1,
SRCCOPY );
SelectObject( hdcMem, hbmpPrev );
SelectObject32( hdcMem, hbmpPrev );
DeleteDC( hdcMem );
}
@ -389,11 +389,11 @@ static void SCROLL_DrawInterior( HWND32 hwnd, HDC32 hdc, INT32 nBar,
/* Select the correct brush and pen */
SelectObject( hdc, sysColorObjects.hpenWindowFrame );
SelectObject32( hdc, sysColorObjects.hpenWindowFrame );
if ((flags & ESB_DISABLE_BOTH) == ESB_DISABLE_BOTH)
{
/* This ought to be the color of the parent window */
SelectObject( hdc, sysColorObjects.hbrushWindow );
SelectObject32( hdc, sysColorObjects.hbrushWindow );
}
else
{
@ -401,9 +401,9 @@ static void SCROLL_DrawInterior( HWND32 hwnd, HDC32 hdc, INT32 nBar,
{
HBRUSH32 hbrush = SendMessage32A(GetParent32(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 */
@ -423,10 +423,10 @@ static void SCROLL_DrawInterior( HWND32 hwnd, HDC32 hdc, INT32 nBar,
/* Draw the scroll bar frame */
MoveTo( hdc, r.left, r.top );
LineTo( hdc, r.right-1, r.top );
LineTo( hdc, r.right-1, r.bottom-1 );
LineTo( hdc, r.left, r.bottom-1 );
LineTo( hdc, r.left, r.top );
LineTo32( hdc, r.right-1, r.top );
LineTo32( hdc, r.right-1, r.bottom-1 );
LineTo32( hdc, r.left, r.bottom-1 );
LineTo32( hdc, r.left, r.top );
/* Draw the scroll rectangles and thumb */
@ -466,8 +466,8 @@ static void SCROLL_DrawInterior( HWND32 hwnd, HDC32 hdc, INT32 nBar,
/* Draw the thumb */
SelectObject( hdc, sysColorObjects.hbrushBtnFace );
Rectangle( hdc, r.left, r.top, r.right, r.bottom );
SelectObject32( hdc, sysColorObjects.hbrushBtnFace );
Rectangle32( hdc, r.left, r.top, r.right, r.bottom );
InflateRect32( &r, -1, -1 );
GRAPH_DrawReliefRect( hdc, &r, 1, 2, FALSE );
if (SCROLL_MovingThumb &&

View File

@ -220,10 +220,10 @@ static void STATIC_PaintTextfn( WND *wndPtr, HDC32 hdc )
if (style & SS_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,
hdc, wndPtr->hwndSelf );
if (!hBrush) hBrush = GetStockObject(WHITE_BRUSH);
if (!hBrush) hBrush = GetStockObject32(WHITE_BRUSH);
FillRect16(hdc, &rc, hBrush);
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 )
{
RECT16 rc;
HBRUSH16 hBrush;
HBRUSH32 hBrush;
GetClientRect16( wndPtr->hwndSelf, &rc);
switch (wndPtr->dwStyle & 0x0f)
{
case SS_BLACKRECT:
hBrush = CreateSolidBrush(color_windowframe);
hBrush = CreateSolidBrush32(color_windowframe);
FillRect16( hdc, &rc, hBrush );
break;
case SS_GRAYRECT:
hBrush = CreateSolidBrush(color_background);
hBrush = CreateSolidBrush32(color_background);
FillRect16( hdc, &rc, hBrush );
break;
case SS_WHITERECT:
hBrush = CreateSolidBrush(color_window);
hBrush = CreateSolidBrush32(color_window);
FillRect16( hdc, &rc, hBrush );
break;
case SS_BLACKFRAME:
hBrush = CreateSolidBrush(color_windowframe);
hBrush = CreateSolidBrush32(color_windowframe);
FrameRect16( hdc, &rc, hBrush );
break;
case SS_GRAYFRAME:
hBrush = CreateSolidBrush(color_background);
hBrush = CreateSolidBrush32(color_background);
FrameRect16( hdc, &rc, hBrush );
break;
case SS_WHITEFRAME:
hBrush = CreateSolidBrush(color_window);
hBrush = CreateSolidBrush32(color_window);
FrameRect16( hdc, &rc, hBrush );
break;
default:
return;
}
DeleteObject( hBrush );
DeleteObject32( hBrush );
}

View File

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

View File

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

View File

@ -7,6 +7,7 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include "windows.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).
*/
int DOSFS_Match( const char *mask, const char *name )
static int DOSFS_MatchShort( const char *mask, const char *name )
{
int i;
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
*
@ -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
*
@ -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
* 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,
BYTE attr, int skip, DOS_DIRENT *entry )
int DOSFS_FindNext( const char *path, const char *short_mask,
const char *long_mask, int drive, BYTE attr,
int skip, DOS_DIRENT *entry )
{
static DIR *dir = NULL;
struct dirent *dirent;
@ -714,20 +776,38 @@ int DOSFS_FindNext( const char *path, const char *mask, int drive,
p = buffer + strlen(buffer);
attr |= FA_UNUSED | FA_ARCHIVE | FA_RDONLY;
flags = DRIVE_GetFlags( drive );
hash_name = NULL;
while ((dirent = readdir( dir )) != NULL)
{
if (skip-- > 0) continue;
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 */
if (drive_root && (dirent->d_name[0] == '.') &&
(!dirent->d_name[1] ||
((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,
&entry->date, &entry->time ))
{
@ -735,6 +815,12 @@ int DOSFS_FindNext( const char *path, const char *mask, int drive,
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 );
lstrcpyn32A( entry->unixname, dirent->d_name, sizeof(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);
}
/***********************************************************************
* 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 */
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;
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->gc = XCreateGC( display, physDev->drawable, 0, NULL );
dc->w.bitsPerPixel = bmp->bitmap.bmBitsPixel;
dc->w.hVisRgn = CreateRectRgn( 0, 0, bmp->bitmap.bmWidth,
bmp->bitmap.bmHeight );
dc->w.hVisRgn = CreateRectRgn32( 0, 0, bmp->bitmap.bmWidth,
bmp->bitmap.bmHeight );
}
else
{
physDev->drawable = rootWindow;
physDev->gc = XCreateGC( display, physDev->drawable, 0, NULL );
dc->w.bitsPerPixel = screenDepth;
dc->w.hVisRgn = CreateRectRgn( 0, 0, screenWidth, screenHeight );
dc->w.hVisRgn = CreateRectRgn32( 0, 0, screenWidth, screenHeight);
}
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
17 pascal OffsetViewportOrg(word s_word s_word) OffsetViewportOrg
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
21 pascal16 ExcludeClipRect(word s_word s_word s_word s_word) ExcludeClipRect
22 pascal16 IntersectClipRect(word s_word s_word s_word s_word)
IntersectClipRect
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) IntersectClipRect16
23 pascal16 Arc(word s_word s_word s_word s_word s_word s_word s_word s_word)
Arc
24 pascal16 Ellipse(word s_word s_word s_word s_word) Ellipse
25 pascal16 FloodFill(word s_word s_word long) FloodFill
Arc16
24 pascal16 Ellipse(word s_word s_word s_word s_word) Ellipse16
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)
Pie
27 pascal16 Rectangle(word s_word s_word s_word s_word) Rectangle
Pie16
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)
RoundRect
RoundRect16
29 pascal16 PatBlt(word s_word s_word s_word s_word long) PatBlt
30 pascal16 SaveDC(word) SaveDC
31 pascal SetPixel(word s_word s_word long) SetPixel
32 pascal16 OffsetClipRgn(word s_word s_word) OffsetClipRgn
31 pascal SetPixel(word s_word s_word long) SetPixel16
32 pascal16 OffsetClipRgn(word s_word s_word) OffsetClipRgn16
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)
BitBlt
@ -47,39 +46,39 @@ heap 65488 # 65536 - 16 (instance data) - 32 (stock objects)
37 pascal16 Polyline (word ptr word) Polyline16
38 pascal Escape(word word word segptr segptr) Escape
39 pascal16 RestoreDC(word s_word) RestoreDC
40 pascal16 FillRgn(word word word) FillRgn
41 pascal16 FrameRgn(word word word word word) FrameRgn
42 pascal16 InvertRgn(word word) InvertRgn
43 pascal16 PaintRgn(word word) PaintRgn
44 pascal16 SelectClipRgn(word word) SelectClipRgn
45 pascal16 SelectObject(word word) SelectObject
40 pascal16 FillRgn(word word word) FillRgn16
41 pascal16 FrameRgn(word word word word word) FrameRgn16
42 pascal16 InvertRgn(word word) InvertRgn16
43 pascal16 PaintRgn(word word) PaintRgn16
44 pascal16 SelectClipRgn(word word) SelectClipRgn16
45 pascal16 SelectObject(word word) SelectObject16
#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
49 pascal16 CreateBitmapIndirect(ptr) CreateBitmapIndirect16
50 pascal16 CreateBrushIndirect(ptr) CreateBrushIndirect
50 pascal16 CreateBrushIndirect(ptr) CreateBrushIndirect16
51 pascal16 CreateCompatibleBitmap(word word word) CreateCompatibleBitmap
52 pascal16 CreateCompatibleDC(word) CreateCompatibleDC
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
56 pascal16 CreateFont(s_word s_word s_word s_word s_word word word word
word word word word word ptr) CreateFont16
57 pascal16 CreateFontIndirect(ptr) CreateFontIndirect16
58 pascal16 CreateHatchBrush(word long) CreateHatchBrush
60 pascal16 CreatePatternBrush(word) CreatePatternBrush
61 pascal16 CreatePen(s_word s_word long) CreatePen
62 pascal16 CreatePenIndirect(ptr) CreatePenIndirect
58 pascal16 CreateHatchBrush(word long) CreateHatchBrush16
60 pascal16 CreatePatternBrush(word) CreatePatternBrush16
61 pascal16 CreatePen(s_word s_word long) CreatePen16
62 pascal16 CreatePenIndirect(ptr) CreatePenIndirect16
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
66 pascal16 CreateSolidBrush(long) CreateSolidBrush
66 pascal16 CreateSolidBrush(long) CreateSolidBrush16
67 pascal16 DPtoLP(word ptr s_word) DPtoLP16
68 pascal16 DeleteDC(word) DeleteDC
69 pascal16 DeleteObject(word) DeleteObject
69 pascal16 DeleteObject(word) DeleteObject16
70 pascal16 EnumFonts(word ptr segptr long) THUNK_EnumFonts16
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
74 pascal GetBitmapBits(word long ptr) GetBitmapBits
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
81 pascal16 GetMapMode(word) GetMapMode
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
85 pascal16 GetROP2(word) GetROP2
86 pascal16 GetRelAbs(word) GetRelAbs
87 pascal16 GetStockObject(word) GetStockObject
87 pascal16 GetStockObject(word) GetStockObject16
88 pascal16 GetStretchBltMode(word) GetStretchBltMode
89 pascal16 GetTextCharacterExtra(word) GetTextCharacterExtra
90 pascal GetTextColor(word) GetTextColor
@ -109,9 +108,9 @@ heap 65488 # 65536 - 16 (instance data) - 32 (stock objects)
IntersectVisRect
99 pascal16 LPtoDP(word ptr s_word) LPtoDP16
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
103 pascal16 PtVisible(word s_word s_word) PtVisible
103 pascal16 PtVisible(word s_word s_word) PtVisible16
104 pascal16 RectVisibleOld(word ptr) RectVisible16
105 pascal16 SelectVisRgn(word word) SelectVisRgn
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
148 pascal SetBrushOrg(word s_word s_word) SetBrushOrg
149 pascal GetBrushOrg(word) GetBrushOrg
150 pascal16 UnrealizeObject(word) UnrealizeObject
150 pascal16 UnrealizeObject(word) UnrealizeObject16
151 pascal16 CopyMetaFile(word ptr) CopyMetaFile
153 pascal16 CreateIC(ptr ptr ptr ptr) CreateIC
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
159 pascal16 GetMetaFileBits(word) GetMetaFileBits
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
163 pascal SetBitmapDimension(word s_word s_word) SetBitmapDimension
169 stub IsDCDirty
@ -233,7 +232,7 @@ heap 65488 # 65536 - 16 (instance data) - 32 (stock objects)
345 pascal16 GetTextAlign(word) GetTextAlign
346 pascal16 SetTextAlign(word word) SetTextAlign
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
350 pascal16 GetCharWidth(word word word ptr) GetCharWidth
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
368 pascal16 ResizePalette(word word) ResizePalette
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
374 pascal16 GetSystemPaletteUse(word) GetSystemPaletteUse
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
word word ptr ptr word) SetDIBitsToDevice
444 pascal16 CreateRoundRectRgn(s_word s_word s_word s_word s_word s_word)
CreateRoundRectRgn
445 pascal16 CreateDIBPatternBrush(word word) CreateDIBPatternBrush
CreateRoundRectRgn16
445 pascal16 CreateDIBPatternBrush(word word) CreateDIBPatternBrush16
449 stub DEVICECOLORMATCH
450 pascal16 PolyPolygon(word ptr ptr word) PolyPolygon16
451 pascal16 CreatePolyPolygonRgn(ptr ptr word word) CreatePolyPolygonRgn16

View File

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

View File

@ -95,7 +95,18 @@ INT16 THUNK_EnumObjects16( HDC16 hdc, INT16 nObjType,
GOBJENUMPROC16 func, LPARAM lParam )
{
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 ret = FALSE;
BOOL16 ret;
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;
}

View File

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

View File

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

View File

@ -21,7 +21,6 @@ type win16
21 pascal AboutDlgProc(word word word long) AboutDlgProc
22 pascal ComboLBoxWndProc(word word word long) ComboLBoxWndProc
24 pascal16 TASK_Reschedule() TASK_Reschedule
26 register Win32CallToStart() PE_Win32CallToStart
27 pascal EntryAddrProc(word word) MODULE_GetEntryPoint
28 pascal MyAlloc(word word word) MODULE_AllocateSegment
30 pascal FormatCharDlgProc(word word word long) FormatCharDlgProc
@ -288,9 +287,9 @@ type win16
# 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
#415 register VXD_Printer(word) VXD_Printer
423 register VXD_Shell(word) VXD_Shell
433 register VXD_PageFile(word) VXD_PageFile
414 register VXD_Comm() VXD_Comm
#415 register VXD_Printer() VXD_Printer
423 register VXD_Shell() VXD_Shell
433 register VXD_PageFile() VXD_PageFile

View File

@ -13,12 +13,13 @@
typedef struct
{
GDIOBJHDR header;
LOGBRUSH16 logbrush;
LOGBRUSH32 logbrush;
} BRUSHOBJ;
extern BOOL BRUSH_Init(void);
extern int BRUSH_GetObject( BRUSHOBJ * brush, int count, LPSTR buffer );
extern BOOL32 BRUSH_Init(void);
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 HBRUSH16 BRUSH_SelectObject(DC * dc, HBRUSH16 hbrush, BRUSHOBJ * brush);
extern HBRUSH32 BRUSH_SelectObject(DC * dc, HBRUSH32 hbrush, BRUSHOBJ * brush);
#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_GetDosTrueName( const char *name, int unix_format );
extern int DOSFS_GetDosFileName( const char *name, char *buffer, int len );
extern int DOSFS_FindNext( const char *path, const char *mask, int drive,
BYTE attr, int skip, DOS_DIRENT *entry );
extern int DOSFS_FindNext( const char *path, const char *short_mask,
const char *long_mask, int drive, BYTE attr,
int skip, DOS_DIRENT *entry );
extern int DOS_GetFreeSpace(int drive, long *size, long *available);

View File

@ -9,16 +9,17 @@
#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 );
extern void NC_DoNCPaint( HWND hwnd, HRGN32 clip, BOOL suppress_menupaint );
extern LONG NC_HandleNCPaint( HWND hwnd , HRGN32 clip);
extern void NC_DoNCPaint( HWND32 hwnd, HRGN32 clip, BOOL32 suppress_menupaint);
extern LONG NC_HandleNCPaint( HWND32 hwnd , HRGN32 clip);
extern LONG NC_HandleNCActivate( WND *pwnd, WPARAM16 wParam );
extern LONG NC_HandleNCCalcSize( WND *pWnd, RECT16 *winRect );
extern LONG NC_HandleNCHitTest( HWND hwnd, POINT16 pt );
extern LONG NC_HandleNCLButtonDown( HWND hwnd, WPARAM16 wParam, LPARAM lParam );
extern LONG NC_HandleNCHitTest( HWND32 hwnd, POINT16 pt );
extern LONG NC_HandleNCLButtonDown( HWND32 hwnd, 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_HandleSetCursor( HWND hwnd, WPARAM16 wParam, LPARAM lParam );
extern LONG NC_HandleSysCommand( HWND32 hwnd, WPARAM16 wParam, POINT16 pt );
extern LONG NC_HandleSetCursor( HWND32 hwnd, WPARAM16 wParam, LPARAM lParam );
#endif /* __WINE_NONCLIENT_H */

View File

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

View File

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

View File

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

View File

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

View File

@ -26,6 +26,7 @@
#include "stddebug.h"
#include "debug.h"
#include "callback.h"
#include "xmalloc.h"
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;
dprintf_module( stddeb, "Using fast-load area offset=%x len=%d\n",
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 );
if (_lread32(hFile, fastload, fastload_length) != fastload_length)
@ -536,7 +537,7 @@ static HMODULE16 MODULE_LoadExeHeader( HFILE hFile, OFSTRUCT *ofs )
/* Get the segment table */
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)
{
int i;

View File

@ -153,8 +153,9 @@ FARPROC32 PE_FindExportedFunction(struct pe_data *pe, LPCSTR funcName)
name++;
}
} else {
if (funcName-exports->Base > exports->Number_Of_Functions) {
dprintf_win32(stddeb," ordinal %d out of range!\n",funcName);
if (LOWORD(funcName)-exports->Base > exports->Number_Of_Functions) {
dprintf_win32(stddeb," ordinal %d out of range!\n",
LOWORD(funcName));
return NULL;
}
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) {
int ordinal = *import_list & (0x80000000 - 1);
dprintf_win32 (stddeb, "--- Ordinal %s,%d\n", Module, ordinal);
*thunk_list = GetProcAddress32(MODULE_FindModule (Module),
*thunk_list = (unsigned)GetProcAddress32(MODULE_FindModule (Module),
(LPCSTR) ordinal);
if (!*thunk_list) {
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 */
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);
if (!*thunk_list) {
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 */
int ordinal = *thunk_list & ~0x80000000;
dprintf_win32(stddeb,"--- Ordinal %s.%d\n",Module,ordinal);
*thunk_list = GetProcAddress32(MODULE_FindModule (Module),
*thunk_list = (unsigned)GetProcAddress32(MODULE_FindModule (Module),
(LPCSTR) ordinal);
if (!*thunk_list) {
fprintf(stderr, "No implementation for %s.%d, setting to NULL\n",
@ -263,7 +264,7 @@ fixup_imports (struct pe_data *pe, HMODULE16 hModule)
} else {
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);
if (!*thunk_list) {
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;
int i, result;
unsigned int load_addr;
int load_addr;
struct Directory dir;
char buffer[200];
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.
What I'd really like to do is a Win32 style VirtualAlloc/MapViewOfFile
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",
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 &
~ IMAGE_SCN_TYPE_CNT_UNINITIALIZED_DATA)
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)
{
@ -471,37 +472,37 @@ static struct pe_data *PE_LoadImage( int fd, HMODULE16 hModule, WORD offset )
if(dir.Size)
{
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");
/* 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];
if(dir.Size)
{
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");
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];
if(dir.Size)
{
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");
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];
if(dir.Size)
{
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");
pe->pe_reloc = load_addr+dir.Virtual_address;
pe->pe_reloc = (void *)(load_addr+dir.Virtual_address);
}
if(pe->pe_header->opt_coff.DataDirectory
@ -566,8 +567,6 @@ HINSTANCE16 PE_LoadModule( int fd, OFSTRUCT *ofs, LOADPARAMS* params )
HMODULE16 hModule;
HINSTANCE16 hInstance;
NE_MODULE *pModule;
SEGTABLEENTRY *pSegment;
FARPROC16 startup;
struct mz_header_s mz_header;
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 );
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 );
hInstance = MODULE_CreateInstance( hModule, params );
@ -598,28 +590,6 @@ HINSTANCE16 PE_LoadModule( int fd, OFSTRUCT *ofs, LOADPARAMS* params )
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 )
{
printf("PEunloadImage() called!\n");
@ -647,7 +617,7 @@ static void PE_InitDLL(HMODULE16 hModule)
printf("InitPEDLL() called!\n");
CallDLLEntryProc32( (FARPROC32)(pe->load_addr +
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
based on some kind of documentation would be greatly appreciated :-) */
typedef struct
typedef struct _TEB
{
void *Except;
void *stack;
int dummy1[4];
struct TEB *TEBDSAlias;
struct _TEB *TEBDSAlias;
int dummy2[2];
int taskid;
} TEB;
@ -672,7 +642,7 @@ void PE_InitTEB(int hTEB)
pTask = (TDB *)(GlobalLock16(GetCurrentTask() & 0xffff));
pTEB = (TEB *)(GlobalLock16(hTEB));
pTEB->stack = pTask->esp;
pTEB->stack = (void *)pTask->esp;
pTEB->Except = (void *)(-1);
pTEB->TEBDSAlias = pTEB;
pTEB->taskid = getpid();

View File

@ -349,38 +349,59 @@ static BOOL TASK_FreeThunk( HTASK16 hTask, SEGPTR thunk )
#ifndef WINELIB
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 );
NE_MODULE *pModule = MODULE_GetPtr( pTask->hModule );
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_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,
pTask->hPDB /*es*/, 0 /*bp*/, 0 /*ax*/,
pModule->stack_size /*bx*/, pModule->heap_size /*cx*/,
0 /*dx*/, 0 /*si*/, ds_reg /*di*/ );
if (pModule->flags & NE_FFLAGS_WIN32)
{
/* FIXME: all this is an ugly hack */
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 */
fprintf( stderr, "TASK_CallToStart: Main program returned!\n" );
@ -814,7 +835,7 @@ void InitTask( SIGCONTEXT *context )
LONG stacklow, stackhi;
#ifndef WINELIB
EAX_reg(context) = 0;
if (context) EAX_reg(context) = 0;
#endif
if (!(pTask = (TDB *)GlobalLock16( hCurrentTask ))) return;
if (!(pModule = MODULE_GetPtr( pTask->hModule ))) return;
@ -822,21 +843,24 @@ void InitTask( SIGCONTEXT *context )
#ifndef WINELIB
NE_InitializeDLLs( pTask->hModule );
/* Registers on return are:
* ax 1 if OK, 0 on error
* cx stack limit in bytes
* dx cmdShow parameter
* si instance handle of the previous instance
* di instance handle of the new task
* es:bx pointer to command-line inside PSP
*/
EAX_reg(context) = 1;
EBX_reg(context) = 0x81;
ECX_reg(context) = pModule->stack_size;
EDX_reg(context) = pTask->nCmdShow;
ESI_reg(context) = (DWORD)pTask->hPrevInstance;
EDI_reg(context) = (DWORD)pTask->hInstance;
ES_reg (context) = (WORD)pTask->hPDB;
if (context)
{
/* Registers on return are:
* ax 1 if OK, 0 on error
* cx stack limit in bytes
* dx cmdShow parameter
* si instance handle of the previous instance
* di instance handle of the new task
* es:bx pointer to command-line inside PSP
*/
EAX_reg(context) = 1;
EBX_reg(context) = 0x81;
ECX_reg(context) = pModule->stack_size;
EDX_reg(context) = pTask->nCmdShow;
ESI_reg(context) = (DWORD)pTask->hPrevInstance;
EDI_reg(context) = (DWORD)pTask->hInstance;
ES_reg (context) = (WORD)pTask->hPDB;
}
/* Initialize the local heap */
if ( pModule->heap_size )

View File

@ -144,7 +144,7 @@ void CLIPBOARD_DeleteRecord(LPCLIPFORMAT lpFormat)
{
if( lpFormat->wFormatID >= CF_GDIOBJFIRST &&
lpFormat->wFormatID <= CF_GDIOBJLAST )
DeleteObject(lpFormat->hData);
DeleteObject32(lpFormat->hData);
else if( 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);
char *str;
HBRUSH16 hBrush;
HBRUSH32 hBrush;
HBITMAP16 hBitmap, hPrevBitmap;
BITMAP16 bm;
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 (!(str = SEGPTR_ALLOC(512))) return FALSE;
hBrush = SelectObject(lpdis->hDC, GetStockObject(LTGRAY_BRUSH));
SelectObject(lpdis->hDC, hBrush);
hBrush = SelectObject32(lpdis->hDC, GetStockObject32(LTGRAY_BRUSH));
SelectObject32(lpdis->hDC, hBrush);
FillRect16(lpdis->hDC, &lpdis->rcItem, hBrush);
SendMessage16(lpdis->hwndItem, LB_GETTEXT16, lpdis->itemID,
(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 (!(str = SEGPTR_ALLOC(512))) return FALSE;
hBrush = SelectObject(lpdis->hDC, GetStockObject(LTGRAY_BRUSH));
SelectObject(lpdis->hDC, hBrush);
hBrush = SelectObject32(lpdis->hDC, GetStockObject32(LTGRAY_BRUSH));
SelectObject32(lpdis->hDC, hBrush);
FillRect16(lpdis->hDC, &lpdis->rcItem, hBrush);
SendMessage16(lpdis->hwndItem, LB_GETTEXT16, lpdis->itemID,
(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,
lpdis->rcItem.top, str, strlen(str));
hMemDC = CreateCompatibleDC(lpdis->hDC);
hPrevBitmap = SelectObject(hMemDC, hBitmap);
hPrevBitmap = SelectObject32(hMemDC, hBitmap);
BitBlt(lpdis->hDC, lpdis->rcItem.left, lpdis->rcItem.top,
bm.bmWidth, bm.bmHeight, hMemDC, 0, 0, SRCCOPY);
SelectObject(hMemDC, hPrevBitmap);
SelectObject32(hMemDC, hPrevBitmap);
DeleteDC(hMemDC);
if (lpdis->itemState != 0) InvertRect16(lpdis->hDC, &lpdis->rcItem);
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 (!(str = SEGPTR_ALLOC(512))) return FALSE;
hBrush = SelectObject(lpdis->hDC, GetStockObject(LTGRAY_BRUSH));
SelectObject(lpdis->hDC, hBrush);
hBrush = SelectObject32(lpdis->hDC, GetStockObject32(LTGRAY_BRUSH));
SelectObject32(lpdis->hDC, hBrush);
FillRect16(lpdis->hDC, &lpdis->rcItem, hBrush);
SendMessage16(lpdis->hwndItem, CB_GETLBTEXT, lpdis->itemID,
(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,
lpdis->rcItem.top, str, strlen(str));
hMemDC = CreateCompatibleDC(lpdis->hDC);
hPrevBitmap = SelectObject(hMemDC, hBitmap);
hPrevBitmap = SelectObject32(hMemDC, hBitmap);
BitBlt(lpdis->hDC, lpdis->rcItem.left, lpdis->rcItem.top,
bm.bmWidth, bm.bmHeight, hMemDC, 0, 0, SRCCOPY);
SelectObject(hMemDC, hPrevBitmap);
SelectObject32(hMemDC, hPrevBitmap);
DeleteDC(hMemDC);
if (lpdis->itemState != 0) InvertRect16(lpdis->hDC, &lpdis->rcItem);
SEGPTR_FREE(str);
@ -1476,24 +1476,24 @@ static void CC_PaintSelectedColor(HWND hDlg,COLORREF cr)
{
RECT16 rect;
HDC32 hdc;
HBRUSH16 hBrush;
HBRUSH32 hBrush;
HWND hwnd=GetDlgItem(hDlg,0x2c5);
if (IsWindowVisible(GetDlgItem(hDlg,0x2c6))) /* if full size */
{
hdc=GetDC32(hwnd);
GetClientRect16 (hwnd, &rect) ;
hBrush = CreateSolidBrush(cr);
hBrush = CreateSolidBrush32(cr);
if (hBrush)
{
hBrush = SelectObject (hdc, hBrush) ;
Rectangle (hdc, rect.left,rect.top,rect.right/2,rect.bottom);
DeleteObject (SelectObject (hdc,hBrush)) ;
hBrush=CreateSolidBrush(GetNearestColor(hdc,cr));
hBrush = SelectObject32 (hdc, hBrush) ;
Rectangle32(hdc, rect.left,rect.top,rect.right/2,rect.bottom);
DeleteObject32 (SelectObject32 (hdc,hBrush)) ;
hBrush=CreateSolidBrush32(GetNearestColor(hdc,cr));
if (hBrush)
{
hBrush= SelectObject (hdc, hBrush) ;
Rectangle (hdc, rect.right/2-1,rect.top,rect.right,rect.bottom);
DeleteObject (SelectObject (hdc, hBrush)) ;
hBrush= SelectObject32 (hdc, hBrush) ;
Rectangle32( hdc, rect.right/2-1,rect.top,rect.right,rect.bottom);
DeleteObject32( SelectObject32 (hdc, hBrush)) ;
}
}
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;
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.right =points[1].x+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);
RECT16 rect;
POINT16 point;
HPEN16 hPen;
HPEN32 hPen;
if (IsWindowVisible(GetDlgItem(hDlg,0x2c6))) /* if full size */
{
GetClientRect16(hwnd,&rect);
hDC=GetDC32(hwnd);
SelectClipRgn(hDC,CreateRectRgnIndirect16(&rect));
hPen=CreatePen(PS_SOLID,2,0);
hPen=SelectObject(hDC,hPen);
SelectClipRgn32(hDC,CreateRectRgnIndirect16(&rect));
hPen=CreatePen32(PS_SOLID,2,0);
hPen=SelectObject32(hDC,hPen);
point.x=((long)rect.right*(long)x)/(long)MAXHORI;
point.y=rect.bottom-((long)rect.bottom*(long)y)/(long)MAXVERT;
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;
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);
LineTo(hDC,point.x,point.y+w);
DeleteObject(SelectObject(hDC,hPen));
LineTo32(hDC,point.x,point.y+w);
DeleteObject32(SelectObject32(hDC,hPen));
ReleaseDC32(hwnd,hDC);
}
}
@ -1599,7 +1599,7 @@ static void CC_PrepareColorGraph(HWND hDlg)
int sdif,hdif,xdif,ydif,r,g,b,hue,sat;
HWND hwnd=GetDlgItem(hDlg,0x2c6);
struct CCPRIVATE * lpp=(struct CCPRIVATE *)GetWindowLong32A(hDlg, DWL_USER);
HBRUSH16 hbrush;
HBRUSH32 hbrush;
HDC32 hdc ;
RECT16 rect,client;
HCURSOR16 hcursor=SetCursor(LoadCursor16(0,IDC_WAIT));
@ -1608,7 +1608,7 @@ static void CC_PrepareColorGraph(HWND hDlg)
hdc=GetDC32(hwnd);
lpp->hdcMem = CreateCompatibleDC(hdc);
lpp->hbmMem = CreateCompatibleBitmap(hdc,client.right,client.bottom);
SelectObject(lpp->hdcMem,lpp->hbmMem);
SelectObject32(lpp->hdcMem,lpp->hbmMem);
xdif=client.right /XSTEPS;
ydif=client.bottom/YSTEPS+1;
@ -1624,9 +1624,9 @@ static void CC_PrepareColorGraph(HWND hDlg)
r=CC_HSLtoRGB('R',hue,sat,120);
g=CC_HSLtoRGB('G',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);
DeleteObject(hbrush);
DeleteObject32(hbrush);
rect.bottom=rect.top;
}
rect.left=rect.right;
@ -1666,7 +1666,7 @@ static void CC_PaintLumBar(HWND hDlg,int hue,int sat)
HWND hwnd=GetDlgItem(hDlg,0x2be);
RECT16 rect,client;
int lum,ldif,ydif,r,g,b;
HBRUSH16 hbrush;
HBRUSH32 hbrush;
HDC32 hDC;
if (IsWindowVisible(hwnd))
@ -1683,13 +1683,13 @@ static void CC_PaintLumBar(HWND hDlg,int hue,int sat)
r=CC_HSLtoRGB('R',hue,sat,lum);
g=CC_HSLtoRGB('G',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);
DeleteObject(hbrush);
DeleteObject32(hbrush);
rect.bottom=rect.top;
}
GetClientRect16(hwnd,&rect);
FrameRect16(hDC,&rect,GetStockObject(BLACK_BRUSH));
FrameRect16(hDC,&rect,GetStockObject32(BLACK_BRUSH));
ReleaseDC32(hwnd,hDC);
}
}
@ -1776,7 +1776,7 @@ static void CC_PaintPredefColorArray(HWND hDlg,int rows,int cols)
HWND hwnd=GetDlgItem(hDlg,0x2d0);
RECT16 rect;
HDC32 hdc;
HBRUSH16 hBrush;
HBRUSH32 hBrush;
int dx,dy,i,j,k;
GetClientRect16(hwnd,&rect);
@ -1791,14 +1791,14 @@ static void CC_PaintPredefColorArray(HWND hDlg,int rows,int cols)
{
for (i=0;i<cols;i++)
{
hBrush = CreateSolidBrush(predefcolors[j][i]);
hBrush = CreateSolidBrush32(predefcolors[j][i]);
if (hBrush)
{
hBrush = SelectObject (hdc, hBrush) ;
Rectangle (hdc, rect.left, rect.top,
rect.left+dx-DISTANCE,rect.top+dy-DISTANCE);
hBrush = SelectObject32 (hdc, hBrush) ;
Rectangle32(hdc, rect.left, rect.top,
rect.left+dx-DISTANCE, rect.top+dy-DISTANCE);
rect.left=rect.left+dx;
DeleteObject (SelectObject (hdc, hBrush)) ;
DeleteObject32( SelectObject32 (hdc, hBrush)) ;
}
}
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);
RECT16 rect;
HDC32 hdc;
HBRUSH16 hBrush;
HBRUSH32 hBrush;
int dx,dy,i,j,k;
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++)
{
hBrush = CreateSolidBrush(lpcr[i+j*cols]);
hBrush = CreateSolidBrush32(lpcr[i+j*cols]);
if (hBrush)
{
hBrush = SelectObject (hdc, hBrush) ;
Rectangle (hdc, rect.left, rect.top,
rect.left+dx-DISTANCE,rect.top+dy-DISTANCE);
hBrush = SelectObject32 (hdc, hBrush) ;
Rectangle32( hdc, rect.left, rect.top,
rect.left+dx-DISTANCE, rect.top+dy-DISTANCE);
rect.left=rect.left+dx;
DeleteObject (SelectObject (hdc, hBrush)) ;
DeleteObject32( SelectObject32 (hdc, hBrush)) ;
}
}
rect.top=rect.top+dy;
@ -2165,7 +2165,7 @@ LRESULT ColorDlgProc(HWND hDlg, UINT message,
return CC_WMInitDialog(hDlg,wParam,lParam);
case WM_NCDESTROY:
DeleteDC(lpp->hdcMem);
DeleteObject(lpp->hbmMem);
DeleteObject32(lpp->hbmMem);
free(lpp);
SetWindowLong32A(hDlg, DWL_USER, 0L); /* we don't need it anymore */
break;
@ -2321,10 +2321,10 @@ static int SetFontStylesToCombo2(HWND hwnd, HDC16 hdc, LPLOGFONT16 lplf,
lplf->lfItalic=fontstyles[i].italic;
lplf->lfWeight=fontstyles[i].weight;
hf=CreateFontIndirect16(lplf);
hf=SelectObject(hdc,hf);
hf=SelectObject32(hdc,hf);
GetTextMetrics16(hdc,lptm);
hf=SelectObject(hdc,hf);
DeleteObject(hf);
hf=SelectObject32(hdc,hf);
DeleteObject32(hf);
if (lptm->tmWeight==fontstyles[i].weight &&
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)
{
hBrush = SelectObject(lpdi->hDC, GetStockObject(LTGRAY_BRUSH));
SelectObject(lpdi->hDC, hBrush);
hBrush = SelectObject32(lpdi->hDC, GetStockObject32(LTGRAY_BRUSH));
SelectObject32(lpdi->hDC, hBrush);
FillRect16(lpdi->hDC, &lpdi->rcItem, hBrush);
}
else
@ -2591,10 +2591,10 @@ LRESULT CFn_WMDrawItem(HWND hDlg, WPARAM16 wParam, LPARAM lParam)
if (nFontType&TRUETYPE_FONTTYPE)
{
hMemDC = CreateCompatibleDC(lpdi->hDC);
hBitmap = SelectObject(hMemDC, hBitmapTT);
hBitmap = SelectObject32(hMemDC, hBitmapTT);
BitBlt(lpdi->hDC, lpdi->rcItem.left, lpdi->rcItem.top,
bm.bmWidth, bm.bmHeight, hMemDC, 0, 0, SRCCOPY);
SelectObject(hMemDC, hBitmap);
SelectObject32(hMemDC, hBitmap);
DeleteDC(hMemDC);
}
#endif
@ -2613,16 +2613,17 @@ LRESULT CFn_WMDrawItem(HWND hDlg, WPARAM16 wParam, LPARAM lParam)
TextOut16(lpdi->hDC, lpdi->rcItem.left + 25+5,
lpdi->rcItem.top, buffer, lstrlen16(buffer));
cr = SendMessage16(lpdi->hwndItem, CB_GETITEMDATA, lpdi->itemID,0L);
hBrush = CreateSolidBrush(cr);
hBrush = CreateSolidBrush32(cr);
if (hBrush)
{
hBrush = SelectObject (lpdi->hDC, hBrush) ;
hBrush = SelectObject32 (lpdi->hDC, hBrush) ;
rect.right=rect.left+25;
rect.top++;
rect.left+=5;
rect.bottom--;
Rectangle(lpdi->hDC,rect.left,rect.top,rect.right,rect.bottom);
DeleteObject (SelectObject (lpdi->hDC, hBrush)) ;
Rectangle32( lpdi->hDC, rect.left, rect.top,
rect.right, rect.bottom );
DeleteObject32( SelectObject32 (lpdi->hDC, hBrush)) ;
}
rect=lpdi->rcItem;
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)
{
SetTextColor(wParam,lpcf->rgbColors);
return GetStockObject(WHITE_BRUSH);
return GetStockObject32(WHITE_BRUSH);
}
return 0;
}

View File

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

View File

@ -1204,7 +1204,8 @@ _w95_loadreg(char* fn,LPKEYSTRUCT lpkey) {
}
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 */
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 );
if (!handle) return FALSE;
bRet = DialogBoxIndirectParam16( WIN_GetWindowInstance( hWnd ),
handle, hWnd,
MODULE_GetWndProcEntry16("AboutDlgProc"),
(LONG)hIcon );
handle, hWnd,
(DLGPROC16)MODULE_GetWndProcEntry16("AboutDlgProc"),
(LPARAM)hIcon );
SYSRES_FreeResource( handle );
return bRet;
}

View File

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

View File

@ -592,7 +592,7 @@ static int INT21_FindNext( SIGCONTEXT *context )
int count;
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 )))
{
free( dta->unixPath );
@ -741,7 +741,7 @@ static int INT21_FindNextFCB( SIGCONTEXT *context )
}
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,
pFCB->count, &entry )))
{

View File

@ -13,6 +13,14 @@
#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
*/
@ -52,7 +60,7 @@ void VXD_PageFile( SIGCONTEXT *context )
case 0x05: /* cancel?? INTERRUP.D */
case 0x06: /* test I/O valid INTERRUP.D */
default:
INT_BARF( context, 0x2f);
VXD_BARF( context, "pagefile" );
break;
}
}
@ -79,7 +87,7 @@ void VXD_Shell( SIGCONTEXT *context )
case 0x0004:
case 0x0005:
dprintf_vxd(stddeb,"VxD Shell: EDX = %08lx\n",EDX_reg(context));
INT_BARF( context, 0x2f);
VXD_BARF( context, "shell" );
break;
case 0x0006: /* SHELL_Get_VM_State */
@ -110,7 +118,7 @@ void VXD_Shell( SIGCONTEXT *context )
case 0x0016:
default:
dprintf_vxd(stddeb,"VxD Shell: EDX = %08lx\n",EDX_reg(context));
INT_BARF( context, 0x2f);
VXD_BARF( context, "shell");
break;
}
}
@ -135,6 +143,6 @@ void VXD_Comm( SIGCONTEXT *context )
case 0x0002: /* get focus */
case 0x0003: /* virtualise port */
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 );
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;
dc->w.hVisRgn = hrgn;
}

View File

@ -4,6 +4,7 @@
* Copyright 1993, 1994 Alexandre Julliard
*/
#define NO_TRANSITION_TYPES /* This file is Win32-clean */
#include <stdlib.h>
#include "brush.h"
#include "bitmap.h"
@ -93,7 +94,7 @@ static XImage *ditherImage = NULL;
*
* Create the X image used for dithering.
*/
BOOL BRUSH_Init(void)
BOOL32 BRUSH_Init(void)
{
XCREATEIMAGE( ditherImage, MATRIX_SIZE, MATRIX_SIZE, screenDepth );
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;
HBRUSH16 hbrush = GDI_AllocObject( sizeof(BRUSHOBJ), BRUSH_MAGIC );
if (!hbrush) return 0;
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;
}
/***********************************************************************
* CreateHatchBrush (GDI.58)
* CreateBrushIndirect32 (GDI32.27)
*/
HBRUSH16 CreateHatchBrush( INT style, COLORREF color )
HBRUSH32 CreateBrushIndirect32( const LOGBRUSH32 * brush )
{
LOGBRUSH16 logbrush = { BS_HATCHED, color, style };
dprintf_gdi(stddeb, "CreateHatchBrush: %d %06lx\n", style, color );
if ((style < 0) || (style >= NB_HATCH_STYLES)) return 0;
return CreateBrushIndirect( &logbrush );
BRUSHOBJ * brushPtr;
HBRUSH32 hbrush = GDI_AllocObject( sizeof(BRUSHOBJ), BRUSH_MAGIC );
if (!hbrush) return 0;
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;
dprintf_gdi(stddeb, "CreatePatternBrush: %04x\n", hbitmap );
@ -178,29 +218,30 @@ HBRUSH16 CreatePatternBrush( HBITMAP16 hbitmap )
if (!(bmp = (BITMAPOBJ *) GDI_GetObjPtr( hbitmap, BITMAP_MAGIC )))
return 0;
logbrush.lbHatch = (INT16)CreateBitmapIndirect16( &bmp->bitmap );
newbmp = (BITMAPOBJ *) GDI_GetObjPtr( (HGDIOBJ16)logbrush.lbHatch, BITMAP_MAGIC );
logbrush.lbHatch = (INT32)CreateBitmapIndirect16( &bmp->bitmap );
newbmp = (BITMAPOBJ *) GDI_GetObjPtr( (HGDIOBJ32)logbrush.lbHatch,
BITMAP_MAGIC );
if (!newbmp) return 0;
XCopyArea( display, bmp->pixmap, newbmp->pixmap, BITMAP_GC(bmp),
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;
int size;
INT32 size;
dprintf_gdi(stddeb, "CreateDIBPatternBrush: %04x\n", hbitmap );
/* Make a copy of the bitmap */
if (!(info = (BITMAPINFO *) GlobalLock16( hbitmap ))) return 0;
if (!(info = (BITMAPINFO *)GlobalLock16( hbitmap ))) return 0;
if (info->bmiHeader.biCompression)
size = info->bmiHeader.biSizeImage;
@ -209,7 +250,7 @@ HBRUSH16 CreateDIBPatternBrush( HGLOBAL16 hbitmap, UINT coloruse )
* 8 * info->bmiHeader.biHeight;
size += DIB_BitmapInfoSize( info, coloruse );
if (!(logbrush.lbHatch = (INT)GlobalAlloc16( GMEM_MOVEABLE, size )))
if (!(logbrush.lbHatch = (INT16)GlobalAlloc16( GMEM_MOVEABLE, size )))
{
GlobalUnlock16( hbitmap );
return 0;
@ -218,18 +259,64 @@ HBRUSH16 CreateDIBPatternBrush( HGLOBAL16 hbitmap, UINT coloruse )
memcpy( newInfo, info, size );
GlobalUnlock16( (HGLOBAL16)logbrush.lbHatch );
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)
*/
HBRUSH16 CreateSolidBrush( COLORREF color )
HBRUSH16 CreateSolidBrush16( COLORREF color )
{
LOGBRUSH16 logbrush = { BS_SOLID, color, 0 };
dprintf_gdi(stddeb, "CreateSolidBrush: %06lx\n", color );
return CreateBrushIndirect( &logbrush );
LOGBRUSH32 logbrush = { BS_SOLID, color, 0 };
dprintf_gdi(stddeb, "CreateSolidBrush16: %06lx\n", color );
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 );
return GetStockObject(LTGRAY_BRUSH);
fprintf( stderr, "Unimplemented stub: GetSysColorBrush16(%d)\n", index );
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)
{
case BS_PATTERN:
DeleteObject( (HGDIOBJ16)brush->logbrush.lbHatch );
DeleteObject32( (HGDIOBJ32)brush->logbrush.lbHatch );
break;
case BS_DIBPATTERN:
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);
memcpy( buffer, &brush->logbrush, count );
@ -330,7 +443,7 @@ static void BRUSH_SelectSolidBrush( DC *dc, COLORREF color )
/***********************************************************************
* 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 );
if (!bmp) return FALSE;
@ -357,7 +470,7 @@ static BOOL BRUSH_SelectPatternBrush( DC * dc, HBITMAP16 hbitmap )
/***********************************************************************
* BRUSH_SelectObject
*/
HBRUSH16 BRUSH_SelectObject( DC * dc, HBRUSH16 hbrush, BRUSHOBJ * brush )
HBRUSH32 BRUSH_SelectObject( DC * dc, HBRUSH32 hbrush, BRUSHOBJ * brush )
{
HBITMAP16 hBitmap;
BITMAPINFO * bmpInfo;
@ -367,22 +480,22 @@ HBRUSH16 BRUSH_SelectObject( DC * dc, HBRUSH16 hbrush, BRUSHOBJ * brush )
dc->hSelf,hbrush);
if (dc->header.wMagic == METAFILE_DC_MAGIC)
{
LOGBRUSH16 logbrush = { brush->logbrush.lbStyle,
brush->logbrush.lbColor,
brush->logbrush.lbHatch };
switch (brush->logbrush.lbStyle)
{
case BS_SOLID:
case BS_HATCHED:
case BS_HOLLOW:
if (!MF_CreateBrushIndirect(dc, hbrush, &(brush->logbrush)))
return (HBRUSH16)0;
if (!MF_CreateBrushIndirect( dc, hbrush, &logbrush )) return 0;
break;
case BS_PATTERN:
case BS_DIBPATTERN:
if (!MF_CreatePatternBrush(dc, hbrush, &(brush->logbrush)))
return (HBRUSH16)0;
if (!MF_CreatePatternBrush( dc, hbrush, &logbrush )) return 0;
break;
}
return (HBRUSH16)1;
return 1; /* FIXME? */
}
dc->w.hBrush = hbrush;
@ -427,7 +540,7 @@ HBRUSH16 BRUSH_SelectObject( DC * dc, HBRUSH16 hbrush, BRUSHOBJ * brush )
((char *)bmpInfo) + size, bmpInfo,
(WORD) brush->logbrush.lbColor );
BRUSH_SelectPatternBrush( dc, hBitmap );
DeleteObject( hBitmap );
DeleteObject16( hBitmap );
GlobalUnlock16( (HGLOBAL16)brush->logbrush.lbHatch );
}

View File

@ -4,12 +4,12 @@
* Copyright 1993 Alexandre Julliard
*/
#define NO_TRANSITION_TYPES /* This file is Win32-clean */
#include <stdio.h>
#include "dc.h"
#include "metafile.h"
#include "region.h"
#include "stddebug.h"
/* #define DEBUG_CLIPPING */
#include "debug.h"
#define UPDATE_DIRTY_DC(dc) \
@ -27,7 +27,7 @@
*/
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)
{
@ -42,19 +42,28 @@ void CLIPPING_UpdateGCRegion( DC * dc )
}
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
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 );
}
/***********************************************************************
* 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 );
if (!dc) return ERROR;
@ -62,12 +71,12 @@ int SelectClipRgn( HDC16 hdc, HRGN32 hrgn )
if (hrgn)
{
if (!dc->w.hClipRgn) dc->w.hClipRgn = CreateRectRgn(0,0,0,0);
retval = CombineRgn( dc->w.hClipRgn, hrgn, 0, RGN_COPY );
if (!dc->w.hClipRgn) dc->w.hClipRgn = CreateRectRgn32(0,0,0,0);
retval = CombineRgn32( dc->w.hClipRgn, hrgn, 0, RGN_COPY );
}
else
{
if (dc->w.hClipRgn) DeleteObject( dc->w.hClipRgn );
if (dc->w.hClipRgn) DeleteObject16( dc->w.hClipRgn );
dc->w.hClipRgn = 0;
retval = SIMPLEREGION; /* Clip region == whole DC */
}
@ -80,7 +89,7 @@ int SelectClipRgn( HDC16 hdc, HRGN32 hrgn )
/***********************************************************************
* SelectVisRgn (GDI.105)
*/
int SelectVisRgn( HDC16 hdc, HRGN32 hrgn )
INT16 SelectVisRgn( HDC16 hdc, HRGN16 hrgn )
{
int retval;
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
@ -90,16 +99,25 @@ int SelectVisRgn( HDC16 hdc, HRGN32 hrgn )
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 );
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 );
if (!dc)
@ -114,9 +132,9 @@ int OffsetClipRgn( HDC16 hdc, short x, short y )
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 );
return retval;
return ret;
}
else return SIMPLEREGION; /* Clip region == client area */
}
@ -125,13 +143,13 @@ int OffsetClipRgn( HDC16 hdc, short x, short y )
/***********************************************************************
* 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 );
if (!dc) return ERROR;
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 );
return retval;
}
@ -144,14 +162,14 @@ int OffsetVisRgn( HDC16 hdc, short x, short y )
* elsewhere (like ExtTextOut()) to skip redundant metafile update and
* coordinate conversion.
*/
int CLIPPING_IntersectClipRect( DC * dc, short left, short top,
short right, short bottom, UINT16 flags)
INT32 CLIPPING_IntersectClipRect( DC * dc, INT32 left, INT32 top,
INT32 right, INT32 bottom, UINT32 flags )
{
HRGN32 newRgn;
int ret;
INT32 ret;
if ( !(newRgn = CreateRectRgn( left, top, right, bottom )) ) return ERROR;
if ( !dc->w.hClipRgn )
if (!(newRgn = CreateRectRgn32( left, top, right, bottom ))) return ERROR;
if (!dc->w.hClipRgn)
{
if( flags & CLIP_INTERSECT )
{
@ -161,24 +179,34 @@ int CLIPPING_IntersectClipRect( DC * dc, short left, short top,
return SIMPLEREGION;
}
ret = CombineRgn( newRgn, dc->w.hClipRgn, newRgn,
(flags & CLIP_EXCLUDE)? RGN_DIFF : RGN_AND);
ret = CombineRgn32( newRgn, dc->w.hClipRgn, newRgn,
(flags & CLIP_EXCLUDE) ? RGN_DIFF : RGN_AND );
if (ret != ERROR)
{
if ( !(flags & CLIP_KEEPRGN) ) DeleteObject( dc->w.hClipRgn );
if (!(flags & CLIP_KEEPRGN)) DeleteObject32( dc->w.hClipRgn );
dc->w.hClipRgn = newRgn;
CLIPPING_UpdateGCRegion( dc );
}
else DeleteObject( newRgn );
else DeleteObject32( newRgn );
return ret;
}
/***********************************************************************
* ExcludeClipRect (GDI.21)
* ExcludeClipRect16 (GDI.21)
*/
int ExcludeClipRect( HDC16 hdc, short left, short top,
short right, short bottom )
INT16 ExcludeClipRect16( HDC16 hdc, INT16 left, INT16 top,
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 );
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,
short right, short bottom )
INT16 IntersectClipRect16( HDC16 hdc, INT16 left, INT16 top,
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 );
if (!dc)
@ -231,37 +269,38 @@ int IntersectClipRect( HDC16 hdc, short left, short top,
*
* Helper function for {Intersect,Exclude}VisRect
*/
static int CLIPPING_IntersectVisRect( DC * dc, short left, short top,
short right, short bottom, BOOL exclude )
static INT32 CLIPPING_IntersectVisRect( DC * dc, INT32 left, INT32 top,
INT32 right, INT32 bottom,
BOOL32 exclude )
{
HRGN32 tempRgn, newRgn;
int ret;
INT32 ret;
left = XLPTODP( dc, left );
right = XLPTODP( dc, right );
top = YLPTODP( dc, top );
bottom = YLPTODP( dc, bottom );
if (!(newRgn = CreateRectRgn( 0, 0, 0, 0 ))) return ERROR;
if (!(tempRgn = CreateRectRgn( left, top, right, bottom )))
if (!(newRgn = CreateRectRgn32( 0, 0, 0, 0 ))) return ERROR;
if (!(tempRgn = CreateRectRgn32( left, top, right, bottom )))
{
DeleteObject( newRgn );
DeleteObject32( newRgn );
return ERROR;
}
ret = CombineRgn( newRgn, dc->w.hVisRgn, tempRgn,
exclude ? RGN_DIFF : RGN_AND);
DeleteObject( tempRgn );
ret = CombineRgn32( newRgn, dc->w.hVisRgn, tempRgn,
exclude ? RGN_DIFF : RGN_AND );
DeleteObject32( tempRgn );
if (ret != ERROR)
{
RGNOBJ *newObj = (RGNOBJ*)GDI_GetObjPtr( newRgn, REGION_MAGIC);
RGNOBJ *prevObj = (RGNOBJ*)GDI_GetObjPtr( dc->w.hVisRgn, REGION_MAGIC);
if (newObj && prevObj) newObj->header.hNext = prevObj->header.hNext;
DeleteObject( dc->w.hVisRgn );
DeleteObject32( dc->w.hVisRgn );
dc->w.hVisRgn = newRgn;
CLIPPING_UpdateGCRegion( dc );
}
else DeleteObject( newRgn );
else DeleteObject32( newRgn );
return ret;
}
@ -269,8 +308,8 @@ static int CLIPPING_IntersectVisRect( DC * dc, short left, short top,
/***********************************************************************
* ExcludeVisRect (GDI.73)
*/
int ExcludeVisRect( HDC16 hdc, short left, short top,
short right, short bottom )
INT16 ExcludeVisRect( HDC16 hdc, INT16 left, INT16 top,
INT16 right, INT16 bottom )
{
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
if (!dc) return ERROR;
@ -284,8 +323,8 @@ int ExcludeVisRect( HDC16 hdc, short left, short top,
/***********************************************************************
* IntersectVisRect (GDI.98)
*/
int IntersectVisRect( HDC16 hdc, short left, short top,
short right, short bottom )
INT16 IntersectVisRect( HDC16 hdc, INT16 left, INT16 top,
INT16 right, INT16 bottom )
{
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
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 );
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);
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)
*/
HRGN32 SaveVisRgn( HDC16 hdc )
HRGN16 SaveVisRgn( HDC16 hdc )
{
HRGN32 copy;
RGNOBJ *obj, *copyObj;
@ -391,8 +439,8 @@ HRGN32 SaveVisRgn( HDC16 hdc )
if (!(obj = (RGNOBJ *) GDI_GetObjPtr( dc->w.hVisRgn, REGION_MAGIC )))
return 0;
if (!(copy = CreateRectRgn( 0, 0, 0, 0 ))) return 0;
CombineRgn( copy, dc->w.hVisRgn, 0, RGN_COPY );
if (!(copy = CreateRectRgn32( 0, 0, 0, 0 ))) return 0;
CombineRgn32( copy, dc->w.hVisRgn, 0, RGN_COPY );
if (!(copyObj = (RGNOBJ *) GDI_GetObjPtr( copy, REGION_MAGIC )))
return 0;
copyObj->header.hNext = obj->header.hNext;
@ -404,7 +452,7 @@ HRGN32 SaveVisRgn( HDC16 hdc )
/***********************************************************************
* RestoreVisRgn (GDI.130)
*/
int RestoreVisRgn( HDC16 hdc )
INT16 RestoreVisRgn( HDC16 hdc )
{
HRGN32 saved;
RGNOBJ *obj, *savedObj;
@ -416,7 +464,7 @@ int RestoreVisRgn( HDC16 hdc )
if (!(saved = obj->header.hNext)) return ERROR;
if (!(savedObj = (RGNOBJ *) GDI_GetObjPtr( saved, REGION_MAGIC )))
return ERROR;
DeleteObject( dc->w.hVisRgn );
DeleteObject32( dc->w.hVisRgn );
dc->w.hVisRgn = saved;
CLIPPING_UpdateGCRegion( dc );
return savedObj->xrgn ? COMPLEXREGION : NULLREGION;

View File

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

View File

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

View File

@ -632,12 +632,12 @@ int StretchDIBits( HDC16 hdc,
hBitmap = CreateDIBitmap( hdc, &info->bmiHeader, CBM_INIT,
bits, info, wUsage );
hdcMem = CreateCompatibleDC( hdc );
hOldBitmap = SelectObject( hdcMem, hBitmap );
hOldBitmap = SelectObject32( hdcMem, hBitmap );
StretchBlt( hdc, xDest, yDest, wDestWidth, wDestHeight,
hdcMem, xSrc, ySrc, wSrcWidth, wSrcHeight, dwRop );
SelectObject( hdcMem, hOldBitmap );
SelectObject32( hdcMem, hOldBitmap );
DeleteDC( hdcMem );
DeleteObject( hBitmap );
DeleteObject32( hBitmap );
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]);
memcpy(lpLogFont, lpLogFontList[i], sizeof(LOGFONT16) + LF_FACESIZE);
hFont = CreateFontIndirect16(lpLogFont);
hOldFont = SelectObject(hDC, hFont);
hOldFont = SelectObject32(hDC, hFont);
GetTextMetrics16(hDC, lptm);
SelectObject(hDC, hOldFont);
DeleteObject(hFont);
SelectObject32(hDC, hOldFont);
DeleteObject32(hFont);
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),
0, (LONG)lpData );
@ -1272,10 +1272,10 @@ INT EnumFontFamilies(HDC16 hDC, LPCSTR lpszFamily, FONTENUMPROC16 lpEnumFunc, LP
strcpy(lpEnumLogFont->elfFullName,"");
strcpy(lpEnumLogFont->elfStyle,"");
hFont = CreateFontIndirect16((LPLOGFONT16)lpEnumLogFont);
hOldFont = SelectObject(hDC, hFont);
hOldFont = SelectObject32(hDC, hFont);
GetTextMetrics16(hDC, lptm);
SelectObject(hDC, hOldFont);
DeleteObject(hFont);
SelectObject32(hDC, hOldFont);
DeleteObject32(hFont);
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),

View File

@ -4,6 +4,7 @@
* Copyright 1993 Alexandre Julliard
*/
#define NO_TRANSITION_TYPES /* This file is Win32-clean */
#include <stdlib.h>
#include <stdio.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 */
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 );
@ -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 (!StockObjects[obj]) return 0;
@ -299,9 +318,9 @@ INT16 GetObject16( HANDLE16 handle, INT16 count, LPVOID buffer )
switch(ptr->wMagic)
{
case PEN_MAGIC:
return PEN_GetObject( (PENOBJ *)ptr, count, buffer );
return PEN_GetObject16( (PENOBJ *)ptr, count, buffer );
case BRUSH_MAGIC:
return BRUSH_GetObject( (BRUSHOBJ *)ptr, count, buffer );
return BRUSH_GetObject16( (BRUSHOBJ *)ptr, count, buffer );
case BITMAP_MAGIC:
return BITMAP_GetObject16( (BITMAPOBJ *)ptr, count, buffer );
case FONT_MAGIC:
@ -330,12 +349,14 @@ INT32 GetObject32A( HANDLE32 handle, INT32 count, LPVOID buffer )
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:
return BITMAP_GetObject32( (BITMAPOBJ *)ptr, count, buffer );
case FONT_MAGIC:
return FONT_GetObject32A( (FONTOBJ *)ptr, count, buffer );
case PEN_MAGIC:
case BRUSH_MAGIC:
case PALETTE_MAGIC:
fprintf( stderr, "GetObject32: magic %04x not implemented\n",
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;
DC * dc;
@ -387,16 +417,25 @@ HGDIOBJ16 SelectObject( HDC16 hdc, HGDIOBJ16 handle )
case FONT_MAGIC:
return FONT_SelectObject( dc, handle, (FONTOBJ *)ptr );
case REGION_MAGIC:
return (HGDIOBJ16)SelectClipRgn( hdc, handle );
return (HGDIOBJ16)SelectClipRgn16( hdc, handle );
}
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 */
@ -421,10 +460,10 @@ BOOL UnrealizeObject( HGDIOBJ16 obj )
/***********************************************************************
* EnumObjects (GDI.71)
* EnumObjects16 (GDI.71)
*/
INT EnumObjects( HDC16 hdc, INT nObjType, GOBJENUMPROC16 lpEnumFunc,
LPARAM lParam )
INT16 EnumObjects16( HDC16 hdc, INT16 nObjType, GOBJENUMPROC16 lpEnumFunc,
LPARAM lParam )
{
/* Solid colors to enumerate */
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)
};
int i, retval = 0;
INT16 i, retval = 0;
LOGPEN16 *pen;
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 );
switch(nObjType)
{
@ -456,7 +495,7 @@ INT EnumObjects( HDC16 hdc, INT nObjType, GOBJENUMPROC16 lpEnumFunc,
pen->lopnWidth.y = 0;
pen->lopnColor = solid_colors[i];
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);
if (!retval) break;
}
@ -472,7 +511,7 @@ INT EnumObjects( HDC16 hdc, INT nObjType, GOBJENUMPROC16 lpEnumFunc,
brush->lbColor = solid_colors[i];
brush->lbHatch = 0;
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);
if (!retval) break;
}
@ -484,7 +523,7 @@ INT EnumObjects( HDC16 hdc, INT nObjType, GOBJENUMPROC16 lpEnumFunc,
brush->lbColor = RGB(0,0,0);
brush->lbHatch = i;
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);
if (!retval) break;
}
@ -492,7 +531,83 @@ INT EnumObjects( HDC16 hdc, INT nObjType, GOBJENUMPROC16 lpEnumFunc,
break;
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;
}
return retval;

View File

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

View File

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

View File

@ -4,27 +4,45 @@
* Copyright 1993 Alexandre Julliard
*/
#define NO_TRANSITION_TYPES /* This file is Win32-clean */
#include "pen.h"
#include "metafile.h"
#include "stddebug.h"
#include "color.h"
#include "stddebug.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 };
dprintf_gdi(stddeb, "CreatePen: %d %d %06lx\n", style, width, color );
return CreatePenIndirect( &logpen );
LOGPEN32 logpen = { style, { width, 0 }, color };
dprintf_gdi(stddeb, "CreatePen16: %d %d %06lx\n", style, width, color );
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;
HPEN16 hpen;
@ -32,16 +50,52 @@ HPEN16 CreatePenIndirect( const LOGPEN16 * pen )
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 );
memcpy( &penPtr->logpen, pen, sizeof(*pen) );
penPtr = (PENOBJ *)GDI_HEAP_LIN_ADDR( hpen );
penPtr->logpen.lopnStyle = pen->lopnStyle;
penPtr->logpen.lopnColor = pen->lopnColor;
CONV_POINT16TO32( &pen->lopnWidth, &penPtr->logpen.lopnWidth );
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);
memcpy( buffer, &pen->logpen, count );
@ -52,19 +106,19 @@ int PEN_GetObject( PENOBJ * pen, int count, LPSTR buffer )
/***********************************************************************
* 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 }; /* ----- ----- ----- */
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;
HPEN32 prevHandle = dc->w.hPen;
if (dc->header.wMagic == METAFILE_DC_MAGIC)
if (MF_CreatePenIndirect(dc, hpen, &(pen->logpen)))
return prevHandle;
else
return 0;
{
LOGPEN16 logpen = { pen->logpen.lopnStyle,
{ pen->logpen.lopnWidth.x,
pen->logpen.lopnWidth.y },
pen->logpen.lopnColor };
if (MF_CreatePenIndirect( dc, hpen, &logpen )) return prevHandle;
else return 0;
}
dc->w.hPen = hpen;
@ -77,19 +131,19 @@ HPEN16 PEN_SelectObject( DC * dc, HPEN16 hpen, PENOBJ * pen )
switch(pen->logpen.lopnStyle)
{
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;
break;
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;
break;
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;
break;
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;
break;
}

View File

@ -15,7 +15,7 @@
/***********************************************************************
* REGION_DeleteObject
*/
BOOL16 REGION_DeleteObject( HRGN32 hrgn, RGNOBJ * obj )
BOOL32 REGION_DeleteObject( HRGN32 hrgn, RGNOBJ * obj )
{
dprintf_region(stddeb, "DeleteRegion: %04x\n", hrgn );
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 );
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;
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 )
{
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 )
{
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,
INT32 ellipse_width, INT32 ellipse_height )
HRGN16 CreateRoundRectRgn16( INT16 left, INT16 top, INT16 right, INT16 bottom,
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;
HRGN16 hrgn;
HRGN32 hrgn;
XRectangle rect;
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) ||
(ellipse_width <= 0) || (ellipse_height <= 0))
return CreateRectRgn( left, top, right, bottom );
return CreateRectRgn32( left, top, right, bottom );
/* 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,
right-left, bottom-top );
return (HRGN16)CreateRoundRectRgn32( left, top, right, bottom,
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 )
{
return CreateRoundRectRgn(rect->left, rect->top, rect->right, rect->bottom,
rect->right-rect->left, rect->bottom-rect->top );
return CreateRoundRectRgn32( rect->left, rect->top, rect->right,
rect->bottom, rect->right - rect->left,
rect->bottom - rect->top );
}
@ -261,8 +301,9 @@ HRGN16 CreateEllipticRgnIndirect16( const RECT16 *rect )
*/
HRGN32 CreateEllipticRgnIndirect32( const RECT32 *rect )
{
return CreateRoundRectRgn(rect->left, rect->top, rect->right, rect->bottom,
rect->right-rect->left, rect->bottom-rect->top );
return CreateRoundRectRgn32( rect->left, rect->top, rect->right,
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;
@ -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;
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.
*/
static int REGION_CopyRegion( RGNOBJ *src, RGNOBJ *dest )
static INT32 REGION_CopyRegion( RGNOBJ *src, RGNOBJ *dest )
{
Region tmprgn;
if (src->xrgn)
@ -428,11 +487,11 @@ static int REGION_CopyRegion( RGNOBJ *src, RGNOBJ *dest )
*
* 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 );
XRectangle rect = { rc->left, rc->top, rc->right - rc->left, rc->bottom - rc->top };
BOOL16 ret = 0;
BOOL32 ret = FALSE;
if( rgnObj )
{
@ -452,34 +511,45 @@ BOOL16 REGION_UnionRectWithRgn( HRGN32 hRgn, LPRECT16 rc )
return ret;
}
/***********************************************************************
* REGION_CreateFrameRgn
*
* 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;
Region result;
destObj = (RGNOBJ*) GDI_GetObjPtr( hDest, REGION_MAGIC );
srcObj = (RGNOBJ*) GDI_GetObjPtr( hSrc, REGION_MAGIC );
if (!srcObj->xrgn) return 0;
if (!srcObj->xrgn) return FALSE;
REGION_CopyRegion( srcObj, destObj );
XShrinkRegion( destObj->xrgn, -x, -y );
result = XCreateRegion();
XSubtractRegion( destObj->xrgn, srcObj->xrgn, result );
XDestroyRegion( destObj->xrgn );
destObj->xrgn = result;
return 1;
return TRUE;
}
/***********************************************************************
* CombineRgn (GDI.451) (GDI32.19)
*
* The behavior is correct even if src and dest regions are the same.
* CombineRgn16 (GDI.451)
*/
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;
Region destrgn;

View File

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

View File

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

View File

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

View File

@ -14,7 +14,6 @@
#include <string.h>
#include "windows.h"
#include "parser.h"
#include "y.tab.h"
char usage[]="winerc -bdvc -p prefix -o outfile < infile \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;
add_include( pFile, include );
}
fclose(file);
}
@ -293,6 +294,7 @@ static void output_dependencies(void)
pFile, &column );
fprintf( file, "\n" );
}
fclose(file);
}

View File

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

View File

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

View File

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

View File

@ -87,7 +87,7 @@ void DCE_FreeDCE( DCE *dce )
DeleteDC( dce->hDC );
if( dce->hClipRgn && !(dce->DCXflags & DCX_KEEPCLIPRGN) )
DeleteObject(dce->hClipRgn);
DeleteObject32(dce->hClipRgn);
HeapFree( SystemHeap, 0, dce );
}
@ -242,9 +242,9 @@ static HRGN32 DCE_ClipWindows( WND *pWndStart, WND *pWndEnd,
HRGN32 hrgnNew;
if (!pWndStart) return hrgn;
if (!(hrgnNew = CreateRectRgn( 0, 0, 0, 0 )))
if (!(hrgnNew = CreateRectRgn32( 0, 0, 0, 0 )))
{
DeleteObject( hrgn );
DeleteObject32( hrgn );
return 0;
}
for (; pWndStart != pWndEnd; pWndStart = pWndStart->next)
@ -254,12 +254,12 @@ static HRGN32 DCE_ClipWindows( WND *pWndStart, WND *pWndEnd,
pWndStart->rectWindow.top + yoffset,
pWndStart->rectWindow.right + xoffset,
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 */
{
DeleteObject( hrgn );
DeleteObject32( hrgn );
return 0;
}
return hrgn;
@ -287,7 +287,7 @@ HRGN32 DCE_GetVisRgn( HWND hwnd, WORD flags )
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;
@ -407,6 +407,8 @@ HDC32 GetDCEx32( HWND32 hwnd, HRGN32 hrgnClip, DWORD flags )
if (!(wndPtr = WIN_FindWndPtr( hwnd ))) return 0;
if (!(wndPtr->class->style & (CS_OWNDC | CS_CLASSDC))) flags |= DCX_CACHE;
if (flags & DCX_USESTYLE)
{
flags &= ~( DCX_CLIPCHILDREN | DCX_CLIPSIBLINGS | DCX_PARENTCLIP);
@ -416,9 +418,6 @@ HDC32 GetDCEx32( HWND32 hwnd, HRGN32 hrgnClip, DWORD flags )
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->dwStyle & WS_CLIPCHILDREN &&
@ -469,7 +468,7 @@ HDC32 GetDCEx32( HWND32 hwnd, HRGN32 hrgnClip, DWORD flags )
if( hrgnClip && dce->hClipRgn && !(dce->DCXflags & DCX_KEEPCLIPRGN))
{
fprintf(stdnimp,"GetDCEx: hClipRgn collision!\n");
DeleteObject(dce->hClipRgn);
DeleteObject32( dce->hClipRgn );
need_update = TRUE;
}
}
@ -498,17 +497,17 @@ HDC32 GetDCEx32( HWND32 hwnd, HRGN32 hrgnClip, DWORD flags )
dcx_flags |= DCX_CLIPSIBLINGS;
hrgnVisible = DCE_GetVisRgn( parentPtr->hwndSelf, dcx_flags );
if (flags & DCX_WINDOW)
OffsetRgn( hrgnVisible, -wndPtr->rectWindow.left,
-wndPtr->rectWindow.top );
else OffsetRgn( hrgnVisible, -wndPtr->rectClient.left,
-wndPtr->rectClient.top );
OffsetRgn32( hrgnVisible, -wndPtr->rectWindow.left,
-wndPtr->rectWindow.top );
else OffsetRgn32( hrgnVisible, -wndPtr->rectClient.left,
-wndPtr->rectClient.top );
}
/* optimize away GetVisRgn for desktop if it isn't there */
else if ((hwnd == GetDesktopWindow32()) &&
(rootWindow == DefaultRootWindow(display)))
hrgnVisible = CreateRectRgn( 0, 0, SYSMETRICS_CXSCREEN,
SYSMETRICS_CYSCREEN);
hrgnVisible = CreateRectRgn32( 0, 0, SYSMETRICS_CXSCREEN,
SYSMETRICS_CYSCREEN );
else hrgnVisible = DCE_GetVisRgn( hwnd, flags );
if( wndPtr->parent && wndPtr->window )
@ -526,7 +525,7 @@ HDC32 GetDCEx32( HWND32 hwnd, HRGN32 hrgnClip, DWORD flags )
dc->w.flags &= ~DC_DIRTY;
SelectVisRgn( hdc, hrgnVisible );
}
else hrgnVisible = CreateRectRgn(0,0,0,0);
else hrgnVisible = CreateRectRgn32( 0, 0, 0, 0 );
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);
SaveVisRgn( hdc );
CombineRgn( hrgnVisible, InquireVisRgn( hdc ), hrgnClip,
(flags & DCX_INTERSECTRGN) ? RGN_AND : RGN_DIFF );
CombineRgn32( hrgnVisible, InquireVisRgn( hdc ), hrgnClip,
(flags & DCX_INTERSECTRGN) ? RGN_AND : RGN_DIFF );
SelectVisRgn( hdc, hrgnVisible );
}
DeleteObject( hrgnVisible );
DeleteObject32( hrgnVisible );
dprintf_dc(stddeb, "GetDCEx(%04x,%04x,0x%lx): returning %04x\n",
hwnd, hrgnClip, flags, hdc);
@ -622,7 +621,7 @@ INT32 ReleaseDC32( HWND32 hwnd, HDC32 hdc )
dce->DCXflags &= ~DCX_KEEPCLIPRGN;
else
if( dce->hClipRgn > 1 )
DeleteObject( dce->hClipRgn );
DeleteObject32( dce->hClipRgn );
dce->hClipRgn = 0;
RestoreVisRgn(dce->hDC);
@ -673,11 +672,11 @@ BOOL16 DCHook( HDC16 hDC, WORD code, DWORD data, LPARAM lParam )
(dce->hClipRgn == 1 && dce->DCXflags & DCX_EXCLUDERGN) )
SetRectRgn(hVisRgn,0,0,0,0);
else
CombineRgn(hVisRgn, hVisRgn, dce->hClipRgn,
CombineRgn32(hVisRgn, hVisRgn, dce->hClipRgn,
(dce->DCXflags & DCX_EXCLUDERGN)? RGN_DIFF:RGN_AND);
}
SelectVisRgn(hDC, hVisRgn);
DeleteObject(hVisRgn);
DeleteObject32( hVisRgn );
}
else
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
* 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();
@ -35,7 +35,7 @@ static void DEFDLG_SetFocus( HWND hwndDlg, HWND hwndCtrl )
/***********************************************************************
* DEFDLG_SaveFocus
*/
static BOOL DEFDLG_SaveFocus( HWND hwnd, DIALOGINFO *infoPtr )
static BOOL32 DEFDLG_SaveFocus( HWND32 hwnd, DIALOGINFO *infoPtr )
{
HWND32 hwndFocus = GetFocus32();
@ -49,7 +49,7 @@ static BOOL DEFDLG_SaveFocus( HWND hwnd, DIALOGINFO *infoPtr )
/***********************************************************************
* 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 (!IsWindow( infoPtr->hwndFocus )) return FALSE;
@ -64,9 +64,9 @@ static BOOL DEFDLG_RestoreFocus( HWND hwnd, DIALOGINFO *infoPtr )
*
* 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)
{
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.
*/
static BOOL DEFDLG_SetDefButton( HWND hwndDlg, DIALOGINFO *dlgInfo,
HWND hwndNew )
static BOOL32 DEFDLG_SetDefButton( HWND32 hwndDlg, DIALOGINFO *dlgInfo,
HWND32 hwndNew )
{
if (hwndNew &&
!(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 */
{
HWND hwndOld = GetDlgItem( hwndDlg, dlgInfo->msgResult );
HWND32 hwndOld = GetDlgItem( hwndDlg, dlgInfo->msgResult );
if (SendMessage32A( hwndOld, WM_GETDLGCODE, 0, 0) & DLGC_DEFPUSHBUTTON)
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,
LPARAM lParam, DIALOGINFO *dlgInfo )
{
HWND hwndDefId;
HWND32 hwndDefId;
switch(msg)
{
@ -138,7 +138,7 @@ static LRESULT DEFDLG_Proc( HWND32 hwnd, UINT32 msg, WPARAM32 wParam,
/* Delete font */
if (dlgInfo->hUserFont)
{
DeleteObject( dlgInfo->hUserFont );
DeleteObject32( dlgInfo->hUserFont );
dlgInfo->hUserFont = 0;
}
@ -186,7 +186,7 @@ static LRESULT DEFDLG_Proc( HWND32 hwnd, UINT32 msg, WPARAM32 wParam,
case WM_NEXTDLGCTL:
{
HWND hwndDest = (HWND)wParam;
HWND32 hwndDest = (HWND32)wParam;
if (!lParam)
hwndDest = GetNextDlgTabItem32(hwnd, GetFocus32(), wParam);
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))
{
HBRUSH16 hbrush = CreateSolidBrush(
HBRUSH32 hbrush = CreateSolidBrush32(
GetSysColor(((DWORD)wndPtr->class->hbrBackground)-1));
FillWindow( GetParent16(wndPtr->hwndSelf), wndPtr->hwndSelf,
(HDC16)wParam, hbrush);
DeleteObject (hbrush);
DeleteObject32( hbrush );
}
else FillWindow( GetParent16(wndPtr->hwndSelf), wndPtr->hwndSelf,
(HDC16)wParam, wndPtr->class->hbrBackground );
@ -199,7 +199,7 @@ static LRESULT DEFWND_DefWinProc( WND *wndPtr, UINT32 msg, WPARAM32 wParam,
case WM_CTLCOLORSCROLLBAR:
SetBkColor( (HDC32)wParam, RGB(255, 255, 255) );
SetTextColor( (HDC32)wParam, RGB(0, 0, 0) );
UnrealizeObject( sysColorObjects.hbrushScrollbar );
UnrealizeObject32( sysColorObjects.hbrushScrollbar );
return (LRESULT)sysColorObjects.hbrushScrollbar;
case WM_CTLCOLOR:
@ -208,7 +208,7 @@ static LRESULT DEFWND_DefWinProc( WND *wndPtr, UINT32 msg, WPARAM32 wParam,
{
SetBkColor( (HDC32)wParam, RGB(255, 255, 255) );
SetTextColor( (HDC32)wParam, RGB(0, 0, 0) );
UnrealizeObject( sysColorObjects.hbrushScrollbar );
UnrealizeObject32( sysColorObjects.hbrushScrollbar );
return (LRESULT)sysColorObjects.hbrushScrollbar;
}
else

View File

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

View File

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

View File

@ -4,6 +4,7 @@
* Copyright 1993, 1994 Alexandre Julliard
*/
#define NO_TRANSITION_TYPES /* This file is Win32-clean */
#include <math.h>
#include <stdlib.h>
#include <X11/Xlib.h>
@ -26,9 +27,18 @@
#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 );
if (!dc)
@ -54,9 +64,9 @@ BOOL LineTo( HDC16 hdc, short x, short y )
/***********************************************************************
* 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 );
if (!dc)
{
@ -65,12 +75,10 @@ DWORD MoveTo( HDC16 hdc, short x, short y )
MF_MetaParam2(dc, META_MOVETO, x, y);
return 0;
}
oldx = dc->w.CursPosX;
oldy = dc->w.CursPosY;
ret = MAKELONG( dc->w.CursPosX, dc->w.CursPosY );
dc->w.CursPosX = x;
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().
* '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,
int xstart, int ystart, int xend, int yend, int lines )
static BOOL32 GRAPH_DrawArc( HDC32 hdc, INT32 left, INT32 top, INT32 right,
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;
XPoint points[3];
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) );
end_angle = atan2( (double)(ycenter-yend)*(right-left),
(double)(xend-xcenter)*(bottom-top) );
istart_angle = (int)(start_angle * 180 * 64 / PI);
idiff_angle = (int)((end_angle - start_angle) * 180 * 64 / PI );
istart_angle = (INT32)(start_angle * 180 * 64 / PI);
idiff_angle = (INT32)((end_angle - start_angle) * 180 * 64 / PI );
if (idiff_angle <= 0) idiff_angle += 360 * 64;
if (left > right) { tmp=left; left=right; right=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,
INT xstart, INT ystart, INT xend, INT yend )
BOOL16 Arc16( 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,
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,
INT xstart, INT ystart, INT xend, INT yend )
BOOL32 Arc32( 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, 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,
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,
INT xstart, INT ystart, INT xend, INT yend )
BOOL32 Pie32( 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, 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,
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 );
if (!dc)
@ -250,8 +301,8 @@ BOOL Ellipse( HDC16 hdc, INT left, INT top, INT right, INT bottom )
bottom = YLPTODP( dc, bottom );
if ((left == right) || (top == bottom)) return FALSE;
if (right < left) { INT tmp = right; right = left; left = tmp; }
if (bottom < top) { INT tmp = bottom; bottom = top; top = tmp; }
if (right < left) { INT32 tmp = right; right = left; left = tmp; }
if (bottom < top) { INT32 tmp = bottom; bottom = top; top = tmp; }
if ((dc->u.x.pen.style == PS_INSIDEFRAME) &&
(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;
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 );
bottom = YLPTODP( dc, bottom );
if (right < left) { INT tmp = right; right = left; left = tmp; }
if (bottom < top) { INT tmp = bottom; bottom = top; top = tmp; }
if (right < left) { INT32 tmp = right; right = left; left = tmp; }
if (bottom < top) { INT32 tmp = bottom; bottom = top; top = tmp; }
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,
INT ell_width, INT ell_height )
BOOL16 RoundRect16( HDC16 hdc, INT16 left, INT16 top, INT16 right,
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)
{
dc = (DC *)GDI_GetObjPtr(hDC, METAFILE_DC_MAGIC);
dc = (DC *)GDI_GetObjPtr(hdc, METAFILE_DC_MAGIC);
if (!dc) return FALSE;
MF_MetaParam6(dc, META_ROUNDRECT, left, top, right, bottom,
ell_width, ell_height);
@ -360,8 +430,8 @@ BOOL RoundRect( HDC16 hDC, INT left, INT top, INT right, INT bottom,
/* Fix the coordinates */
if (right < left) { INT tmp = right; right = left; left = tmp; }
if (bottom < top) { INT tmp = bottom; bottom = top; top = tmp; }
if (right < left) { INT32 tmp = right; right = left; left = tmp; }
if (bottom < top) { INT32 tmp = bottom; bottom = top; top = tmp; }
if (ell_width > right - left) ell_width = right - left;
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().
*/
if (!(prevBrush = SelectObject( hdc, hbrush ))) return 0;
if (!(prevBrush = SelectObject16( hdc, hbrush ))) return 0;
PatBlt( hdc, rect->left, rect->top,
rect->right - rect->left, rect->bottom - rect->top, PATCOPY );
SelectObject( hdc, prevBrush );
SelectObject16( hdc, prevBrush );
return 1;
}
@ -475,12 +545,12 @@ INT16 FillRect16( HDC16 hdc, const RECT16 *rect, HBRUSH16 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,
rect->right - rect->left, rect->bottom - rect->top, PATCOPY );
SelectObject( hdc, prevBrush );
SelectObject32( hdc, prevBrush );
return 1;
}
@ -522,7 +592,7 @@ INT16 FrameRect16( HDC16 hdc, const RECT16 *rect, HBRUSH16 hbrush )
bottom = YLPTODP( dc, rect->bottom );
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 ))
{
@ -535,7 +605,7 @@ INT16 FrameRect16( HDC16 hdc, const RECT16 *rect, HBRUSH16 hbrush )
PatBlt( hdc, rect->left, rect->bottom - 1,
rect->right - rect->left, 1, PATCOPY );
}
SelectObject( hdc, prevBrush );
SelectObject16( hdc, prevBrush );
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;
@ -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;
XImage * image;
@ -597,7 +685,7 @@ COLORREF GetPixel( HDC16 hdc, short x, short y )
return 0;
#endif
if (!PtVisible( hdc, x, y )) return 0;
if (!PtVisible32( hdc, x, y )) return 0;
x = dc->w.DCOrgX + XLPTODP( dc, x );
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;
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
if (!dc) return FALSE;
@ -636,18 +733,18 @@ BOOL PaintRgn( HDC16 hdc, HRGN32 hrgn )
/* Modify visible region */
if (!(prevVisRgn = SaveVisRgn( hdc ))) return FALSE;
if (!(tmpVisRgn = CreateRectRgn( 0, 0, 0, 0 )))
if (!(tmpVisRgn = CreateRectRgn32( 0, 0, 0, 0 )))
{
RestoreVisRgn( hdc );
return FALSE;
}
CombineRgn( tmpVisRgn, prevVisRgn, hrgn, RGN_AND );
CombineRgn32( tmpVisRgn, prevVisRgn, hrgn, RGN_AND );
SelectVisRgn( hdc, tmpVisRgn );
DeleteObject( tmpVisRgn );
DeleteObject32( tmpVisRgn );
/* Fill the region */
GetRgnBox16( dc->w.hGCClipRgn, &box );
GetRgnBox32( dc->w.hGCClipRgn, &box );
if (DC_SetupGCForBrush( dc ))
XFillRectangle( display, dc->u.x.drawable, dc->u.x.gc,
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;
HBRUSH16 prevBrush = SelectObject( hdc, hbrush );
return FillRgn32( hdc, hrgn, hbrush );
}
/***********************************************************************
* FillRgn32 (GDI32.101)
*/
BOOL32 FillRgn32( HDC32 hdc, HRGN32 hrgn, HBRUSH32 hbrush )
{
BOOL32 retval;
HBRUSH32 prevBrush = SelectObject32( hdc, hbrush );
if (!prevBrush) return FALSE;
retval = PaintRgn( hdc, hrgn );
SelectObject( hdc, prevBrush );
retval = PaintRgn32( hdc, hrgn );
SelectObject32( hdc, prevBrush );
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 );
BOOL retval = PaintRgn( hdc, hrgn );
SelectObject( hdc, prevBrush );
BOOL32 retval = PaintRgn32( hdc, hrgn );
SelectObject32( hdc, prevBrush );
SetROP2( hdc, prevROP );
return retval;
}
@ -704,9 +832,21 @@ BOOL InvertRgn( HDC16 hdc, HRGN32 hrgn )
*/
void DrawFocusRect16( HDC16 hdc, const RECT16* rc )
{
HPEN16 hOldPen;
int oldDrawMode, oldBkMode;
int left, top, right, bottom;
RECT32 rect32;
CONV_RECT16TO32( rc, &rect32 );
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 );
if (!dc) return;
@ -715,7 +855,7 @@ void DrawFocusRect16( HDC16 hdc, const RECT16* rc )
right = XLPTODP( dc, rc->right );
bottom = YLPTODP( dc, rc->bottom );
hOldPen = (HPEN16)SelectObject(hdc, sysColorObjects.hpenWindowText );
hOldPen = SelectObject32( hdc, sysColorObjects.hpenWindowText );
oldDrawMode = SetROP2(hdc, R2_XORPEN);
oldBkMode = SetBkMode(hdc, TRANSPARENT);
@ -729,18 +869,7 @@ void DrawFocusRect16( HDC16 hdc, const RECT16* rc )
SetBkMode(hdc, oldBkMode);
SetROP2(hdc, oldDrawMode);
SelectObject(hdc, hOldPen);
}
/***********************************************************************
* DrawFocusRect32 (USER32.155)
*/
void DrawFocusRect32( HDC32 hdc, const RECT32* rect )
{
RECT16 rect16;
CONV_RECT32TO16( rect, &rect16 );
return DrawFocusRect16( (HDC16)hdc, &rect16 );
SelectObject32(hdc, hOldPen);
}
@ -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,
INT32 shadow_size, BOOL32 pressed )
{
HBRUSH16 hbrushOld;
int i;
HBRUSH32 hbrushOld;
INT32 i;
hbrushOld = SelectObject( hdc, pressed ? sysColorObjects.hbrushBtnShadow :
hbrushOld = SelectObject32(hdc, pressed ? sysColorObjects.hbrushBtnShadow :
sysColorObjects.hbrushBtnHighlight );
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 );
}
SelectObject( hdc, pressed ? sysColorObjects.hbrushBtnHighlight :
sysColorObjects.hbrushBtnShadow );
SelectObject32( hdc, pressed ? sysColorObjects.hbrushBtnHighlight :
sysColorObjects.hbrushBtnShadow );
for (i = 0; i < shadow_size; 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 );
}
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... */
/* At least the outline will be correct :-) */
hrgn = CreatePolyPolygonRgn16( pt, counts, polygons, dc->w.polyFillMode );
PaintRgn( hdc, hrgn );
DeleteObject( hrgn );
PaintRgn32( hdc, hrgn );
DeleteObject32( hrgn );
/* Draw the outline of the polygons */
@ -1001,7 +1130,7 @@ static void GRAPH_InternalFloodFill( XImage *image, DC *dc,
*
* 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 )
{
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,
UINT32 fillType )
BOOL16 ExtFloodFill16( HDC16 hdc, INT16 x, INT16 y, COLORREF color,
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;
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;
}
if (!PtVisible( hdc, x, y )) return FALSE;
if (GetRgnBox16( dc->w.hGCClipRgn, &rect ) == ERROR) return FALSE;
if (!PtVisible32( hdc, x, y )) return FALSE;
if (GetRgnBox32( dc->w.hGCClipRgn, &rect ) == ERROR) return FALSE;
return CallTo32_LargeStack( (int(*)())GRAPH_DoFloodFill, 6,
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 )
{
HBRUSH16 hbrushOld;
HBRUSH32 hbrushOld;
if (flags >= BF_DIAGONAL)
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 */
SelectObject( hdc, sysColorObjects.hbrushBtnHighlight );
hbrushOld = SelectObject32( hdc, sysColorObjects.hbrushBtnHighlight );
if (edge & BDR_RAISEDOUTER)
{
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 */
hbrushOld = SelectObject( hdc, sysColorObjects.hbrushBtnShadow );
SelectObject32( hdc, sysColorObjects.hbrushBtnShadow );
if (edge & BDR_SUNKENOUTER)
{
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 );
}
SelectObject( hdc, hbrushOld );
SelectObject32( hdc, hbrushOld );
return TRUE;
}

View File

@ -326,7 +326,7 @@ FARPROC16 SetWindowsHook16( 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 );
@ -380,7 +380,7 @@ HHOOK SetWindowsHookEx16( INT16 id, HOOKPROC16 proc, HINSTANCE16 hInst,
/***********************************************************************
* UnhookWindowHookEx16 (USER.292)
* UnhookWindowsHookEx16 (USER.292)
*/
BOOL16 UnhookWindowsHookEx16( HHOOK hhook )
{

View File

@ -668,17 +668,17 @@ HBITMAP16 CreateMDIMenuBitmap(void)
HBITMAP16 hbClose = LoadBitmap16(0, MAKEINTRESOURCE(OBM_CLOSE) );
HBITMAP16 hbCopy,hb_src,hb_dest;
hb_src = SelectObject(hDCSrc,hbClose);
hb_src = SelectObject32(hDCSrc,hbClose);
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,
hDCSrc, SYSMETRICS_CXSIZE, 0, SRCCOPY);
SelectObject(hDCSrc,hb_src);
SelectObject(hDCDest,hb_dest);
SelectObject32(hDCSrc,hb_src);
SelectObject32(hDCDest,hb_dest);
DeleteObject(hbClose);
DeleteObject32(hbClose);
DeleteDC(hDCDest);
DeleteDC(hDCSrc);

View File

@ -152,12 +152,11 @@ BOOL32 AdjustWindowRectEx32( LPRECT32 rect, DWORD style,
*
* 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 )
{
MINMAXINFO16 *MinMax;
short xinc, yinc;
WND *wndPtr = WIN_FindWndPtr( hwnd );
if (!(MinMax = SEGPTR_NEW(MINMAXINFO16))) return;
@ -204,7 +203,8 @@ void NC_GetMinMaxInfo( HWND hwnd, POINT16 *maxSize, POINT16 *maxPos,
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 */
@ -299,7 +299,7 @@ static void NC_GetInsideRect( HWND hwnd, RECT16 *rect )
*
* Handle a WM_NCHITTEST message. Called from DefWindowProc().
*/
LONG NC_HandleNCHitTest( HWND hwnd, POINT16 pt )
LONG NC_HandleNCHitTest( HWND32 hwnd, POINT16 pt )
{
RECT16 rect;
WND *wndPtr = WIN_FindWndPtr( hwnd );
@ -442,11 +442,11 @@ void NC_DrawSysButton( HWND hwnd, HDC16 hdc, BOOL down )
{
NC_GetInsideRect( hwnd, &rect );
hdcMem = CreateCompatibleDC( hdc );
hbitmap = SelectObject( hdcMem, hbitmapClose );
hbitmap = SelectObject32( hdcMem, hbitmapClose );
BitBlt( hdc, rect.left, rect.top, SYSMETRICS_CXSIZE, SYSMETRICS_CYSIZE,
hdcMem, (wndPtr->dwStyle & WS_CHILD) ? SYSMETRICS_CXSIZE : 0, 0,
down ? NOTSRCCOPY : SRCCOPY );
SelectObject( hdcMem, hbitmap );
SelectObject32( hdcMem, hbitmap );
DeleteDC( hdcMem );
}
}
@ -505,15 +505,15 @@ static void NC_DrawFrame( HDC16 hdc, RECT16 *rect, BOOL dlgFrame, BOOL active )
{
width = SYSMETRICS_CXDLGFRAME - 1;
height = SYSMETRICS_CYDLGFRAME - 1;
SelectObject( hdc, active ? sysColorObjects.hbrushActiveCaption :
sysColorObjects.hbrushInactiveCaption );
SelectObject32( hdc, active ? sysColorObjects.hbrushActiveCaption :
sysColorObjects.hbrushInactiveCaption );
}
else
{
width = SYSMETRICS_CXFRAME - 1;
height = SYSMETRICS_CYFRAME - 1;
SelectObject( hdc, active ? sysColorObjects.hbrushActiveBorder :
sysColorObjects.hbrushInactiveBorder );
SelectObject32( hdc, active ? sysColorObjects.hbrushActiveBorder :
sysColorObjects.hbrushInactiveBorder );
}
/* Draw frame */
@ -534,35 +534,35 @@ static void NC_DrawFrame( HDC16 hdc, RECT16 *rect, BOOL dlgFrame, BOOL active )
/* Draw inner rectangle */
MoveTo( hdc, rect->left+width, rect->top+height );
LineTo( hdc, rect->right-width-1, rect->top+height );
LineTo( hdc, rect->right-width-1, rect->bottom-height-1 );
LineTo( hdc, rect->left+width, rect->bottom-height-1 );
LineTo( hdc, rect->left+width, rect->top+height );
LineTo32( hdc, rect->right-width-1, rect->top+height );
LineTo32( hdc, rect->right-width-1, rect->bottom-height-1 );
LineTo32( hdc, rect->left+width, rect->bottom-height-1 );
LineTo32( hdc, rect->left+width, rect->top+height );
/* Draw the decorations */
tmp = rect->top + SYSMETRICS_CYFRAME + SYSMETRICS_CYSIZE;
MoveTo( hdc, rect->left, tmp);
LineTo( hdc, rect->left+width, tmp );
LineTo32( hdc, rect->left+width, 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;
MoveTo( hdc, rect->left, tmp );
LineTo( hdc, rect->left+width, tmp );
LineTo32( hdc, rect->left+width, 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;
MoveTo( hdc, tmp, rect->top );
LineTo( hdc, tmp, rect->top+height );
LineTo32( hdc, tmp, rect->top+height );
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;
MoveTo( hdc, tmp, rect->top );
LineTo( hdc, tmp, rect->top+height );
LineTo32( hdc, tmp, rect->top+height );
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 );
}
@ -577,7 +577,7 @@ static void NC_DrawMovingFrame( HDC16 hdc, RECT16 *rect, BOOL thickframe )
{
if (thickframe)
{
SelectObject( hdc, GetStockObject( GRAY_BRUSH ) );
SelectObject32( hdc, GetStockObject32( GRAY_BRUSH ) );
PatBlt( hdc, rect->left, rect->top,
rect->right - rect->left - SYSMETRICS_CXFRAME,
SYSMETRICS_CYFRAME, PATINVERT );
@ -623,24 +623,24 @@ static void NC_DrawCaption( HDC16 hdc, RECT16 *rect, HWND hwnd,
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.right-1, r.top, 1, r.bottom-r.top+1, PATCOPY );
PatBlt( hdc, r.left, r.top-1, r.right-r.left, 1, PATCOPY );
r.left++;
r.right--;
SelectObject( hdc, hbrushOld );
SelectObject32( hdc, hbrushOld );
}
MoveTo( hdc, r.left, r.bottom );
LineTo( hdc, r.right-1, r.bottom );
LineTo32( hdc, r.right-1, r.bottom );
if (style & WS_SYSMENU)
{
NC_DrawSysButton( hwnd, hdc, FALSE );
r.left += SYSMETRICS_CXSIZE + 1;
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)
{
@ -672,11 +672,11 @@ static void NC_DrawCaption( HDC16 hdc, RECT16 *rect, HWND hwnd,
*
* 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;
RECT16 rect;
BOOL active;
BOOL32 active;
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.bottom = wndPtr->rectWindow.bottom - wndPtr->rectWindow.top;
SelectObject( hdc, sysColorObjects.hpenWindowFrame );
SelectObject32( hdc, sysColorObjects.hpenWindowFrame );
if (!(wndPtr->flags & WIN_MANAGED))
{
@ -711,10 +711,10 @@ void NC_DoNCPaint( HWND hwnd, HRGN32 clip, BOOL suppress_menupaint )
(wndPtr->dwExStyle & WS_EX_DLGMODALFRAME))
{
MoveTo( hdc, 0, 0 );
LineTo( hdc, rect.right-1, 0 );
LineTo( hdc, rect.right-1, rect.bottom-1 );
LineTo( hdc, 0, rect.bottom-1 );
LineTo( hdc, 0, 0 );
LineTo32( hdc, rect.right-1, 0 );
LineTo32( hdc, rect.right-1, rect.bottom-1 );
LineTo32( hdc, 0, rect.bottom-1 );
LineTo32( hdc, 0, 0 );
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().
*/
LONG NC_HandleNCPaint( HWND hwnd , HRGN32 clip)
LONG NC_HandleNCPaint( HWND32 hwnd , HRGN32 clip)
{
NC_DoNCPaint( hwnd, clip, FALSE );
return 0;
@ -804,9 +804,9 @@ LONG NC_HandleNCActivate( WND *wndPtr, WPARAM16 wParam )
*
* 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))
{
@ -1029,7 +1029,7 @@ static void NC_DoSizeMove( HWND hwnd, WORD wParam, POINT16 pt )
/* Get min/max info */
NC_GetMinMaxInfo( hwnd, NULL, NULL, &minTrack, &maxTrack );
NC_GetMinMaxInfo( wndPtr, NULL, NULL, &minTrack, &maxTrack );
sizingRect = wndPtr->rectWindow;
if (wndPtr->dwStyle & WS_CHILD)
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().
*/
LONG NC_HandleNCLButtonDown( HWND hwnd, WPARAM16 wParam, LPARAM lParam )
LONG NC_HandleNCLButtonDown( HWND32 hwnd, WPARAM16 wParam, LPARAM lParam )
{
HDC32 hdc;
@ -1370,7 +1370,7 @@ LONG NC_HandleNCLButtonDblClk( WND *pWnd, WPARAM16 wParam, LPARAM lParam )
*
* 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 );
POINT32 pt32;

View File

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

View File

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

View File

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

View File

@ -342,7 +342,7 @@ static void WIN_DestroyWindow( WND* wndPtr )
if ((wndPtr->hrgnUpdate) || (wndPtr->flags & WIN_INTERNAL_PAINT))
{
if (wndPtr->hrgnUpdate) DeleteObject( wndPtr->hrgnUpdate );
if (wndPtr->hrgnUpdate) DeleteObject32( wndPtr->hrgnUpdate );
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)))
{
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.y < cs->cy) cs->cy = maxSize.y;
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) */
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,
((GetActiveWindow())? SWP_NOACTIVATE : 0) | SWP_FRAMECHANGED );
}

View File

@ -621,7 +621,7 @@ BOOL ShowWindow( HWND hwnd, int cmd )
if (!(wndPtr->dwStyle & WS_MINIMIZE))
wndPtr->rectNormal = wndPtr->rectWindow;
NC_GetMinMaxInfo( hwnd, &maxSize,
NC_GetMinMaxInfo( wndPtr, &maxSize,
&wndPtr->ptMaxPos, NULL, NULL );
x = wndPtr->ptMaxPos.x;
y = wndPtr->ptMaxPos.y;
@ -674,7 +674,7 @@ BOOL ShowWindow( HWND hwnd, int cmd )
if (wndPtr->flags & WIN_RESTORE_MAX)
{
/* Restore to maximized position */
NC_GetMinMaxInfo( hwnd, &maxSize, &wndPtr->ptMaxPos,
NC_GetMinMaxInfo( wndPtr, &maxSize, &wndPtr->ptMaxPos,
NULL, NULL );
x = wndPtr->ptMaxPos.x;
y = wndPtr->ptMaxPos.y;
@ -891,44 +891,35 @@ BOOL32 SetWindowPlacement32( HWND32 hwnd, const WINDOWPLACEMENT32 *wndpl )
return TRUE;
}
/***********************************************************************
* 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;
WND *wndStop, *wndLast;
WND *wndPrev;
if (!pWnd->window) return;
wndLast = wndStop = pWnd;
winChanges.stack_mode = Above;
XReconfigureWMWindow( display, pWnd->window, 0, CWStackMode, &winChanges );
/* Recursively raise owned popups according to their z-order
/* Raise all windows up to pWnd according to their Z order.
* (it would be easier with sibling-related Below but it doesn't
* work very well with SGI mwm for instance)
*/
while (wndLast)
winChanges.stack_mode = Above;
while (pWnd)
{
WND *wnd = WIN_GetDesktop()->child;
wndLast = NULL;
while (wnd != wndStop)
{
if (wnd->owner == pWnd &&
(wnd->dwStyle & WS_POPUP) &&
(wnd->dwStyle & WS_VISIBLE))
wndLast = wnd;
wnd = wnd->next;
}
if (wndLast)
{
WINPOS_ForceXWindowRaise( wndLast );
wndStop = wndLast;
}
if (pWnd->window) XReconfigureWMWindow( display, pWnd->window, 0,
CWStackMode, &winChanges );
wndPrev = WIN_GetDesktop()->child;
if (wndPrev == pWnd) break;
while (wndPrev && (wndPrev->next != pWnd)) wndPrev = wndPrev->next;
pWnd = wndPrev;
}
}
/*******************************************************************
* WINPOS_SetActiveWindow
*
@ -1199,9 +1190,9 @@ LONG WINPOS_SendNCCalcSize( HWND32 hwnd, BOOL32 calcValidRect,
}
result = SendMessage16( hwnd, WM_NCCALCSIZE, calcValidRect,
(LPARAM)SEGPTR_GET( params ) );
dprintf_win(stddeb, "WINPOS_SendNCCalcSize: %d %d %d %d\n",
(int)params->rgrc[0].top, (int)params->rgrc[0].left,
(int)params->rgrc[0].bottom, (int)params->rgrc[0].right);
dprintf_win( stddeb, "WINPOS_SendNCCalcSize: %d,%d-%d,%d\n",
params->rgrc[0].left, params->rgrc[0].top,
params->rgrc[0].right, params->rgrc[0].bottom );
*newClientRect = params->rgrc[0];
SEGPTR_FREE(params);
return result;
@ -1220,7 +1211,7 @@ LONG WINPOS_HandleWindowPosChanging16( WND *wndPtr, WINDOWPOS16 *winpos )
if ((wndPtr->dwStyle & WS_THICKFRAME) ||
((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->cy = MIN( winpos->cy, maxSize.y );
}
@ -1240,7 +1231,7 @@ LONG WINPOS_HandleWindowPosChanging32( WND *wndPtr, WINDOWPOS32 *winpos )
if ((wndPtr->dwStyle & WS_THICKFRAME) ||
((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->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 )
{
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;
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) )
uFlags |= SMC_DRAWFRAME;
CombineRgn( dirtyRgn, newVisRgn, 0, RGN_COPY);
CombineRgn32( dirtyRgn, newVisRgn, 0, RGN_COPY);
if( !(uFlags & SMC_NOCOPY) )
CombineRgn( newVisRgn, newVisRgn, oldVisRgn, RGN_AND );
CombineRgn32( newVisRgn, newVisRgn, oldVisRgn, RGN_AND );
/* map regions to the parent client area */
OffsetRgn(dirtyRgn, Wnd->rectWindow.left, Wnd->rectWindow.top);
OffsetRgn(oldVisRgn, lpOldWndRect->left, lpOldWndRect->top);
OffsetRgn32( dirtyRgn, Wnd->rectWindow.left, Wnd->rectWindow.top );
OffsetRgn32( oldVisRgn, lpOldWndRect->left, lpOldWndRect->top );
/* 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 */
OffsetRgn( newVisRgn, Wnd->rectWindow.left - Wnd->rectClient.left,
Wnd->rectWindow.top - Wnd->rectClient.top );
OffsetRgn32( newVisRgn, Wnd->rectWindow.left - Wnd->rectClient.left,
Wnd->rectWindow.top - Wnd->rectClient.top );
/* substract previously invalidated region from the Wnd visible region */
my = (Wnd->hrgnUpdate > 1)? CombineRgn( newVisRgn, newVisRgn, Wnd->hrgnUpdate, RGN_DIFF)
: COMPLEXREGION;
my = (Wnd->hrgnUpdate > 1) ? CombineRgn32( newVisRgn, newVisRgn,
Wnd->hrgnUpdate, RGN_DIFF)
: COMPLEXREGION;
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;
xto = Wnd->rectClient.left; yto = Wnd->rectClient.top;
width = lpOldClientRect->right - xfrom; height = lpOldClientRect->bottom - yfrom;
updateRgn = CreateRectRgn( 0, 0, width, height );
CombineRgn( newVisRgn, newVisRgn, updateRgn, RGN_AND );
updateRgn = CreateRectRgn32( 0, 0, width, height );
CombineRgn32( newVisRgn, newVisRgn, updateRgn, RGN_AND );
SetRectRgn( updateRgn, 0, 0, Wnd->rectClient.right - xto, Wnd->rectClient.bottom - yto );
}
else
@ -1453,17 +1445,17 @@ static UINT WINPOS_SizeMoveClean(WND* Wnd, HRGN32 oldVisRgn, LPRECT16 lpOldWndRe
xfrom = lpOldWndRect->left; yfrom = lpOldWndRect->top;
xto = Wnd->rectWindow.left; yto = Wnd->rectWindow.top;
width = lpOldWndRect->right - xfrom; height = lpOldWndRect->bottom - yfrom;
updateRgn = CreateRectRgn( xto - Wnd->rectClient.left,
yto - Wnd->rectClient.top,
Wnd->rectWindow.right - Wnd->rectClient.left,
Wnd->rectWindow.bottom - Wnd->rectClient.top );
updateRgn = CreateRectRgn32( xto - Wnd->rectClient.left,
yto - Wnd->rectClient.top,
Wnd->rectWindow.right - Wnd->rectClient.left,
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 */
update = CombineRgn( updateRgn, updateRgn, newVisRgn, RGN_DIFF );
update = CombineRgn32( updateRgn, updateRgn, newVisRgn, RGN_DIFF );
/* 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 */
OffsetRgn( newVisRgn, Wnd->rectClient.left, Wnd->rectClient.top);
CombineRgn( oldVisRgn, oldVisRgn, newVisRgn, RGN_OR );
OffsetRgn32( newVisRgn, Wnd->rectClient.left, Wnd->rectClient.top );
CombineRgn32( oldVisRgn, oldVisRgn, newVisRgn, RGN_OR );
hDC = GetDCEx32( Wnd->parent->hwndSelf, oldVisRgn,
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 |
RDW_FRAME | RDW_ALLCHILDREN | RDW_ERASE, RDW_C_USEHRGN );
else if( uFlags & SMC_DRAWFRAME ) Wnd->flags |= WIN_NEEDS_NCPAINT;
DeleteObject( updateRgn );
DeleteObject32( updateRgn );
}
/* erase uncovered areas */
@ -1496,8 +1488,8 @@ static UINT WINPOS_SizeMoveClean(WND* Wnd, HRGN32 oldVisRgn, LPRECT16 lpOldWndRe
if( !(uFlags & SMC_NOPARENTERASE) && (other != NULLREGION ) )
PAINT_RedrawWindow( Wnd->parent->hwndSelf, NULL, dirtyRgn,
RDW_INVALIDATE | RDW_ALLCHILDREN | RDW_ERASE, RDW_C_USEHRGN );
DeleteObject(dirtyRgn);
DeleteObject(newVisRgn);
DeleteObject32(dirtyRgn);
DeleteObject32(newVisRgn);
return uFlags;
}
@ -1835,7 +1827,7 @@ BOOL SetWindowPos( HWND hwnd, HWND hwndInsertAfter, INT x, INT y,
if( winpos->flags & SWP_NOZORDER ) uFlags |= SMC_NOPARENTERASE;
}
}
DeleteObject(visRgn);
DeleteObject32(visRgn);
}
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);
lParam = *((LPARAM *)str - 1);
strcpy( (LPSTR)lParam, str );
lstrcpyn32A( (LPSTR)lParam, str, wParam );
SEGPTR_FREE( (LPARAM *)str - 1 );
}
break;