mirror of
https://github.com/reactos/reactos.git
synced 2024-10-08 02:13:56 +00:00
- Draw the Scrollbar.
- Draw the Titlebar using DrawCaptionTemp. - Clean up the code structure. svn path=/trunk/; revision=25318
This commit is contained in:
parent
d5de43d13e
commit
ddd07cb10c
|
@ -19,6 +19,9 @@ typedef struct _PREVIEW_DATA
|
||||||
DWORD clrWindow;
|
DWORD clrWindow;
|
||||||
HBRUSH hbrWindow;
|
HBRUSH hbrWindow;
|
||||||
|
|
||||||
|
DWORD clrScrollbar;
|
||||||
|
HBRUSH hbrScrollbar;
|
||||||
|
|
||||||
INT cxEdge;
|
INT cxEdge;
|
||||||
INT cyEdge;
|
INT cyEdge;
|
||||||
|
|
||||||
|
@ -56,21 +59,6 @@ typedef struct _PREVIEW_DATA
|
||||||
} PREVIEW_DATA, *PPREVIEW_DATA;
|
} PREVIEW_DATA, *PPREVIEW_DATA;
|
||||||
|
|
||||||
|
|
||||||
/* HACK: fill the caption bar squares due to NULL text */
|
|
||||||
static VOID
|
|
||||||
FillSquare(HDC hdc, PRECT rect)
|
|
||||||
{
|
|
||||||
INT x, y, i;
|
|
||||||
|
|
||||||
x = rect->left + 2;
|
|
||||||
y = rect->top + 2;
|
|
||||||
|
|
||||||
for (i = 3; i < 12; i++)
|
|
||||||
{
|
|
||||||
BitBlt(hdc, x, y + i, 10, 1, hdc, x, y, SRCCOPY);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static VOID
|
static VOID
|
||||||
DrawCaptionButtons(HDC hdc, LPRECT lpRect, BOOL bMinMax)
|
DrawCaptionButtons(HDC hdc, LPRECT lpRect, BOOL bMinMax)
|
||||||
|
@ -104,6 +92,75 @@ DrawCaptionButtons(HDC hdc, LPRECT lpRect, BOOL bMinMax)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static VOID
|
||||||
|
DrawScrollbar(HDC hdc, LPRECT rc, HBRUSH hbrScrollbar)
|
||||||
|
{
|
||||||
|
RECT rcTop;
|
||||||
|
RECT rcBottom;
|
||||||
|
RECT rcMiddle;
|
||||||
|
int width;
|
||||||
|
|
||||||
|
width = rc->right - rc->left;
|
||||||
|
|
||||||
|
rcTop.left = rc->left;
|
||||||
|
rcTop.right = rc->right;
|
||||||
|
rcTop.top = rc->top;
|
||||||
|
rcTop.bottom = rc->top + width;
|
||||||
|
|
||||||
|
rcMiddle.left = rc->left;
|
||||||
|
rcMiddle.right = rc->right;
|
||||||
|
rcMiddle.top = rc->top + width;
|
||||||
|
rcMiddle.bottom = rc->bottom - width;
|
||||||
|
|
||||||
|
rcBottom.left = rc->left;
|
||||||
|
rcBottom.right = rc->right;
|
||||||
|
rcBottom.top = rc->bottom - width;
|
||||||
|
rcBottom.bottom = rc->bottom;
|
||||||
|
|
||||||
|
DrawFrameControl(hdc, &rcTop, DFC_SCROLL, DFCS_SCROLLUP);
|
||||||
|
DrawFrameControl(hdc, &rcBottom, DFC_SCROLL, DFCS_SCROLLDOWN);
|
||||||
|
|
||||||
|
FillRect(hdc, &rcMiddle, hbrScrollbar);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static VOID
|
||||||
|
OnCreate(PPREVIEW_DATA pPreviewData)
|
||||||
|
{
|
||||||
|
NONCLIENTMETRICS NonClientMetrics;
|
||||||
|
|
||||||
|
pPreviewData->clrScrollbar = GetSysColor(COLOR_SCROLLBAR);
|
||||||
|
pPreviewData->hbrScrollbar = CreateSolidBrush(pPreviewData->clrScrollbar);
|
||||||
|
|
||||||
|
pPreviewData->clrDesktop = GetSysColor(COLOR_DESKTOP);
|
||||||
|
pPreviewData->hbrDesktop = CreateSolidBrush(pPreviewData->clrDesktop);
|
||||||
|
pPreviewData->clrWindow = GetSysColor(COLOR_WINDOW);
|
||||||
|
pPreviewData->hbrWindow = CreateSolidBrush(pPreviewData->clrWindow);
|
||||||
|
|
||||||
|
pPreviewData->cxEdge = GetSystemMetrics(SM_CXEDGE);
|
||||||
|
pPreviewData->cyEdge = GetSystemMetrics(SM_CXEDGE);
|
||||||
|
|
||||||
|
pPreviewData->cyCaption = 20; //GetSystemMetrics(SM_CYCAPTION);
|
||||||
|
|
||||||
|
/* load font info */
|
||||||
|
NonClientMetrics.cbSize = sizeof(NONCLIENTMETRICS);
|
||||||
|
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &NonClientMetrics, 0);
|
||||||
|
pPreviewData->CaptionFont = NonClientMetrics.lfCaptionFont;
|
||||||
|
pPreviewData->MenuFont = NonClientMetrics.lfMenuFont;
|
||||||
|
pPreviewData->DialogFont = NonClientMetrics.lfMessageFont;
|
||||||
|
|
||||||
|
AllocAndLoadString(&pPreviewData->lpInAct, hApplet, IDS_INACTWIN);
|
||||||
|
AllocAndLoadString(&pPreviewData->lpAct, hApplet, IDS_ACTWIN);
|
||||||
|
AllocAndLoadString(&pPreviewData->lpWinTxt, hApplet, IDS_WINTEXT);
|
||||||
|
AllocAndLoadString(&pPreviewData->lpMessBox, hApplet, IDS_MESSBOX);
|
||||||
|
AllocAndLoadString(&pPreviewData->lpMessText, hApplet, IDS_MESSTEXT);
|
||||||
|
AllocAndLoadString(&pPreviewData->lpButText, hApplet, IDS_BUTTEXT);
|
||||||
|
AllocAndLoadString(&pPreviewData->lpMenNorm, hApplet, IDS_NORMAL);
|
||||||
|
AllocAndLoadString(&pPreviewData->lpMenDis, hApplet, IDS_DISABLED);
|
||||||
|
AllocAndLoadString(&pPreviewData->lpMenSel, hApplet, IDS_SELECTED);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static VOID
|
static VOID
|
||||||
OnSize(INT cx, INT cy, PPREVIEW_DATA pPreviewData)
|
OnSize(INT cx, INT cy, PPREVIEW_DATA pPreviewData)
|
||||||
|
@ -165,7 +222,7 @@ OnSize(INT cx, INT cy, PPREVIEW_DATA pPreviewData)
|
||||||
pPreviewData->rcDialogCaption.left = pPreviewData->rcDialogFrame.left + 3;
|
pPreviewData->rcDialogCaption.left = pPreviewData->rcDialogFrame.left + 3;
|
||||||
pPreviewData->rcDialogCaption.top = pPreviewData->rcDialogFrame.top + 3;
|
pPreviewData->rcDialogCaption.top = pPreviewData->rcDialogFrame.top + 3;
|
||||||
pPreviewData->rcDialogCaption.right = pPreviewData->rcDialogFrame.right - 3;
|
pPreviewData->rcDialogCaption.right = pPreviewData->rcDialogFrame.right - 3;
|
||||||
pPreviewData->rcDialogCaption.bottom = pPreviewData->rcDialogFrame.top + 20 + 2;
|
pPreviewData->rcDialogCaption.bottom = pPreviewData->rcDialogFrame.top + 20 + 1;
|
||||||
|
|
||||||
/* Calculate the dialog client rectangle */
|
/* Calculate the dialog client rectangle */
|
||||||
pPreviewData->rcDialogClient.left = pPreviewData->rcDialogFrame.left + 3;
|
pPreviewData->rcDialogClient.left = pPreviewData->rcDialogFrame.left + 3;
|
||||||
|
@ -186,76 +243,13 @@ OnSize(INT cx, INT cy, PPREVIEW_DATA pPreviewData)
|
||||||
|
|
||||||
|
|
||||||
static VOID
|
static VOID
|
||||||
DrawScrollbar(HDC hdc, LPRECT rc)
|
OnPaint(HWND hwnd, PPREVIEW_DATA pPreviewData)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static LRESULT CALLBACK
|
|
||||||
PreviewWndProc(HWND hwnd,
|
|
||||||
UINT uMsg,
|
|
||||||
WPARAM wParam,
|
|
||||||
LPARAM lParam)
|
|
||||||
{
|
|
||||||
PPREVIEW_DATA pPreviewData;
|
|
||||||
HDC hdc;
|
|
||||||
PAINTSTRUCT ps;
|
PAINTSTRUCT ps;
|
||||||
|
HDC hdc;
|
||||||
|
HFONT hFont;
|
||||||
RECT rc;
|
RECT rc;
|
||||||
|
|
||||||
pPreviewData = (PPREVIEW_DATA)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
|
||||||
|
|
||||||
switch (uMsg)
|
|
||||||
{
|
|
||||||
case WM_CREATE:
|
|
||||||
{
|
|
||||||
NONCLIENTMETRICS NonClientMetrics;
|
|
||||||
|
|
||||||
pPreviewData = (PPREVIEW_DATA)HeapAlloc(GetProcessHeap(),
|
|
||||||
HEAP_ZERO_MEMORY,
|
|
||||||
sizeof(PREVIEW_DATA));
|
|
||||||
if (!pPreviewData)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)pPreviewData);
|
|
||||||
pPreviewData->clrDesktop = GetSysColor(COLOR_DESKTOP);
|
|
||||||
pPreviewData->hbrDesktop = CreateSolidBrush(pPreviewData->clrDesktop);
|
|
||||||
pPreviewData->clrWindow = GetSysColor(COLOR_WINDOW);
|
|
||||||
pPreviewData->hbrWindow = CreateSolidBrush(pPreviewData->clrWindow);
|
|
||||||
|
|
||||||
pPreviewData->cxEdge = GetSystemMetrics(SM_CXEDGE);
|
|
||||||
pPreviewData->cyEdge = GetSystemMetrics(SM_CXEDGE);
|
|
||||||
|
|
||||||
pPreviewData->cyCaption = 20; //GetSystemMetrics(SM_CYCAPTION);
|
|
||||||
|
|
||||||
/* load font info */
|
|
||||||
NonClientMetrics.cbSize = sizeof(NONCLIENTMETRICS);
|
|
||||||
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &NonClientMetrics, 0);
|
|
||||||
pPreviewData->CaptionFont = NonClientMetrics.lfCaptionFont;
|
|
||||||
pPreviewData->MenuFont = NonClientMetrics.lfMenuFont;
|
|
||||||
pPreviewData->DialogFont = NonClientMetrics.lfMessageFont;
|
|
||||||
|
|
||||||
AllocAndLoadString(&pPreviewData->lpInAct, hApplet, IDS_INACTWIN);
|
|
||||||
AllocAndLoadString(&pPreviewData->lpAct, hApplet, IDS_ACTWIN);
|
|
||||||
AllocAndLoadString(&pPreviewData->lpWinTxt, hApplet, IDS_WINTEXT);
|
|
||||||
AllocAndLoadString(&pPreviewData->lpMessBox, hApplet, IDS_MESSBOX);
|
|
||||||
AllocAndLoadString(&pPreviewData->lpMessText, hApplet, IDS_MESSTEXT);
|
|
||||||
AllocAndLoadString(&pPreviewData->lpButText, hApplet, IDS_BUTTEXT);
|
|
||||||
AllocAndLoadString(&pPreviewData->lpMenNorm, hApplet, IDS_NORMAL);
|
|
||||||
AllocAndLoadString(&pPreviewData->lpMenDis, hApplet, IDS_DISABLED);
|
|
||||||
AllocAndLoadString(&pPreviewData->lpMenSel, hApplet, IDS_SELECTED);
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case WM_SIZE:
|
|
||||||
OnSize(LOWORD(lParam), HIWORD(lParam), pPreviewData);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case WM_PAINT:
|
|
||||||
{
|
|
||||||
RECT tmpRc;
|
|
||||||
|
|
||||||
hdc = BeginPaint(hwnd, &ps);
|
hdc = BeginPaint(hwnd, &ps);
|
||||||
|
|
||||||
/* Desktop */
|
/* Desktop */
|
||||||
|
@ -263,82 +257,81 @@ PreviewWndProc(HWND hwnd,
|
||||||
|
|
||||||
/* Inactive Window */
|
/* Inactive Window */
|
||||||
DrawEdge(hdc, &pPreviewData->rcInactiveFrame, EDGE_RAISED, BF_RECT | BF_MIDDLE);
|
DrawEdge(hdc, &pPreviewData->rcInactiveFrame, EDGE_RAISED, BF_RECT | BF_MIDDLE);
|
||||||
DrawCaption(hwnd, hdc, &pPreviewData->rcInactiveCaption, DC_GRADIENT | DC_TEXT);
|
|
||||||
DrawCaptionButtons(hdc, &pPreviewData->rcInactiveCaption, TRUE);
|
|
||||||
FillSquare(hdc, &pPreviewData->rcInactiveCaption);
|
|
||||||
CopyRect(&tmpRc, &pPreviewData->rcInactiveCaption);
|
|
||||||
tmpRc.left += 4;
|
|
||||||
tmpRc.top += 2;
|
|
||||||
SelectObject(hdc, CreateFontIndirect(&pPreviewData->CaptionFont));
|
|
||||||
SetTextColor(hdc, RGB(212,208,200));
|
SetTextColor(hdc, RGB(212,208,200));
|
||||||
DrawText(hdc, pPreviewData->lpInAct, lstrlen(pPreviewData->lpInAct), &tmpRc, DT_LEFT);
|
|
||||||
DeleteObject(SelectObject(hdc, GetStockObject(SYSTEM_FONT)));
|
hFont = CreateFontIndirect(&pPreviewData->CaptionFont);
|
||||||
|
DrawCaptionTemp(NULL, hdc, &pPreviewData->rcInactiveCaption, hFont,
|
||||||
|
NULL, pPreviewData->lpInAct, DC_GRADIENT | DC_ICON | DC_TEXT);
|
||||||
|
DeleteObject(hFont);
|
||||||
|
|
||||||
|
DrawCaptionButtons(hdc, &pPreviewData->rcInactiveCaption, TRUE);
|
||||||
|
|
||||||
/* Active Window */
|
/* Active Window */
|
||||||
DrawEdge(hdc, &pPreviewData->rcActiveFrame, EDGE_RAISED, BF_RECT | BF_MIDDLE);
|
DrawEdge(hdc, &pPreviewData->rcActiveFrame, EDGE_RAISED, BF_RECT | BF_MIDDLE);
|
||||||
DrawCaption(hwnd, hdc, &pPreviewData->rcActiveCaption, DC_ACTIVE | DC_GRADIENT | DC_TEXT);
|
|
||||||
DrawCaptionButtons(hdc, &pPreviewData->rcActiveCaption, TRUE);
|
|
||||||
FillSquare(hdc, &pPreviewData->rcActiveCaption);
|
|
||||||
CopyRect(&tmpRc, &pPreviewData->rcActiveCaption);
|
|
||||||
tmpRc.left += 4;
|
|
||||||
tmpRc.top += 2;
|
|
||||||
SetTextColor(hdc, RGB(255,255,255)); // FIXME: don't hardcode colors
|
SetTextColor(hdc, RGB(255,255,255)); // FIXME: don't hardcode colors
|
||||||
SelectObject(hdc, CreateFontIndirect(&pPreviewData->CaptionFont));
|
|
||||||
DrawText(hdc, pPreviewData->lpAct, lstrlen(pPreviewData->lpAct), &tmpRc, DT_LEFT);
|
hFont = CreateFontIndirect(&pPreviewData->CaptionFont);
|
||||||
DeleteObject(SelectObject(hdc, GetStockObject(SYSTEM_FONT)));
|
DrawCaptionTemp(NULL, hdc, &pPreviewData->rcActiveCaption, hFont,
|
||||||
|
NULL, pPreviewData->lpAct, DC_ACTIVE | DC_GRADIENT | DC_ICON | DC_TEXT);
|
||||||
|
DeleteObject(hFont);
|
||||||
|
|
||||||
|
DrawCaptionButtons(hdc, &pPreviewData->rcActiveCaption, TRUE);
|
||||||
|
|
||||||
/* FIXME: Draw the menu bar */
|
/* FIXME: Draw the menu bar */
|
||||||
|
|
||||||
|
/* Draw the client area */
|
||||||
CopyRect(&rc, &pPreviewData->rcActiveClient);
|
CopyRect(&rc, &pPreviewData->rcActiveClient);
|
||||||
DrawEdge(hdc, &rc, EDGE_SUNKEN, BF_RECT | BF_ADJUST);
|
DrawEdge(hdc, &rc, EDGE_SUNKEN, BF_RECT | BF_ADJUST);
|
||||||
FillRect(hdc, &rc, pPreviewData->hbrWindow);
|
FillRect(hdc, &rc, pPreviewData->hbrWindow);
|
||||||
|
|
||||||
/* Draw the client text */
|
/* Draw the client text */
|
||||||
CopyRect(&tmpRc, &pPreviewData->rcActiveClient);
|
CopyRect(&rc, &pPreviewData->rcActiveClient);
|
||||||
tmpRc.left += 4;
|
rc.left += 4;
|
||||||
tmpRc.top += 2;
|
rc.top += 2;
|
||||||
SetTextColor(hdc, RGB(0,0,0));
|
SetTextColor(hdc, RGB(0,0,0));
|
||||||
SelectObject(hdc, CreateFontIndirect(&pPreviewData->DialogFont));
|
SelectObject(hdc, CreateFontIndirect(&pPreviewData->DialogFont));
|
||||||
DrawText(hdc, pPreviewData->lpWinTxt, lstrlen(pPreviewData->lpWinTxt), &tmpRc, DT_LEFT);
|
DrawText(hdc, pPreviewData->lpWinTxt, lstrlen(pPreviewData->lpWinTxt), &rc, DT_LEFT);
|
||||||
DeleteObject(SelectObject(hdc, GetStockObject(SYSTEM_FONT)));
|
DeleteObject(SelectObject(hdc, GetStockObject(SYSTEM_FONT)));
|
||||||
|
|
||||||
/* Draw the scroll bar */
|
/* Draw the scroll bar */
|
||||||
DrawScrollbar(hdc, &pPreviewData->rcActiveScroll);
|
DrawScrollbar(hdc, &pPreviewData->rcActiveScroll, pPreviewData->hbrScrollbar);
|
||||||
|
|
||||||
/* Dialog Window */
|
/* Dialog Window */
|
||||||
DrawEdge(hdc, &pPreviewData->rcDialogFrame, EDGE_RAISED, BF_RECT | BF_MIDDLE);
|
DrawEdge(hdc, &pPreviewData->rcDialogFrame, EDGE_RAISED, BF_RECT | BF_MIDDLE);
|
||||||
DrawCaption(hwnd, hdc, &pPreviewData->rcDialogCaption, DC_ACTIVE | DC_GRADIENT | DC_TEXT);
|
|
||||||
DrawCaptionButtons(hdc, &pPreviewData->rcDialogCaption, FALSE);
|
|
||||||
FillSquare(hdc, &pPreviewData->rcDialogCaption);
|
|
||||||
CopyRect(&tmpRc, &pPreviewData->rcDialogCaption);
|
|
||||||
tmpRc.left += 4;
|
|
||||||
tmpRc.top += 2;
|
|
||||||
SetTextColor(hdc, RGB(255,255,255));
|
SetTextColor(hdc, RGB(255,255,255));
|
||||||
SelectObject(hdc, CreateFontIndirect(&pPreviewData->CaptionFont));
|
|
||||||
DrawText(hdc, pPreviewData->lpMessBox, lstrlen(pPreviewData->lpMessBox), &tmpRc, DT_LEFT);
|
|
||||||
DeleteObject(SelectObject(hdc, GetStockObject(SYSTEM_FONT)));
|
|
||||||
|
|
||||||
/* draw the dialog text */
|
hFont = CreateFontIndirect(&pPreviewData->CaptionFont);
|
||||||
CopyRect(&tmpRc, &pPreviewData->rcDialogClient);
|
DrawCaptionTemp(NULL, hdc, &pPreviewData->rcDialogCaption, hFont,
|
||||||
tmpRc.left += 4;
|
NULL, pPreviewData->lpMessBox, DC_ACTIVE | DC_GRADIENT | DC_ICON | DC_TEXT);
|
||||||
tmpRc.top += 2;
|
DeleteObject(hFont);
|
||||||
|
|
||||||
|
DrawCaptionButtons(hdc, &pPreviewData->rcDialogCaption, FALSE);
|
||||||
|
|
||||||
|
/* Draw the dialog text */
|
||||||
|
CopyRect(&rc, &pPreviewData->rcDialogClient);
|
||||||
|
rc.left += 4;
|
||||||
|
rc.top += 2;
|
||||||
SetTextColor(hdc, RGB(0,0,0));
|
SetTextColor(hdc, RGB(0,0,0));
|
||||||
SelectObject(hdc, CreateFontIndirect(&pPreviewData->DialogFont));
|
SelectObject(hdc, CreateFontIndirect(&pPreviewData->DialogFont));
|
||||||
DrawText(hdc, pPreviewData->lpMessText, lstrlen(pPreviewData->lpMessText), &tmpRc, DT_LEFT);
|
DrawText(hdc, pPreviewData->lpMessText, lstrlen(pPreviewData->lpMessText), &rc, DT_LEFT);
|
||||||
DeleteObject(SelectObject(hdc, GetStockObject(SYSTEM_FONT)));
|
DeleteObject(SelectObject(hdc, GetStockObject(SYSTEM_FONT)));
|
||||||
|
|
||||||
/* Draw Button */
|
/* Draw Button */
|
||||||
DrawFrameControl(hdc, &pPreviewData->rcDialogButton, DFC_BUTTON, DFCS_BUTTONPUSH);
|
DrawFrameControl(hdc, &pPreviewData->rcDialogButton, DFC_BUTTON, DFCS_BUTTONPUSH);
|
||||||
CopyRect(&tmpRc, &pPreviewData->rcDialogButton);
|
CopyRect(&rc, &pPreviewData->rcDialogButton);
|
||||||
tmpRc.top += 6;
|
rc.top += 6;
|
||||||
SelectObject(hdc, CreateFontIndirect(&pPreviewData->DialogFont));
|
SelectObject(hdc, CreateFontIndirect(&pPreviewData->DialogFont));
|
||||||
DrawText(hdc, pPreviewData->lpButText, lstrlen(pPreviewData->lpButText), &tmpRc, DT_CENTER);
|
DrawText(hdc, pPreviewData->lpButText, lstrlen(pPreviewData->lpButText), &rc, DT_CENTER);
|
||||||
DeleteObject(SelectObject(hdc, GetStockObject(SYSTEM_FONT)));
|
DeleteObject(SelectObject(hdc, GetStockObject(SYSTEM_FONT)));
|
||||||
|
|
||||||
EndPaint(hwnd, &ps);
|
EndPaint(hwnd, &ps);
|
||||||
break;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
case WM_DESTROY:
|
|
||||||
|
static VOID
|
||||||
|
OnDestroy(PPREVIEW_DATA pPreviewData)
|
||||||
|
{
|
||||||
|
DeleteObject(pPreviewData->hbrScrollbar);
|
||||||
DeleteObject(pPreviewData->hbrDesktop);
|
DeleteObject(pPreviewData->hbrDesktop);
|
||||||
DeleteObject(pPreviewData->hbrWindow);
|
DeleteObject(pPreviewData->hbrWindow);
|
||||||
|
|
||||||
|
@ -351,7 +344,42 @@ PreviewWndProc(HWND hwnd,
|
||||||
LocalFree((HLOCAL)pPreviewData->lpMenNorm);
|
LocalFree((HLOCAL)pPreviewData->lpMenNorm);
|
||||||
LocalFree((HLOCAL)pPreviewData->lpMenDis);
|
LocalFree((HLOCAL)pPreviewData->lpMenDis);
|
||||||
LocalFree((HLOCAL)pPreviewData->lpMenSel);
|
LocalFree((HLOCAL)pPreviewData->lpMenSel);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static LRESULT CALLBACK
|
||||||
|
PreviewWndProc(HWND hwnd,
|
||||||
|
UINT uMsg,
|
||||||
|
WPARAM wParam,
|
||||||
|
LPARAM lParam)
|
||||||
|
{
|
||||||
|
PPREVIEW_DATA pPreviewData;
|
||||||
|
|
||||||
|
pPreviewData = (PPREVIEW_DATA)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||||
|
|
||||||
|
switch (uMsg)
|
||||||
|
{
|
||||||
|
case WM_CREATE:
|
||||||
|
pPreviewData = (PPREVIEW_DATA)HeapAlloc(GetProcessHeap(),
|
||||||
|
HEAP_ZERO_MEMORY,
|
||||||
|
sizeof(PREVIEW_DATA));
|
||||||
|
if (!pPreviewData)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)pPreviewData);
|
||||||
|
OnCreate(pPreviewData);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WM_SIZE:
|
||||||
|
OnSize(LOWORD(lParam), HIWORD(lParam), pPreviewData);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WM_PAINT:
|
||||||
|
OnPaint(hwnd, pPreviewData);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WM_DESTROY:
|
||||||
|
OnDestroy(pPreviewData);
|
||||||
HeapFree(GetProcessHeap(), 0, pPreviewData);
|
HeapFree(GetProcessHeap(), 0, pPreviewData);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue