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

View file

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

View file

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