Author: jimtabor
Date: Tue Jul 15 21:06:05 2008
New Revision: 34541
URL:
http://svn.reactos.org/svn/reactos?rev=34541&view=rev
Log:
Sorry for commit my test tree,,,, good for testing Bug 2451.
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=34541&r1=…
==============================================================================
--- trunk/reactos/Makefile [iso-8859-1] (original)
+++ trunk/reactos/Makefile [iso-8859-1] Tue Jul 15 21:06:05 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 21:06:05 2008
@@ -742,12 +742,8 @@
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)
{
@@ -756,40 +752,28 @@
DefWndDoSizeMove(hWnd, wParam);
break;
case SC_MINIMIZE:
- FIXME("SysCommand SC_MINIMIZE\n");
-/* wp.length = sizeof(WINDOWPLACEMENT);
+ 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:
- FIXME("SysCommand SC_MAXIMIZE\n");
-/* wp.length = sizeof(WINDOWPLACEMENT);
+ 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:
- FIXME("SysCommand SC_RESTORE\n");
-/* wp.length = sizeof(WINDOWPLACEMENT);
+ 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);
@@ -1426,8 +1410,7 @@
case WM_SHOWWINDOW:
{
- if (lParam) // Call when it is necessary.
- NtUserMessageCall( hWnd, Msg, wParam, lParam, 0, NUMC_DEFWINDOWPROC,
FALSE);
+ 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 21:06:05 2008
@@ -1617,7 +1617,6 @@
int cy,
UINT uFlags)
{
- FIXME("SetWindowPos\n");
return NtUserSetWindowPos(hWnd,hWndInsertAfter, X, Y, cx, cy, uFlags);
}
@@ -1714,7 +1713,6 @@
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 21:06:05
2008
@@ -13,15 +13,7 @@
#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
*/
@@ -33,7 +25,6 @@
LPARAM lParam)
{
PWINDOW Wnd;
- LRESULT lResult = 0;
if (Msg > WM_USER) return 0;
@@ -42,11 +33,6 @@
switch (Msg)
{
- case WM_SYSCOMMAND:
- {
- lResult = IntDefWinHandleSysCommand( Window, wParam, lParam );
- break;
- }
case WM_SHOWWINDOW:
{
if ((Wnd->Style & WS_VISIBLE) && wParam) break;
@@ -68,7 +54,7 @@
break;
}
- return lResult;
+ return 0;
}
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 21:06:05
2008
@@ -107,14 +107,11 @@
Hook->Thread = Thread;
Hook->HookId = HookId;
- 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;
- }
+ 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);
@@ -321,7 +318,7 @@
return IntCallLowLevelHook(HookId, Code, wParam, lParam, Hook);
}
- if ((Hook->Thread != PsGetCurrentThread()) && (Hook->Thread != NULL))
+ if (Hook->Thread != PsGetCurrentThread())
{
DPRINT1("Calling hooks in other threads not implemented yet");
return 0;
@@ -573,7 +570,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
21:06:05 2008
@@ -736,7 +736,6 @@
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 21:06:05
2008
@@ -3333,7 +3333,6 @@
break;
case GW_HWNDNEXT:
- DPRINT1("GW_HWNDNEXT\n");
if (Window->NextSibling)
hWndResult = Window->NextSibling->hSelf;
break;
@@ -3375,13 +3374,13 @@
{
DECLARE_RETURN(HWND);
- DPRINT1("Enter NtUserGetWindow\n");
+ DPRINT("Enter NtUserGetWindow\n");
UserEnterShared();
RETURN(UserGetWindow(hWnd, Relationship));
CLEANUP:
- DPRINT1("Leave NtUserGetWindow, ret=%i\n",_ret_);
+ DPRINT("Leave NtUserGetWindow, ret=%i\n",_ret_);
UserLeave();
END_CLEANUP;
}
@@ -4245,7 +4244,7 @@
BOOL ret;
USER_REFERENCE_ENTRY Ref;
- DPRINT1("Enter NtUserSetWindowPos\n");
+ DPRINT("Enter NtUserSetWindowPos\n");
UserEnterExclusive();
if (!(Window = UserGetWindowObject(hWnd)))
@@ -4260,7 +4259,7 @@
RETURN(ret);
CLEANUP:
- DPRINT1("Leave NtUserSetWindowPos, ret=%i\n",_ret_);
+ DPRINT("Leave NtUserSetWindowPos, ret=%i\n",_ret_);
UserLeave();
END_CLEANUP;
}
@@ -4408,7 +4407,7 @@
DECLARE_RETURN(BOOL);
USER_REFERENCE_ENTRY Ref;
- DPRINT1("Enter NtUserShowWindow\n");
+ DPRINT("Enter NtUserShowWindow\n");
UserEnterExclusive();
if (!(Window = UserGetWindowObject(hWnd)))
@@ -4423,7 +4422,7 @@
RETURN(ret);
CLEANUP:
- DPRINT1("Leave NtUserShowWindow, ret=%i\n",_ret_);
+ DPRINT("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 21:06:05
2008
@@ -306,24 +306,15 @@
Size.x = Wnd->WindowRect.left;
Size.y = Wnd->WindowRect.top;
WinPosInitInternalPos(Window, &Size, &Wnd->WindowRect);
-
- 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;
- }
-
+
+ if (Wnd->Style & WS_MINIMIZE)
+ {
+ if (!co_IntSendMessage(Window->hSelf, WM_QUERYOPEN, 0, 0))
+ {
+ return(SWP_NOSIZE | SWP_NOMOVE);
+ }
+ SwpFlags |= SWP_NOCOPYBITS;
+ }
switch (ShowFlag)
{
case SW_MINIMIZE:
@@ -1225,7 +1216,7 @@
if (RgnType != ERROR && RgnType != NULLREGION)
{
/* old code
- NtGdiOffsetRgn(DirtyRgn, Window->Wnd->WindowRect.left,
Window->Wnd->WindowRect.top);
+ NtGdiOffsetRgn(DirtyRgn, Window->WindowRect.left,
Window->WindowRect.top);
IntInvalidateWindows(Window, DirtyRgn,
RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN);
}
@@ -1323,7 +1314,7 @@
{
BOOLEAN WasVisible;
UINT Swp = 0;
- RECT NewPos = {0, 0, 0, 0};
+ RECT NewPos;
BOOLEAN ShowFlag;
// HRGN VisibleRgn;
PWINDOW Wnd;
@@ -1343,29 +1334,53 @@
}
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:
- 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;
+ 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;
+ }
case SW_SHOWMAXIMIZED:
- 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;
+ {
+ 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;
+ }
case SW_SHOWNA:
Swp |= SWP_NOACTIVATE | SWP_NOZORDER;
@@ -1377,32 +1392,27 @@
break;
case SW_SHOWNOACTIVATE:
+ //Swp |= SWP_NOZORDER;
Swp |= SWP_NOACTIVATE | SWP_NOZORDER;
/* Fall through. */
case SW_SHOWNORMAL:
case SW_SHOWDEFAULT:
case SW_RESTORE:
- DPRINT1("ShowWindow _RESTORE\n");
- if (!WasVisible) Swp |= SWP_SHOWWINDOW;
+ Swp |= SWP_SHOWWINDOW;
if (Wnd->Style & (WS_MINIMIZE | WS_MAXIMIZE))
{
- Swp |= SWP_FRAMECHANGED;
- Swp |= co_WinPosMinMaximize(Window, SW_RESTORE, &NewPos);
+ Swp |= co_WinPosMinMaximize(Window, SW_RESTORE, &NewPos) |
+ SWP_FRAMECHANGED;
}
else
{
-// if (WasVisible) return TRUE;
Swp |= SWP_NOSIZE | SWP_NOMOVE;
- }
- if (Wnd->Style & WS_CHILD) Swp |= SWP_NOACTIVATE | SWP_NOZORDER;
+ if (! WasVisible)
+ {
+ Swp |= SWP_FRAMECHANGED;
+ }
+ }
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 21:06:05
2008
@@ -869,8 +869,6 @@
ASSERT ( counts );
ASSERT ( polygons );
- if (polygons == 1) return PATH_Polygon ( dc, pts, *counts );
-
pPath = PATH_LockPath( dc->DcLevel.hPath );
if (!pPath) return FALSE;
@@ -880,9 +878,6 @@
PATH_UnlockPath( pPath );
return FALSE;
}
-
- startpt.x = 0;
- startpt.y = 0;
for(i = 0, poly = 0; poly < polygons; poly++)
{
@@ -891,7 +886,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 21:06:05
2008
@@ -34,7 +34,6 @@
#include <freetype/ftglyph.h>
#include <freetype/ftoutln.h>
#include <freetype/ftwinfnt.h>
-#include <freetype/ftmodapi.h>
#define NDEBUG
#include <debug.h>
@@ -136,35 +135,6 @@
{ 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)
@@ -3325,12 +3295,7 @@
OUT LPRASTERIZER_STATUS praststat,
IN ULONG cjBytes)
{
- static int hinting = -1;
-
- if(hinting == -1)
- {
- hinting = is_hinting_enabled();
- }
+ UNIMPLEMENTED;
return FALSE;
}
@@ -3937,23 +3902,11 @@
BOOL
STDCALL
NtGdiSetTextJustification(HDC hDC,
- 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;
+ int BreakExtra,
+ int BreakCount)
+{
+ UNIMPLEMENTED;
+ return FALSE;
}
DWORD STDCALL