mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 09:34:43 +00:00
- Fixed GetFullPathNameA and debug message in GetFullPathNameW. The path handling is still wrong in some cases, I am trying to find out why.
- Very basic implementaion of NtUserPaintDesktop. - Fixed bug in default window WM_ERASEBKGND. - Fixed bug in default window WM_PAINT. - Made BeginDeferWindowPos, DeferWindowPos, EndDeferWindowPos pseudo-working by returning values that make sense and calling SetWindowPos. svn path=/trunk/; revision=6379
This commit is contained in:
parent
e3a669e3fa
commit
dba6345f47
6 changed files with 86 additions and 39 deletions
|
@ -1,4 +1,4 @@
|
|||
/* $Id: dir.c,v 1.38 2003/10/19 16:17:50 navaraf Exp $
|
||||
/* $Id: dir.c,v 1.39 2003/10/19 19:51:48 navaraf Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS system libraries
|
||||
|
@ -339,6 +339,7 @@ GetFullPathNameA (
|
|||
UNICODE_STRING nameW;
|
||||
WCHAR bufferW[MAX_PATH];
|
||||
DWORD ret, retW;
|
||||
LPWSTR FilePart = NULL;
|
||||
|
||||
DPRINT("GetFullPathNameA(lpFileName %s, nBufferLength %d, lpBuffer %p, "
|
||||
"lpFilePart %p)\n",lpFileName,nBufferLength,lpBuffer,lpFilePart);
|
||||
|
@ -355,7 +356,12 @@ GetFullPathNameA (
|
|||
return 0;
|
||||
}
|
||||
|
||||
retW = GetFullPathNameW(nameW.Buffer, MAX_PATH, bufferW, NULL);
|
||||
if (lpFilePart)
|
||||
{
|
||||
*lpFilePart = NULL;
|
||||
}
|
||||
|
||||
retW = GetFullPathNameW(nameW.Buffer, MAX_PATH, bufferW, &FilePart);
|
||||
|
||||
if (!retW)
|
||||
{
|
||||
|
@ -368,25 +374,22 @@ GetFullPathNameA (
|
|||
}
|
||||
else
|
||||
{
|
||||
ret = WideCharToMultiByte(CP_ACP, 0, bufferW, -1, NULL, 0, NULL, NULL);
|
||||
if (ret <= nBufferLength)
|
||||
{
|
||||
WideCharToMultiByte(CP_ACP, 0, bufferW, -1, lpBuffer, nBufferLength, NULL, NULL);
|
||||
ret--; /* length without 0 */
|
||||
ANSI_STRING AnsiBuffer;
|
||||
UNICODE_STRING UnicodeBuffer;
|
||||
|
||||
if (lpFilePart)
|
||||
UnicodeBuffer.Length = wcslen(bufferW) * sizeof(WCHAR);
|
||||
ret = nameW.Length;
|
||||
if (nameW.Length <= nBufferLength)
|
||||
{
|
||||
LPSTR p = lpBuffer + strlen(lpBuffer);
|
||||
UnicodeBuffer.Buffer = bufferW;
|
||||
AnsiBuffer.MaximumLength = nBufferLength;
|
||||
AnsiBuffer.Length = 0;
|
||||
AnsiBuffer.Buffer = lpBuffer;
|
||||
RtlUnicodeStringToAnsiString(&AnsiBuffer, &UnicodeBuffer, FALSE);
|
||||
|
||||
if (*p != '\\')
|
||||
if (lpFilePart && FilePart != NULL)
|
||||
{
|
||||
while ((p > lpBuffer + 2) && (*p != '\\')) p--;
|
||||
*lpFilePart = p + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
*lpFilePart = NULL;
|
||||
}
|
||||
*lpFilePart = (FilePart - bufferW) + lpBuffer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -394,7 +397,7 @@ GetFullPathNameA (
|
|||
RtlFreeUnicodeString(&nameW);
|
||||
|
||||
DPRINT("lpBuffer %s lpFilePart %s Length %ld\n",
|
||||
lpBuffer, lpFilePart, nameW.Length);
|
||||
lpBuffer, (lpFilePart == NULL) ? "NULL" : *lpFilePart, nameW.Length);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -423,7 +426,7 @@ GetFullPathNameW (
|
|||
lpFilePart);
|
||||
|
||||
DPRINT("lpBuffer %S lpFilePart %S Length %ld\n",
|
||||
lpBuffer, lpFilePart, Length / sizeof(WCHAR));
|
||||
lpBuffer, (lpFilePart == NULL) ? L"NULL" : *lpFilePart, Length / sizeof(WCHAR));
|
||||
|
||||
return (Length / sizeof(WCHAR));
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: path.c,v 1.23 2003/10/19 16:17:50 navaraf Exp $
|
||||
/* $Id: path.c,v 1.24 2003/10/19 19:51:48 navaraf Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS system libraries
|
||||
|
@ -711,6 +711,7 @@ CHECKPOINT;
|
|||
/* find file part */
|
||||
if (FilePart)
|
||||
{
|
||||
#if 0
|
||||
*FilePart = wcsrchr(buf, L'\\');
|
||||
if (*FilePart)
|
||||
{
|
||||
|
@ -720,6 +721,13 @@ CHECKPOINT;
|
|||
{
|
||||
*FilePart = buf;
|
||||
}
|
||||
#else
|
||||
*FilePart = buf + len;
|
||||
while (*FilePart != buf && **FilePart != L'\\')
|
||||
--(*FilePart);
|
||||
if (**FilePart == L'\\')
|
||||
++(*FilePart);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: defwnd.c,v 1.99 2003/10/17 20:31:56 weiden Exp $
|
||||
/* $Id: defwnd.c,v 1.100 2003/10/19 19:51:48 navaraf Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS user32.dll
|
||||
|
@ -710,6 +710,9 @@ DefWndDoPaintNC(HWND hWnd, HRGN clip)
|
|||
DbgPrint("3. rect.top == %d\n", rect.top);
|
||||
}
|
||||
|
||||
if (ExStyle & WS_EX_CLIENTEDGE)
|
||||
DrawEdge(hDC, &rect, EDGE_SUNKEN, BF_RECT | BF_ADJUST);
|
||||
|
||||
/* Draw scrollbars */
|
||||
if((Style & WS_VSCROLL) && (clientrect.right < rect.right - (2 * FrameSize.cx)))
|
||||
SCROLL_DrawScrollBar(hWnd, hDC, SB_VERT, TRUE, TRUE);
|
||||
|
@ -1968,21 +1971,15 @@ User32DefWindowProc(HWND hWnd,
|
|||
if (GetWindowLongW(hWnd, GWL_STYLE) & WS_MINIMIZE &&
|
||||
(hIcon = (HICON)GetClassLongW(hWnd, GCL_HICON)) != NULL)
|
||||
{
|
||||
RECT WindowRect;
|
||||
RECT ClientRect;
|
||||
INT x, y;
|
||||
GetWindowRect(hWnd, &WindowRect);
|
||||
x = (WindowRect.right - WindowRect.left -
|
||||
GetClientRect(hWnd, &ClientRect);
|
||||
x = (ClientRect.right - ClientRect.left -
|
||||
GetSystemMetrics(SM_CXICON)) / 2;
|
||||
y = (WindowRect.bottom - WindowRect.top -
|
||||
y = (ClientRect.bottom - ClientRect.top -
|
||||
GetSystemMetrics(SM_CYICON)) / 2;
|
||||
DrawIcon(hDC, x, y, hIcon);
|
||||
}
|
||||
if (GetWindowLongW(hWnd, GWL_EXSTYLE) & WS_EX_CLIENTEDGE)
|
||||
{
|
||||
RECT WindowRect;
|
||||
GetClientRect(hWnd, &WindowRect);
|
||||
DrawEdge(hDC, &WindowRect, EDGE_SUNKEN, BF_RECT);
|
||||
}
|
||||
EndPaint(hWnd, &Ps);
|
||||
}
|
||||
return (0);
|
||||
|
@ -2076,11 +2073,16 @@ User32DefWindowProc(HWND hWnd,
|
|||
{
|
||||
return 0;
|
||||
}
|
||||
if (0 == (((DWORD) hBrush) & 0xffff0000))
|
||||
if (GetClassLongW(hWnd, GCL_STYLE) & CS_PARENTDC)
|
||||
{
|
||||
hBrush = GetSysColorBrush((DWORD) hBrush - 1);
|
||||
/* can't use GetClipBox with a parent DC or we fill the whole parent */
|
||||
GetClientRect(hWnd, &Rect);
|
||||
DPtoLP((HDC)wParam, (LPPOINT)&Rect, 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
GetClipBox((HDC)wParam, &Rect);
|
||||
}
|
||||
FillRect((HDC)wParam, &Rect, hBrush);
|
||||
return (1);
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: window.c,v 1.73 2003/09/20 19:52:23 gvg Exp $
|
||||
/* $Id: window.c,v 1.74 2003/10/19 19:51:48 navaraf Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS user32.dll
|
||||
|
@ -392,8 +392,12 @@ ArrangeIconicWindows(HWND hWnd)
|
|||
HDWP STDCALL
|
||||
BeginDeferWindowPos(int nNumWindows)
|
||||
{
|
||||
#if 0
|
||||
UNIMPLEMENTED;
|
||||
return (HDWP)0;
|
||||
#else
|
||||
return (HDWP)1;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
@ -737,7 +741,12 @@ DeferWindowPos(HDWP hWinPosInfo,
|
|||
int cy,
|
||||
UINT uFlags)
|
||||
{
|
||||
#if 0
|
||||
return NtUserDeferWindowPos(hWinPosInfo, hWnd, hWndInsertAfter, x, y, cx, cy, uFlags);
|
||||
#else
|
||||
SetWindowPos(hWnd, hWndInsertAfter, x, y, cx, cy, uFlags);
|
||||
return hWinPosInfo;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
@ -757,8 +766,12 @@ DestroyWindow(HWND hWnd)
|
|||
WINBOOL STDCALL
|
||||
EndDeferWindowPos(HDWP hWinPosInfo)
|
||||
{
|
||||
#if 0
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
#else
|
||||
return TRUE;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -2,4 +2,5 @@ const PALETTEENTRY* FASTCALL COLOR_GetSystemPaletteTemplate (VOID);
|
|||
COLORREF STDCALL COLOR_LookupNearestColor (PALETTEENTRY* palPalEntry, INT size, COLORREF color);
|
||||
INT STDCALL COLOR_PaletteLookupExactIndex (PALETTEENTRY* palPalEntry, INT size, COLORREF col);
|
||||
INT STDCALL COLOR_PaletteLookupPixel(PALETTEENTRY *palPalEntry, INT size, PXLATEOBJ XlateObj, COLORREF col, BOOL skipReserved);
|
||||
ULONG FASTCALL NtGdiGetSysColor(int nIndex);
|
||||
HBRUSH STDCALL NtGdiGetSysColorBrush(int nIndex);
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
/* $Id: winsta.c,v 1.38 2003/10/12 09:46:51 gvg Exp $
|
||||
/* $Id: winsta.c,v 1.39 2003/10/19 19:51:48 navaraf Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -47,6 +47,7 @@
|
|||
#include <include/error.h>
|
||||
#include <include/mouse.h>
|
||||
#include <include/callback.h>
|
||||
#include <include/color.h>
|
||||
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
@ -898,9 +899,28 @@ NtUserOpenInputDesktop(
|
|||
BOOL STDCALL
|
||||
NtUserPaintDesktop(HDC hDC)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
HWND hwnd = IntGetDesktopWindow();
|
||||
|
||||
return FALSE;
|
||||
/*
|
||||
* Check for an owning thread, otherwise don't paint anything
|
||||
* (non-desktop mode)
|
||||
*/
|
||||
if (NtUserGetWindowThreadProcessId(hwnd, NULL))
|
||||
{
|
||||
RECT Rect;
|
||||
HBRUSH PreviousBrush;
|
||||
|
||||
NtUserGetClientRect(hwnd, &Rect);
|
||||
|
||||
/*
|
||||
* Paint desktop background
|
||||
*/
|
||||
PreviousBrush = NtGdiSelectObject(hDC, NtGdiGetSysColorBrush(COLOR_BACKGROUND));
|
||||
NtGdiPatBlt(hDC, Rect.left, Rect.top, Rect.right, Rect.bottom, PATCOPY);
|
||||
NtGdiSelectObject(hDC, PreviousBrush);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
DWORD STDCALL
|
||||
|
|
Loading…
Reference in a new issue