Added DrawCaption[16/32] and DrawCaptionTemp[16/32A/32W].
Fixed handling of WS_EX_TOOLWINDOW.
This commit is contained in:
parent
98dfbe1558
commit
8e517b5ce1
|
@ -498,10 +498,10 @@ file user.exe
|
||||||
654 stub UnloadKeyboardLayout
|
654 stub UnloadKeyboardLayout
|
||||||
655 stub PostPostedMessages
|
655 stub PostPostedMessages
|
||||||
656 pascal16 DrawFrameControl(word ptr word word) DrawFrameControl16
|
656 pascal16 DrawFrameControl(word ptr word word) DrawFrameControl16
|
||||||
657 stub DrawCaptionTemp
|
657 pascal16 DrawCaptionTemp(word word ptr word word ptr word) DrawCaptionTemp16
|
||||||
658 stub DispatchInput
|
658 stub DispatchInput
|
||||||
659 pascal16 DrawEdge(word ptr word word) DrawEdge16
|
659 pascal16 DrawEdge(word ptr word word) DrawEdge16
|
||||||
660 stub DrawCaption
|
660 pascal16 DrawCaption(word word ptr word) DrawCaption16
|
||||||
661 stub SetSysColorsTemp
|
661 stub SetSysColorsTemp
|
||||||
662 stub DrawMenubarTemp
|
662 stub DrawMenubarTemp
|
||||||
663 stub GetMenuDefaultItem
|
663 stub GetMenuDefaultItem
|
||||||
|
|
|
@ -3565,6 +3565,13 @@ DECL_WINELIB_TYPE_AW(LPMENUITEMINFO)
|
||||||
#define DT_NOPREFIX 2048
|
#define DT_NOPREFIX 2048
|
||||||
#define DT_INTERNAL 4096
|
#define DT_INTERNAL 4096
|
||||||
|
|
||||||
|
/* DrawCaption()/DrawCaptionTemp() flags */
|
||||||
|
#define DC_ACTIVE 0x0001
|
||||||
|
#define DC_SMALLCAP 0x0002
|
||||||
|
#define DC_ICON 0x0004
|
||||||
|
#define DC_TEXT 0x0008
|
||||||
|
#define DC_INBUTTON 0x0010
|
||||||
|
|
||||||
/* DrawEdge() flags */
|
/* DrawEdge() flags */
|
||||||
#define BDR_RAISEDOUTER 0x0001
|
#define BDR_RAISEDOUTER 0x0001
|
||||||
#define BDR_SUNKENOUTER 0x0002
|
#define BDR_SUNKENOUTER 0x0002
|
||||||
|
@ -7450,6 +7457,13 @@ BOOL32 WINAPI DragDetect32(HWND32,POINT32);
|
||||||
DWORD WINAPI DragObject16(HWND16,HWND16,UINT16,HANDLE16,WORD,HCURSOR16);
|
DWORD WINAPI DragObject16(HWND16,HWND16,UINT16,HANDLE16,WORD,HCURSOR16);
|
||||||
DWORD WINAPI DragObject32(HWND32,HWND32,UINT32,DWORD,HCURSOR32);
|
DWORD WINAPI DragObject32(HWND32,HWND32,UINT32,DWORD,HCURSOR32);
|
||||||
#define DragObject WINELIB_NAME(DragObject)
|
#define DragObject WINELIB_NAME(DragObject)
|
||||||
|
BOOL16 WINAPI DrawCaption16(HWND16,HDC16,const RECT16*,UINT16);
|
||||||
|
BOOL32 WINAPI DrawCaption32(HWND32,HDC32,const RECT32*,UINT32);
|
||||||
|
#define DrawCaption WINELIB_NAME(DrawCaption)
|
||||||
|
BOOL16 WINAPI DrawCaptionTemp16(HWND16,HDC16, const RECT16*,HFONT16,HICON16,LPCSTR,UINT16);
|
||||||
|
BOOL32 WINAPI DrawCaptionTemp32A(HWND32,HDC32,const RECT32*,HFONT32,HICON32,LPCSTR,UINT32);
|
||||||
|
BOOL32 WINAPI DrawCaptionTemp32W(HWND32,HDC32,const RECT32*,HFONT32,HICON32,LPCWSTR,UINT32);
|
||||||
|
#define DrawCaptionTemp WINELIB_NAME_AW(DrawCaptionTemp)
|
||||||
BOOL16 WINAPI DrawEdge16(HDC16,LPRECT16,UINT16,UINT16);
|
BOOL16 WINAPI DrawEdge16(HDC16,LPRECT16,UINT16,UINT16);
|
||||||
BOOL32 WINAPI DrawEdge32(HDC32,LPRECT32,UINT32,UINT32);
|
BOOL32 WINAPI DrawEdge32(HDC32,LPRECT32,UINT32,UINT32);
|
||||||
#define DrawEdge WINELIB_NAME(DrawEdge)
|
#define DrawEdge WINELIB_NAME(DrawEdge)
|
||||||
|
|
|
@ -154,7 +154,7 @@ type win32
|
||||||
151 stdcall DragDetect(long long long) DragDetect32
|
151 stdcall DragDetect(long long long) DragDetect32
|
||||||
152 stub DragObject
|
152 stub DragObject
|
||||||
153 stdcall DrawAnimatedRects(long long ptr ptr) DrawAnimatedRects32
|
153 stdcall DrawAnimatedRects(long long ptr ptr) DrawAnimatedRects32
|
||||||
154 stub DrawCaption
|
154 stdcall DrawCaption(long long ptr long) DrawCaption32
|
||||||
155 stdcall DrawEdge(long ptr long long) DrawEdge32
|
155 stdcall DrawEdge(long ptr long long) DrawEdge32
|
||||||
156 stdcall DrawFocusRect(long ptr) DrawFocusRect32
|
156 stdcall DrawFocusRect(long ptr) DrawFocusRect32
|
||||||
157 stub DrawFrame
|
157 stub DrawFrame
|
||||||
|
@ -603,7 +603,7 @@ type win32
|
||||||
599 stdcall DrawCaptionTempA(long long ptr long long str long) DrawCaptionTemp32A
|
599 stdcall DrawCaptionTempA(long long ptr long long str long) DrawCaptionTemp32A
|
||||||
600 stub RegisterNetworkCapabilities
|
600 stub RegisterNetworkCapabilities
|
||||||
601 stub WNDPROC_CALLBACK
|
601 stub WNDPROC_CALLBACK
|
||||||
602 stub DrawCaptionTempW
|
602 stdcall DrawCaptionTempW(long long ptr long long wstr long) DrawCaptionTemp32W
|
||||||
603 stub IsHungAppWindow
|
603 stub IsHungAppWindow
|
||||||
604 stub ChangeDisplaySettingsA
|
604 stub ChangeDisplaySettingsA
|
||||||
605 stub ChangeDisplaySettingsW
|
605 stub ChangeDisplaySettingsW
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
#include "tweak.h"
|
#include "tweak.h"
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "options.h"
|
#include "options.h"
|
||||||
|
#include "cache.h"
|
||||||
|
|
||||||
static HBITMAP16 hbitmapClose = 0;
|
static HBITMAP16 hbitmapClose = 0;
|
||||||
static HBITMAP16 hbitmapCloseD = 0;
|
static HBITMAP16 hbitmapCloseD = 0;
|
||||||
|
@ -217,20 +217,186 @@ NC_AdjustRectInner95 (LPRECT16 rect, DWORD style, DWORD exStyle)
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* DrawCaptionTempA [USER32.599]
|
* DrawCaption16 [USER.660] Draws a caption bar
|
||||||
|
*
|
||||||
|
* PARAMS
|
||||||
|
* hwnd [I]
|
||||||
|
* hdc [I]
|
||||||
|
* lpRect [I]
|
||||||
|
* uFlags [I]
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
DWORD WINAPI
|
|
||||||
DrawCaptionTemp32A (HWND32 hwnd, HDC32 hdc, LPRECT32 rect,
|
BOOL16 WINAPI
|
||||||
HFONT32 hfont,DWORD x1,LPCSTR str,DWORD x2)
|
DrawCaption16 (HWND16 hwnd, HDC16 hdc, const RECT16 *lpRect, UINT16 uFlags)
|
||||||
{
|
{
|
||||||
FIXME (nonclient, "(%08x,%08x,%p,%08x,%08x,\"%s\",%08x): stub\n",
|
FIXME (nonclient, " stub!\n");
|
||||||
hwnd, hdc, rect, hfont, x1, str, x2);
|
|
||||||
|
// return DrawCaptionTemp32A (hwnd, hdc, lpRect, 0, 0, NULL, uFlags & 0x1F);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* DrawCaption32 [USER32.154] Draws a caption bar
|
||||||
|
*
|
||||||
|
* PARAMS
|
||||||
|
* hwnd [I]
|
||||||
|
* hdc [I]
|
||||||
|
* lpRect [I]
|
||||||
|
* uFlags [I]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
BOOL32 WINAPI
|
||||||
|
DrawCaption32 (HWND32 hwnd, HDC32 hdc, const RECT32 *lpRect, UINT32 uFlags)
|
||||||
|
{
|
||||||
|
return DrawCaptionTemp32A (hwnd, hdc, lpRect, 0, 0, NULL, uFlags & 0x1F);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* DrawCaptionTemp16 [USER.657]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
BOOL16 WINAPI
|
||||||
|
DrawCaptionTemp16 (HWND16 hwnd, HDC16 hdc, const RECT16 *rect, HFONT16 hFont,
|
||||||
|
HICON16 hIcon, LPCSTR str, UINT16 uFlags)
|
||||||
|
{
|
||||||
|
FIXME (nonclient, " stub!\n");
|
||||||
|
|
||||||
|
// return DrawCaptionTemp32A (hwnd, hdc, lpRect, 0, 0, NULL, uFlags & 0x1F);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* DrawCaptionTemp32A [USER32.599]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
BOOL32 WINAPI
|
||||||
|
DrawCaptionTemp32A (HWND32 hwnd, HDC32 hdc, const RECT32 *rect, HFONT32 hFont,
|
||||||
|
HICON32 hIcon, LPCSTR str, UINT32 uFlags)
|
||||||
|
{
|
||||||
|
RECT32 rc = *rect;
|
||||||
|
|
||||||
|
TRACE (nonclient, "(%08x,%08x,%p,%08x,%08x,\"%s\",%08x)\n",
|
||||||
|
hwnd, hdc, rect, hFont, hIcon, str, uFlags);
|
||||||
|
|
||||||
|
/* drawing background */
|
||||||
|
if (uFlags & DC_INBUTTON) {
|
||||||
|
FillRect32 (hdc, &rc, GetSysColorBrush32 (COLOR_3DFACE));
|
||||||
|
|
||||||
|
if (uFlags & DC_ACTIVE) {
|
||||||
|
HBRUSH32 hbr = SelectObject32 (hdc, CACHE_GetPattern55AABrush ());
|
||||||
|
PatBlt32 (hdc, rc.left, rc.top,
|
||||||
|
rc.right-rc.left, rc.bottom-rc.top, 0xFA0089);
|
||||||
|
SelectObject32 (hdc, hbr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
FillRect32 (hdc, &rc, GetSysColorBrush32 ((uFlags & DC_ACTIVE) ?
|
||||||
|
COLOR_ACTIVECAPTION : COLOR_INACTIVECAPTION));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* drawing icon */
|
||||||
|
if ((uFlags & DC_ICON) && !(uFlags & DC_SMALLCAP)) {
|
||||||
|
POINT32 pt;
|
||||||
|
|
||||||
|
pt.x = rc.left + 2;
|
||||||
|
pt.y = (rc.bottom + rc.top - sysMetrics[SM_CYSMICON]) / 2;
|
||||||
|
|
||||||
|
if (hIcon) {
|
||||||
|
DrawIconEx32 (hdc, pt.x, pt.y, hIcon, sysMetrics[SM_CXSMICON],
|
||||||
|
sysMetrics[SM_CYSMICON], 0, 0, DI_NORMAL);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
WND *wndPtr = WIN_FindWndPtr(hwnd);
|
||||||
|
HICON32 hAppIcon = 0;
|
||||||
|
|
||||||
|
if (wndPtr->class->hIconSm)
|
||||||
|
hAppIcon = wndPtr->class->hIconSm;
|
||||||
|
else if (wndPtr->class->hIcon)
|
||||||
|
hAppIcon = wndPtr->class->hIcon;
|
||||||
|
|
||||||
|
DrawIconEx32 (hdc, pt.x, pt.y, hAppIcon, sysMetrics[SM_CXSMICON],
|
||||||
|
sysMetrics[SM_CYSMICON], 0, 0, DI_NORMAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
rc.left += (rc.bottom - rc.top);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* drawing text */
|
||||||
|
if (uFlags & DC_TEXT) {
|
||||||
|
HFONT32 hOldFont;
|
||||||
|
|
||||||
|
if (uFlags & DC_INBUTTON)
|
||||||
|
SetTextColor32 (hdc, GetSysColor32 (COLOR_BTNTEXT));
|
||||||
|
else if (uFlags & DC_ACTIVE)
|
||||||
|
SetTextColor32 (hdc, GetSysColor32 (COLOR_CAPTIONTEXT));
|
||||||
|
else
|
||||||
|
SetTextColor32 (hdc, GetSysColor32 (COLOR_INACTIVECAPTIONTEXT));
|
||||||
|
|
||||||
|
SetBkMode32 (hdc, TRANSPARENT);
|
||||||
|
|
||||||
|
if (hFont)
|
||||||
|
hOldFont = SelectObject32 (hdc, hFont);
|
||||||
|
else {
|
||||||
|
NONCLIENTMETRICS32A nclm;
|
||||||
|
HFONT32 hNewFont;
|
||||||
|
nclm.cbSize = sizeof(NONCLIENTMETRICS32A);
|
||||||
|
SystemParametersInfo32A (SPI_GETNONCLIENTMETRICS, 0, &nclm, 0);
|
||||||
|
hNewFont = CreateFontIndirect32A ((uFlags & DC_SMALLCAP) ?
|
||||||
|
&nclm.lfSmCaptionFont : &nclm.lfCaptionFont);
|
||||||
|
hOldFont = SelectObject32 (hdc, hNewFont);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (str)
|
||||||
|
DrawText32A (hdc, str, -1, &rc,
|
||||||
|
DT_SINGLELINE | DT_VCENTER | DT_NOPREFIX | DT_LEFT);
|
||||||
|
else {
|
||||||
|
CHAR szText[128];
|
||||||
|
INT32 nLen;
|
||||||
|
nLen = GetWindowText32A (hwnd, szText, 128);
|
||||||
|
DrawText32A (hdc, szText, nLen, &rc,
|
||||||
|
DT_SINGLELINE | DT_VCENTER | DT_NOPREFIX | DT_LEFT);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hFont)
|
||||||
|
SelectObject32 (hdc, hOldFont);
|
||||||
|
else
|
||||||
|
DeleteObject32 (SelectObject32 (hdc, hOldFont));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* drawing focus ??? */
|
||||||
|
if (uFlags & 0x2000)
|
||||||
|
FIXME (nonclient, "undocumented flag (0x2000)!\n");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* DrawCaptionTemp32W [USER32.602]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
BOOL32 WINAPI
|
||||||
|
DrawCaptionTemp32W (HWND32 hwnd, HDC32 hdc, const RECT32 *rect, HFONT32 hFont,
|
||||||
|
HICON32 hIcon, LPCWSTR str, UINT32 uFlags)
|
||||||
|
{
|
||||||
|
LPSTR p = HEAP_strdupWtoA (GetProcessHeap (), 0, str);
|
||||||
|
BOOL32 res = DrawCaptionTemp32A (hwnd, hdc, rect, hFont, hIcon, p, uFlags);
|
||||||
|
HeapFree (GetProcessHeap (), 0, p);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* AdjustWindowRect16 (USER.102)
|
* AdjustWindowRect16 (USER.102)
|
||||||
*/
|
*/
|
||||||
|
@ -1255,6 +1421,7 @@ static void NC_DrawCaption95(
|
||||||
RECT32 *rect,
|
RECT32 *rect,
|
||||||
HWND32 hwnd,
|
HWND32 hwnd,
|
||||||
DWORD style,
|
DWORD style,
|
||||||
|
DWORD exStyle,
|
||||||
BOOL32 active )
|
BOOL32 active )
|
||||||
{
|
{
|
||||||
RECT32 r = *rect;
|
RECT32 r = *rect;
|
||||||
|
@ -1282,9 +1449,11 @@ static void NC_DrawCaption95(
|
||||||
hbitmapRestoreD = LoadBitmap16( 0, MAKEINTRESOURCE16(OBM_RESTORED) );
|
hbitmapRestoreD = LoadBitmap16( 0, MAKEINTRESOURCE16(OBM_RESTORED) );
|
||||||
}
|
}
|
||||||
|
|
||||||
if (style & WS_SYSMENU) {
|
if ((style & WS_SYSMENU) && !(exStyle & WS_EX_TOOLWINDOW)) {
|
||||||
if (NC_DrawSysButton95 (hwnd, hdc, FALSE))
|
if (NC_DrawSysButton95 (hwnd, hdc, FALSE))
|
||||||
r.left += sysMetrics[SM_CYCAPTION] - 1;
|
r.left += sysMetrics[SM_CYCAPTION] - 1;
|
||||||
|
}
|
||||||
|
if (style & WS_SYSMENU) {
|
||||||
NC_DrawCloseButton95 (hwnd, hdc, FALSE);
|
NC_DrawCloseButton95 (hwnd, hdc, FALSE);
|
||||||
r.right -= sysMetrics[SM_CYCAPTION] - 1;
|
r.right -= sysMetrics[SM_CYCAPTION] - 1;
|
||||||
}
|
}
|
||||||
|
@ -1302,6 +1471,9 @@ static void NC_DrawCaption95(
|
||||||
HFONT32 hFont, hOldFont;
|
HFONT32 hFont, hOldFont;
|
||||||
nclm.cbSize = sizeof(NONCLIENTMETRICS32A);
|
nclm.cbSize = sizeof(NONCLIENTMETRICS32A);
|
||||||
SystemParametersInfo32A (SPI_GETNONCLIENTMETRICS, 0, &nclm, 0);
|
SystemParametersInfo32A (SPI_GETNONCLIENTMETRICS, 0, &nclm, 0);
|
||||||
|
if (exStyle & WS_EX_TOOLWINDOW)
|
||||||
|
hFont = CreateFontIndirect32A (&nclm.lfSmCaptionFont);
|
||||||
|
else
|
||||||
hFont = CreateFontIndirect32A (&nclm.lfCaptionFont);
|
hFont = CreateFontIndirect32A (&nclm.lfCaptionFont);
|
||||||
hOldFont = SelectObject32 (hdc, hFont);
|
hOldFont = SelectObject32 (hdc, hFont);
|
||||||
if (active) SetTextColor32( hdc, GetSysColor32( COLOR_CAPTIONTEXT ) );
|
if (active) SetTextColor32( hdc, GetSysColor32( COLOR_CAPTIONTEXT ) );
|
||||||
|
@ -1488,7 +1660,8 @@ void NC_DoNCPaint95(
|
||||||
r.bottom = rect.top + sysMetrics[SM_CYCAPTION];
|
r.bottom = rect.top + sysMetrics[SM_CYCAPTION];
|
||||||
rect.top += sysMetrics[SM_CYCAPTION];
|
rect.top += sysMetrics[SM_CYCAPTION];
|
||||||
}
|
}
|
||||||
NC_DrawCaption95( hdc, &r, hwnd, wndPtr->dwStyle, active );
|
NC_DrawCaption95( hdc, &r, hwnd, wndPtr->dwStyle,
|
||||||
|
wndPtr->dwExStyle,active );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue