Author: jimtabor
Date: Tue Jul 15 20:22:26 2008
New Revision: 34540
URL:
http://svn.reactos.org/svn/reactos?rev=34540&view=rev
Log:
make does like tabs, right? Fix build.
Modified:
trunk/reactos/Makefile
trunk/reactos/dll/win32/user32/windows/defwnd.c
trunk/reactos/dll/win32/user32/windows/window.c
trunk/reactos/subsystems/win32/win32k/ntuser/defwnd.c
trunk/reactos/subsystems/win32/win32k/ntuser/hook.c
trunk/reactos/subsystems/win32/win32k/ntuser/simplecall.c
trunk/reactos/subsystems/win32/win32k/ntuser/window.c
trunk/reactos/subsystems/win32/win32k/ntuser/winpos.c
trunk/reactos/subsystems/win32/win32k/objects/path.c
trunk/reactos/subsystems/win32/win32k/objects/text.c
Modified: trunk/reactos/Makefile
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/Makefile?rev=34540&r1=…
==============================================================================
--- trunk/reactos/Makefile [iso-8859-1] (original)
+++ trunk/reactos/Makefile [iso-8859-1] Tue Jul 15 20:22:26 2008
@@ -167,20 +167,20 @@
.SUFFIXES:
ifeq ($(HOST),)
- ifeq ($(word 1,$(shell gcc -dumpmachine)),mingw32)
- ifeq ($(findstring msys,$(shell sh --version 2>nul)),msys)
- export OSTYPE = msys
- HOST=mingw32-linux
- HOST_CFLAGS+=-fshort-wchar
- HOST_CPPFLAGS+=-fshort-wchar
- else
- HOST=mingw32-windows
- endif
- else
- HOST=mingw32-linux
- HOST_CFLAGS+=-fshort-wchar
- HOST_CPPFLAGS+=-fshort-wchar
- endif
+ifeq ($(word 1,$(shell gcc -dumpmachine)),mingw32)
+ifeq ($(findstring msys,$(shell sh --version 2>nul)),msys)
+export OSTYPE = msys
+HOST=mingw32-linux
+HOST_CFLAGS+=-fshort-wchar
+HOST_CPPFLAGS+=-fshort-wchar
+else
+HOST=mingw32-windows
+endif
+else
+HOST=mingw32-linux
+HOST_CFLAGS+=-fshort-wchar
+HOST_CPPFLAGS+=-fshort-wchar
+endif
endif
# Default to half-verbose mode
Modified: trunk/reactos/dll/win32/user32/windows/defwnd.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/user32/windows/d…
==============================================================================
--- trunk/reactos/dll/win32/user32/windows/defwnd.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/user32/windows/defwnd.c [iso-8859-1] Tue Jul 15 20:22:26 2008
@@ -742,8 +742,12 @@
LRESULT
DefWndHandleSysCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
{
- WINDOWPLACEMENT wp;
+// WINDOWPLACEMENT wp;
POINT Pt;
+
+ // ATM, This is for Hook call.
+ if (NtUserMessageCall( hWnd, WM_SYSCOMMAND, wParam, lParam, 0, NUMC_DEFWINDOWPROC,
FALSE))
+ return 0;
switch (wParam & 0xfff0)
{
@@ -752,28 +756,40 @@
DefWndDoSizeMove(hWnd, wParam);
break;
case SC_MINIMIZE:
- wp.length = sizeof(WINDOWPLACEMENT);
+ FIXME("SysCommand SC_MINIMIZE\n");
+/* wp.length = sizeof(WINDOWPLACEMENT);
if(GetWindowPlacement(hWnd, &wp))
{
wp.showCmd = SW_MINIMIZE;
SetWindowPlacement(hWnd, &wp);
- }
+ }*/
+ if (hWnd == GetForegroundWindow())
+ ShowOwnedPopups(hWnd,FALSE);
+ ShowWindow( hWnd, SW_MINIMIZE );
break;
case SC_MAXIMIZE:
- wp.length = sizeof(WINDOWPLACEMENT);
+ FIXME("SysCommand SC_MAXIMIZE\n");
+/* wp.length = sizeof(WINDOWPLACEMENT);
if(GetWindowPlacement(hWnd, &wp))
{
wp.showCmd = SW_MAXIMIZE;
SetWindowPlacement(hWnd, &wp);
- }
+ }*/
+ if (IsIconic(hWnd) && hWnd == GetForegroundWindow())
+ ShowOwnedPopups(hWnd,TRUE);
+ ShowWindow( hWnd, SW_MAXIMIZE );
break;
case SC_RESTORE:
- wp.length = sizeof(WINDOWPLACEMENT);
+ FIXME("SysCommand SC_RESTORE\n");
+/* wp.length = sizeof(WINDOWPLACEMENT);
if(GetWindowPlacement(hWnd, &wp))
{
wp.showCmd = SW_RESTORE;
SetWindowPlacement(hWnd, &wp);
- }
+ }*/
+ if (IsIconic(hWnd) && hWnd == GetForegroundWindow())
+ ShowOwnedPopups(hWnd,TRUE);
+ ShowWindow( hWnd, SW_RESTORE );
break;
case SC_CLOSE:
SendMessageA(hWnd, WM_CLOSE, 0, 0);
@@ -1410,7 +1426,8 @@
case WM_SHOWWINDOW:
{
- NtUserMessageCall( hWnd, Msg, wParam, lParam, 0, NUMC_DEFWINDOWPROC, FALSE);
+ if (lParam) // Call when it is necessary.
+ NtUserMessageCall( hWnd, Msg, wParam, lParam, 0, NUMC_DEFWINDOWPROC,
FALSE);
break;
}
Modified: trunk/reactos/dll/win32/user32/windows/window.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/user32/windows/w…
==============================================================================
--- trunk/reactos/dll/win32/user32/windows/window.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/user32/windows/window.c [iso-8859-1] Tue Jul 15 20:22:26 2008
@@ -1617,6 +1617,7 @@
int cy,
UINT uFlags)
{
+ FIXME("SetWindowPos\n");
return NtUserSetWindowPos(hWnd,hWndInsertAfter, X, Y, cx, cy, uFlags);
}
@@ -1713,6 +1714,7 @@
ShowWindow(HWND hWnd,
int nCmdShow)
{
+ FIXME("ShowWindow\n");
return NtUserShowWindow(hWnd, nCmdShow);
}
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/defwnd.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/defwnd.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/defwnd.c [iso-8859-1] Tue Jul 15 20:22:26
2008
@@ -13,7 +13,15 @@
#define NDEBUG
#include <debug.h>
+LRESULT FASTCALL
+IntDefWinHandleSysCommand( PWINDOW_OBJECT Window, WPARAM wParam, LPARAM lParam )
+{
+ DPRINT1("hwnd %p WM_SYSCOMMAND %lx %lx\n", Window->hSelf, wParam, lParam
);
+ if (co_HOOK_CallHooks(WH_CBT, HCBT_SYSCOMMAND, wParam, lParam))
+ return 1;
+ return 0;
+}
/*
Win32k counterpart of User DefWindowProc
*/
@@ -25,6 +33,7 @@
LPARAM lParam)
{
PWINDOW Wnd;
+ LRESULT lResult = 0;
if (Msg > WM_USER) return 0;
@@ -33,6 +42,11 @@
switch (Msg)
{
+ case WM_SYSCOMMAND:
+ {
+ lResult = IntDefWinHandleSysCommand( Window, wParam, lParam );
+ break;
+ }
case WM_SHOWWINDOW:
{
if ((Wnd->Style & WS_VISIBLE) && wParam) break;
@@ -54,7 +68,7 @@
break;
}
- return 0;
+ return lResult;
}
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/hook.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/hook.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/hook.c [iso-8859-1] Tue Jul 15 20:22:26
2008
@@ -107,11 +107,14 @@
Hook->Thread = Thread;
Hook->HookId = HookId;
- W32Thread = ((PW32THREAD)Thread->Tcb.Win32Thread);
- ASSERT(W32Thread != NULL);
- W32Thread->Hooks |= HOOKID_TO_FLAG(HookId);
- if (W32Thread->ThreadInfo != NULL)
- W32Thread->ThreadInfo->Hooks = W32Thread->Hooks;
+ if (Thread)
+ {
+ W32Thread = ((PW32THREAD)Thread->Tcb.Win32Thread);
+ ASSERT(W32Thread != NULL);
+ W32Thread->Hooks |= HOOKID_TO_FLAG(HookId);
+ if (W32Thread->ThreadInfo != NULL)
+ W32Thread->ThreadInfo->Hooks = W32Thread->Hooks;
+ }
RtlInitUnicodeString(&Hook->ModuleName, NULL);
@@ -318,7 +321,7 @@
return IntCallLowLevelHook(HookId, Code, wParam, lParam, Hook);
}
- if (Hook->Thread != PsGetCurrentThread())
+ if ((Hook->Thread != PsGetCurrentThread()) && (Hook->Thread != NULL))
{
DPRINT1("Calling hooks in other threads not implemented yet");
return 0;
@@ -570,7 +573,7 @@
/* We only (partially) support local WH_CBT hooks and
* WH_KEYBOARD_LL/WH_MOUSE_LL hooks for now */
if ((WH_CBT != HookId || Global)
- && WH_KEYBOARD_LL != HookId && WH_MOUSE_LL != HookId) //
&& WH_GETMESSAGE != HookId)
+ && WH_KEYBOARD_LL != HookId && WH_MOUSE_LL != HookId &&
WH_GETMESSAGE != HookId)
{
#if 0 /* Removed to get winEmbed working again */
UNIMPLEMENTED
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/simplecall.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/simplecall.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/simplecall.c [iso-8859-1] Tue Jul 15
20:22:26 2008
@@ -736,6 +736,7 @@
case HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW:
Ret = co_IntSetForegroundWindow(Window);
+ DPRINT1("Leave NtUserCallHwndLock SetForegroundWindow,
ret=%i\n",Ret);
break;
case HWNDLOCK_ROUTINE_UPDATEWINDOW:
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/window.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/window.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/window.c [iso-8859-1] Tue Jul 15 20:22:26
2008
@@ -3333,6 +3333,7 @@
break;
case GW_HWNDNEXT:
+ DPRINT1("GW_HWNDNEXT\n");
if (Window->NextSibling)
hWndResult = Window->NextSibling->hSelf;
break;
@@ -3374,13 +3375,13 @@
{
DECLARE_RETURN(HWND);
- DPRINT("Enter NtUserGetWindow\n");
+ DPRINT1("Enter NtUserGetWindow\n");
UserEnterShared();
RETURN(UserGetWindow(hWnd, Relationship));
CLEANUP:
- DPRINT("Leave NtUserGetWindow, ret=%i\n",_ret_);
+ DPRINT1("Leave NtUserGetWindow, ret=%i\n",_ret_);
UserLeave();
END_CLEANUP;
}
@@ -4244,7 +4245,7 @@
BOOL ret;
USER_REFERENCE_ENTRY Ref;
- DPRINT("Enter NtUserSetWindowPos\n");
+ DPRINT1("Enter NtUserSetWindowPos\n");
UserEnterExclusive();
if (!(Window = UserGetWindowObject(hWnd)))
@@ -4259,7 +4260,7 @@
RETURN(ret);
CLEANUP:
- DPRINT("Leave NtUserSetWindowPos, ret=%i\n",_ret_);
+ DPRINT1("Leave NtUserSetWindowPos, ret=%i\n",_ret_);
UserLeave();
END_CLEANUP;
}
@@ -4407,7 +4408,7 @@
DECLARE_RETURN(BOOL);
USER_REFERENCE_ENTRY Ref;
- DPRINT("Enter NtUserShowWindow\n");
+ DPRINT1("Enter NtUserShowWindow\n");
UserEnterExclusive();
if (!(Window = UserGetWindowObject(hWnd)))
@@ -4422,7 +4423,7 @@
RETURN(ret);
CLEANUP:
- DPRINT("Leave NtUserShowWindow, ret=%i\n",_ret_);
+ DPRINT1("Leave NtUserShowWindow, ret=%i\n",_ret_);
UserLeave();
END_CLEANUP;
}
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/winpos.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/winpos.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/winpos.c [iso-8859-1] Tue Jul 15 20:22:26
2008
@@ -306,15 +306,24 @@
Size.x = Wnd->WindowRect.left;
Size.y = Wnd->WindowRect.top;
WinPosInitInternalPos(Window, &Size, &Wnd->WindowRect);
-
- if (Wnd->Style & WS_MINIMIZE)
- {
- if (!co_IntSendMessage(Window->hSelf, WM_QUERYOPEN, 0, 0))
- {
- return(SWP_NOSIZE | SWP_NOMOVE);
- }
- SwpFlags |= SWP_NOCOPYBITS;
- }
+
+ if (co_HOOK_CallHooks(WH_CBT, HCBT_MINMAX, (WPARAM)Window->hSelf, ShowFlag))
+ return SWP_NOSIZE | SWP_NOMOVE;
+
+ if (Wnd->Style & WS_MINIMIZE)
+ {
+ switch (ShowFlag)
+ {
+ case SW_MINIMIZE:
+ return SWP_NOSIZE | SWP_NOMOVE;
+ }
+ if (!co_IntSendMessage(Window->hSelf, WM_QUERYOPEN, 0, 0))
+ {
+ return(SWP_NOSIZE | SWP_NOMOVE);
+ }
+ SwpFlags |= SWP_NOCOPYBITS;
+ }
+
switch (ShowFlag)
{
case SW_MINIMIZE:
@@ -1216,7 +1225,7 @@
if (RgnType != ERROR && RgnType != NULLREGION)
{
/* old code
- NtGdiOffsetRgn(DirtyRgn, Window->WindowRect.left,
Window->WindowRect.top);
+ NtGdiOffsetRgn(DirtyRgn, Window->Wnd->WindowRect.left,
Window->Wnd->WindowRect.top);
IntInvalidateWindows(Window, DirtyRgn,
RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN);
}
@@ -1314,7 +1323,7 @@
{
BOOLEAN WasVisible;
UINT Swp = 0;
- RECT NewPos;
+ RECT NewPos = {0, 0, 0, 0};
BOOLEAN ShowFlag;
// HRGN VisibleRgn;
PWINDOW Wnd;
@@ -1334,53 +1343,29 @@
}
Swp |= SWP_HIDEWINDOW | SWP_NOSIZE | SWP_NOMOVE;
if (Window->hSelf != UserGetActiveWindow())
+// if (Wnd->Style & WS_CHILD)
Swp |= SWP_NOACTIVATE | SWP_NOZORDER;
break;
}
case SW_SHOWMINNOACTIVE:
+ case SW_MINIMIZE:
Swp |= SWP_NOACTIVATE | SWP_NOZORDER;
/* Fall through. */
case SW_SHOWMINIMIZED:
- Swp |= SWP_SHOWWINDOW;
- /* Fall through. */
- case SW_MINIMIZE:
- {
- Swp |= SWP_NOACTIVATE;
- if (!(Wnd->Style & WS_MINIMIZE))
- {
- Swp |= co_WinPosMinMaximize(Window, SW_MINIMIZE, &NewPos) |
- SWP_FRAMECHANGED;
- }
- else
- {
- Swp |= SWP_NOSIZE | SWP_NOMOVE;
- if (! WasVisible)
- {
- Swp |= SWP_FRAMECHANGED;
- }
- }
- break;
- }
+ DPRINT1("ShowWindow _MINIMIZE\n");
+ Swp |= SWP_SHOWWINDOW | SWP_FRAMECHANGED;
+ Swp |= co_WinPosMinMaximize(Window, SW_MINIMIZE, &NewPos);
+// if ((Wnd->Style & WS_MINIMIZE) && WasVisible) return TRUE;
+ break;
case SW_SHOWMAXIMIZED:
- {
- Swp |= SWP_SHOWWINDOW;
- if (!(Wnd->Style & WS_MAXIMIZE))
- {
- Swp |= co_WinPosMinMaximize(Window, SW_MAXIMIZE, &NewPos) |
- SWP_FRAMECHANGED;
- }
- else
- {
- Swp |= SWP_NOSIZE | SWP_NOMOVE;
- if (! WasVisible)
- {
- Swp |= SWP_FRAMECHANGED;
- }
- }
- break;
- }
+ DPRINT1("ShowWindow _MAXIMIZE\n");
+ if (!WasVisible) Swp |= SWP_SHOWWINDOW;
+ Swp |= SWP_FRAMECHANGED;
+ Swp |= co_WinPosMinMaximize(Window, SW_MAXIMIZE, &NewPos);
+// if ((Wnd->Style & WS_MAXIMIZE) && WasVisible) return TRUE;
+ break;
case SW_SHOWNA:
Swp |= SWP_NOACTIVATE | SWP_NOZORDER;
@@ -1392,27 +1377,32 @@
break;
case SW_SHOWNOACTIVATE:
- //Swp |= SWP_NOZORDER;
Swp |= SWP_NOACTIVATE | SWP_NOZORDER;
/* Fall through. */
case SW_SHOWNORMAL:
case SW_SHOWDEFAULT:
case SW_RESTORE:
- Swp |= SWP_SHOWWINDOW;
+ DPRINT1("ShowWindow _RESTORE\n");
+ if (!WasVisible) Swp |= SWP_SHOWWINDOW;
if (Wnd->Style & (WS_MINIMIZE | WS_MAXIMIZE))
{
- Swp |= co_WinPosMinMaximize(Window, SW_RESTORE, &NewPos) |
- SWP_FRAMECHANGED;
+ Swp |= SWP_FRAMECHANGED;
+ Swp |= co_WinPosMinMaximize(Window, SW_RESTORE, &NewPos);
}
else
{
+// if (WasVisible) return TRUE;
Swp |= SWP_NOSIZE | SWP_NOMOVE;
- if (! WasVisible)
- {
- Swp |= SWP_FRAMECHANGED;
- }
- }
+ }
+ if (Wnd->Style & WS_CHILD) Swp |= SWP_NOACTIVATE | SWP_NOZORDER;
break;
+
+ case SW_FORCEMINIMIZE:
+ // Fixme!
+ DPRINT1("Force hung application down! pWindow: %x\n",Window);
+ return WasVisible;
+ default:
+ return WasVisible;
}
ShowFlag = (Cmd != SW_HIDE);
Modified: trunk/reactos/subsystems/win32/win32k/objects/path.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/path.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/path.c [iso-8859-1] Tue Jul 15 20:22:26
2008
@@ -869,6 +869,8 @@
ASSERT ( counts );
ASSERT ( polygons );
+ if (polygons == 1) return PATH_Polygon ( dc, pts, *counts );
+
pPath = PATH_LockPath( dc->DcLevel.hPath );
if (!pPath) return FALSE;
@@ -878,6 +880,9 @@
PATH_UnlockPath( pPath );
return FALSE;
}
+
+ startpt.x = 0;
+ startpt.y = 0;
for(i = 0, poly = 0; poly < polygons; poly++)
{
@@ -886,7 +891,7 @@
pt = pts[i];
CoordLPtoDP ( dc, &pt );
if(point == 0) startpt = pt;
- PATH_AddEntry(pPath, &pt, (point == 0) ? PT_MOVETO : PT_LINETO);
+ PATH_AddEntry(pPath, &pt, (point == 0) ? PT_MOVETO : PT_LINETO);
}
/* win98 adds an extra line to close the figure for some reason */
PATH_AddEntry(pPath, &startpt, PT_LINETO | PT_CLOSEFIGURE);
Modified: trunk/reactos/subsystems/win32/win32k/objects/text.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/text.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/text.c [iso-8859-1] Tue Jul 15 20:22:26
2008
@@ -34,6 +34,7 @@
#include <freetype/ftglyph.h>
#include <freetype/ftoutln.h>
#include <freetype/ftwinfnt.h>
+#include <freetype/ftmodapi.h>
#define NDEBUG
#include <debug.h>
@@ -135,6 +136,35 @@
{ DEFAULT_CHARSET, 0, FS(0)},
{ SYMBOL_CHARSET, 42 /* CP_SYMBOL */, FS(31)},
};
+
+static FT_TrueTypeEngineType (*pFT_Get_TrueType_Engine_Type)(FT_Library);
+
+static
+BOOL
+is_hinting_enabled(void)
+{
+ /* Use the >= 2.2.0 function if available */
+ if(pFT_Get_TrueType_Engine_Type)
+ {
+ FT_TrueTypeEngineType type = pFT_Get_TrueType_Engine_Type(library);
+ return type == FT_TRUETYPE_ENGINE_TYPE_PATENTED;
+ }
+#ifdef FT_DRIVER_HAS_HINTER
+ else
+ {
+ FT_Module mod;
+
+ /* otherwise if we've been compiled with < 2.2.0 headers
+ use the internal macro */
+ mod = pFT_Get_Module(library, "truetype");
+ if(mod && FT_DRIVER_HAS_HINTER(mod))
+ return TRUE;
+ }
+#endif
+
+ return FALSE;
+}
+
BOOL FASTCALL
InitFontSupport(VOID)
@@ -3295,7 +3325,12 @@
OUT LPRASTERIZER_STATUS praststat,
IN ULONG cjBytes)
{
- UNIMPLEMENTED;
+ static int hinting = -1;
+
+ if(hinting == -1)
+ {
+ hinting = is_hinting_enabled();
+ }
return FALSE;
}
@@ -3902,11 +3937,23 @@
BOOL
STDCALL
NtGdiSetTextJustification(HDC hDC,
- int BreakExtra,
- int BreakCount)
-{
- UNIMPLEMENTED;
- return FALSE;
+ int BreakExtra,
+ int BreakCount)
+{
+ PDC Dc;
+ PDC_ATTR Dc_Attr;
+ Dc = DC_LockDc(hDC);
+ if (!Dc)
+ {
+ return FALSE;
+ }
+ Dc_Attr = Dc->pDc_Attr;
+ if(!Dc_Attr) Dc_Attr = &Dc->Dc_Attr;
+
+ Dc_Attr->cBreak = BreakCount;
+ Dc_Attr->lBreakExtra = BreakExtra;
+ DC_UnlockDc(Dc);
+ return TRUE;
}
DWORD STDCALL