}
-BOOL
+BOOL
DefWndRedrawIconTitle(HWND hWnd)
{
- PINTERNALPOS lpPos = (PINTERNALPOS)GetPropA(hWnd,
+ PINTERNALPOS lpPos = (PINTERNALPOS)GetPropA(hWnd,
(LPSTR)(DWORD)AtomInternalPos);
if (lpPos != NULL)
{
(!((Style & (WS_DLGFRAME | WS_BORDER)) == WS_DLGFRAME)));
}
-ULONG
+ULONG
UserHasThinFrameStyle(ULONG Style, ULONG ExStyle)
{
return((Style & WS_BORDER) ||
(ExStyle & WS_EX_DLGMODALFRAME));
}
-static void UserGetInsideRectNC( HWND hwnd, RECT *rect )
+void UserGetInsideRectNC( HWND hwnd, RECT *rect )
{
RECT WindowRect;
ULONG Style;
rect->top = rect->left = 0;
rect->right = WindowRect.right - WindowRect.left;
rect->bottom = WindowRect.bottom - WindowRect.top;
-
- if (Style & WS_ICONIC)
+
+ if (Style & WS_ICONIC)
{
return;
}
/* Remove frame from rectangle */
if (UserHasThickFrameStyle(Style, ExStyle ))
{
- InflateRect( rect, -GetSystemMetrics(SM_CXFRAME),
+ InflateRect( rect, -GetSystemMetrics(SM_CXFRAME),
-GetSystemMetrics(SM_CYFRAME) );
}
else
{
if (UserHasDlgFrameStyle(Style, ExStyle ))
{
- InflateRect( rect, -GetSystemMetrics(SM_CXDLGFRAME),
+ InflateRect( rect, -GetSystemMetrics(SM_CXDLGFRAME),
-GetSystemMetrics(SM_CYDLGFRAME));
/* FIXME: this isn't in NC_AdjustRect? why not? */
if (ExStyle & WS_EX_DLGMODALFRAME)
{
if (UserHasThinFrameStyle(Style, ExStyle))
{
- InflateRect(rect, -GetSystemMetrics(SM_CXBORDER),
+ InflateRect(rect, -GetSystemMetrics(SM_CXBORDER),
-GetSystemMetrics(SM_CYBORDER));
}
}
UserGetInsideRectNC( hwnd, &rect );
hdcMem = CreateCompatibleDC( hdc );
hbitmap = SelectObject( hdcMem, hbitmapClose );
- BitBlt(hdc, rect.left, rect.top, GetSystemMetrics(SM_CXSIZE),
- GetSystemMetrics(SM_CYSIZE), hdcMem,
+ BitBlt(hdc, rect.left, rect.top, GetSystemMetrics(SM_CXSIZE),
+ GetSystemMetrics(SM_CYSIZE), hdcMem,
(Style & WS_CHILD) ? GetSystemMetrics(SM_CXSIZE) : 0, 0,
down ? NOTSRCCOPY : SRCCOPY );
SelectObject( hdcMem, hbitmap );
UserGetInsideRectNC( hwnd, &rect );
hdcMem = CreateCompatibleDC( hdc );
- SelectObject( hdcMem, (IsZoomed(hwnd)
+ SelectObject( hdcMem, (IsZoomed(hwnd)
? (down ? hbitmapRestoreD : hbitmapRestore)
: (down ? hbitmapMaximizeD : hbitmapMaximize)) );
BitBlt( hdc, rect.right - GetSystemMetrics(SM_CXSMSIZE) - 1, rect.top,
{
RECT rect;
HDC hdcMem;
-
+
UserGetInsideRectNC(hwnd, &rect);
hdcMem = CreateCompatibleDC(hdc);
SelectObject(hdcMem, (down ? hbitmapMinimizeD : hbitmapMinimize));
- if (GetWindowLong(hwnd, GWL_STYLE) & WS_MAXIMIZEBOX)
+ if (GetWindowLong(hwnd, GWL_STYLE) & WS_MAXIMIZEBOX)
{
rect.right -= GetSystemMetrics(SM_CXSMSIZE)+1;
}
BitBlt( hdc, rect.right - GetSystemMetrics(SM_CXSMSIZE) - 1, rect.top,
- GetSystemMetrics(SM_CXSMSIZE) + 1, GetSystemMetrics(SM_CYSMSIZE),
+ GetSystemMetrics(SM_CXSMSIZE) + 1, GetSystemMetrics(SM_CYSMSIZE),
hdcMem, 0, 0,
SRCCOPY );
DeleteDC( hdcMem );
char buffer[256];
if (!hbitmapClose)
- {
+ {
hbitmapClose = LoadBitmapW( 0, MAKEINTRESOURCE(OBM_CLOSE));
hbitmapMinimize = LoadBitmapW( 0, MAKEINTRESOURCE(OBM_REDUCE) );
hbitmapMinimizeD = LoadBitmapW( 0, MAKEINTRESOURCE(OBM_REDUCED) );
hbitmapRestore = LoadBitmapW( 0, MAKEINTRESOURCE(OBM_RESTORE) );
hbitmapRestoreD = LoadBitmapW( 0, MAKEINTRESOURCE(OBM_RESTORED) );
}
-
+
if (GetWindowLong(hwnd, GWL_EXSTYLE) & WS_EX_DLGMODALFRAME)
{
HBRUSH hbrushOld = SelectObject(hdc, GetSysColorBrush(COLOR_WINDOW) );
UserDrawMinButton( hwnd, hdc, FALSE );
r.right -= GetSystemMetrics(SM_CXSMSIZE) + 1;
}
-
+
FillRect( hdc, &r, GetSysColorBrush(active ? COLOR_ACTIVECAPTION :
COLOR_INACTIVECAPTION) );
-
+
if (GetWindowTextA( hwnd, buffer, sizeof(buffer) ))
{
NONCLIENTMETRICS nclm;
UserDrawFrameNC(HDC hdc, RECT* rect, BOOL dlgFrame, BOOL active)
{
INT width, height;
-
+
if (dlgFrame)
{
width = GetSystemMetrics(SM_CXDLGFRAME) - 1;
SelectObject( hdc, GetSysColorBrush(active ? COLOR_ACTIVEBORDER :
COLOR_INACTIVEBORDER) );
}
-
+
/* Draw frame */
PatBlt( hdc, rect->left, rect->top,
rect->right - rect->left, height, PATCOPY );
if (dlgFrame)
{
InflateRect( rect, -width, -height );
- }
+ }
else
{
- INT decYOff = GetSystemMetrics(SM_CXFRAME) +
+ INT decYOff = GetSystemMetrics(SM_CXFRAME) +
GetSystemMetrics(SM_CXSIZE) - 1;
- INT decXOff = GetSystemMetrics(SM_CYFRAME) +
+ INT decXOff = GetSystemMetrics(SM_CYFRAME) +
GetSystemMetrics(SM_CYSIZE) - 1;
/* Draw inner rectangle */
-
+
SelectObject( hdc, GetStockObject(NULL_BRUSH) );
Rectangle( hdc, rect->left + width, rect->top + height,
rect->right - width , rect->bottom - height );
-
+
/* Draw the decorations */
-
+
MoveToEx( hdc, rect->left, rect->top + decYOff, NULL );
LineTo( hdc, rect->left + width, rect->top + decYOff );
MoveToEx( hdc, rect->right - 1, rect->top + decYOff, NULL );
LineTo( hdc, rect->left + width, rect->bottom - decYOff );
MoveToEx( hdc, rect->right - 1, rect->bottom - decYOff, NULL );
LineTo( hdc, rect->right - width - 1, rect->bottom - decYOff );
-
+
MoveToEx( hdc, rect->left + decXOff, rect->top, NULL );
LineTo( hdc, rect->left + decXOff, rect->top + height);
MoveToEx( hdc, rect->left + decXOff, rect->bottom - 1, NULL );
LineTo( hdc, rect->right - decXOff, rect->top + height );
MoveToEx( hdc, rect->right - decXOff, rect->bottom - 1, NULL );
LineTo( hdc, rect->right - decXOff, rect->bottom - height - 1 );
-
+
InflateRect( rect, -width - 1, -height - 1 );
}
}
+void SCROLL_DrawScrollBar (HWND hwnd, HDC hdc, INT nBar, BOOL arrows, BOOL interior);
+
VOID
DefWndDoPaintNC(HWND hWnd, HRGN clip)
{
Rectangle(hDc, 0, 0, rect.right, rect.bottom);
InflateRect(&rect, -1, -1);
}
-
+
if (UserHasThickFrameStyle(Style, ExStyle))
{
UserDrawFrameNC(hDc, &rect, FALSE, Active);
{
UserDrawFrameNC(hDc, &rect, TRUE, Active);
}
-
+
if (Style & WS_CAPTION)
{
RECT r = rect;
r.bottom = rect.top + GetSystemMetrics(SM_CYSIZE);
- rect.top += GetSystemMetrics(SM_CYSIZE) +
+ rect.top += GetSystemMetrics(SM_CYSIZE) +
GetSystemMetrics(SM_CYBORDER);
UserDrawCaptionNC(hDc, &r, hWnd, Style, Active);
}
/* FIXME: Draw menu bar. */
- /* FIXME: Draw scroll bars. */
+DbgPrint("drawing scrollbars..\n");
+ /* Draw scrollbars */
+ if (Style & WS_VSCROLL)
+ SCROLL_DrawScrollBar(hWnd, hDc, SB_VERT, TRUE, TRUE);
+ if (Style & WS_HSCROLL)
+ SCROLL_DrawScrollBar(hWnd, hDc, SB_HORZ, TRUE, TRUE);
/* FIXME: Draw size box. */
-
+
ReleaseDC(hWnd, hDc);
}
}
return(HTRIGHT);
}
- }
+ }
}
- else
+ else
{
if (UserHasDlgFrameStyle(Style, ExStyle))
{
if ((Style & WS_CAPTION) == WS_CAPTION)
{
- WindowRect.top += GetSystemMetrics(SM_CYCAPTION) -
+ WindowRect.top += GetSystemMetrics(SM_CYCAPTION) -
GetSystemMetrics(SM_CYBORDER);
if (!PtInRect(&WindowRect, Point))
{
for(;;)
{
- BOOL OldState = Pressed;
+ BOOL OldState = Pressed;
GetMessageA(hWnd, &Msg, 0, 0);
if (Msg.message == WM_LBUTTONUP)
continue;
}
- Pressed = DefWndHitTestNC(hWnd, Msg.pt) == wParam;
+ Pressed = DefWndHitTestNC(hWnd, Msg.pt) == (LRESULT) wParam;
if (Pressed != OldState)
{
if (wParam == HTMINBUTTON)
if (wParam == HTMINBUTTON)
{
- SendMessageA(hWnd, WM_SYSCOMMAND, SC_MINIMIZE,
+ SendMessageA(hWnd, WM_SYSCOMMAND, SC_MINIMIZE,
MAKELONG(Msg.pt.x, Msg.pt.y));
}
else
{
- SendMessageA(hWnd, WM_SYSCOMMAND,
- IsZoomed(hWnd) ? SC_RESTORE : SC_MAXIMIZE,
+ SendMessageA(hWnd, WM_SYSCOMMAND,
+ IsZoomed(hWnd) ? SC_RESTORE : SC_MAXIMIZE,
MAKELONG(Msg.pt.x, Msg.pt.y));
}
}
hDcMem = CreateCompatibleDC(hDC);
hSavedBitmap = SelectObject(hDcMem, hbitmapClose);
BitBlt(hDC, Rect.left, Rect.top, GetSystemMetrics(SM_CXSIZE),
- GetSystemMetrics(SM_CYSIZE), hDcMem,
- (GetWindowLong(hWnd, GWL_STYLE) & WS_CHILD) ?
+ GetSystemMetrics(SM_CYSIZE), hDcMem,
+ (GetWindowLong(hWnd, GWL_STYLE) & WS_CHILD) ?
GetSystemMetrics(SM_CXSIZE): 0, 0, Down ? NOTSRCCOPY : SRCCOPY);
SelectObject(hDcMem, hSavedBitmap);
DeleteDC(hDcMem);
DefWndDrawSysButton(hWnd, hDC, TRUE);
ReleaseDC(hWnd, hDC);
}
- SendMessageA(hWnd, WM_SYSCOMMAND, SC_MOUSEMENU + HTSYSMENU,
+ SendMessageA(hWnd, WM_SYSCOMMAND, SC_MOUSEMENU + HTSYSMENU,
lParam);
}
break;
{
}
-LRESULT
+LRESULT
DefWndHandleSetCursor(HWND hWnd, WPARAM wParam, LPARAM lParam)
{
/* Not for child windows. */
if (UserHasThickFrameStyle(Style, ExStyle))
{
- InflateRect(Rect, GetSystemMetrics(SM_CXFRAME),
+ InflateRect(Rect, GetSystemMetrics(SM_CXFRAME),
GetSystemMetrics(SM_CYFRAME));
}
else if (UserHasDlgFrameStyle(Style, ExStyle))
}
if (Style & WS_CAPTION)
{
- Rect->top -= GetSystemMetrics(SM_CYCAPTION) -
+ Rect->top -= GetSystemMetrics(SM_CYCAPTION) -
GetSystemMetrics(SM_CYBORDER);
}
if (Menu)
Pt.x = SLOWORD(lParam);
Pt.y = SHIWORD(lParam);
-
+
if (GetWindowLong(hWnd, GWL_STYLE) & WS_CHILD)
{
ScreenToClient(GetParent(hWnd), &Pt);
RECT WindowRect;
INT x, y;
GetWindowRect(hWnd, &WindowRect);
- x = (WindowRect.right - WindowRect.left -
+ x = (WindowRect.right - WindowRect.left -
GetSystemMetrics(SM_CXICON)) / 2;
- y = (WindowRect.bottom - WindowRect.top -
+ y = (WindowRect.bottom - WindowRect.top -
GetSystemMetrics(SM_CYICON)) / 2;
DrawIcon(hDc, x, y, hIcon);
}
hRgn = CreateRectRgn(0, 0, 0, 0);
if (GetUpdateRgn(hWnd, hRgn, FALSE) != NULLREGION)
{
- RedrawWindow(hWnd, NULL, hRgn,
+ RedrawWindow(hWnd, NULL, hRgn,
RDW_ERASENOW | RDW_ERASE | RDW_FRAME |
RDW_ALLCHILDREN);
}
BOOL bResult;
if (bUnicode)
{
- bResult = SendMessageW(GetParent(hWnd), WM_SETCURSOR,
+ bResult = SendMessageW(GetParent(hWnd), WM_SETCURSOR,
wParam, lParam);
}
- else
+ else
{
- bResult = SendMessageA(GetParent(hWnd), WM_SETCURSOR,
+ bResult = SendMessageA(GetParent(hWnd), WM_SETCURSOR,
wParam, lParam);
}
if (bResult)
}
}
}
- return(DefWndHandleSetCursor(hWnd, wParam, lParam));
+ return(DefWndHandleSetCursor(hWnd, wParam, lParam));
}
case WM_SYSCOMMAND:
(!(GetWindowLongW(hWnd, GWL_STYLE) & WS_VISIBLE) && wParam))
{
return(0);
- }
+ }
ShowWindow(hWnd, wParam ? SW_SHOWNOACTIVATE : SW_HIDE);
break;
}
INT Index = (wParam != 0) ? GCL_HICON : GCL_HICONSM;
HICON hOldIcon = (HICON)GetClassLongW(hWnd, Index);
SetClassLongW(hWnd, Index, lParam);
- SetWindowPos(hWnd, 0, 0, 0, 0, 0,
+ SetWindowPos(hWnd, 0, 0, 0, 0, 0,
SWP_FRAMECHANGED | SWP_NOSIZE | SWP_NOMOVE |
SWP_NOACTIVATE | SWP_NOZORDER);
return((LRESULT)hOldIcon);
CREATESTRUCTA* Cs = (CREATESTRUCTA*)lParam;
if (HIWORD(Cs->lpszName))
{
- WindowTextAtom =
+ WindowTextAtom =
(LPSTR)(ULONG)GlobalAddAtomA("USER32!WindowTextAtomA");
WindowText = RtlAllocateHeap(RtlGetProcessHeap(), 0,
strlen(Cs->lpszName) * sizeof(CHAR));
{
if (WindowTextAtom != 0)
{
- WindowTextAtom =
- (LPSTR)(DWORD)GlobalAddAtomA("USER32!WindowTextAtomW");
+ WindowTextAtom =
+ (LPSTR)(DWORD)GlobalAddAtomA("USER32!WindowTextAtomW");
}
if (WindowTextAtom != 0 &&
(WindowText = GetPropA(hWnd, WindowTextAtom)) == NULL)
CREATESTRUCTW* Cs = (CREATESTRUCTW*)lParam;
if (HIWORD(Cs->lpszName))
{
- WindowTextAtom =
+ WindowTextAtom =
(LPWSTR)(DWORD)GlobalAddAtomW(L"USER32!WindowTextAtomW");
WindowText = RtlAllocateHeap(RtlGetProcessHeap(), 0,
wcslen(Cs->lpszName) * sizeof(WCHAR));
{
if (WindowTextAtom != 0)
{
- WindowTextAtom =
- (LPWSTR)(DWORD)GlobalAddAtom(L"USER32!WindowTextAtomW");
+ WindowTextAtom =
+ (LPWSTR)(DWORD)GlobalAddAtom(L"USER32!WindowTextAtomW");
}
if (WindowTextAtom != 0 &&
(WindowText = GetPropW(hWnd, WindowTextAtom)) == NULL)
wcscpy(WindowText, (PWSTR)lParam);
SetPropW(hWnd, WindowTextAtom, WindowText);
}
+ //FIXME: return correct code
+ return TRUE;
case WM_NCDESTROY:
{