Show custom colors in the preview window.

svn path=/trunk/; revision=26060
This commit is contained in:
Eric Kohl 2007-03-10 21:25:03 +00:00
parent d400691f1c
commit 7ac91cf037
3 changed files with 43 additions and 29 deletions

View file

@ -29,7 +29,7 @@ UpdateButtonColor(HWND hwndDlg, GLOBALS* g, INT ID, INT nButton, INT nColor)
if (nColor != -1)
{
/* Create a DC to draw on */
hwndColorButton = GetDlgItem(hwndDlg, IDC_ADVAPPEARANCE_COLOR1_B);
hwndColorButton = GetDlgItem(hwndDlg, ID);
hdcColorButton = GetDC(hwndColorButton);
hdcCompat = CreateCompatibleDC(hdcColorButton);
ReleaseDC(hwndColorButton, hdcColorButton);
@ -294,6 +294,7 @@ GetColor(HWND hwndDlg, GLOBALS* g, INT nButton)
if (crColor != cc.rgbResult)
{
UpdateButtonColor(hwndDlg, g, ID, nButton, ColorIndex);
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_SETCOLOR, ColorIndex, cc.rgbResult);
return TRUE;
}
}

View file

@ -3,7 +3,7 @@
* LICENSE: GPL - See COPYING in the top level directory
* FILE: lib/cpl/desk/preview.c
* PURPOSE: Draws the preview control
* COPYRIGHT: Copyright 2006, 2007 Eric Kohl (email?)
* COPYRIGHT: Copyright 2006, 2007 Eric Kohl
*/
#include "desk.h"
@ -15,19 +15,11 @@ typedef struct _PREVIEW_DATA
{
HWND hwndParent;
DWORD clrDesktop;
HBRUSH hbrDesktop;
DWORD clrSysColor[COLOR_MENUBAR];
DWORD clrWindow;
HBRUSH hbrWindow;
DWORD clrScrollbar;
HBRUSH hbrScrollbar;
DWORD clrActiveCaptionText;
DWORD clrInactiveCaptionText;
DWORD clrWindowText;
DWORD clrButtonText;
HBRUSH hbrDesktop;
HBRUSH hbrWindow;
INT cxEdge;
INT cyEdge;
@ -148,19 +140,16 @@ static VOID
OnCreate(HWND hwnd, PPREVIEW_DATA pPreviewData)
{
NONCLIENTMETRICS NonClientMetrics;
INT i;
pPreviewData->clrScrollbar = GetSysColor(COLOR_SCROLLBAR);
pPreviewData->hbrScrollbar = CreateSolidBrush(pPreviewData->clrScrollbar);
for (i = 0; i < COLOR_MENUBAR + 1; i++)
{
pPreviewData->clrSysColor[i] = GetSysColor(i);
}
pPreviewData->clrDesktop = GetSysColor(COLOR_DESKTOP);
pPreviewData->hbrDesktop = CreateSolidBrush(pPreviewData->clrDesktop);
pPreviewData->clrWindow = GetSysColor(COLOR_WINDOW);
pPreviewData->hbrWindow = CreateSolidBrush(pPreviewData->clrWindow);
pPreviewData->clrActiveCaptionText = GetSysColor(COLOR_CAPTIONTEXT);
pPreviewData->clrInactiveCaptionText = GetSysColor(COLOR_INACTIVECAPTIONTEXT);
pPreviewData->clrWindowText = GetSysColor(COLOR_WINDOWTEXT);
pPreviewData->clrButtonText = GetSysColor(COLOR_BTNTEXT);
pPreviewData->hbrScrollbar = CreateSolidBrush(pPreviewData->clrSysColor[COLOR_SCROLLBAR]);
pPreviewData->hbrDesktop = CreateSolidBrush(pPreviewData->clrSysColor[COLOR_DESKTOP]);
pPreviewData->hbrWindow = CreateSolidBrush(pPreviewData->clrSysColor[COLOR_WINDOW]);
pPreviewData->cxEdge = GetSystemMetrics(SM_CXEDGE) - 2;
pPreviewData->cyEdge = GetSystemMetrics(SM_CXEDGE) - 2;
@ -354,14 +343,14 @@ OnPaint(HWND hwnd, PPREVIEW_DATA pPreviewData)
/* Inactive Window */
DrawEdge(hdc, &pPreviewData->rcInactiveFrame, EDGE_RAISED, BF_RECT | BF_MIDDLE);
SetTextColor(hdc, pPreviewData->clrInactiveCaptionText);
SetTextColor(hdc, pPreviewData->clrSysColor[COLOR_INACTIVECAPTIONTEXT]);
DrawCaptionTemp(NULL, hdc, &pPreviewData->rcInactiveCaption, pPreviewData->hCaptionFont,
NULL, pPreviewData->lpInAct, DC_GRADIENT | DC_ICON | DC_TEXT);
DrawCaptionButtons(hdc, &pPreviewData->rcInactiveCaption, TRUE, pPreviewData->cyCaption - 2);
/* Active Window */
DrawEdge(hdc, &pPreviewData->rcActiveFrame, EDGE_RAISED, BF_RECT | BF_MIDDLE);
SetTextColor(hdc, pPreviewData->clrActiveCaptionText);
SetTextColor(hdc, pPreviewData->clrSysColor[COLOR_CAPTIONTEXT]);
DrawCaptionTemp(NULL, hdc, &pPreviewData->rcActiveCaption, pPreviewData->hCaptionFont,
NULL, pPreviewData->lpAct, DC_ACTIVE | DC_GRADIENT | DC_ICON | DC_TEXT);
DrawCaptionButtons(hdc, &pPreviewData->rcActiveCaption, TRUE, pPreviewData->cyCaption - 2);
@ -380,7 +369,7 @@ OnPaint(HWND hwnd, PPREVIEW_DATA pPreviewData)
CopyRect(&rc, &pPreviewData->rcActiveClient);
rc.left += 4;
rc.top += 2;
SetTextColor(hdc, pPreviewData->clrWindowText);
SetTextColor(hdc, pPreviewData->clrSysColor[COLOR_WINDOWTEXT]);
hOldFont = SelectObject(hdc, pPreviewData->hCaptionFont);
DrawText(hdc, pPreviewData->lpWinTxt, lstrlen(pPreviewData->lpWinTxt), &rc, DT_LEFT);
SelectObject(hdc, hOldFont);
@ -390,7 +379,7 @@ OnPaint(HWND hwnd, PPREVIEW_DATA pPreviewData)
/* Dialog Window */
DrawEdge(hdc, &pPreviewData->rcDialogFrame, EDGE_RAISED, BF_RECT | BF_MIDDLE);
SetTextColor(hdc, pPreviewData->clrActiveCaptionText);
SetTextColor(hdc, pPreviewData->clrSysColor[COLOR_WINDOW]);
DrawCaptionTemp(NULL, hdc, &pPreviewData->rcDialogCaption, pPreviewData->hCaptionFont,
NULL, pPreviewData->lpMessBox, DC_ACTIVE | DC_GRADIENT | DC_ICON | DC_TEXT);
DrawCaptionButtons(hdc, &pPreviewData->rcDialogCaption, FALSE, pPreviewData->cyCaption - 2);
@ -407,7 +396,7 @@ OnPaint(HWND hwnd, PPREVIEW_DATA pPreviewData)
/* Draw Button */
DrawFrameControl(hdc, &pPreviewData->rcDialogButton, DFC_BUTTON, DFCS_BUTTONPUSH);
CopyRect(&rc, &pPreviewData->rcDialogButton);
SetTextColor(hdc, pPreviewData->clrButtonText);
SetTextColor(hdc, pPreviewData->clrSysColor[COLOR_BTNTEXT]);
hOldFont = SelectObject(hdc, pPreviewData->hMessageFont);
DrawText(hdc, pPreviewData->lpButText, lstrlen(pPreviewData->lpButText), &rc, DT_VCENTER | DT_CENTER | DT_SINGLELINE);
SelectObject(hdc, hOldFont);
@ -608,6 +597,28 @@ PreviewWndProc(HWND hwnd,
InvalidateRect(hwnd, NULL, FALSE);
break;
case PVM_SETCOLOR:
pPreviewData->clrSysColor[(INT)wParam] = (DWORD)lParam;
switch((INT)wParam)
{
case COLOR_SCROLLBAR:
DeleteObject(pPreviewData->hbrScrollbar);
pPreviewData->hbrScrollbar = CreateSolidBrush(pPreviewData->clrSysColor[COLOR_SCROLLBAR]);
break;
case COLOR_DESKTOP:
DeleteObject(pPreviewData->hbrDesktop);
pPreviewData->hbrDesktop = CreateSolidBrush(pPreviewData->clrSysColor[COLOR_DESKTOP]);
break;
case COLOR_WINDOW:
DeleteObject(pPreviewData->hbrWindow);
pPreviewData->hbrWindow = CreateSolidBrush(pPreviewData->clrSysColor[COLOR_WINDOW]);
break;
}
InvalidateRect(hwnd, NULL, FALSE);
break;
default:
DefWindowProc(hwnd,
uMsg,

View file

@ -39,5 +39,7 @@
#define PVM_SETMENUFONT (WM_USER+10)
#define PVM_SETDIALOGFONT (WM_USER+11)
#define PVM_SETCOLOR (WM_USER+12)
BOOL RegisterPreviewControl(IN HINSTANCE hInstance);
VOID UnregisterPreviewControl(IN HINSTANCE hInstance);