mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-03 04:13:31 +00:00
- Declare local functions static and get rid of prototypes by moving functions around.
- Clean up the code. No changes to the functionality. svn path=/trunk/; revision=25809
This commit is contained in:
+285
-275
@@ -12,193 +12,58 @@
|
||||
#include "desk.h"
|
||||
#include "appearance.h"
|
||||
|
||||
INT_PTR CALLBACK
|
||||
AdvAppearanceDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
int iListIndex;
|
||||
GLOBALS* g;
|
||||
|
||||
switch(uMsg)
|
||||
|
||||
/* Draw the current color on the color picker buttons */
|
||||
static VOID
|
||||
UpdateButtonColor(HWND hwndDlg, GLOBALS* g, INT ID, INT nButton, INT nColor)
|
||||
{
|
||||
HDC hdcColorButton, hdcCompat;
|
||||
RECT rect;
|
||||
HBRUSH hbrush;
|
||||
HWND hwndColorButton;
|
||||
COLORREF crColor = g->ThemeAdv.crColor[nColor];
|
||||
HGDIOBJ hgdiTmp;
|
||||
|
||||
if (nColor != -1)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
g = (GLOBALS*)lParam;
|
||||
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)g);
|
||||
AdvAppearanceDlg_Init(hwndDlg);
|
||||
break;
|
||||
}
|
||||
case WM_DESTROY:
|
||||
{
|
||||
AdvAppearanceDlg_CleanUp(hwndDlg);
|
||||
break;
|
||||
}
|
||||
case WM_COMMAND:
|
||||
{
|
||||
g = (GLOBALS*)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||
switch(LOWORD(wParam))
|
||||
{
|
||||
case IDOK:
|
||||
{
|
||||
SaveCurrentValues(hwndDlg);
|
||||
EndDialog(hwndDlg, 0);
|
||||
break;
|
||||
}
|
||||
case IDCANCEL:
|
||||
{
|
||||
g->ThemeAdv = g->Theme;
|
||||
EndDialog(hwndDlg, 0);
|
||||
break;
|
||||
}
|
||||
case IDC_ADVAPPEARANCE_ELEMENT:
|
||||
{
|
||||
if(HIWORD(wParam) == CBN_SELCHANGE)
|
||||
{
|
||||
SaveCurrentValues(hwndDlg);
|
||||
iListIndex = SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_ELEMENT, CB_GETCURSEL, 0, 0);
|
||||
g->CurrentElement = SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_ELEMENT, CB_GETITEMDATA, (WPARAM)iListIndex, 0);
|
||||
UpdateControls(hwndDlg, g->CurrentElement);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IDC_ADVAPPEARANCE_COLOR1_B:
|
||||
{
|
||||
GetColor(hwndDlg, g->CurrentElement, 0);
|
||||
break;
|
||||
}
|
||||
case IDC_ADVAPPEARANCE_COLOR2_B:
|
||||
{
|
||||
GetColor(hwndDlg, g->CurrentElement, 1);
|
||||
break;
|
||||
}
|
||||
case IDC_ADVAPPEARANCE_FONTCOLOR_B:
|
||||
{
|
||||
GetColor(hwndDlg, g->CurrentElement, 2);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
/* Create a DC to draw on */
|
||||
hwndColorButton = GetDlgItem(hwndDlg, IDC_ADVAPPEARANCE_COLOR1_B);
|
||||
hdcColorButton = GetDC(hwndColorButton);
|
||||
hdcCompat = CreateCompatibleDC(hdcColorButton);
|
||||
ReleaseDC(hwndColorButton, hdcColorButton);
|
||||
|
||||
/* Select the button image to it */
|
||||
hgdiTmp = SelectObject(hdcCompat, g->hbmpColor[nButton]);
|
||||
|
||||
/* Create a brush and draw the rectangle */
|
||||
rect.left = 2;
|
||||
rect.top = 2;
|
||||
rect.right = 22;
|
||||
rect.bottom = 13;
|
||||
hbrush = CreateSolidBrush(crColor);
|
||||
FillRect(hdcCompat, &rect, hbrush);
|
||||
DeleteObject(hbrush);
|
||||
|
||||
/* hdcCompat is not needed anymore */
|
||||
SelectObject(hdcCompat,hgdiTmp);
|
||||
DeleteDC(hdcCompat);
|
||||
|
||||
SendDlgItemMessage(hwndDlg, ID, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)g->hbmpColor[nButton]);
|
||||
EnableWindow(GetDlgItem(hwndDlg, ID), TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
SendDlgItemMessage(hwndDlg, ID, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)NULL);
|
||||
EnableWindow(GetDlgItem(hwndDlg, ID), FALSE);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/* Initialize the advanced appearance dialog */
|
||||
void
|
||||
AdvAppearanceDlg_Init(HWND hwndDlg)
|
||||
{
|
||||
GLOBALS* g = (GLOBALS*)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||
int i, iElement, iListIndex, iDeskIndex = 0;
|
||||
TCHAR tstrText[80];
|
||||
LOGFONT lfFont;
|
||||
LOGFONT lfButtonFont;
|
||||
HFONT hMyFont;
|
||||
HDC hScreenDC;
|
||||
|
||||
/* Copy the current theme values */
|
||||
g->ThemeAdv = g->Theme;
|
||||
|
||||
/* Add the elements to the combo */
|
||||
for(iElement = 0; iElement < NUM_ELEMENTS; iElement++)
|
||||
{
|
||||
LoadString(hApplet, IDS_ELEMENT_1 + iElement, (LPTSTR)&tstrText, 79);
|
||||
iListIndex = SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_ELEMENT, CB_ADDSTRING, 0, (LPARAM)&tstrText);
|
||||
SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_ELEMENT, CB_SETITEMDATA, (WPARAM)iListIndex, (LPARAM)iElement);
|
||||
}
|
||||
|
||||
/* Get the list index of the desktop element */
|
||||
for(iListIndex = 0; iListIndex < NUM_ELEMENTS; iListIndex++)
|
||||
{
|
||||
iElement = SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_ELEMENT, CB_GETITEMDATA, (WPARAM)iListIndex, 0);
|
||||
if (iElement == 0)
|
||||
{
|
||||
iDeskIndex = iListIndex;
|
||||
break;
|
||||
}
|
||||
}
|
||||
SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_ELEMENT, CB_SETCURSEL, iDeskIndex, 0);
|
||||
|
||||
/* Set colors for the color buttons */
|
||||
g->crCOLOR_BTNFACE = g->Theme.crColor[COLOR_BTNFACE];
|
||||
g->crCOLOR_BTNTEXT = g->Theme.crColor[COLOR_BTNTEXT];
|
||||
g->crCOLOR_BTNSHADOW = g->Theme.crColor[COLOR_BTNSHADOW];
|
||||
g->crCOLOR_BTNHIGHLIGHT = g->Theme.crColor[COLOR_BTNHIGHLIGHT];
|
||||
|
||||
/* Create font for bold button */
|
||||
lfButtonFont = g->Theme.lfFont[FONT_DIALOG];
|
||||
lfButtonFont.lfWeight = FW_BOLD;
|
||||
lfButtonFont.lfItalic = FALSE;
|
||||
hMyFont = CreateFontIndirect(&lfButtonFont);
|
||||
if (hMyFont)
|
||||
{
|
||||
if (g->hBoldFont)
|
||||
{
|
||||
DeleteObject(g->hBoldFont);
|
||||
}
|
||||
g->hBoldFont = hMyFont;
|
||||
}
|
||||
|
||||
/* Create font for italic button */
|
||||
lfButtonFont.lfWeight = FW_REGULAR;
|
||||
lfButtonFont.lfItalic = TRUE;
|
||||
hMyFont = CreateFontIndirect(&lfButtonFont);
|
||||
if (hMyFont)
|
||||
{
|
||||
if (g->hItalicFont)
|
||||
{
|
||||
DeleteObject(g->hItalicFont);
|
||||
}
|
||||
g->hItalicFont = hMyFont;
|
||||
}
|
||||
|
||||
/* Set the fonts for the font style buttons */
|
||||
SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTBOLD, WM_SETFONT, (WPARAM)g->hBoldFont, (LPARAM)TRUE);
|
||||
SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTITALIC, WM_SETFONT, (WPARAM)g->hItalicFont, (LPARAM)TRUE);
|
||||
|
||||
/* Draw Bitmaps for the colorbuttons */
|
||||
InitColorButtons(hwndDlg);
|
||||
|
||||
/* Make the UpDown control count correctly */
|
||||
SendMessage (GetDlgItem(hwndDlg, IDC_ADVAPPEARANCE_SIZE_UD), UDM_SETRANGE, 0L, MAKELONG (200, 1));
|
||||
|
||||
/* Fill font selection combo */
|
||||
lfFont.lfCharSet = DEFAULT_CHARSET;
|
||||
lfFont.lfFaceName[0] = (TCHAR)0;
|
||||
lfFont.lfPitchAndFamily = 0;
|
||||
hScreenDC = GetDC(0);
|
||||
EnumFontFamiliesEx(hScreenDC, &lfFont, (FONTENUMPROC)EnumFontFamExProc, (LPARAM)GetDlgItem(hwndDlg, IDC_ADVAPPEARANCE_FONT_C), 0);
|
||||
ReleaseDC(0, hScreenDC);
|
||||
|
||||
/* Fill font size combo */
|
||||
TCHAR Size[4];
|
||||
for (i = 6; i <= 24; i++)
|
||||
{
|
||||
SetDlgItemInt(hwndDlg, IDC_CONVERT, i, FALSE);
|
||||
GetDlgItemText(hwndDlg, IDC_CONVERT, (LPTSTR)&Size, 3);
|
||||
SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTSIZE_E, CB_ADDSTRING, 0, (LPARAM)&Size);
|
||||
}
|
||||
|
||||
/* Update the controls */
|
||||
iListIndex = SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_ELEMENT, CB_GETCURSEL, 0, 0);
|
||||
g->CurrentElement = SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_ELEMENT, CB_GETITEMDATA, (WPARAM)iListIndex, 0);
|
||||
UpdateControls(hwndDlg, g->CurrentElement);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Create the basic bitmaps for the color picker buttons */
|
||||
void
|
||||
InitColorButtons(HWND hwndDlg)
|
||||
static VOID
|
||||
InitColorButtons(HWND hwndDlg, GLOBALS* g)
|
||||
{
|
||||
GLOBALS* g = (GLOBALS*)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||
INT i;
|
||||
HDC hdcColorButton, hdcCompat;
|
||||
RECT rect;
|
||||
@@ -209,7 +74,7 @@ InitColorButtons(HWND hwndDlg)
|
||||
|
||||
const POINT Points[3] = {{29,6},{33,6},{31,8}};
|
||||
|
||||
hwndColorButton = GetDlgItem(hwndDlg, IDC_ADVAPPEARANCE_COLOR1_B);
|
||||
hwndColorButton = GetDlgItem(hwndDlg, IDC_ADVAPPEARANCE_COLOR1_B);
|
||||
hdcColorButton = GetDC(hwndColorButton);
|
||||
for (i = 0; i <= 2; i++)
|
||||
{
|
||||
@@ -223,13 +88,19 @@ InitColorButtons(HWND hwndDlg)
|
||||
hgdiTemp = SelectObject(hdcCompat, g->hbmpColor[i]);
|
||||
|
||||
/* Draw the buttons background color */
|
||||
rect.left = 0; rect.top = 0; rect.right = 36; rect.bottom = 15;
|
||||
rect.left = 0;
|
||||
rect.top = 0;
|
||||
rect.right = 36;
|
||||
rect.bottom = 15;
|
||||
hbrush = CreateSolidBrush(g->crCOLOR_BTNFACE);
|
||||
FillRect(hdcCompat, &rect, hbrush);
|
||||
DeleteObject(hbrush);
|
||||
|
||||
/* Draw the rectangle */
|
||||
rect.left = 1; rect.top = 1; rect.right = 23; rect.bottom = 14;
|
||||
rect.left = 1;
|
||||
rect.top = 1;
|
||||
rect.right = 23;
|
||||
rect.bottom = 14;
|
||||
hbrush = CreateSolidBrush(g->crCOLOR_BTNTEXT);
|
||||
FillRect(hdcCompat, &rect, hbrush);
|
||||
DeleteObject(hbrush);
|
||||
@@ -260,52 +131,48 @@ InitColorButtons(HWND hwndDlg)
|
||||
/* FIXME: HACK, see Points definition */
|
||||
Polygon(hdcCompat, Points, 3);
|
||||
|
||||
/* Cleanup */
|
||||
/* Cleanup */
|
||||
SelectObject(hdcCompat,hgdiTemp);
|
||||
DeleteDC(hdcCompat);
|
||||
DeleteObject(hPen);
|
||||
DeleteObject(hbrush);
|
||||
}
|
||||
|
||||
ReleaseDC(hwndColorButton, hdcColorButton);
|
||||
|
||||
/* Set the images of the buttons */
|
||||
SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_COLOR1_B, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)g->hbmpColor[0]);
|
||||
SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_COLOR2_B, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)g->hbmpColor[1]);
|
||||
SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTCOLOR_B, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)g->hbmpColor[2]);
|
||||
return;
|
||||
}
|
||||
|
||||
void
|
||||
AdvAppearanceDlg_CleanUp(HWND hwndDlg)
|
||||
{
|
||||
GLOBALS* g = (GLOBALS*)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||
DeleteObject(g->hBoldFont);
|
||||
DeleteObject(g->hItalicFont);
|
||||
return;
|
||||
}
|
||||
|
||||
/* This is the callback function to add the installed fonts to the font combo */
|
||||
int CALLBACK
|
||||
EnumFontFamExProc(
|
||||
ENUMLOGFONTEX *lpelfe,
|
||||
NEWTEXTMETRICEX *lpntme,
|
||||
DWORD dwFontType,
|
||||
LPARAM lParam)
|
||||
static int CALLBACK
|
||||
EnumFontFamExProc(ENUMLOGFONTEX *lpelfe, NEWTEXTMETRICEX *lpntme, DWORD dwFontType, LPARAM lParam)
|
||||
{
|
||||
/* Don't enumerate more than 100 fonts */
|
||||
if (SendMessage((HWND)lParam, CB_GETCOUNT, 0, 0) >= 100) return(0);
|
||||
if (SendMessage((HWND)lParam, CB_GETCOUNT, 0, 0) >= 100)
|
||||
return 0;
|
||||
|
||||
/* Only add the string once */
|
||||
if (SendMessage((HWND)lParam, CB_FINDSTRINGEXACT, -1, (WPARAM)&(lpelfe->elfLogFont.lfFaceName)) != CB_ERR) return(2);
|
||||
if (SendMessage((HWND)lParam, CB_FINDSTRINGEXACT, -1, (WPARAM)&(lpelfe->elfLogFont.lfFaceName)) != CB_ERR)
|
||||
return 2;
|
||||
|
||||
SendMessage((HWND)lParam, CB_ADDSTRING, 0, (WPARAM)&(lpelfe->elfLogFont.lfFaceName));
|
||||
return(1);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/* Update all the controls with the current values for the selected screen element */
|
||||
void
|
||||
UpdateControls(HWND hwndDlg, int iElement)
|
||||
static VOID
|
||||
UpdateControls(HWND hwndDlg, GLOBALS *g)
|
||||
{
|
||||
GLOBALS* g = (GLOBALS*)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||
INT iElement;
|
||||
HDC hdcDlg;
|
||||
|
||||
iElement = g->CurrentElement;
|
||||
|
||||
/* First enable / disable the controls */
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_ADVAPPEARANCE_SIZE_E), (g_Assignment[iElement].Size != -1));
|
||||
@@ -322,16 +189,16 @@ UpdateControls(HWND hwndDlg, int iElement)
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_ADVAPPEARANCE_FONTITALIC), (g_Assignment[iElement].Font != -1));
|
||||
|
||||
/* Update the colors of the color buttons */
|
||||
UpdateButtonColor(hwndDlg, IDC_ADVAPPEARANCE_COLOR1_B, 0, g_Assignment[iElement].Color1);
|
||||
UpdateButtonColor(hwndDlg, IDC_ADVAPPEARANCE_COLOR2_B, 1, g_Assignment[iElement].Color2);
|
||||
UpdateButtonColor(hwndDlg, IDC_ADVAPPEARANCE_FONTCOLOR_B, 2, g_Assignment[iElement].FontColor);
|
||||
UpdateButtonColor(hwndDlg, g, IDC_ADVAPPEARANCE_COLOR1_B, 0, g_Assignment[iElement].Color1);
|
||||
UpdateButtonColor(hwndDlg, g, IDC_ADVAPPEARANCE_COLOR2_B, 1, g_Assignment[iElement].Color2);
|
||||
UpdateButtonColor(hwndDlg, g, IDC_ADVAPPEARANCE_FONTCOLOR_B, 2, g_Assignment[iElement].FontColor);
|
||||
|
||||
if (g_Assignment[iElement].Size != -1)
|
||||
SetDlgItemInt(hwndDlg, IDC_ADVAPPEARANCE_SIZE_E, g->ThemeAdv.Size[g_Assignment[iElement].Size], FALSE);
|
||||
else
|
||||
SetDlgItemText(hwndDlg, IDC_ADVAPPEARANCE_SIZE_E, TEXT(""));
|
||||
|
||||
HDC hdcDlg = GetDC(hwndDlg);
|
||||
hdcDlg = GetDC(hwndDlg);
|
||||
if (g_Assignment[iElement].Font != -1)
|
||||
{
|
||||
LOGFONT lfFont = g->ThemeAdv.lfFont[g_Assignment[iElement].Font];
|
||||
@@ -341,26 +208,30 @@ UpdateControls(HWND hwndDlg, int iElement)
|
||||
SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONT_C, CB_FINDSTRINGEXACT, -1, (WPARAM)lfFont.lfFaceName);
|
||||
SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTBOLD, BM_SETCHECK, g->ThemeAdv.lfFont[g_Assignment[iElement].Font].lfWeight == FW_BOLD?1:0, 0);
|
||||
SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTITALIC, BM_SETCHECK, g->ThemeAdv.lfFont[g_Assignment[iElement].Font].lfItalic, 0);
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
SetDlgItemText(hwndDlg, IDC_ADVAPPEARANCE_FONT_C, NULL);
|
||||
SetDlgItemText(hwndDlg, IDC_ADVAPPEARANCE_FONTSIZE_E, NULL);
|
||||
SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTBOLD, BM_SETCHECK, 0, 0);
|
||||
SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTITALIC, BM_SETCHECK, 0, 0);
|
||||
}
|
||||
|
||||
ReleaseDC(hwndDlg, hdcDlg);
|
||||
return;
|
||||
}
|
||||
|
||||
void
|
||||
SaveCurrentValues(HWND hwndDlg)
|
||||
|
||||
static VOID
|
||||
SaveCurrentValues(HWND hwndDlg, GLOBALS *g)
|
||||
{
|
||||
GLOBALS* g = (GLOBALS*)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||
BOOL bTranslated;
|
||||
HDC hdcDlg = GetDC(hwndDlg);
|
||||
|
||||
if (g_Assignment[g->CurrentElement].Size != -1)
|
||||
{
|
||||
g->ThemeAdv.Size[g_Assignment[g->CurrentElement].Size] = GetDlgItemInt(hwndDlg, IDC_ADVAPPEARANCE_SIZE_E, &bTranslated, FALSE);
|
||||
}
|
||||
|
||||
if (g_Assignment[g->CurrentElement].Font != -1)
|
||||
{
|
||||
g->ThemeAdv.lfFont[g_Assignment[g->CurrentElement].Font].lfHeight = -MulDiv(GetDlgItemInt(hwndDlg, IDC_ADVAPPEARANCE_FONTSIZE_E, &bTranslated, FALSE), GetDeviceCaps(hdcDlg, LOGPIXELSY), 72);
|
||||
@@ -368,78 +239,40 @@ SaveCurrentValues(HWND hwndDlg)
|
||||
g->ThemeAdv.lfFont[g_Assignment[g->CurrentElement].Font].lfItalic = SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTITALIC, BM_GETCHECK, 0, 0);
|
||||
GetDlgItemText(hwndDlg, IDC_ADVAPPEARANCE_FONT_C, g->ThemeAdv.lfFont[g_Assignment[g->CurrentElement].Font].lfFaceName, LF_FACESIZE * sizeof(TCHAR));
|
||||
}
|
||||
|
||||
ReleaseDC(hwndDlg, hdcDlg);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Draw the current color on the color picker buttons */
|
||||
void
|
||||
UpdateButtonColor(HWND hwndDlg, int ID, int nButton, int nColor)
|
||||
{
|
||||
GLOBALS* g = (GLOBALS*)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||
HDC hdcColorButton, hdcCompat;
|
||||
RECT rect;
|
||||
HBRUSH hbrush;
|
||||
HWND hwndColorButton;
|
||||
COLORREF crColor = g->ThemeAdv.crColor[nColor];
|
||||
|
||||
if(nColor != -1)
|
||||
{
|
||||
/* Create a DC to draw on */
|
||||
hwndColorButton = GetDlgItem(hwndDlg, IDC_ADVAPPEARANCE_COLOR1_B);
|
||||
hdcColorButton = GetDC(hwndColorButton);
|
||||
hdcCompat = CreateCompatibleDC(hdcColorButton);
|
||||
ReleaseDC(hwndColorButton, hdcColorButton);
|
||||
|
||||
/* Select the button image to it */
|
||||
HGDIOBJ hgdiTmp = SelectObject(hdcCompat, g->hbmpColor[nButton]);
|
||||
|
||||
/* Create a brush and draw the rectangle */
|
||||
rect.left = 2; rect.top = 2; rect.right = 22; rect.bottom = 13;
|
||||
hbrush = CreateSolidBrush(crColor);
|
||||
FillRect(hdcCompat, &rect, hbrush);
|
||||
DeleteObject(hbrush);
|
||||
|
||||
/* hdcCompat is not needed anymore */
|
||||
SelectObject(hdcCompat,hgdiTmp);
|
||||
DeleteDC(hdcCompat);
|
||||
|
||||
SendDlgItemMessage(hwndDlg, ID, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)g->hbmpColor[nButton]);
|
||||
EnableWindow(GetDlgItem(hwndDlg, ID), TRUE);
|
||||
} else {
|
||||
SendDlgItemMessage(hwndDlg, ID, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)NULL);
|
||||
EnableWindow(GetDlgItem(hwndDlg, ID), FALSE);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/* Select a color using a color picker */
|
||||
BOOL
|
||||
GetColor(HWND hwndDlg, int iElement, int nButton)
|
||||
static BOOL
|
||||
GetColor(HWND hwndDlg, GLOBALS* g, INT nButton)
|
||||
{
|
||||
GLOBALS* g = (GLOBALS*)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||
CHOOSECOLOR cc;
|
||||
COLORREF crCustom[16] = { 0 };
|
||||
COLORREF crColor;
|
||||
int ID = 0;
|
||||
int ColorIndex = 0;
|
||||
INT ID = 0;
|
||||
INT ColorIndex = 0;
|
||||
|
||||
/* Get the color index from the element index and button number */
|
||||
if (nButton == 0)
|
||||
switch (nButton)
|
||||
{
|
||||
ColorIndex = g_Assignment[iElement].Color1;
|
||||
ID = IDC_ADVAPPEARANCE_COLOR1_B;
|
||||
}
|
||||
if (nButton == 1)
|
||||
{
|
||||
ColorIndex = g_Assignment[iElement].Color2;
|
||||
ID = IDC_ADVAPPEARANCE_COLOR2_B;
|
||||
}
|
||||
if (nButton == 2)
|
||||
{
|
||||
ColorIndex = g_Assignment[iElement].FontColor;
|
||||
ID = IDC_ADVAPPEARANCE_FONTCOLOR_B;
|
||||
case 0:
|
||||
ColorIndex = g_Assignment[g->CurrentElement].Color1;
|
||||
ID = IDC_ADVAPPEARANCE_COLOR1_B;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
ColorIndex = g_Assignment[g->CurrentElement].Color2;
|
||||
ID = IDC_ADVAPPEARANCE_COLOR2_B;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
ColorIndex = g_Assignment[g->CurrentElement].FontColor;
|
||||
ID = IDC_ADVAPPEARANCE_FONTCOLOR_B;
|
||||
break;
|
||||
}
|
||||
|
||||
crColor = g->ThemeAdv.crColor[ColorIndex];
|
||||
|
||||
/* Prepare cc structure */
|
||||
@@ -459,9 +292,186 @@ GetColor(HWND hwndDlg, int iElement, int nButton)
|
||||
g->ThemeAdv.crColor[ColorIndex] = cc.rgbResult;
|
||||
if (crColor != cc.rgbResult)
|
||||
{
|
||||
UpdateButtonColor(hwndDlg, ID, nButton, ColorIndex);
|
||||
return(TRUE);
|
||||
UpdateButtonColor(hwndDlg, g, ID, nButton, ColorIndex);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return(FALSE);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/* Initialize the advanced appearance dialog */
|
||||
static VOID
|
||||
AdvAppearanceDlg_Init(HWND hwndDlg, GLOBALS *g)
|
||||
{
|
||||
INT i, iElement, iListIndex, iDeskIndex = 0;
|
||||
TCHAR tstrText[80];
|
||||
LOGFONT lfFont;
|
||||
LOGFONT lfButtonFont;
|
||||
HFONT hMyFont;
|
||||
HDC hScreenDC;
|
||||
TCHAR Size[4];
|
||||
|
||||
/* Copy the current theme values */
|
||||
g->ThemeAdv = g->Theme;
|
||||
|
||||
/* Add the elements to the combo */
|
||||
for (iElement = 0; iElement < NUM_ELEMENTS; iElement++)
|
||||
{
|
||||
LoadString(hApplet, IDS_ELEMENT_1 + iElement, (LPTSTR)&tstrText, 79);
|
||||
iListIndex = SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_ELEMENT, CB_ADDSTRING, 0, (LPARAM)&tstrText);
|
||||
SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_ELEMENT, CB_SETITEMDATA, (WPARAM)iListIndex, (LPARAM)iElement);
|
||||
}
|
||||
|
||||
/* Get the list index of the desktop element */
|
||||
for (iListIndex = 0; iListIndex < NUM_ELEMENTS; iListIndex++)
|
||||
{
|
||||
iElement = SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_ELEMENT, CB_GETITEMDATA, (WPARAM)iListIndex, 0);
|
||||
if (iElement == 0)
|
||||
{
|
||||
iDeskIndex = iListIndex;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_ELEMENT, CB_SETCURSEL, iDeskIndex, 0);
|
||||
|
||||
/* Set colors for the color buttons */
|
||||
g->crCOLOR_BTNFACE = g->Theme.crColor[COLOR_BTNFACE];
|
||||
g->crCOLOR_BTNTEXT = g->Theme.crColor[COLOR_BTNTEXT];
|
||||
g->crCOLOR_BTNSHADOW = g->Theme.crColor[COLOR_BTNSHADOW];
|
||||
g->crCOLOR_BTNHIGHLIGHT = g->Theme.crColor[COLOR_BTNHIGHLIGHT];
|
||||
|
||||
/* Create font for bold button */
|
||||
lfButtonFont = g->Theme.lfFont[FONT_DIALOG];
|
||||
lfButtonFont.lfWeight = FW_BOLD;
|
||||
lfButtonFont.lfItalic = FALSE;
|
||||
hMyFont = CreateFontIndirect(&lfButtonFont);
|
||||
if (hMyFont)
|
||||
{
|
||||
if (g->hBoldFont)
|
||||
DeleteObject(g->hBoldFont);
|
||||
|
||||
g->hBoldFont = hMyFont;
|
||||
}
|
||||
|
||||
/* Create font for italic button */
|
||||
lfButtonFont.lfWeight = FW_REGULAR;
|
||||
lfButtonFont.lfItalic = TRUE;
|
||||
hMyFont = CreateFontIndirect(&lfButtonFont);
|
||||
if (hMyFont)
|
||||
{
|
||||
if (g->hItalicFont)
|
||||
DeleteObject(g->hItalicFont);
|
||||
|
||||
g->hItalicFont = hMyFont;
|
||||
}
|
||||
|
||||
/* Set the fonts for the font style buttons */
|
||||
SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTBOLD, WM_SETFONT, (WPARAM)g->hBoldFont, (LPARAM)TRUE);
|
||||
SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTITALIC, WM_SETFONT, (WPARAM)g->hItalicFont, (LPARAM)TRUE);
|
||||
|
||||
/* Draw Bitmaps for the colorbuttons */
|
||||
InitColorButtons(hwndDlg, g);
|
||||
|
||||
/* Make the UpDown control count correctly */
|
||||
SendMessage (GetDlgItem(hwndDlg, IDC_ADVAPPEARANCE_SIZE_UD), UDM_SETRANGE, 0L, MAKELONG (200, 1));
|
||||
|
||||
/* Fill font selection combo */
|
||||
lfFont.lfCharSet = DEFAULT_CHARSET;
|
||||
lfFont.lfFaceName[0] = (TCHAR)0;
|
||||
lfFont.lfPitchAndFamily = 0;
|
||||
hScreenDC = GetDC(0);
|
||||
EnumFontFamiliesEx(hScreenDC, &lfFont, (FONTENUMPROC)EnumFontFamExProc, (LPARAM)GetDlgItem(hwndDlg, IDC_ADVAPPEARANCE_FONT_C), 0);
|
||||
ReleaseDC(0, hScreenDC);
|
||||
|
||||
/* Fill font size combo */
|
||||
for (i = 6; i <= 24; i++)
|
||||
{
|
||||
SetDlgItemInt(hwndDlg, IDC_CONVERT, i, FALSE);
|
||||
GetDlgItemText(hwndDlg, IDC_CONVERT, (LPTSTR)&Size, 3);
|
||||
SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTSIZE_E, CB_ADDSTRING, 0, (LPARAM)&Size);
|
||||
}
|
||||
|
||||
/* Update the controls */
|
||||
iListIndex = SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_ELEMENT, CB_GETCURSEL, 0, 0);
|
||||
g->CurrentElement = SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_ELEMENT, CB_GETITEMDATA, (WPARAM)iListIndex, 0);
|
||||
UpdateControls(hwndDlg, g);
|
||||
}
|
||||
|
||||
|
||||
static VOID
|
||||
AdvAppearanceDlg_CleanUp(HWND hwndDlg, GLOBALS* g)
|
||||
{
|
||||
DeleteObject(g->hBoldFont);
|
||||
DeleteObject(g->hItalicFont);
|
||||
}
|
||||
|
||||
|
||||
INT_PTR CALLBACK
|
||||
AdvAppearanceDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
INT iListIndex;
|
||||
GLOBALS* g;
|
||||
|
||||
g = (GLOBALS*)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||
|
||||
switch (uMsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
g = (GLOBALS*)lParam;
|
||||
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)g);
|
||||
AdvAppearanceDlg_Init(hwndDlg, g);
|
||||
break;
|
||||
|
||||
case WM_DESTROY:
|
||||
AdvAppearanceDlg_CleanUp(hwndDlg, g);
|
||||
break;
|
||||
|
||||
case WM_COMMAND:
|
||||
switch(LOWORD(wParam))
|
||||
{
|
||||
case IDOK:
|
||||
SaveCurrentValues(hwndDlg, g);
|
||||
EndDialog(hwndDlg, 0);
|
||||
break;
|
||||
|
||||
case IDCANCEL:
|
||||
g->ThemeAdv = g->Theme;
|
||||
EndDialog(hwndDlg, 0);
|
||||
break;
|
||||
|
||||
case IDC_ADVAPPEARANCE_ELEMENT:
|
||||
if (HIWORD(wParam) == CBN_SELCHANGE)
|
||||
{
|
||||
SaveCurrentValues(hwndDlg, g);
|
||||
iListIndex = SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_ELEMENT, CB_GETCURSEL, 0, 0);
|
||||
g->CurrentElement = SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_ELEMENT, CB_GETITEMDATA, (WPARAM)iListIndex, 0);
|
||||
UpdateControls(hwndDlg, g);
|
||||
}
|
||||
break;
|
||||
|
||||
case IDC_ADVAPPEARANCE_COLOR1_B:
|
||||
GetColor(hwndDlg, g, 0);
|
||||
break;
|
||||
|
||||
case IDC_ADVAPPEARANCE_COLOR2_B:
|
||||
GetColor(hwndDlg, g, 1);
|
||||
break;
|
||||
|
||||
case IDC_ADVAPPEARANCE_FONTCOLOR_B:
|
||||
GetColor(hwndDlg, g, 2);
|
||||
break;
|
||||
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
+292
-300
@@ -95,109 +95,240 @@ const int g_SizeMetric[NUM_SIZES] =
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
INT_PTR CALLBACK
|
||||
AppearancePageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
static VOID
|
||||
LoadCurrentTheme(GLOBALS* g)
|
||||
{
|
||||
INT i, index;
|
||||
GLOBALS* g = NULL;
|
||||
INT i;
|
||||
NONCLIENTMETRICS NonClientMetrics;
|
||||
|
||||
switch(uMsg)
|
||||
g->Theme.bHasChanged = FALSE;
|
||||
/* FIXME: it may be custom! */
|
||||
g->Theme.bIsCustom = FALSE;
|
||||
|
||||
/* Load colors */
|
||||
for (i = 0; i <= 30; i++)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
AppearancePage_Init(hwndDlg);
|
||||
break;
|
||||
}
|
||||
case WM_DESTROY:
|
||||
{
|
||||
AppearancePage_CleanUp(hwndDlg);
|
||||
break;
|
||||
}
|
||||
case WM_COMMAND:
|
||||
{
|
||||
g = (GLOBALS*)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||
switch(LOWORD(wParam))
|
||||
{
|
||||
case IDC_APPEARANCE_ADVANCED:
|
||||
{
|
||||
DialogBoxParam(hApplet, (LPCTSTR)IDD_ADVAPPEARANCE,
|
||||
hwndDlg, AdvAppearanceDlgProc, (LPARAM)g);
|
||||
|
||||
/* Was anything changed in the advanced appearance dialog? */
|
||||
if (memcmp(&g->Theme, &g->ThemeAdv, sizeof(THEME)) != 0)
|
||||
{
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
g->Theme = g->ThemeAdv;
|
||||
g->Theme.bHasChanged = TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IDC_APPEARANCE_COLORSCHEME:
|
||||
{
|
||||
if(HIWORD(wParam) == CBN_SELCHANGE)
|
||||
{
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
g->Theme.bHasChanged = TRUE;
|
||||
i = SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_COLORSCHEME, CB_GETCURSEL, 0, 0);
|
||||
index = SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_COLORSCHEME, CB_GETITEMDATA, (WPARAM)i, 0);
|
||||
LoadThemeFromReg(g, index);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
case WM_NOTIFY:
|
||||
{
|
||||
g = (GLOBALS*)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||
LPNMHDR lpnm = (LPNMHDR)lParam;
|
||||
switch(lpnm->code)
|
||||
{
|
||||
case PSN_APPLY:
|
||||
{
|
||||
if (g->Theme.bHasChanged)
|
||||
{
|
||||
ApplyTheme(g);
|
||||
}
|
||||
return(TRUE);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
default:
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
g->ColorList[i] = i;
|
||||
g->Theme.crColor[i] = (COLORREF)GetSysColor(i);
|
||||
}
|
||||
return TRUE;
|
||||
|
||||
/* Load sizes */
|
||||
for (i = 0; i <= 11; i++)
|
||||
{
|
||||
g->Theme.Size[i] = GetSystemMetrics(g_SizeMetric[i]);
|
||||
}
|
||||
|
||||
/* Load fonts */
|
||||
NonClientMetrics.cbSize = sizeof(NONCLIENTMETRICS);
|
||||
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &NonClientMetrics, 0);
|
||||
g->Theme.lfFont[FONT_CAPTION] = NonClientMetrics.lfCaptionFont;
|
||||
g->Theme.lfFont[FONT_SMCAPTION] = NonClientMetrics.lfSmCaptionFont;
|
||||
g->Theme.lfFont[FONT_MENU] = NonClientMetrics.lfMenuFont;
|
||||
g->Theme.lfFont[FONT_INFO] = NonClientMetrics.lfStatusFont;
|
||||
g->Theme.lfFont[FONT_DIALOG] = NonClientMetrics.lfMessageFont;
|
||||
SystemParametersInfo(SPI_GETICONTITLELOGFONT, sizeof(LOGFONT), &g->Theme.lfFont[FONT_ICON], 0);
|
||||
}
|
||||
|
||||
void
|
||||
AppearancePage_Init(HWND hwndDlg)
|
||||
|
||||
static VOID
|
||||
LoadThemeFromReg(GLOBALS* g, INT iPreset)
|
||||
{
|
||||
INT i;
|
||||
TCHAR strSizeName[20] = {TEXT("Sizes\\0")};
|
||||
TCHAR strValueName[10];
|
||||
HKEY hkNewSchemes, hkScheme, hkSize;
|
||||
DWORD dwType, dwLength;
|
||||
|
||||
if(RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Control Panel\\Appearance\\New Schemes"),
|
||||
0, KEY_READ, &hkNewSchemes) == ERROR_SUCCESS)
|
||||
{
|
||||
if(RegOpenKeyEx(hkNewSchemes, g->ThemeTemplates[iPreset].strKeyName, 0, KEY_READ, &hkScheme) == ERROR_SUCCESS)
|
||||
{
|
||||
lstrcpyn(&strSizeName[6],g->ThemeTemplates[iPreset].strSizeName, 3);
|
||||
if(RegOpenKeyEx(hkScheme, strSizeName, 0, KEY_READ, &hkSize) == ERROR_SUCCESS)
|
||||
{
|
||||
dwLength = sizeof(BOOL);
|
||||
RegQueryValueEx(hkSize, TEXT("FlatMenus"), NULL, &dwType, (LPBYTE)&g->Theme.bFlatMenus, &dwLength);
|
||||
|
||||
for (i = 0; i <= 30; i++)
|
||||
{
|
||||
wsprintf(strValueName, TEXT("Color #%d"), i);
|
||||
dwLength = sizeof(COLORREF);
|
||||
RegQueryValueEx(hkSize, strValueName, NULL, &dwType, (LPBYTE)&g->Theme.crColor[i], &dwLength);
|
||||
}
|
||||
for (i = 0; i <= 5; i++)
|
||||
{
|
||||
wsprintf(strValueName, TEXT("Font #%d"), i);
|
||||
dwLength = sizeof(LOGFONT);
|
||||
g->Theme.lfFont[i].lfFaceName[0] = 'x';
|
||||
RegQueryValueEx(hkSize, strValueName, NULL, &dwType, (LPBYTE)&g->Theme.lfFont[i], &dwLength);
|
||||
}
|
||||
for (i = 0; i <= 8; i++)
|
||||
{
|
||||
wsprintf(strValueName, TEXT("Size #%d"), i);
|
||||
dwLength = sizeof(DWORD);
|
||||
RegQueryValueEx(hkSize, strValueName, NULL, &dwType, (LPBYTE)&g->Theme.Size[i], &dwLength);
|
||||
}
|
||||
RegCloseKey(hkScheme);
|
||||
}
|
||||
RegCloseKey(hkScheme);
|
||||
}
|
||||
RegCloseKey(hkNewSchemes);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static VOID
|
||||
ApplyTheme(GLOBALS* g)
|
||||
{
|
||||
INT i, Result;
|
||||
HKEY hKey;
|
||||
DWORD dwDisposition = 0;
|
||||
TCHAR clText[16] = {0};
|
||||
NONCLIENTMETRICS NonClientMetrics;
|
||||
HFONT hMyFont;
|
||||
LOGFONT lfButtonFont;
|
||||
|
||||
if (!g->Theme.bHasChanged)
|
||||
return;
|
||||
|
||||
g->Theme.bHasChanged = FALSE;
|
||||
|
||||
/* Update some globals */
|
||||
g->crCOLOR_BTNFACE = g->Theme.crColor[COLOR_BTNFACE];
|
||||
g->crCOLOR_BTNTEXT = g->Theme.crColor[COLOR_BTNTEXT];
|
||||
g->crCOLOR_BTNSHADOW = g->Theme.crColor[COLOR_BTNSHADOW];
|
||||
g->crCOLOR_BTNHIGHLIGHT = g->Theme.crColor[COLOR_BTNHIGHLIGHT];
|
||||
lfButtonFont = g->Theme.lfFont[FONT_DIALOG];
|
||||
|
||||
/* Create new font for bold button */
|
||||
lfButtonFont.lfWeight = FW_BOLD;
|
||||
lfButtonFont.lfItalic = FALSE;
|
||||
hMyFont = CreateFontIndirect(&lfButtonFont);
|
||||
if (hMyFont)
|
||||
{
|
||||
if (g->hBoldFont)
|
||||
DeleteObject(g->hBoldFont);
|
||||
g->hBoldFont = hMyFont;
|
||||
}
|
||||
|
||||
/* Create new font for italic button */
|
||||
lfButtonFont.lfWeight = FW_REGULAR;
|
||||
lfButtonFont.lfItalic = TRUE;
|
||||
hMyFont = CreateFontIndirect(&lfButtonFont);
|
||||
if (hMyFont)
|
||||
{
|
||||
if (g->hItalicFont)
|
||||
DeleteObject(g->hItalicFont);
|
||||
g->hItalicFont = hMyFont;
|
||||
}
|
||||
|
||||
/* Apply Colors from global variable */
|
||||
SetSysColors(30, &g->ColorList[0], &g->Theme.crColor[0]);
|
||||
|
||||
/* Save colors to registry */
|
||||
Result = RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Control Panel\\Colors"), 0, KEY_ALL_ACCESS, &hKey);
|
||||
if (Result != ERROR_SUCCESS)
|
||||
{
|
||||
/* Could not open the key, try to create it */
|
||||
Result = RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("Control Panel\\Colors"), 0, NULL, 0, KEY_ALL_ACCESS, NULL,&hKey, &dwDisposition);
|
||||
}
|
||||
|
||||
if (Result == ERROR_SUCCESS)
|
||||
{
|
||||
for (i = 0; i <= 30; i++)
|
||||
{
|
||||
DWORD red = GetRValue(g->Theme.crColor[i]);
|
||||
DWORD green = GetGValue(g->Theme.crColor[i]);
|
||||
DWORD blue = GetBValue(g->Theme.crColor[i]);
|
||||
wsprintf(clText, TEXT("%d %d %d"), red, green, blue);
|
||||
RegSetValueEx(hKey, g_RegColorNames[i], 0, REG_SZ, (BYTE *)clText, lstrlen( clText )*sizeof(TCHAR) + sizeof(TCHAR));
|
||||
}
|
||||
|
||||
RegCloseKey(hKey);
|
||||
}
|
||||
|
||||
/* Apply the fonts */
|
||||
NonClientMetrics.cbSize = sizeof(NONCLIENTMETRICS);
|
||||
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &NonClientMetrics, 0);
|
||||
NonClientMetrics.lfCaptionFont = g->Theme.lfFont[FONT_CAPTION];
|
||||
NonClientMetrics.lfSmCaptionFont = g->Theme.lfFont[FONT_SMCAPTION];
|
||||
NonClientMetrics.lfMenuFont = g->Theme.lfFont[FONT_MENU];
|
||||
NonClientMetrics.lfStatusFont = g->Theme.lfFont[FONT_INFO];
|
||||
NonClientMetrics.lfMessageFont = g->Theme.lfFont[FONT_DIALOG];
|
||||
SystemParametersInfo(SPI_SETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &NonClientMetrics, 0);
|
||||
SystemParametersInfo(SPI_SETICONTITLELOGFONT, sizeof(LOGFONT), &g->Theme.lfFont[FONT_ICON], 0);
|
||||
|
||||
/* FIXME: Apply size metrics */
|
||||
|
||||
/* Save fonts and size metrics to registry */
|
||||
Result = RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Control Panel\\Desktop\\WindowMetrics"), 0, KEY_ALL_ACCESS, &hKey);
|
||||
if (Result != ERROR_SUCCESS)
|
||||
{
|
||||
/* Could not open the key, try to create it */
|
||||
Result = RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("Control Panel\\Desktop\\WindowMetrics"), 0, NULL, 0, KEY_ALL_ACCESS, NULL,&hKey, &dwDisposition);
|
||||
}
|
||||
|
||||
if (Result == ERROR_SUCCESS)
|
||||
{
|
||||
RegSetValueEx(hKey, TEXT("CaptionFont"), 0, REG_BINARY, (BYTE *)&g->Theme.lfFont[FONT_CAPTION], sizeof(LOGFONT));
|
||||
RegSetValueEx(hKey, TEXT("SmCaptionFont"), 0, REG_BINARY, (BYTE *)&g->Theme.lfFont[FONT_SMCAPTION], sizeof(LOGFONT));
|
||||
RegSetValueEx(hKey, TEXT("IconFont"), 0, REG_BINARY, (BYTE *)&g->Theme.lfFont[FONT_ICON], sizeof(LOGFONT));
|
||||
RegSetValueEx(hKey, TEXT("MenuFont"), 0, REG_BINARY, (BYTE *)&g->Theme.lfFont[FONT_MENU], sizeof(LOGFONT));
|
||||
RegSetValueEx(hKey, TEXT("StatusFont"), 0, REG_BINARY, (BYTE *)&g->Theme.lfFont[FONT_INFO], sizeof(LOGFONT));
|
||||
RegSetValueEx(hKey, TEXT("MessageFont"), 0, REG_BINARY, (BYTE *)&g->Theme.lfFont[FONT_DIALOG], sizeof(LOGFONT));
|
||||
|
||||
/* Save size metrics to registry */
|
||||
wsprintf(clText, TEXT("%d"), -15 * g->Theme.Size[SIZE_BORDER_X]);
|
||||
RegSetValueEx(hKey, TEXT("BorderWidth"), 0, REG_SZ, (BYTE *)clText, sizeof(clText));
|
||||
wsprintf(clText, TEXT("%d"), -15 * g->Theme.Size[SIZE_CAPTION_Y]);
|
||||
RegSetValueEx(hKey, TEXT("CaptionWidth"), 0, REG_SZ, (BYTE *)clText, sizeof(clText));
|
||||
wsprintf(clText, TEXT("%d"), -15 * g->Theme.Size[SIZE_CAPTION_Y]);
|
||||
RegSetValueEx(hKey, TEXT("CaptionHeight"), 0, REG_SZ, (BYTE *)clText, sizeof(clText));
|
||||
wsprintf(clText, TEXT("%d"), -15 * g->Theme.Size[SIZE_SMCAPTION_Y]);
|
||||
RegSetValueEx(hKey, TEXT("SmCaptionWidth"), 0, REG_SZ, (BYTE *)clText, sizeof(clText));
|
||||
wsprintf(clText, TEXT("%d"), -15 * g->Theme.Size[SIZE_SMCAPTION_Y]);
|
||||
RegSetValueEx(hKey, TEXT("SmCaptionHeight"), 0, REG_SZ, (BYTE *)clText, sizeof(clText));
|
||||
wsprintf(clText, TEXT("%d"), -15 * g->Theme.Size[SIZE_ICON_SPC_X]);
|
||||
RegSetValueEx(hKey, TEXT("IconSpacing"), 0, REG_SZ, (BYTE *)clText, sizeof(clText));
|
||||
wsprintf(clText, TEXT("%d"), -15 * g->Theme.Size[SIZE_ICON_SPC_Y]);
|
||||
RegSetValueEx(hKey, TEXT("IconVerticalSpacing"), 0, REG_SZ, (BYTE *)clText, sizeof(clText));
|
||||
wsprintf(clText, TEXT("%d"), -15 * g->Theme.Size[SIZE_MENU_X]);
|
||||
RegSetValueEx(hKey, TEXT("MenuWidth"), 0, REG_SZ, (BYTE *)clText, sizeof(clText));
|
||||
wsprintf(clText, TEXT("%d"), -15 * g->Theme.Size[SIZE_MENU_Y]);
|
||||
RegSetValueEx(hKey, TEXT("MenuHeight"), 0, REG_SZ, (BYTE *)clText, sizeof(clText));
|
||||
wsprintf(clText, TEXT("%d"), -15 * g->Theme.Size[SIZE_SCROLL_X]);
|
||||
RegSetValueEx(hKey, TEXT("ScrollWidth"), 0, REG_SZ, (BYTE *)clText, sizeof(clText));
|
||||
wsprintf(clText, TEXT("%d"), -15 * g->Theme.Size[SIZE_SCROLL_Y]);
|
||||
RegSetValueEx(hKey, TEXT("ScrollHeight"), 0, REG_SZ, (BYTE *)clText, sizeof(clText));
|
||||
wsprintf(clText, TEXT("%d"), g->Theme.Size[SIZE_ICON_X]);
|
||||
RegSetValueEx(hKey, TEXT("Shell Icon Sizet"), 0, REG_SZ, (BYTE *)clText, sizeof(clText));
|
||||
|
||||
RegCloseKey(hKey);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Draw the preview window, unimplemented */
|
||||
#if 0
|
||||
static VOID
|
||||
DrawPreview(HWND hwndPreview, THEME* pTheme)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
static VOID
|
||||
AppearancePage_Init(HWND hwndDlg, GLOBALS *g)
|
||||
{
|
||||
GLOBALS* g;
|
||||
HKEY hkNewSchemes, hkScheme, hkSizes, hkSize;
|
||||
FILETIME ftLastWriteTime;
|
||||
TCHAR strSelectedStyle[4];
|
||||
DWORD dwLength, dwType;
|
||||
DWORD dwDisposition = 0;
|
||||
int iStyle, iSize, iTemplateIndex, iListIndex = 0;
|
||||
int Result;
|
||||
INT iStyle, iSize, iTemplateIndex, iListIndex = 0;
|
||||
INT Result;
|
||||
|
||||
g = (GLOBALS*)malloc(sizeof(GLOBALS));
|
||||
// FIXME: correct handling of error (g == NULL)
|
||||
|
||||
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)g);
|
||||
LoadCurrentTheme(g);
|
||||
|
||||
/* Fill color schemes combo */
|
||||
@@ -264,230 +395,91 @@ AppearancePage_Init(HWND hwndDlg)
|
||||
RegCloseKey(hkNewSchemes);
|
||||
}
|
||||
SendMessage(GetDlgItem(hwndDlg, IDC_APPEARANCE_COLORSCHEME), LB_SETCURSEL, 0, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
void
|
||||
AppearancePage_CleanUp(HWND hwndDlg)
|
||||
|
||||
static VOID
|
||||
AppearancePage_CleanUp(HWND hwndDlg, GLOBALS *g)
|
||||
{
|
||||
GLOBALS* g = (GLOBALS*)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||
free(g);
|
||||
return;
|
||||
}
|
||||
|
||||
void
|
||||
LoadCurrentTheme(GLOBALS* g)
|
||||
|
||||
INT_PTR CALLBACK
|
||||
AppearancePageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
int i;
|
||||
NONCLIENTMETRICS NonClientMetrics;
|
||||
INT i, index;
|
||||
GLOBALS *g;
|
||||
LPNMHDR lpnm;
|
||||
|
||||
g->Theme.bHasChanged = FALSE;
|
||||
/* FIXME: it may be custom! */
|
||||
g->Theme.bIsCustom = FALSE;
|
||||
g = (GLOBALS*)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||
|
||||
/* Load colors */
|
||||
for(i = 0; i <= 30; i++)
|
||||
switch (uMsg)
|
||||
{
|
||||
g->ColorList[i] = i;
|
||||
g->Theme.crColor[i] = (COLORREF)GetSysColor(i);
|
||||
}
|
||||
case WM_INITDIALOG:
|
||||
g = (GLOBALS*)malloc(sizeof(GLOBALS));
|
||||
if (g == NULL)
|
||||
return FALSE;
|
||||
|
||||
/* Load sizes */
|
||||
for(i = 0; i <= 11; i++)
|
||||
{
|
||||
g->Theme.Size[i] = GetSystemMetrics(g_SizeMetric[i]);
|
||||
}
|
||||
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)g);
|
||||
AppearancePage_Init(hwndDlg, g);
|
||||
break;
|
||||
|
||||
/* Load fonts */
|
||||
NonClientMetrics.cbSize = sizeof(NONCLIENTMETRICS);
|
||||
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &NonClientMetrics, 0);
|
||||
g->Theme.lfFont[FONT_CAPTION] = NonClientMetrics.lfCaptionFont;
|
||||
g->Theme.lfFont[FONT_SMCAPTION] = NonClientMetrics.lfSmCaptionFont;
|
||||
g->Theme.lfFont[FONT_MENU] = NonClientMetrics.lfMenuFont;
|
||||
g->Theme.lfFont[FONT_INFO] = NonClientMetrics.lfStatusFont;
|
||||
g->Theme.lfFont[FONT_DIALOG] = NonClientMetrics.lfMessageFont;
|
||||
SystemParametersInfo(SPI_GETICONTITLELOGFONT, sizeof(LOGFONT), &g->Theme.lfFont[FONT_ICON], 0);
|
||||
case WM_DESTROY:
|
||||
AppearancePage_CleanUp(hwndDlg, g);
|
||||
free(g);
|
||||
break;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void
|
||||
LoadThemeFromReg(GLOBALS* g, INT iPreset)
|
||||
{
|
||||
int i;
|
||||
TCHAR strSizeName[20] = {TEXT("Sizes\\0")};
|
||||
TCHAR strValueName[10];
|
||||
HKEY hkNewSchemes, hkScheme, hkSize;
|
||||
DWORD dwType, dwLength;
|
||||
|
||||
if(RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Control Panel\\Appearance\\New Schemes"),
|
||||
0, KEY_READ, &hkNewSchemes) == ERROR_SUCCESS)
|
||||
{
|
||||
if(RegOpenKeyEx(hkNewSchemes, g->ThemeTemplates[iPreset].strKeyName, 0, KEY_READ, &hkScheme) == ERROR_SUCCESS)
|
||||
{
|
||||
lstrcpyn(&strSizeName[6],g->ThemeTemplates[iPreset].strSizeName, 3);
|
||||
if(RegOpenKeyEx(hkScheme, strSizeName, 0, KEY_READ, &hkSize) == ERROR_SUCCESS)
|
||||
case WM_COMMAND:
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
dwLength = sizeof(BOOL);
|
||||
RegQueryValueEx(hkSize, TEXT("FlatMenus"), NULL, &dwType, (LPBYTE)&g->Theme.bFlatMenus, &dwLength);
|
||||
case IDC_APPEARANCE_ADVANCED:
|
||||
DialogBoxParam(hApplet, (LPCTSTR)IDD_ADVAPPEARANCE,
|
||||
hwndDlg, AdvAppearanceDlgProc, (LPARAM)g);
|
||||
|
||||
for (i = 0; i <= 30; i++)
|
||||
{
|
||||
wsprintf(strValueName, TEXT("Color #%d"), i);
|
||||
dwLength = sizeof(COLORREF);
|
||||
RegQueryValueEx(hkSize, strValueName, NULL, &dwType, (LPBYTE)&g->Theme.crColor[i], &dwLength);
|
||||
}
|
||||
for (i = 0; i <= 5; i++)
|
||||
{
|
||||
wsprintf(strValueName, TEXT("Font #%d"), i);
|
||||
dwLength = sizeof(LOGFONT);
|
||||
g->Theme.lfFont[i].lfFaceName[0] = 'x';
|
||||
RegQueryValueEx(hkSize, strValueName, NULL, &dwType, (LPBYTE)&g->Theme.lfFont[i], &dwLength);
|
||||
}
|
||||
for (i = 0; i <= 8; i++)
|
||||
{
|
||||
wsprintf(strValueName, TEXT("Size #%d"), i);
|
||||
dwLength = sizeof(DWORD);
|
||||
RegQueryValueEx(hkSize, strValueName, NULL, &dwType, (LPBYTE)&g->Theme.Size[i], &dwLength);
|
||||
}
|
||||
RegCloseKey(hkScheme);
|
||||
/* Was anything changed in the advanced appearance dialog? */
|
||||
if (memcmp(&g->Theme, &g->ThemeAdv, sizeof(THEME)) != 0)
|
||||
{
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
g->Theme = g->ThemeAdv;
|
||||
g->Theme.bHasChanged = TRUE;
|
||||
}
|
||||
break;
|
||||
|
||||
case IDC_APPEARANCE_COLORSCHEME:
|
||||
if(HIWORD(wParam) == CBN_SELCHANGE)
|
||||
{
|
||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||
g->Theme.bHasChanged = TRUE;
|
||||
i = SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_COLORSCHEME, CB_GETCURSEL, 0, 0);
|
||||
index = SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_COLORSCHEME, CB_GETITEMDATA, (WPARAM)i, 0);
|
||||
LoadThemeFromReg(g, index);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
RegCloseKey(hkScheme);
|
||||
}
|
||||
RegCloseKey(hkNewSchemes);
|
||||
return TRUE;
|
||||
|
||||
case WM_NOTIFY:
|
||||
lpnm = (LPNMHDR)lParam;
|
||||
switch (lpnm->code)
|
||||
{
|
||||
case PSN_APPLY:
|
||||
if (g->Theme.bHasChanged)
|
||||
{
|
||||
ApplyTheme(g);
|
||||
}
|
||||
return TRUE;
|
||||
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
return;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
ApplyTheme(GLOBALS* g)
|
||||
{
|
||||
int i, Result;
|
||||
HKEY hKey;
|
||||
DWORD dwDisposition = 0;
|
||||
TCHAR clText[16] = {0};
|
||||
NONCLIENTMETRICS NonClientMetrics;
|
||||
HFONT hMyFont;
|
||||
LOGFONT lfButtonFont;
|
||||
|
||||
if (!g->Theme.bHasChanged) return;
|
||||
|
||||
g->Theme.bHasChanged = FALSE;
|
||||
|
||||
/* Update some globals */
|
||||
g->crCOLOR_BTNFACE = g->Theme.crColor[COLOR_BTNFACE];
|
||||
g->crCOLOR_BTNTEXT = g->Theme.crColor[COLOR_BTNTEXT];
|
||||
g->crCOLOR_BTNSHADOW = g->Theme.crColor[COLOR_BTNSHADOW];
|
||||
g->crCOLOR_BTNHIGHLIGHT = g->Theme.crColor[COLOR_BTNHIGHLIGHT];
|
||||
lfButtonFont = g->Theme.lfFont[FONT_DIALOG];
|
||||
|
||||
/* Create new font for bold button */
|
||||
lfButtonFont.lfWeight = FW_BOLD;
|
||||
lfButtonFont.lfItalic = FALSE;
|
||||
hMyFont = CreateFontIndirect(&lfButtonFont);
|
||||
if (hMyFont)
|
||||
{
|
||||
if (g->hBoldFont) DeleteObject(g->hBoldFont);
|
||||
g->hBoldFont = hMyFont;
|
||||
}
|
||||
|
||||
/* Create new font for italic button */
|
||||
lfButtonFont.lfWeight = FW_REGULAR;
|
||||
lfButtonFont.lfItalic = TRUE;
|
||||
hMyFont = CreateFontIndirect(&lfButtonFont);
|
||||
if (hMyFont)
|
||||
{
|
||||
if (g->hItalicFont) DeleteObject(g->hItalicFont);
|
||||
g->hItalicFont = hMyFont;
|
||||
}
|
||||
|
||||
/* Apply Colors from global variable */
|
||||
SetSysColors(30, &g->ColorList[0], &g->Theme.crColor[0]);
|
||||
|
||||
/* Save colors to registry */
|
||||
Result = RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Control Panel\\Colors"), 0, KEY_ALL_ACCESS, &hKey);
|
||||
if (Result != ERROR_SUCCESS)
|
||||
{
|
||||
/* Could not open the key, try to create it */
|
||||
Result = RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("Control Panel\\Colors"), 0, NULL, 0, KEY_ALL_ACCESS, NULL,&hKey, &dwDisposition);
|
||||
}
|
||||
if (Result == ERROR_SUCCESS)
|
||||
{
|
||||
for(i = 0; i <= 30; i++)
|
||||
{
|
||||
DWORD red = GetRValue(g->Theme.crColor[i]);
|
||||
DWORD green = GetGValue(g->Theme.crColor[i]);
|
||||
DWORD blue = GetBValue(g->Theme.crColor[i]);
|
||||
wsprintf(clText, TEXT("%d %d %d"), red, green, blue);
|
||||
RegSetValueEx(hKey, g_RegColorNames[i], 0, REG_SZ, (BYTE *)clText, lstrlen( clText )*sizeof(TCHAR) + sizeof(TCHAR));
|
||||
}
|
||||
RegCloseKey(hKey);
|
||||
}
|
||||
|
||||
/* Apply the fonts */
|
||||
NonClientMetrics.cbSize = sizeof(NONCLIENTMETRICS);
|
||||
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &NonClientMetrics, 0);
|
||||
NonClientMetrics.lfCaptionFont = g->Theme.lfFont[FONT_CAPTION];
|
||||
NonClientMetrics.lfSmCaptionFont = g->Theme.lfFont[FONT_SMCAPTION];
|
||||
NonClientMetrics.lfMenuFont = g->Theme.lfFont[FONT_MENU];
|
||||
NonClientMetrics.lfStatusFont = g->Theme.lfFont[FONT_INFO];
|
||||
NonClientMetrics.lfMessageFont = g->Theme.lfFont[FONT_DIALOG];
|
||||
SystemParametersInfo(SPI_SETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &NonClientMetrics, 0);
|
||||
SystemParametersInfo(SPI_SETICONTITLELOGFONT, sizeof(LOGFONT), &g->Theme.lfFont[FONT_ICON], 0);
|
||||
|
||||
/* FIXME: Apply size metrics */
|
||||
|
||||
/* Save fonts and size metrics to registry */
|
||||
Result = RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Control Panel\\Desktop\\WindowMetrics"), 0, KEY_ALL_ACCESS, &hKey);
|
||||
if (Result != ERROR_SUCCESS)
|
||||
{
|
||||
/* Could not open the key, try to create it */
|
||||
Result = RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("Control Panel\\Desktop\\WindowMetrics"), 0, NULL, 0, KEY_ALL_ACCESS, NULL,&hKey, &dwDisposition);
|
||||
}
|
||||
if (Result == ERROR_SUCCESS)
|
||||
{
|
||||
RegSetValueEx(hKey, TEXT("CaptionFont"), 0, REG_BINARY, (BYTE *)&g->Theme.lfFont[FONT_CAPTION], sizeof(LOGFONT));
|
||||
RegSetValueEx(hKey, TEXT("SmCaptionFont"), 0, REG_BINARY, (BYTE *)&g->Theme.lfFont[FONT_SMCAPTION], sizeof(LOGFONT));
|
||||
RegSetValueEx(hKey, TEXT("IconFont"), 0, REG_BINARY, (BYTE *)&g->Theme.lfFont[FONT_ICON], sizeof(LOGFONT));
|
||||
RegSetValueEx(hKey, TEXT("MenuFont"), 0, REG_BINARY, (BYTE *)&g->Theme.lfFont[FONT_MENU], sizeof(LOGFONT));
|
||||
RegSetValueEx(hKey, TEXT("StatusFont"), 0, REG_BINARY, (BYTE *)&g->Theme.lfFont[FONT_INFO], sizeof(LOGFONT));
|
||||
RegSetValueEx(hKey, TEXT("MessageFont"), 0, REG_BINARY, (BYTE *)&g->Theme.lfFont[FONT_DIALOG], sizeof(LOGFONT));
|
||||
|
||||
/* Save size metrics to registry */
|
||||
wsprintf(clText, TEXT("%d"), -15 * g->Theme.Size[SIZE_BORDER_X]);
|
||||
RegSetValueEx(hKey, TEXT("BorderWidth"), 0, REG_SZ, (BYTE *)clText, sizeof(clText));
|
||||
wsprintf(clText, TEXT("%d"), -15 * g->Theme.Size[SIZE_CAPTION_Y]);
|
||||
RegSetValueEx(hKey, TEXT("CaptionWidth"), 0, REG_SZ, (BYTE *)clText, sizeof(clText));
|
||||
wsprintf(clText, TEXT("%d"), -15 * g->Theme.Size[SIZE_CAPTION_Y]);
|
||||
RegSetValueEx(hKey, TEXT("CaptionHeight"), 0, REG_SZ, (BYTE *)clText, sizeof(clText));
|
||||
wsprintf(clText, TEXT("%d"), -15 * g->Theme.Size[SIZE_SMCAPTION_Y]);
|
||||
RegSetValueEx(hKey, TEXT("SmCaptionWidth"), 0, REG_SZ, (BYTE *)clText, sizeof(clText));
|
||||
wsprintf(clText, TEXT("%d"), -15 * g->Theme.Size[SIZE_SMCAPTION_Y]);
|
||||
RegSetValueEx(hKey, TEXT("SmCaptionHeight"), 0, REG_SZ, (BYTE *)clText, sizeof(clText));
|
||||
wsprintf(clText, TEXT("%d"), -15 * g->Theme.Size[SIZE_ICON_SPC_X]);
|
||||
RegSetValueEx(hKey, TEXT("IconSpacing"), 0, REG_SZ, (BYTE *)clText, sizeof(clText));
|
||||
wsprintf(clText, TEXT("%d"), -15 * g->Theme.Size[SIZE_ICON_SPC_Y]);
|
||||
RegSetValueEx(hKey, TEXT("IconVerticalSpacing"), 0, REG_SZ, (BYTE *)clText, sizeof(clText));
|
||||
wsprintf(clText, TEXT("%d"), -15 * g->Theme.Size[SIZE_MENU_X]);
|
||||
RegSetValueEx(hKey, TEXT("MenuWidth"), 0, REG_SZ, (BYTE *)clText, sizeof(clText));
|
||||
wsprintf(clText, TEXT("%d"), -15 * g->Theme.Size[SIZE_MENU_Y]);
|
||||
RegSetValueEx(hKey, TEXT("MenuHeight"), 0, REG_SZ, (BYTE *)clText, sizeof(clText));
|
||||
wsprintf(clText, TEXT("%d"), -15 * g->Theme.Size[SIZE_SCROLL_X]);
|
||||
RegSetValueEx(hKey, TEXT("ScrollWidth"), 0, REG_SZ, (BYTE *)clText, sizeof(clText));
|
||||
wsprintf(clText, TEXT("%d"), -15 * g->Theme.Size[SIZE_SCROLL_Y]);
|
||||
RegSetValueEx(hKey, TEXT("ScrollHeight"), 0, REG_SZ, (BYTE *)clText, sizeof(clText));
|
||||
wsprintf(clText, TEXT("%d"), g->Theme.Size[SIZE_ICON_X]);
|
||||
RegSetValueEx(hKey, TEXT("Shell Icon Sizet"), 0, REG_SZ, (BYTE *)clText, sizeof(clText));
|
||||
|
||||
RegCloseKey(hKey);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/* Draw the preview window, unimplemented */
|
||||
void
|
||||
DrawPreview(HWND hwndPreview, THEME* pTheme)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -85,19 +85,6 @@ extern const int g_SizeMetric[NUM_SIZES];
|
||||
|
||||
/* prototypes for appearance.c */
|
||||
INT_PTR CALLBACK AppearancePageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
void AppearancePage_Init(HWND hwndDlg);
|
||||
void AppearancePage_CleanUp(HWND hwndDlg);
|
||||
void LoadCurrentTheme(GLOBALS* g);
|
||||
void LoadThemeFromReg(GLOBALS* g, INT iPreset);
|
||||
void ApplyTheme(GLOBALS* g);
|
||||
|
||||
/* prototypes for advappearancedlg.c */
|
||||
INT_PTR CALLBACK AdvAppearanceDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
void AdvAppearanceDlg_Init(HWND hwndDlg);
|
||||
void AdvAppearanceDlg_CleanUp(HWND hwndDlg);
|
||||
void UpdateControls(HWND hwndDlg, int iElement);
|
||||
void SaveCurrentValues(HWND hwndDlg);
|
||||
void InitColorButtons(HWND hwndDlg);
|
||||
void UpdateButtonColor(HWND hwndDlg, int ID, int nButton, int nColor);
|
||||
BOOL GetColor(HWND hwndDlg, int iElement, int nButton);
|
||||
int CALLBACK EnumFontFamExProc(ENUMLOGFONTEX*, NEWTEXTMETRICEX*, DWORD, LPARAM);
|
||||
|
||||
Reference in New Issue
Block a user