[desk.cpl]

- Overhaul the appearance tab
- Fixed and tested to work almost flawlessly on windows xp and windows 7
- Implement selecting the size of a scheme
- Implement loading the scheme from a visual style and allow the user to customize it before applying the visual style
- Implement showing visual styles preview 
- Properly load and apply system metrics 
- Store the scheme in memory as NONCLIENTMETRICS and ICONMETRICS structs instead of arrays of sizes and fonts 
- Store the loaded themes in a list instead of a global array

- Now that this works great in windows, it also mean that we have to modify our colour schemes in the registry to
be in the same format with windows and also fix uxtheme to handle system metrics properly

svn path=/trunk/; revision=58808
This commit is contained in:
Giannis Adamopoulos 2013-04-21 14:36:57 +00:00
parent 1408f94a8f
commit 303bb28fc4
32 changed files with 1293 additions and 870 deletions

View file

@ -22,6 +22,7 @@ add_library(desk SHARED
desk.rc
draw.c
theme.c
muireg.c
${CMAKE_CURRENT_BINARY_DIR}/desk.def)
set_module_type(desk cpl UNICODE)
@ -37,6 +38,7 @@ add_importlibs(desk
ole32
setupapi
shell32
shlwapi
uxtheme
kernel32
ntdll)

View file

@ -24,30 +24,30 @@ typedef struct
/* This const assigns the color and metric numbers to the elements from the elements list */
/* Size 1 (width) Size 2 (height) Color 1 Color 2 Font Fontcolor */
/* Size 1 (width) Size 2 (height) Color 1 Color 2 Font Fontcolor */
const ASSIGNMENT g_Assignment[NUM_ELEMENTS] =
{ {-1, -1, COLOR_DESKTOP, -1, -1, -1}, /* -Desktop */
{SIZE_CAPTION_Y, -1, COLOR_INACTIVECAPTION, COLOR_GRADIENTINACTIVECAPTION, FONT_CAPTION, -1}, /* inactive window caption */
{SIZE_BORDER_X, SIZE_BORDER_Y, COLOR_INACTIVEBORDER, -1, -1, -1}, /* inactive window border */
{SIZE_CAPTION_Y, -1, COLOR_ACTIVECAPTION, COLOR_GRADIENTACTIVECAPTION, FONT_CAPTION, COLOR_CAPTIONTEXT}, /* -active window caption */
{SIZE_BORDER_X, SIZE_BORDER_Y, COLOR_ACTIVEBORDER, -1, -1, -1}, /* active window border */
{SIZE_MENU_SIZE_X, SIZE_MENU_Y, COLOR_MENU, -1, FONT_MENU, COLOR_MENUTEXT}, /* menu */
{SIZE_MENU_SIZE_X, SIZE_MENU_Y, COLOR_HIGHLIGHT, -1, FONT_HILIGHT, COLOR_HIGHLIGHTTEXT}, /* marked element */
{-1, -1, COLOR_WINDOW, -1 /*COLOR_WINDOWFRAME*/, -1, COLOR_WINDOWTEXT}, /* window */
{SIZE_SCROLL_X, SIZE_SCROLL_Y, COLOR_SCROLLBAR, -1, -1, -1}, /* scroll bar */
{-1, -1, COLOR_3DFACE, -1, -1, COLOR_BTNTEXT}, /* 3d objects */
{SIZE_SMCAPTION_Y, -1, -1, -1, FONT_SMCAPTION, -1}, /* palette window caption */
{-1, -1, -1, -1, -1, -1}, /* symbol caption FIXME: Access? */
{SIZE_CAPTION_Y, -1, -1, -1, -1, -1}, /* caption bar */
{-1, -1, -1, -1, -1, COLOR_GRAYTEXT}, /* inactive menu item FIXME: Access? */
{-1, -1, -1, -1, FONT_DIALOG, COLOR_WINDOWTEXT}, /* dialog */
{-1, -1, -1, -1, -1, -1}, /* scrollbar controls FIXME: Access? */
{-1, -1, COLOR_APPWORKSPACE, -1, -1, -1}, /* application background */
{-1, -1, -1, -1, -1, -1}, /* small caption bar FIXME: Access? */
{SIZE_ICON_SPC_X, -1, -1, -1, -1, -1}, /* symbol distance horiz. */
{SIZE_ICON_SPC_Y, -1, -1, -1, -1, -1}, /* symbol distance vert. */
{-1, -1, COLOR_INFOBK, -1, FONT_INFO, COLOR_INFOTEXT}, /* quickinfo */
{SIZE_ICON_X, SIZE_ICON_Y, -1, -1, FONT_ICON, -1}}; /* symbol */
{ {-1, -1, COLOR_DESKTOP, -1, -1, -1}, /* -Desktop */
{SIZE_CAPTION_HEIGHT, -1, COLOR_INACTIVECAPTION, COLOR_GRADIENTINACTIVECAPTION, FONT_CAPTION, -1}, /* inactive window caption */
{SIZE_BORDER_WIDTH, -1, COLOR_INACTIVEBORDER, -1, -1, -1}, /* inactive window border */
{SIZE_CAPTION_HEIGHT, -1, COLOR_ACTIVECAPTION, COLOR_GRADIENTACTIVECAPTION, FONT_CAPTION, COLOR_CAPTIONTEXT}, /* -active window caption */
{SIZE_BORDER_WIDTH, -1, COLOR_ACTIVEBORDER, -1, -1, -1}, /* active window border */
{SIZE_MENU_HEIGHT, SIZE_MENU_WIDTH, COLOR_MENU, -1, FONT_MENU, COLOR_MENUTEXT}, /* menu */
{SIZE_MENU_HEIGHT, SIZE_MENU_WIDTH, COLOR_HIGHLIGHT, -1, -1, COLOR_HIGHLIGHTTEXT},/* marked element */
{-1, -1, COLOR_WINDOW, -1 /*COLOR_WINDOWFRAME*/, -1, COLOR_WINDOWTEXT}, /* window */
{SIZE_SCROLL_WIDTH, SIZE_SCROLL_HEIGHT, COLOR_SCROLLBAR, -1, -1, -1}, /* scroll bar */
{-1, -1, COLOR_3DFACE, -1, -1, COLOR_BTNTEXT}, /* 3d objects */
{SIZE_SM_CAPTION_HEIGHT, -1, -1, -1, FONT_SMCAPTION, -1}, /* palette window caption */
{-1, -1, -1, -1, -1, -1}, /* symbol caption FIXME: Access? */
{SIZE_CAPTION_HEIGHT, -1, -1, -1, -1, -1}, /* caption bar */
{-1, -1, -1, -1, -1, COLOR_GRAYTEXT}, /* inactive menu item FIXME: Access? */
{-1, -1, -1, -1, FONT_MESSAGE, COLOR_WINDOWTEXT}, /* dialog */
{-1, -1, -1, -1, -1, -1}, /* scrollbar controls FIXME: Access? */
{-1, -1, COLOR_APPWORKSPACE, -1, -1, -1}, /* application background */
{-1, -1, -1, -1, -1, -1}, /* small caption bar FIXME: Access? */
{SIZE_ICON_SPACE_X, -1, -1, -1, -1, -1}, /* symbol distance horiz. */
{SIZE_ICON_SPACE_Y, -1, -1, -1, -1, -1}, /* symbol distance vert. */
{-1, -1, COLOR_INFOBK, -1, FONT_STATUS, COLOR_INFOTEXT}, /* quickinfo */
{SIZE_ICON, -1, -1, -1, FONT_ICON, -1}}; /* symbol */
/******************************************************************************/
@ -231,20 +231,20 @@ UpdateControls(HWND hwndDlg, GLOBALS *g)
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->SchemeAdv.Size[g_Assignment[iElement].Size], FALSE);
SetDlgItemInt(hwndDlg, IDC_ADVAPPEARANCE_SIZE_E, SchemeGetMetric(&g->SchemeAdv, g_Assignment[iElement].Size), FALSE);
else
SetDlgItemText(hwndDlg, IDC_ADVAPPEARANCE_SIZE_E, TEXT(""));
hdcDlg = GetDC(hwndDlg);
if (g_Assignment[iElement].Font != -1)
{
LOGFONT lfFont = g->SchemeAdv.lfFont[g_Assignment[iElement].Font];
PLOGFONTW plfFont = SchemeGetFont(&g->SchemeAdv, g_Assignment[iElement].Font);
SetDlgItemText(hwndDlg, IDC_ADVAPPEARANCE_FONT_C, lfFont.lfFaceName);
SetDlgItemInt(hwndDlg, IDC_ADVAPPEARANCE_FONTSIZE_E, -MulDiv(g->SchemeAdv.lfFont[g_Assignment[iElement].Font].lfHeight, 72, GetDeviceCaps(hdcDlg, LOGPIXELSY)),FALSE);
SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONT_C, CB_FINDSTRINGEXACT, -1, (WPARAM)lfFont.lfFaceName);
SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTBOLD, BM_SETCHECK, g->SchemeAdv.lfFont[g_Assignment[iElement].Font].lfWeight == FW_BOLD?1:0, 0);
SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTITALIC, BM_SETCHECK, g->SchemeAdv.lfFont[g_Assignment[iElement].Font].lfItalic, 0);
SetDlgItemText(hwndDlg, IDC_ADVAPPEARANCE_FONT_C, plfFont->lfFaceName);
SetDlgItemInt(hwndDlg, IDC_ADVAPPEARANCE_FONTSIZE_E, -MulDiv(plfFont->lfHeight, 72, GetDeviceCaps(hdcDlg, LOGPIXELSY)),FALSE);
SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONT_C, CB_FINDSTRINGEXACT, -1, (WPARAM)plfFont->lfFaceName);
SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTBOLD, BM_SETCHECK, plfFont->lfWeight == FW_BOLD?1:0, 0);
SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTITALIC, BM_SETCHECK, plfFont->lfItalic, 0);
}
else
{
@ -266,15 +266,16 @@ SaveCurrentValues(HWND hwndDlg, GLOBALS *g)
if (g_Assignment[g->CurrentElement].Size != -1)
{
g->SchemeAdv.Size[g_Assignment[g->CurrentElement].Size] = GetDlgItemInt(hwndDlg, IDC_ADVAPPEARANCE_SIZE_E, &bTranslated, FALSE);
SchemeSetMetric(&g->SchemeAdv, g_Assignment[g->CurrentElement].Size, GetDlgItemInt(hwndDlg, IDC_ADVAPPEARANCE_SIZE_E, &bTranslated, FALSE));
}
if (g_Assignment[g->CurrentElement].Font != -1)
{
g->SchemeAdv.lfFont[g_Assignment[g->CurrentElement].Font].lfHeight = -MulDiv(GetDlgItemInt(hwndDlg, IDC_ADVAPPEARANCE_FONTSIZE_E, &bTranslated, FALSE), GetDeviceCaps(hdcDlg, LOGPIXELSY), 72);
g->SchemeAdv.lfFont[g_Assignment[g->CurrentElement].Font].lfWeight = (SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTBOLD, BM_GETCHECK, 0, 0) == 1) ? FW_BOLD : FW_NORMAL;
g->SchemeAdv.lfFont[g_Assignment[g->CurrentElement].Font].lfItalic = (BYTE)SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTITALIC, BM_GETCHECK, 0, 0);
GetDlgItemText(hwndDlg, IDC_ADVAPPEARANCE_FONT_C, g->SchemeAdv.lfFont[g_Assignment[g->CurrentElement].Font].lfFaceName, LF_FACESIZE * sizeof(TCHAR));
PLOGFONTW plfFont = SchemeGetFont(&g->SchemeAdv, g_Assignment[g->CurrentElement].Font);
plfFont->lfHeight = -MulDiv(GetDlgItemInt(hwndDlg, IDC_ADVAPPEARANCE_FONTSIZE_E, &bTranslated, FALSE), GetDeviceCaps(hdcDlg, LOGPIXELSY), 72);
plfFont->lfWeight = (SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTBOLD, BM_GETCHECK, 0, 0) == 1) ? FW_BOLD : FW_NORMAL;
plfFont->lfItalic = (BYTE)SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTITALIC, BM_GETCHECK, 0, 0);
GetDlgItemText(hwndDlg, IDC_ADVAPPEARANCE_FONT_C, plfFont->lfFaceName, LF_FACESIZE * sizeof(TCHAR));
}
ReleaseDC(hwndDlg, hdcDlg);
@ -379,7 +380,7 @@ AdvAppearanceDlg_Init(HWND hwndDlg, GLOBALS *g)
SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_ELEMENT, CB_SETCURSEL, iDeskIndex, 0);
/* Create font for bold button */
lfButtonFont = g->Scheme.lfFont[FONT_DIALOG];
lfButtonFont = g->Scheme.ncMetrics.lfMessageFont;
lfButtonFont.lfWeight = FW_BOLD;
lfButtonFont.lfItalic = FALSE;
hMyFont = CreateFontIndirect(&lfButtonFont);
@ -501,27 +502,12 @@ GetSelectedComboInt(HWND hwnd, INT id)
return _ttoi(szBuffer);
}
static INT
GetEditedComboInt(HWND hwnd, INT id)
{
INT nCount;
BOOL bTranslated;
nCount = GetDlgItemInt(hwnd, id, &bTranslated, FALSE);
if (bTranslated == FALSE)
return 12;
return nCount;
}
INT_PTR CALLBACK
AdvAppearanceDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
INT iListIndex;
INT iSelection, iProperty;
GLOBALS* g;
PLOGFONTW plfFont;
g = (GLOBALS*)GetWindowLongPtr(hwndDlg, DWLP_USER);
@ -538,6 +524,9 @@ AdvAppearanceDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
break;
case WM_COMMAND:
if(g == NULL)
return TRUE;
switch(LOWORD(wParam))
{
case IDOK:
@ -561,197 +550,87 @@ AdvAppearanceDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
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);
iSelection = SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_ELEMENT, CB_GETCURSEL, 0, 0);
g->CurrentElement = SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_ELEMENT, CB_GETITEMDATA, iSelection, 0);
UpdateControls(hwndDlg, g);
}
break;
case IDC_ADVAPPEARANCE_SIZE_E:
if (g && HIWORD(wParam) == EN_CHANGE)
if (HIWORD(wParam) == EN_CHANGE)
{
INT i = (INT)LOWORD(SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_SIZE_UD, UDM_GETPOS,0,0L));
iProperty = g_Assignment[g->CurrentElement].Size;
if(iProperty == -1)
return TRUE;
switch (g->CurrentElement)
{
case IDX_INACTIVE_CAPTION:
case IDX_ACTIVE_CAPTION:
case IDX_CAPTION_BUTTON:
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_SETCYCAPTION, 0, i);
break;
iSelection = LOWORD(SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_SIZE_UD, UDM_GETPOS,0,0L));
SchemeSetMetric(&g->SchemeAdv, iProperty, iSelection);
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_SETSIZE, iProperty, iSelection);
case IDX_MENU:
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_SETCYMENU, 0, i);
break;
case IDX_SCROLLBAR:
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_SETCXSCROLLBAR, 0, i);
break;
case IDX_INACTIVE_BORDER:
case IDX_ACTIVE_BORDER:
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_SETCYSIZEFRAME, 0, i);
break;
}
iProperty = g_Assignment[g->CurrentElement].Size2;
if(iProperty != -1)
SchemeSetMetric(&g->SchemeAdv, iProperty, iSelection);
}
break;
case IDC_ADVAPPEARANCE_FONT_C:
if (g && HIWORD(wParam) == CBN_SELCHANGE)
if (HIWORD(wParam) == CBN_SELCHANGE)
{
switch (g->CurrentElement)
{
case IDX_INACTIVE_CAPTION:
case IDX_ACTIVE_CAPTION:
GetSelectedComboText(hwndDlg, IDC_ADVAPPEARANCE_FONT_C,
g->SchemeAdv.lfFont[g_Assignment[g->CurrentElement].Font].lfFaceName);
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&g->SchemeAdv);
break;
iProperty = g_Assignment[g->CurrentElement].Font;
if(iProperty == -1)
return TRUE;
case IDX_MENU:
GetSelectedComboText(hwndDlg, IDC_ADVAPPEARANCE_FONT_C,
g->SchemeAdv.lfFont[g_Assignment[g->CurrentElement].Font].lfFaceName);
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&g->SchemeAdv);
break;
case IDX_DIALOG:
GetSelectedComboText(hwndDlg, IDC_ADVAPPEARANCE_FONT_C,
g->SchemeAdv.lfFont[g_Assignment[g->CurrentElement].Font].lfFaceName);
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&g->SchemeAdv);
break;
}
plfFont = SchemeGetFont(&g->SchemeAdv, iProperty);
GetSelectedComboText(hwndDlg, IDC_ADVAPPEARANCE_FONT_C, plfFont->lfFaceName);
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_SETFONT, iProperty, (LPARAM)plfFont);
}
break;
case IDC_ADVAPPEARANCE_FONTSIZE_E:
if (g && HIWORD(wParam) == CBN_SELCHANGE)
if ((HIWORD(wParam) == CBN_SELCHANGE || HIWORD(wParam) == CBN_EDITCHANGE))
{
HDC hdcDlg = GetDC(hwndDlg);
INT i;
HDC hdcDlg;
switch (g->CurrentElement)
{
case IDX_INACTIVE_CAPTION:
case IDX_ACTIVE_CAPTION:
i = GetSelectedComboInt(hwndDlg, IDC_ADVAPPEARANCE_FONTSIZE_E);
g->SchemeAdv.lfFont[g_Assignment[g->CurrentElement].Font].lfHeight =
-MulDiv(i , GetDeviceCaps(hdcDlg, LOGPIXELSY), 72);
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&g->SchemeAdv);
break;
iProperty = g_Assignment[g->CurrentElement].Font;
if(iProperty == -1)
return TRUE;
case IDX_MENU:
i = GetSelectedComboInt(hwndDlg, IDC_ADVAPPEARANCE_FONTSIZE_E);
g->SchemeAdv.lfFont[g_Assignment[g->CurrentElement].Font].lfHeight =
-MulDiv(i , GetDeviceCaps(hdcDlg, LOGPIXELSY), 72);
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&g->SchemeAdv);
break;
hdcDlg = GetDC(hwndDlg);
case IDX_DIALOG:
i = GetSelectedComboInt(hwndDlg, IDC_ADVAPPEARANCE_FONTSIZE_E);
g->SchemeAdv.lfFont[g_Assignment[g->CurrentElement].Font].lfHeight =
-MulDiv(i , GetDeviceCaps(hdcDlg, LOGPIXELSY), 72);
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&g->SchemeAdv);
break;
}
ReleaseDC(hwndDlg, hdcDlg);
}
else if (g && HIWORD(wParam) == CBN_EDITCHANGE)
{
HDC hdcDlg = GetDC(hwndDlg);
INT i;
switch (g->CurrentElement)
{
case IDX_INACTIVE_CAPTION:
case IDX_ACTIVE_CAPTION:
i = GetEditedComboInt(hwndDlg, IDC_ADVAPPEARANCE_FONTSIZE_E);
g->SchemeAdv.lfFont[g_Assignment[g->CurrentElement].Font].lfHeight =
-MulDiv(i , GetDeviceCaps(hdcDlg, LOGPIXELSY), 72);
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&g->SchemeAdv);
break;
case IDX_MENU:
i = GetEditedComboInt(hwndDlg, IDC_ADVAPPEARANCE_FONTSIZE_E);
g->SchemeAdv.lfFont[g_Assignment[g->CurrentElement].Font].lfHeight =
-MulDiv(i , GetDeviceCaps(hdcDlg, LOGPIXELSY), 72);
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&g->SchemeAdv);
break;
case IDX_DIALOG:
i = GetEditedComboInt(hwndDlg, IDC_ADVAPPEARANCE_FONTSIZE_E);
g->SchemeAdv.lfFont[g_Assignment[g->CurrentElement].Font].lfHeight =
-MulDiv(i , GetDeviceCaps(hdcDlg, LOGPIXELSY), 72);
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&g->SchemeAdv);
break;
}
plfFont = SchemeGetFont(&g->SchemeAdv, iProperty);
iSelection = GetSelectedComboInt(hwndDlg, IDC_ADVAPPEARANCE_FONTSIZE_E);
plfFont->lfHeight = -MulDiv(iSelection , GetDeviceCaps(hdcDlg, LOGPIXELSY), 72);
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&g->SchemeAdv);
ReleaseDC(hwndDlg, hdcDlg);
}
break;
case IDC_ADVAPPEARANCE_FONTBOLD:
if (g && HIWORD(wParam) == BN_CLICKED)
if (HIWORD(wParam) == BN_CLICKED)
{
INT i;
iProperty = g_Assignment[g->CurrentElement].Font;
if(iProperty == -1)
return TRUE;
switch (g->CurrentElement)
{
case IDX_INACTIVE_CAPTION:
case IDX_ACTIVE_CAPTION:
i = (INT)SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTBOLD, BM_GETCHECK, 0, 0);
g->SchemeAdv.lfFont[g_Assignment[g->CurrentElement].Font].lfWeight =
(i == BST_CHECKED) ? FW_BOLD : FW_NORMAL;
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&g->SchemeAdv);
break;
case IDX_MENU:
i = (INT)SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTBOLD, BM_GETCHECK, 0, 0);
g->SchemeAdv.lfFont[g_Assignment[g->CurrentElement].Font].lfWeight =
(i == BST_CHECKED) ? FW_BOLD : FW_NORMAL;
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&g->SchemeAdv);
break;
case IDX_DIALOG:
i = (INT)SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTBOLD, BM_GETCHECK, 0, 0);
g->SchemeAdv.lfFont[g_Assignment[g->CurrentElement].Font].lfWeight =
(i == BST_CHECKED) ? FW_BOLD : FW_NORMAL;
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&g->SchemeAdv);
break;
}
plfFont = SchemeGetFont(&g->SchemeAdv, iProperty);
iSelection = (INT)SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTBOLD, BM_GETCHECK, 0, 0);
plfFont->lfWeight = (iSelection == BST_CHECKED) ? FW_BOLD : FW_NORMAL;
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_SETFONT, iProperty, (LPARAM)plfFont);
}
break;
case IDC_ADVAPPEARANCE_FONTITALIC:
if (g && HIWORD(wParam) == BN_CLICKED)
if (HIWORD(wParam) == BN_CLICKED)
{
INT i;
iProperty = g_Assignment[g->CurrentElement].Font;
if(iProperty == -1)
return TRUE;
switch (g->CurrentElement)
{
case IDX_INACTIVE_CAPTION:
case IDX_ACTIVE_CAPTION:
i = (INT)SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTITALIC, BM_GETCHECK, 0, 0);
g->SchemeAdv.lfFont[g_Assignment[g->CurrentElement].Font].lfItalic =
(i == BST_CHECKED) ? TRUE : FALSE;
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&g->SchemeAdv);
break;
case IDX_MENU:
i = (INT)SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTITALIC, BM_GETCHECK, 0, 0);
g->SchemeAdv.lfFont[g_Assignment[g->CurrentElement].Font].lfItalic =
(i == BST_CHECKED) ? TRUE : FALSE;
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&g->SchemeAdv);
break;
case IDX_DIALOG:
i = (INT)SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTITALIC, BM_GETCHECK, 0, 0);
g->SchemeAdv.lfFont[g_Assignment[g->CurrentElement].Font].lfItalic =
(i == BST_CHECKED) ? TRUE : FALSE;
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&g->SchemeAdv);
break;
}
plfFont = SchemeGetFont(&g->SchemeAdv, iProperty);
iSelection = (INT)SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_FONTITALIC, BM_GETCHECK, 0, 0);
plfFont->lfItalic = (iSelection == BST_CHECKED) ? TRUE : FALSE;
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_SETFONT, iProperty, (LPARAM)plfFont);
}
break;

View file

@ -13,90 +13,154 @@
/******************************************************************************/
static void
AppearancePage_ShowColorScemes(GLOBALS *g, HWND hwndColor, INT ThemeId)
AppearancePage_UpdateThemePreview(HWND hwndDlg, GLOBALS *g)
{
int i, iListIndex;
SendMessage(hwndColor, CB_RESETCONTENT , 0, 0);
if(g->bThemeActive == FALSE)
if (g->ActiveTheme.ThemeActive == FALSE)
{
for(i = 0; i < g_TemplateCount; i++)
{
iListIndex = SendMessage(hwndColor, CB_ADDSTRING, 0, (LPARAM)g_ColorSchemes[i].strLegacyName);
SendMessage(hwndColor, CB_SETITEMDATA, iListIndex, i);
if (lstrcmp(g_ColorSchemes[i].strKeyName, g->strSelectedStyle) == 0)
{
g->SchemeId = i;
SendMessage(hwndColor, CB_SETCURSEL, (WPARAM)iListIndex, 0);
}
}
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&g->Scheme);
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_SET_HDC_PREVIEW, 0, 0);
}
else
{
PTHEME pTheme = (PTHEME)DSA_GetItemPtr(g->Themes, ThemeId);
for(i = 0; i < pTheme->ColorsCount; i++)
RECT rcWindow;
GetClientRect(GetDlgItem(hwndDlg, IDC_APPEARANCE_PREVIEW), &rcWindow);
DrawThemePreview(g->hdcThemePreview, &g->Scheme, &g->ActiveTheme, &rcWindow);
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_SET_HDC_PREVIEW, 0, (LPARAM)g->hdcThemePreview);
}
}
static void
AppearancePage_LoadSelectedScheme(HWND hwndDlg, GLOBALS *g)
{
if (g->ActiveTheme.ThemeActive == FALSE )
{
LoadSchemeFromReg(&g->Scheme, &g->ActiveTheme);
}
else
{
LoadSchemeFromTheme(&g->Scheme, &g->ActiveTheme);
}
g_GlobalData.desktop_color = g->Scheme.crColor[COLOR_DESKTOP];
}
static void
AppearancePage_ShowStyles(HWND hwndDlg, int nIDDlgItem, PTHEME_STYLE pStyles, PTHEME_STYLE pActiveStyle)
{
int iListIndex;
HWND hwndList = GetDlgItem(hwndDlg, nIDDlgItem);
PTHEME_STYLE pCurrentStyle;
SendMessage(hwndList, CB_RESETCONTENT , 0, 0);
for (pCurrentStyle = pStyles;
pCurrentStyle;
pCurrentStyle = pCurrentStyle->NextStyle)
{
iListIndex = SendMessage(hwndList, CB_ADDSTRING, 0, (LPARAM)pCurrentStyle->DisplayName);
SendMessage(hwndList, CB_SETITEMDATA, iListIndex, (LPARAM)pCurrentStyle);
if (pCurrentStyle == pActiveStyle)
{
PTHEME_STYLE pStyleName;
pStyleName = (PTHEME_STYLE)DSA_GetItemPtr(pTheme->Colors, i);
iListIndex = SendMessage(hwndColor, CB_ADDSTRING, 0, (LPARAM)pStyleName->DisplayName);
SendMessage(hwndColor, CB_SETITEMDATA, iListIndex, i);
if(i == 0 || (g->pszColorName && wcscmp(pStyleName->StlyeName, g->pszColorName) == 0))
{
g->SchemeId = i;
SendMessage(hwndColor, CB_SETCURSEL, (WPARAM)iListIndex, 0);
}
SendMessage(hwndList, CB_SETCURSEL, (WPARAM)iListIndex, 0);
}
}
}
static void
AppearancePage_ShowColorSchemes(HWND hwndDlg, GLOBALS *g)
{
AppearancePage_ShowStyles(hwndDlg,
IDC_APPEARANCE_COLORSCHEME,
g->ActiveTheme.Theme->ColoursList,
g->ActiveTheme.Color);
}
static void
AppearancePage_ShowSizes(HWND hwndDlg, GLOBALS *g)
{
PTHEME_STYLE pSizes;
if (g->ActiveTheme.Theme->SizesList)
pSizes = g->ActiveTheme.Theme->SizesList;
else
pSizes = g->ActiveTheme.Color->ChildStyle;
AppearancePage_ShowStyles(hwndDlg,
IDC_APPEARANCE_SIZE,
pSizes,
g->ActiveTheme.Size);
}
static INT_PTR
AppearancePage_OnInit(HWND hwndDlg)
{
INT i, /*TemplateCount,*/ iListIndex;
INT iListIndex;
HWND hwndColor, hwndTheme;
GLOBALS *g;
RECT rcPreview;
HDC hdcScreen;
PTHEME pTheme;
g = (GLOBALS*)LocalAlloc(LPTR, sizeof(GLOBALS));
g = (GLOBALS*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBALS));
if (g == NULL)
return FALSE;
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)g);
LoadCurrentScheme(&g->Scheme);
g->SchemeAdv = g->Scheme;
g->bThemeChanged = FALSE;
g->bSchemeChanged = FALSE;
g->hBoldFont = g->hItalicFont = NULL;
g->hbmpColor[0] = g->hbmpColor[1] = g->hbmpColor[2] = NULL;
g->bInitializing = FALSE;
g->bThemeActive = FALSE;
LoadThemes(g);
/*TemplateCount = */ LoadSchemePresetEntries(g->strSelectedStyle);
hwndColor = GetDlgItem(hwndDlg, IDC_APPEARANCE_COLORSCHEME);
g->SchemeId = -1;
g->bInitializing = TRUE;
hwndTheme = GetDlgItem(hwndDlg, IDC_APPEARANCE_VISUAL_STYLE);
for(i = 0; i < g->ThemesCount; i++)
if (!LoadCurrentScheme(&g->Scheme))
return FALSE;
g->pThemes = LoadThemes();
if (g->pThemes)
{
PTHEME pTheme = (PTHEME)DSA_GetItemPtr(g->Themes, i);
iListIndex = SendMessage(hwndTheme, CB_ADDSTRING, 0, (LPARAM)pTheme->displayName);
SendMessage(hwndTheme, CB_SETITEMDATA, iListIndex, i);
if((!pTheme->themeFileName && !IsThemeActive()) ||
(pTheme->themeFileName && g->pszThemeFileName && wcscmp(pTheme->themeFileName, g->pszThemeFileName) == 0 ))
if (!GetActiveTheme(g->pThemes, &g->ActiveTheme))
g->ActiveTheme.ThemeActive = FALSE;
/*
* Keep a copy of the selected classic theme in order to select this
* when user selects the classic theme (and not a horrible random theme )
*/
if (!GetActiveClassicTheme(g->pThemes, &g->ClassicTheme))
{
g->ThemeId = i;
g->bThemeActive = (pTheme->themeFileName != NULL);
SendMessage(hwndTheme, CB_SETCURSEL, (WPARAM)iListIndex, 0);
AppearancePage_ShowColorScemes(g, hwndColor, i);
g->ClassicTheme.Theme = g->pThemes;
g->ClassicTheme.Color = g->pThemes->ColoursList;
g->ClassicTheme.Size = g->ClassicTheme.Color->ChildStyle;
}
}
if (g->ActiveTheme.ThemeActive == FALSE)
g->ActiveTheme = g->ClassicTheme;
GetClientRect(GetDlgItem(hwndDlg, IDC_APPEARANCE_PREVIEW), &rcPreview);
hdcScreen = GetDC(NULL);
g->hbmpThemePreview = CreateCompatibleBitmap(hdcScreen, rcPreview.right, rcPreview.bottom);
g->hdcThemePreview = CreateCompatibleDC(hdcScreen);
SelectObject(g->hdcThemePreview, g->hbmpThemePreview);
ReleaseDC(NULL, hdcScreen);
hwndColor = GetDlgItem(hwndDlg, IDC_APPEARANCE_COLORSCHEME);
hwndTheme = GetDlgItem(hwndDlg, IDC_APPEARANCE_VISUAL_STYLE);
for (pTheme = g->pThemes; pTheme; pTheme = pTheme->NextTheme)
{
iListIndex = SendMessage(hwndTheme, CB_ADDSTRING, 0, (LPARAM)pTheme->DisplayName);
SendMessage(hwndTheme, CB_SETITEMDATA, iListIndex, (LPARAM)pTheme);
if (pTheme == g->ActiveTheme.Theme)
{
SendMessage(hwndTheme, CB_SETCURSEL, (WPARAM)iListIndex, 0);
}
}
if (g->ActiveTheme.Theme)
{
AppearancePage_ShowColorSchemes(hwndDlg, g);
AppearancePage_ShowSizes(hwndDlg, g);
AppearancePage_UpdateThemePreview(hwndDlg, g);
}
}
g->bInitializing = FALSE;
return FALSE;
@ -105,11 +169,11 @@ AppearancePage_OnInit(HWND hwndDlg)
static VOID
AppearancePage_OnDestroy(HWND hwndDlg, GLOBALS *g)
{
LocalFree(g);
HeapFree(GetProcessHeap(), 0, g);
}
static INT
GetSelectedId(HWND hwndDlg, int nIDDlgItem)
static PVOID
GetSelectedData(HWND hwndDlg, int nIDDlgItem)
{
HWND hwndCombo;
INT sel;
@ -117,8 +181,8 @@ GetSelectedId(HWND hwndDlg, int nIDDlgItem)
hwndCombo = GetDlgItem(hwndDlg, nIDDlgItem);
sel = SendMessage(hwndCombo, CB_GETCURSEL, 0, 0);
if (sel == CB_ERR)
return -1;
return (INT)SendMessage(hwndCombo, CB_GETITEMDATA, (WPARAM)sel, 0);
return NULL;
return (PVOID)SendMessage(hwndCombo, CB_GETITEMDATA, (WPARAM)sel, 0);
}
INT_PTR CALLBACK
@ -139,6 +203,9 @@ AppearancePageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
break;
case WM_COMMAND:
if(g == NULL || g->bInitializing)
return FALSE;
switch (LOWORD(wParam))
{
case IDC_APPEARANCE_EFFECTS:
@ -148,11 +215,6 @@ AppearancePageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
g->Scheme = g->SchemeAdv;
g->bSchemeChanged = TRUE;
// Effects dialog doesn't change the color scheme, therefore the following lines are commented out, until fixed finally
//g->SchemeId = -1; /* Customized */
//SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_COLORSCHEME, CB_SETCURSEL, (WPARAM)-1, 0);
//SetDlgItemText(hwndDlg, IDC_APPEARANCE_COLORSCHEME, TEXT(""));
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&g->Scheme);
}
break;
@ -163,54 +225,71 @@ AppearancePageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
g->bSchemeChanged = TRUE;
g->Scheme = g->SchemeAdv;
g->SchemeId = -1; /* Customized */
g_GlobalData.desktop_color = g->Scheme.crColor[COLOR_DESKTOP];
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_COLORSCHEME, CB_SETCURSEL, (WPARAM)-1, 0);
SetDlgItemText(hwndDlg, IDC_APPEARANCE_COLORSCHEME, TEXT(""));
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&g->Scheme);
AppearancePage_UpdateThemePreview(hwndDlg, g);
}
break;
case IDC_APPEARANCE_COLORSCHEME:
if (HIWORD(wParam) == CBN_SELCHANGE && !g->bInitializing)
if (HIWORD(wParam) == CBN_SELCHANGE)
{
INT SchemeId = GetSelectedId(hwndDlg, IDC_APPEARANCE_COLORSCHEME);
g->ActiveTheme.Color = (PTHEME_STYLE)GetSelectedData(hwndDlg, IDC_APPEARANCE_COLORSCHEME);
if (g->ActiveTheme.Color->ChildStyle != NULL)
g->ActiveTheme.Size = g->ActiveTheme.Color->ChildStyle;
g->bSchemeChanged = TRUE;
if (g->ActiveTheme.ThemeActive)
g->bThemeChanged = TRUE;
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
if(g->bThemeActive == FALSE)
{
COLOR_SCHEME Scheme;
AppearancePage_LoadSelectedScheme(hwndDlg, g);
AppearancePage_ShowSizes(hwndDlg, g);
AppearancePage_UpdateThemePreview(hwndDlg, g);
}
break;
g->bSchemeChanged = TRUE;
if (SchemeId != -1 && LoadSchemeFromReg(&Scheme, SchemeId))
{
g->Scheme = Scheme;
g_GlobalData.desktop_color = g->Scheme.crColor[COLOR_DESKTOP];
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&Scheme);
}
}
case IDC_APPEARANCE_VISUAL_STYLE:
if (HIWORD(wParam) == CBN_SELCHANGE)
{
PTHEME pTheme = (PTHEME)GetSelectedData(hwndDlg, IDC_APPEARANCE_VISUAL_STYLE);
if (g->ClassicTheme.Theme == pTheme)
g->ActiveTheme = g->ClassicTheme;
else
{
g->bThemeChanged = TRUE;
g->ActiveTheme.Theme = pTheme;
g->ActiveTheme.Size = pTheme->SizesList;
g->ActiveTheme.Color = pTheme->ColoursList;
g->ActiveTheme.ThemeActive = TRUE;
}
}
break;
case IDC_APPEARANCE_VISUAL_STYLE:
if (HIWORD(wParam) == CBN_SELCHANGE && !g->bInitializing)
{
INT ThemeId = GetSelectedId(hwndDlg, IDC_APPEARANCE_VISUAL_STYLE);
HWND hwndColor = GetDlgItem(hwndDlg, IDC_APPEARANCE_COLORSCHEME);
g->bThemeChanged = TRUE;
g->bSchemeChanged = TRUE;
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
g->bThemeActive = (ThemeId!=0);
g->bThemeChanged = TRUE;
AppearancePage_ShowColorScemes(g, hwndColor, ThemeId);
AppearancePage_ShowColorSchemes(hwndDlg, g);
AppearancePage_ShowSizes(hwndDlg, g);
AppearancePage_LoadSelectedScheme(hwndDlg, g);
AppearancePage_UpdateThemePreview(hwndDlg, g);
}
break;
case IDC_APPEARANCE_SIZE:
if (HIWORD(wParam) == CBN_SELCHANGE)
{
g->ActiveTheme.Size = (PTHEME_STYLE)GetSelectedData(hwndDlg, IDC_APPEARANCE_SIZE);
g->bSchemeChanged = TRUE;
if(g->ActiveTheme.ThemeActive)
g->bThemeChanged = TRUE;
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
AppearancePage_LoadSelectedScheme(hwndDlg, g);
AppearancePage_UpdateThemePreview(hwndDlg, g);
}
}
break;
@ -220,21 +299,19 @@ AppearancePageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
case PSN_APPLY:
g->ThemeId = GetSelectedId(hwndDlg, IDC_APPEARANCE_VISUAL_STYLE);
g->SchemeId = GetSelectedId(hwndDlg, IDC_APPEARANCE_COLORSCHEME);
if(g->bSchemeChanged)
if (g->bThemeChanged)
{
ApplyScheme(&g->Scheme, g->SchemeId);
ActivateTheme(&g->ActiveTheme);
}
if(g->bThemeChanged)
if (g->bSchemeChanged)
{
PTHEME pTheme = (PTHEME)DSA_GetItemPtr(g->Themes, g->ThemeId);
ActivateTheme(pTheme, g->SchemeId, 0);
ApplyScheme(&g->Scheme, &g->ActiveTheme);
if (g->ActiveTheme.ThemeActive == FALSE)
g->ClassicTheme = g->ActiveTheme;
}
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&g->Scheme);
AppearancePage_UpdateThemePreview(hwndDlg, g);
g->bThemeChanged = FALSE;
g->bSchemeChanged = FALSE;
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, (LONG_PTR)PSNRET_NOERROR);
@ -248,7 +325,7 @@ AppearancePageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
if (g->Scheme.crColor[COLOR_DESKTOP] != g_GlobalData.desktop_color)
{
g->Scheme.crColor[COLOR_DESKTOP] = g_GlobalData.desktop_color;
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_UPDATETHEME, 0, (LPARAM)&g->Scheme);
AppearancePage_UpdateThemePreview(hwndDlg, g);
}
break;
}

View file

@ -1,39 +1,31 @@
/* Some definitions for theme */
#define SIZE_BORDER_X 0
#define SIZE_BORDER_Y 1
#define SIZE_CAPTION_Y 2
#define SIZE_ICON_X 3
#define SIZE_ICON_Y 4
#define SIZE_ICON_SPC_X 5
#define SIZE_ICON_SPC_Y 6
#define SIZE_MENU_SIZE_X 7
#define SIZE_MENU_Y 8
#define SIZE_SCROLL_X 9
#define SIZE_SCROLL_Y 10
#define SIZE_SMCAPTION_Y 11
#define SIZE_EDGE_X 12
#define SIZE_EDGE_Y 13
#define SIZE_FRAME_Y 14
#define SIZE_MENU_CHECK_X 15
#define SIZE_MENU_CHECK_Y 16
#define SIZE_MENU_SIZE_Y 17
#define SIZE_SIZE_X 18
#define SIZE_SIZE_Y 19
#define FONT_CAPTION 0
#define FONT_SMCAPTION 1
#define FONT_HILIGHT 2
#define FONT_MENU 2
#define FONT_ICON 3
#define FONT_INFO 4
#define FONT_DIALOG 5
#define NUM_ELEMENTS 22
#define NUM_FONTS 6
#define NUM_SIZES 20
#define NUM_COLORS 31
#define MAX_TEMPLATES 50
#define MAX_TEMPLATENAMELENTGH 80
#define SIZE_BORDER_WIDTH 0
#define SIZE_SCROLL_WIDTH 1
#define SIZE_SCROLL_HEIGHT 2
#define SIZE_CAPTION_WIDTH 3
#define SIZE_CAPTION_HEIGHT 4
#define SIZE_SM_CAPTION_WIDTH 5
#define SIZE_SM_CAPTION_HEIGHT 6
#define SIZE_MENU_WIDTH 7
#define SIZE_MENU_HEIGHT 8
#define SIZE_ICON_SPACE_X 9
#define SIZE_ICON_SPACE_Y 10
#define SIZE_ICON 11
#define FONT_CAPTION 0
#define FONT_SMCAPTION 1
#define FONT_MENU 2
#define FONT_STATUS 3
#define FONT_MESSAGE 4
#define FONT_ICON 5
#define NUM_ELEMENTS 22
#define NUM_FONTS 6
#define NUM_SIZES 9
#define NUM_COLORS 31
#define MAX_TEMPLATES 50
#define MAX_TEMPLATENAMELENTGH 80
/* Some typedefs for theme */
@ -61,56 +53,66 @@ typedef struct
typedef struct
{
NONCLIENTMETRICSW ncMetrics;
ICONMETRICSW icMetrics;
COLORREF crColor[NUM_COLORS];
LOGFONT lfFont[NUM_FONTS];
INT Size[NUM_SIZES];
INT iIconSize;
BOOL bFlatMenus;
EFFECTS Effects;
} COLOR_SCHEME;
} COLOR_SCHEME, *PCOLOR_SCHEME;
typedef struct
{
TCHAR strKeyName[4];
TCHAR strSizeName[4];
TCHAR strDisplayName[MAX_TEMPLATENAMELENTGH];
TCHAR strLegacyName[MAX_TEMPLATENAMELENTGH];
} SCHEME_PRESET;
/*
* The classic theme has several different 'colours' and every colour has
* several sizes. On visual styles however a theme has different colours
* and different sizes. In other words the user can select a combination
* of colour and size.
* That means that for the classic theme THEME.SizesList is unused and
* every color has some child styles that corespond its sizes.
* The themes for visual styles however will use both ColoursList and SizesList
* and ChildStyle will not be used.
*/
/* struct for holding theme colors and sizes */
typedef struct _THEME_STYLE
{
WCHAR* StlyeName;
WCHAR* DisplayName;
struct _THEME_STYLE *NextStyle;
struct _THEME_STYLE *ChildStyle;
PWSTR StyleName;
PWSTR DisplayName;
} THEME_STYLE, *PTHEME_STYLE;
typedef struct _THEME
{
WCHAR* themeFileName;
WCHAR* displayName;
HDSA Colors;
int ColorsCount;
HDSA Sizes;
int SizesCount;
struct _THEME *NextTheme;
PWSTR ThemeFileName;
PWSTR DisplayName;
THEME_STYLE *ColoursList;
THEME_STYLE *SizesList;
} THEME, *PTHEME;
/* This is the global structure used to store the current values.
A pointer of this get's passed to the functions either directly
or by passing hwnd and getting the pointer by GetWindowLongPtr */
typedef struct _THEME_SELECTION
{
BOOL ThemeActive;
PTHEME Theme;
PTHEME_STYLE Color;
PTHEME_STYLE Size;
} THEME_SELECTION, *PTHEME_SELECTION;
/*
* This is the global structure used to store the current values.
* A pointer of this get's passed to the functions either directly
* or by passing hwnd and getting the pointer by GetWindowLongPtr.
*/
typedef struct tagGLOBALS
{
HDSA Themes;
int ThemesCount;
BOOL bThemeActive;
PTHEME pThemes;
INT ThemeId;
INT SchemeId; /* Theme is customized if SchemeId == -1 */
INT SizeID;
TCHAR strSelectedStyle[4];
LPWSTR pszThemeFileName;
LPWSTR pszColorName;
LPWSTR pszSizeName;
/*
* Keep a copy of the selected classic theme in order to select this
* when user selects the classic theme (and not a horrible random theme )
*/
THEME_SELECTION ClassicTheme;
THEME_SELECTION ActiveTheme;
COLOR_SCHEME Scheme;
COLOR_SCHEME SchemeAdv;
@ -121,20 +123,25 @@ typedef struct tagGLOBALS
HFONT hBoldFont;
HFONT hItalicFont;
BOOL bInitializing;
HBITMAP hbmpThemePreview;
HDC hdcThemePreview;
} GLOBALS;
extern SCHEME_PRESET g_ColorSchemes[MAX_TEMPLATES];
extern INT g_TemplateCount;
/* prototypes for theme.c */
VOID LoadCurrentScheme(COLOR_SCHEME* scheme);
BOOL LoadSchemeFromReg(COLOR_SCHEME* scheme, INT SchemeId);
VOID ApplyScheme(COLOR_SCHEME* scheme, INT SchemeId);
BOOL SaveScheme(COLOR_SCHEME* scheme, LPCTSTR strLegacyName);
INT LoadSchemePresetEntries(LPTSTR pszSelectedStyle);
VOID LoadThemes(GLOBALS *g);
HRESULT ActivateTheme(PTHEME pTheme, int iColor, int iSize);
void CleanupThemes(GLOBALS *g);
VOID SchemeSetMetric(COLOR_SCHEME *scheme, int id, int value);
int SchemeGetMetric(COLOR_SCHEME *scheme, int id);
PLOGFONTW SchemeGetFont(COLOR_SCHEME *scheme, int id);
PTHEME LoadThemes(VOID);
BOOL GetActiveTheme(PTHEME pThemeList, PTHEME_SELECTION pSelectedTheme);
BOOL GetActiveClassicTheme(PTHEME pThemeList, PTHEME_SELECTION pSelectedTheme);
BOOL LoadCurrentScheme(PCOLOR_SCHEME scheme);
BOOL LoadSchemeFromReg(PCOLOR_SCHEME scheme, PTHEME_SELECTION pSelectedTheme);
BOOL LoadSchemeFromTheme(PCOLOR_SCHEME scheme, PTHEME_SELECTION pSelectedTheme);
VOID ApplyScheme(PCOLOR_SCHEME scheme, PTHEME_SELECTION pSelectedTheme);
BOOL ActivateTheme(PTHEME_SELECTION pSelectedTheme);
void CleanupThemes(IN PTHEME pThemeList);
BOOL DrawThemePreview(HDC hdcMem, PCOLOR_SCHEME scheme, PTHEME_SELECTION pSelectedTheme, PRECT prcWindow);
/* prototypes for appearance.c */
INT_PTR CALLBACK AppearancePageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);

View file

@ -14,6 +14,8 @@
#include <cpl.h>
#include <tchar.h>
#include <setupapi.h>
#include <assert.h>
#include <shlwapi.h>
#include <shlobj.h>
#include <regstr.h>
#include <cplext.h>
@ -21,6 +23,7 @@
#include <cfgmgr32.h>
#include <uxtheme.h>
#include <uxundoc.h>
#include <vssym32.h>
#include "appearance.h"
#include "preview.h"
@ -105,6 +108,7 @@ typedef struct _GLOBAL_DATA
} GLOBAL_DATA, *PGLOBAL_DATA;
extern GLOBAL_DATA g_GlobalData;
extern HWND hCPLWindow;
BOOL
DisplayAdvancedSettings(HWND hWndParent, PDISPLAY_DEVICE_ENTRY DisplayDevice);
@ -116,3 +120,13 @@ HPSXA WINAPI SHCreatePropSheetExtArrayEx(HKEY,LPCWSTR,UINT,IDataObject*);
INT_PTR CALLBACK
AdvGeneralPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
LONG
RegLoadMUIStringW(IN HKEY hKey,
IN LPCWSTR pszValue OPTIONAL,
OUT LPWSTR pszOutBuf,
IN DWORD cbOutBuf,
OUT LPDWORD pcbData OPTIONAL,
IN DWORD Flags,
IN LPCWSTR pszDirectory OPTIONAL);

View file

@ -98,7 +98,11 @@ MyIntDrawRectEdge(HDC hdc, LPRECT rc, UINT uType, UINT uFlags, COLOR_SCHEME *sch
RBOuterPen = GetStockObject(DC_PEN);
{
HBRUSH hbr;
hbr = CreateSolidBrush(scheme->crColor[COLOR_BTNFACE]);
if((uFlags & MY_BF_ACTIVEBORDER))
hbr = CreateSolidBrush(scheme->crColor[COLOR_ACTIVEBORDER]);
else
hbr = CreateSolidBrush(scheme->crColor[COLOR_BTNFACE]);
FillRect(hdc, &InnerRect, hbr);
DeleteObject(hbr);
}

View file

@ -10,3 +10,7 @@ BOOL
MyDrawCaptionTemp(HWND hwnd, HDC hdc, const RECT *rect, HFONT hFont, HICON hIcon, LPCWSTR str, UINT uFlags, COLOR_SCHEME *scheme);
DWORD
MyDrawMenuBarTemp(HWND Wnd, HDC DC, LPRECT Rect, HMENU Menu, HFONT Font, COLOR_SCHEME *scheme);
#define MY_BF_ACTIVEBORDER 0x1000000
#define MY_BF_INACTIVEBORDER 0x2000000

View file

@ -46,7 +46,7 @@ BEGIN
PUSHBUTTON "Захранване...", IDC_SCREENS_POWER_BUTTON, 165, 171, 61, 13
END
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 204
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 234
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Облик"
FONT 8, "MS Shell Dlg"
@ -57,6 +57,8 @@ BEGIN
COMBOBOX IDC_APPEARANCE_VISUAL_STYLE, 7, 140, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Разцветка", IDC_STATIC, 7, 160, 64, 7
COMBOBOX IDC_APPEARANCE_COLORSCHEME, 7, 170, 134, 90 , CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Size", IDC_STATIC, 7, 190, 64, 7
COMBOBOX IDC_APPEARANCE_SIZE, 7, 200, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Ефекти", IDC_APPEARANCE_EFFECTS, 182, 150, 56, 15
PUSHBUTTON "Още", IDC_APPEARANCE_ADVANCED, 182, 170, 56, 15
END
@ -233,6 +235,7 @@ BEGIN
IDS_MESSBOX "Кутия за съобщения"
IDS_MESSTEXT "Текст на съобщенията"
IDS_BUTTEXT "Добре"
IDS_CLASSIC_THEME "Classic Theme"
END
STRINGTABLE DISCARDABLE

View file

@ -50,7 +50,7 @@ BEGIN
PUSHBUTTON "Na&pájení...", IDC_SCREENS_POWER_BUTTON, 165, 171, 61, 13
END
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 204
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 234
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Vzhled"
FONT 8, "MS Shell Dlg"
@ -61,6 +61,8 @@ BEGIN
COMBOBOX IDC_APPEARANCE_VISUAL_STYLE, 7, 140, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Schéma", IDC_STATIC, 7, 160, 64, 7
COMBOBOX IDC_APPEARANCE_COLORSCHEME, 7, 170, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Size", IDC_STATIC, 7, 190, 64, 7
COMBOBOX IDC_APPEARANCE_SIZE, 7, 200, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Efekty...", IDC_APPEARANCE_EFFECTS, 182, 150, 56, 15
PUSHBUTTON "Upřesnit", IDC_APPEARANCE_ADVANCED, 182, 170, 56, 15
END
@ -237,6 +239,7 @@ BEGIN
IDS_MESSBOX "Okno zprávy"
IDS_MESSTEXT "Text zprávy"
IDS_BUTTEXT "OK"
IDS_CLASSIC_THEME "Classic Theme"
END
STRINGTABLE DISCARDABLE

View file

@ -44,7 +44,7 @@ BEGIN
PUSHBUTTON "Energieoptionen", IDC_SCREENS_POWER_BUTTON, 165, 171, 61, 13
END
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 204
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 234
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Darstellung"
FONT 8, "MS Shell Dlg"
@ -55,6 +55,8 @@ BEGIN
COMBOBOX IDC_APPEARANCE_VISUAL_STYLE, 7, 140, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Farbschema", IDC_STATIC, 7, 160, 64, 7
COMBOBOX IDC_APPEARANCE_COLORSCHEME, 7, 170, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Size", IDC_STATIC, 7, 190, 64, 7
COMBOBOX IDC_APPEARANCE_SIZE, 7, 200, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Effekte...", IDC_APPEARANCE_EFFECTS, 182, 150, 56, 15
PUSHBUTTON "Erweitert", IDC_APPEARANCE_ADVANCED, 182, 170, 56, 15
END
@ -231,6 +233,7 @@ BEGIN
IDS_MESSBOX "Dialogfeld"
IDS_MESSTEXT "Dialogfeldtext"
IDS_BUTTEXT "OK"
IDS_CLASSIC_THEME "Classic Theme"
END
STRINGTABLE DISCARDABLE

View file

@ -44,7 +44,7 @@ BEGIN
PUSHBUTTON "Ενέργεια...", IDC_SCREENS_POWER_BUTTON, 165, 171, 61, 13
END
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 204
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 234
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Εμφάνιση"
FONT 8, "MS Shell Dlg"
@ -55,6 +55,8 @@ BEGIN
COMBOBOX IDC_APPEARANCE_VISUAL_STYLE, 7, 140, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Συνδυασμός χρωμάτων", IDC_STATIC, 7, 160, 64, 7
COMBOBOX IDC_APPEARANCE_COLORSCHEME, 7, 170, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Μέγεθος", IDC_STATIC, 7, 190, 64, 7
COMBOBOX IDC_APPEARANCE_SIZE, 7, 200, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Effects...", IDC_APPEARANCE_EFFECTS, 182, 150, 56, 15
PUSHBUTTON "Για προχωρημένους", IDC_APPEARANCE_ADVANCED, 182, 170, 56, 15
END
@ -231,6 +233,7 @@ BEGIN
IDS_MESSBOX "Παράθυρο μηνύματος"
IDS_MESSTEXT "Κείμενο μυνήματος"
IDS_BUTTEXT "OK"
IDS_CLASSIC_THEME "Κλασικό θέμα"
END
STRINGTABLE DISCARDABLE

View file

@ -44,7 +44,7 @@ BEGIN
PUSHBUTTON "P&ower...", IDC_SCREENS_POWER_BUTTON, 165, 171, 61, 13
END
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 204
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 234
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Appearance"
FONT 8, "MS Shell Dlg"
@ -55,6 +55,8 @@ BEGIN
COMBOBOX IDC_APPEARANCE_VISUAL_STYLE, 7, 140, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Colorscheme", IDC_STATIC, 7, 160, 64, 7
COMBOBOX IDC_APPEARANCE_COLORSCHEME, 7, 170, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Size", IDC_STATIC, 7, 190, 64, 7
COMBOBOX IDC_APPEARANCE_SIZE, 7, 200, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Effects...", IDC_APPEARANCE_EFFECTS, 182, 150, 56, 15
PUSHBUTTON "Ad&vanced...", IDC_APPEARANCE_ADVANCED, 182, 170, 56, 15
END
@ -231,6 +233,7 @@ BEGIN
IDS_MESSBOX "Message Box"
IDS_MESSTEXT "Message Text"
IDS_BUTTEXT "OK"
IDS_CLASSIC_THEME "Classic Theme"
END
STRINGTABLE DISCARDABLE

View file

@ -52,7 +52,7 @@ BEGIN
PUSHBUTTON "E&nergía...", IDC_SCREENS_POWER_BUTTON, 165, 171, 61, 13
END
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 204
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 234
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Apariencia"
FONT 8, "MS Shell Dlg"
@ -63,6 +63,8 @@ BEGIN
COMBOBOX IDC_APPEARANCE_VISUAL_STYLE, 7, 140, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Com&binación de colores", IDC_STATIC, 7, 160, 90, 7 // 64
COMBOBOX IDC_APPEARANCE_COLORSCHEME, 7, 170, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Size", IDC_STATIC, 7, 190, 64, 7
COMBOBOX IDC_APPEARANCE_SIZE, 7, 200, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Efectos...", IDC_APPEARANCE_EFFECTS, 182, 150, 56, 15
PUSHBUTTON "Opciones &avanzadas", IDC_APPEARANCE_ADVANCED, 182, 170, 56, 15
END
@ -239,6 +241,7 @@ BEGIN
IDS_MESSBOX "Cuadro de mensaje"
IDS_MESSTEXT "Texto del mensaje"
IDS_BUTTEXT "Aceptar"
IDS_CLASSIC_THEME "Classic Theme"
END
STRINGTABLE DISCARDABLE

View file

@ -47,7 +47,7 @@ BEGIN
PUSHBUTTON "&Gestion de l'alimentation...", IDC_SCREENS_POWER_BUTTON, 165, 171, 61, 13
END
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 204
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 234
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Apparence"
FONT 8, "MS Shell Dlg"
@ -58,6 +58,8 @@ BEGIN
COMBOBOX IDC_APPEARANCE_VISUAL_STYLE, 7, 140, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Modèle de couleurs", IDC_STATIC, 7, 160, 64, 7
COMBOBOX IDC_APPEARANCE_COLORSCHEME, 7, 170, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Size", IDC_STATIC, 7, 190, 64, 7
COMBOBOX IDC_APPEARANCE_SIZE, 7, 200, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Effets...", IDC_APPEARANCE_EFFECTS, 182, 150, 56, 15
PUSHBUTTON "Avancé", IDC_APPEARANCE_ADVANCED, 182, 170, 56, 15
END
@ -234,6 +236,7 @@ BEGIN
IDS_MESSBOX "Boîte de message"
IDS_MESSTEXT "Texte de message"
IDS_BUTTEXT "OK"
IDS_CLASSIC_THEME "Classic Theme"
END
STRINGTABLE DISCARDABLE

View file

@ -44,7 +44,7 @@ BEGIN
PUSHBUTTON "P&ower...", IDC_SCREENS_POWER_BUTTON, 165, 171, 61, 13
END
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 204
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 234
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "מראה"
FONT 8, "MS Shell Dlg"
@ -55,6 +55,8 @@ BEGIN
COMBOBOX IDC_APPEARANCE_VISUAL_STYLE, 7, 140, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "ערכת צבעים", IDC_STATIC, 7, 160, 64, 7
COMBOBOX IDC_APPEARANCE_COLORSCHEME, 7, 170, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Size", IDC_STATIC, 7, 190, 64, 7
COMBOBOX IDC_APPEARANCE_SIZE, 7, 200, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "אפקטים...", IDC_APPEARANCE_EFFECTS, 182, 150, 56, 15
PUSHBUTTON "מתקדם...", IDC_APPEARANCE_ADVANCED, 182, 170, 56, 15
END
@ -231,6 +233,7 @@ BEGIN
IDS_MESSBOX "Message Box"
IDS_MESSTEXT "Message Text"
IDS_BUTTEXT "אישור"
IDS_CLASSIC_THEME "Classic Theme"
END
STRINGTABLE DISCARDABLE

View file

@ -45,7 +45,7 @@ BEGIN
PUSHBUTTON "P&ower...", IDC_SCREENS_POWER_BUTTON, 165, 171, 61, 13
END
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 204
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 234
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Megjelenés"
FONT 8, "MS Shell Dlg"
@ -56,6 +56,8 @@ BEGIN
COMBOBOX IDC_APPEARANCE_VISUAL_STYLE, 7, 140, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Colorscheme", IDC_STATIC, 7, 160, 64, 7
COMBOBOX IDC_APPEARANCE_COLORSCHEME, 7, 170, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Size", IDC_STATIC, 7, 190, 64, 7
COMBOBOX IDC_APPEARANCE_SIZE, 7, 200, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Effects...", IDC_APPEARANCE_EFFECTS, 182, 150, 56, 15
PUSHBUTTON "Advanced", IDC_APPEARANCE_ADVANCED, 182, 170, 56, 15
END
@ -232,6 +234,7 @@ BEGIN
IDS_MESSBOX "Message Box"
IDS_MESSTEXT "Message Text"
IDS_BUTTEXT "OK"
IDS_CLASSIC_THEME "Classic Theme"
END
STRINGTABLE DISCARDABLE

View file

@ -44,7 +44,7 @@ BEGIN
PUSHBUTTON "P&ower...", IDC_SCREENS_POWER_BUTTON, 165, 171, 61, 13
END
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 204
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 234
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Penampilan"
FONT 8, "MS Shell Dlg"
@ -55,6 +55,8 @@ BEGIN
COMBOBOX IDC_APPEARANCE_VISUAL_STYLE, 7, 140, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "SkemaWarna", IDC_STATIC, 7, 160, 64, 7
COMBOBOX IDC_APPEARANCE_COLORSCHEME, 7, 170, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Size", IDC_STATIC, 7, 190, 64, 7
COMBOBOX IDC_APPEARANCE_SIZE, 7, 200, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Effects...", IDC_APPEARANCE_EFFECTS, 182, 150, 56, 15
PUSHBUTTON "Lanjutan", IDC_APPEARANCE_ADVANCED, 182, 170, 56, 15
END
@ -231,6 +233,7 @@ BEGIN
IDS_MESSBOX "Kotak Pesan"
IDS_MESSTEXT "Teks Pesan"
IDS_BUTTEXT "OK"
IDS_CLASSIC_THEME "Classic Theme"
END
STRINGTABLE DISCARDABLE

View file

@ -44,7 +44,7 @@ BEGIN
PUSHBUTTON "Alim&entazione...", IDC_SCREENS_POWER_BUTTON, 165, 171, 61, 13
END
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 204
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 234
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Aspetto"
FONT 8, "MS Shell Dlg"
@ -55,6 +55,8 @@ BEGIN
COMBOBOX IDC_APPEARANCE_VISUAL_STYLE, 7, 140, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Schema dei colori", IDC_STATIC, 7, 160, 64, 7
COMBOBOX IDC_APPEARANCE_COLORSCHEME, 7, 170, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Size", IDC_STATIC, 7, 190, 64, 7
COMBOBOX IDC_APPEARANCE_SIZE, 7, 200, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Effetti...", IDC_APPEARANCE_EFFECTS, 182, 150, 56, 15
PUSHBUTTON "A&vanzato...", IDC_APPEARANCE_ADVANCED, 182, 170, 56, 15
END
@ -231,6 +233,7 @@ BEGIN
IDS_MESSBOX "Messaggi"
IDS_MESSTEXT "Testo dei messaggi"
IDS_BUTTEXT "OK"
IDS_CLASSIC_THEME "Classic Theme"
END
STRINGTABLE DISCARDABLE

View file

@ -44,7 +44,7 @@ BEGIN
PUSHBUTTON "電源(&O)...", IDC_SCREENS_POWER_BUTTON, 165, 171, 61, 13
END
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 204
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 234
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "デザイン"
FONT 9, "MS UI Gothic"
@ -55,6 +55,8 @@ BEGIN
COMBOBOX IDC_APPEARANCE_VISUAL_STYLE, 7, 140, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "配色", IDC_STATIC, 7, 160, 64, 7
COMBOBOX IDC_APPEARANCE_COLORSCHEME, 7, 170, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Size", IDC_STATIC, 7, 190, 64, 7
COMBOBOX IDC_APPEARANCE_SIZE, 7, 200, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "効果(&E)...", IDC_APPEARANCE_EFFECTS, 182, 150, 56, 15
PUSHBUTTON "詳細設定(&V)...", IDC_APPEARANCE_ADVANCED, 182, 170, 56, 15
END
@ -231,6 +233,7 @@ BEGIN
IDS_MESSBOX "メッセージ ボックス"
IDS_MESSTEXT "メッセージ テキスト"
IDS_BUTTEXT "OK"
IDS_CLASSIC_THEME "Classic Theme"
END
STRINGTABLE DISCARDABLE

View file

@ -46,7 +46,7 @@ BEGIN
PUSHBUTTON "&Energie...", IDC_SCREENS_POWER_BUTTON, 165, 171, 61, 13
END
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 204
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 234
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Vormgeving"
FONT 8, "MS Shell Dlg"
@ -57,6 +57,8 @@ BEGIN
COMBOBOX IDC_APPEARANCE_VISUAL_STYLE, 7, 140, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Kleurenschema", IDC_STATIC, 7, 160, 64, 7
COMBOBOX IDC_APPEARANCE_COLORSCHEME, 7, 170, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Size", IDC_STATIC, 7, 190, 64, 7
COMBOBOX IDC_APPEARANCE_SIZE, 7, 200, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Effecten...", IDC_APPEARANCE_EFFECTS, 182, 150, 56, 15
PUSHBUTTON "Geavan&ceerd...", IDC_APPEARANCE_ADVANCED, 182, 170, 56, 15
END
@ -233,6 +235,7 @@ BEGIN
IDS_MESSBOX "Berichtvenster"
IDS_MESSTEXT "Berichttekst"
IDS_BUTTEXT "OK"
IDS_CLASSIC_THEME "Classic Theme"
END
STRINGTABLE DISCARDABLE

View file

@ -44,7 +44,7 @@ BEGIN
PUSHBUTTON "S&trøm...", IDC_SCREENS_POWER_BUTTON, 165, 171, 61, 13
END
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 204
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 234
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Utseende"
FONT 8, "MS Shell Dlg"
@ -55,6 +55,8 @@ BEGIN
COMBOBOX IDC_APPEARANCE_VISUAL_STYLE, 7, 140, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Fargevalg", IDC_STATIC, 7, 160, 64, 7
COMBOBOX IDC_APPEARANCE_COLORSCHEME, 7, 170, 134, 90 , CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Size", IDC_STATIC, 7, 190, 64, 7
COMBOBOX IDC_APPEARANCE_SIZE, 7, 200, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Effekter...", IDC_APPEARANCE_EFFECTS, 182, 150, 56, 15
PUSHBUTTON "Avansert", IDC_APPEARANCE_ADVANCED, 182, 170, 56, 15
END
@ -231,6 +233,7 @@ BEGIN
IDS_MESSBOX "Meldingboks"
IDS_MESSTEXT "Meldingtekst"
IDS_BUTTEXT "OK"
IDS_CLASSIC_THEME "Classic Theme"
END
STRINGTABLE DISCARDABLE

View file

@ -53,7 +53,7 @@ BEGIN
PUSHBUTTON "Z&asilanie...", IDC_SCREENS_POWER_BUTTON, 165, 171, 61, 13
END
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 204
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 234
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Wygląd"
FONT 8, "MS Shell Dlg"
@ -64,6 +64,8 @@ BEGIN
COMBOBOX IDC_APPEARANCE_VISUAL_STYLE, 7, 140, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Schemat kolorów", IDC_STATIC, 7, 160, 64, 7
COMBOBOX IDC_APPEARANCE_COLORSCHEME, 7, 170, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Size", IDC_STATIC, 7, 190, 64, 7
COMBOBOX IDC_APPEARANCE_SIZE, 7, 200, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Efekty...", IDC_APPEARANCE_EFFECTS, 182, 150, 56, 15
PUSHBUTTON "Zaawansowane", IDC_APPEARANCE_ADVANCED, 182, 170, 56, 15
END
@ -240,6 +242,7 @@ BEGIN
IDS_MESSBOX "Okno komunikatu"
IDS_MESSTEXT "Treść wiadomości"
IDS_BUTTEXT "OK"
IDS_CLASSIC_THEME "Classic Theme"
END
STRINGTABLE DISCARDABLE

View file

@ -45,7 +45,7 @@ BEGIN
PUSHBUTTON "&Energie…", IDC_SCREENS_POWER_BUTTON, 165, 171, 61, 13
END
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 204
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 234
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Aspect"
FONT 8, "MS Shell Dlg"
@ -56,6 +56,8 @@ BEGIN
COMBOBOX IDC_APPEARANCE_VISUAL_STYLE, 7, 140, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Colorit", IDC_STATIC, 7, 160, 64, 7
COMBOBOX IDC_APPEARANCE_COLORSCHEME, 7, 170, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Size", IDC_STATIC, 7, 190, 64, 7
COMBOBOX IDC_APPEARANCE_SIZE, 7, 200, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Efecte…", IDC_APPEARANCE_EFFECTS, 182, 150, 56, 15
PUSHBUTTON "A&vansate…", IDC_APPEARANCE_ADVANCED, 182, 170, 56, 15
END
@ -232,6 +234,7 @@ BEGIN
IDS_MESSBOX "Fereastră mesaj"
IDS_MESSTEXT "Text mesaj"
IDS_BUTTEXT "Î&nchide"
IDS_CLASSIC_THEME "Classic Theme"
END
STRINGTABLE DISCARDABLE

View file

@ -44,7 +44,7 @@ BEGIN
PUSHBUTTON "П&итание...", IDC_SCREENS_POWER_BUTTON, 165, 171, 61, 13
END
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 204
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 234
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Оформление"
FONT 8, "MS Shell Dlg"
@ -55,6 +55,8 @@ BEGIN
COMBOBOX IDC_APPEARANCE_VISUAL_STYLE, 7, 140, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Цветовая схема", IDC_STATIC, 7, 160, 64, 7
COMBOBOX IDC_APPEARANCE_COLORSCHEME, 7, 170, 134, 90 , CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Size", IDC_STATIC, 7, 190, 64, 7
COMBOBOX IDC_APPEARANCE_SIZE, 7, 200, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Эффекты...", IDC_APPEARANCE_EFFECTS, 182, 150, 56, 15
PUSHBUTTON "Дополнительно", IDC_APPEARANCE_ADVANCED, 182, 170, 56, 15
END
@ -231,6 +233,7 @@ BEGIN
IDS_MESSBOX "Окно сообщения"
IDS_MESSTEXT "Сообщение"
IDS_BUTTEXT "OK"
IDS_CLASSIC_THEME "Classic Theme"
END
STRINGTABLE DISCARDABLE

View file

@ -52,7 +52,7 @@ BEGIN
PUSHBUTTON "N&apájanie...", IDC_SCREENS_POWER_BUTTON, 165, 171, 61, 13
END
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 204
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 234
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Vzhľad"
FONT 8, "MS Shell Dlg"
@ -63,6 +63,8 @@ BEGIN
COMBOBOX IDC_APPEARANCE_VISUAL_STYLE, 7, 140, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "&Farebná schéma", IDC_STATIC, 7, 160, 64, 7
COMBOBOX IDC_APPEARANCE_COLORSCHEME, 7, 170, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Size", IDC_STATIC, 7, 190, 64, 7
COMBOBOX IDC_APPEARANCE_SIZE, 7, 200, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Efekty...", IDC_APPEARANCE_EFFECTS, 182, 150, 56, 15
PUSHBUTTON "&Spresniť", IDC_APPEARANCE_ADVANCED, 182, 170, 56, 15
END
@ -239,6 +241,7 @@ BEGIN
IDS_MESSBOX "Okno správy"
IDS_MESSTEXT "Text správy"
IDS_BUTTEXT "OK"
IDS_CLASSIC_THEME "Classic Theme"
END
STRINGTABLE DISCARDABLE

View file

@ -47,7 +47,7 @@ BEGIN
PUSHBUTTON "P&ower...", IDC_SCREENS_POWER_BUTTON, 165, 171, 61, 13
END
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 204
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 234
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Utseende"
FONT 8, "MS Shell Dlg"
@ -58,6 +58,8 @@ BEGIN
COMBOBOX IDC_APPEARANCE_VISUAL_STYLE, 7, 140, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Item", IDC_STATIC, 7, 160, 64, 7
COMBOBOX IDC_APPEARANCE_COLORSCHEME, 7, 170, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Size", IDC_STATIC, 7, 190, 64, 7
COMBOBOX IDC_APPEARANCE_SIZE, 7, 200, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Effects...", IDC_APPEARANCE_EFFECTS, 182, 150, 56, 15
PUSHBUTTON "Advanced", IDC_APPEARANCE_ADVANCED, 182, 170, 56, 15
END
@ -234,6 +236,7 @@ BEGIN
IDS_MESSBOX "Message Box"
IDS_MESSTEXT "Message Text"
IDS_BUTTEXT "OK"
IDS_CLASSIC_THEME "Classic Theme"
END
STRINGTABLE DISCARDABLE

View file

@ -52,7 +52,7 @@ BEGIN
PUSHBUTTON "&Живлення...", IDC_SCREENS_POWER_BUTTON, 165, 171, 61, 13
END
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 204
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 234
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Оформлення"
FONT 8, "MS Shell Dlg"
@ -63,6 +63,8 @@ BEGIN
COMBOBOX IDC_APPEARANCE_VISUAL_STYLE, 7, 140, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Колірна схема", IDC_STATIC, 7, 160, 64, 7
COMBOBOX IDC_APPEARANCE_COLORSCHEME, 7, 170, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Size", IDC_STATIC, 7, 190, 64, 7
COMBOBOX IDC_APPEARANCE_SIZE, 7, 200, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Ефекти...", IDC_APPEARANCE_EFFECTS, 182, 150, 56, 15
PUSHBUTTON "Додатково", IDC_APPEARANCE_ADVANCED, 182, 170, 56, 15
END
@ -239,6 +241,7 @@ BEGIN
IDS_MESSBOX "Вікно повідомлення"
IDS_MESSTEXT "Повідомлення"
IDS_BUTTEXT "OK"
IDS_CLASSIC_THEME "Classic Theme"
END
STRINGTABLE DISCARDABLE

View file

@ -51,7 +51,7 @@ BEGIN
PUSHBUTTON "电源(&O)...", IDC_SCREENS_POWER_BUTTON, 165, 171, 61, 13
END
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 204
IDD_APPEARANCE DIALOGEX DISCARDABLE 0, 0, 246, 234
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "外观"
FONT 9, "MS Shell Dlg"
@ -62,6 +62,8 @@ BEGIN
COMBOBOX IDC_APPEARANCE_VISUAL_STYLE, 7, 140, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "色彩方案", IDC_STATIC, 7, 160, 64, 7
COMBOBOX IDC_APPEARANCE_COLORSCHEME, 7, 170, 134, 90 , CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Size", IDC_STATIC, 7, 190, 64, 7
COMBOBOX IDC_APPEARANCE_SIZE, 7, 200, 134, 90, CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "效果(&E)...", IDC_APPEARANCE_EFFECTS, 182, 150, 56, 15
PUSHBUTTON "高级(&D)", IDC_APPEARANCE_ADVANCED, 182, 170, 56, 15
END
@ -238,6 +240,7 @@ BEGIN
IDS_MESSBOX "消息框"
IDS_MESSTEXT "消息内容"
IDS_BUTTEXT "确定"
IDS_CLASSIC_THEME "Classic Theme"
END
STRINGTABLE DISCARDABLE

View file

@ -12,6 +12,8 @@ static const TCHAR szPreviewWndClass[] = TEXT("PreviewWndClass");
typedef struct _PREVIEW_DATA
{
HDC hdcPreview;
HWND hwndParent;
COLOR_SCHEME Scheme;
@ -80,27 +82,27 @@ static VOID UpdatePreviewTheme(HWND hwnd, PPREVIEW_DATA pPreviewData, COLOR_SCHE
DeleteObject(pPreviewData->hbrWindow);
pPreviewData->hbrWindow = CreateSolidBrush(scheme->crColor[COLOR_WINDOW]);
pPreviewData->cxEdge = scheme->Size[SIZE_EDGE_X] - 2; /* SM_CXEDGE */
pPreviewData->cyEdge = scheme->Size[SIZE_EDGE_Y] - 2; /* SM_CYEDGE */
pPreviewData->cxEdge = 2; /* SM_CXEDGE */
pPreviewData->cyEdge = 2; /* SM_CYEDGE */
pPreviewData->cySizeFrame = scheme->Size[SIZE_FRAME_Y] - 1; /* SM_CYSIZEFRAME */
pPreviewData->cySizeFrame = scheme->ncMetrics.iBorderWidth; /* SM_CYSIZEFRAME */
pPreviewData->cyCaption = scheme->Size[SIZE_CAPTION_Y]; /* SM_CYCAPTION */
pPreviewData->cyMenu = scheme->Size[SIZE_MENU_Y]; /* SM_CYMENU */
pPreviewData->cxScrollbar = scheme->Size[SIZE_SCROLL_X]; /* SM_CXVSCROLL */
pPreviewData->cyBorder = scheme->Size[SIZE_BORDER_Y]; /* SM_CYBORDER */
pPreviewData->cyCaption = scheme->ncMetrics.iCaptionHeight+1; /* SM_CYCAPTION */
pPreviewData->cyMenu = scheme->ncMetrics.iMenuHeight -1; /* SM_CYMENU */
pPreviewData->cxScrollbar = scheme->ncMetrics.iScrollWidth; /* SM_CXVSCROLL */
pPreviewData->cyBorder = scheme->ncMetrics.iBorderWidth; /* SM_CYBORDER */
if (pPreviewData->hCaptionFont != NULL)
DeleteObject(pPreviewData->hCaptionFont);
pPreviewData->hCaptionFont = CreateFontIndirect(&scheme->lfFont[FONT_CAPTION]);
pPreviewData->hCaptionFont = CreateFontIndirect(&scheme->ncMetrics.lfCaptionFont);
if (pPreviewData->hMenuFont != NULL)
DeleteObject(pPreviewData->hMenuFont);
pPreviewData->hMenuFont = CreateFontIndirect(&scheme->lfFont[FONT_MENU]);
pPreviewData->hMenuFont = CreateFontIndirect(&scheme->ncMetrics.lfMenuFont);
if (pPreviewData->hMessageFont != NULL)
DeleteObject(pPreviewData->hMessageFont);
pPreviewData->hMessageFont = CreateFontIndirect(&scheme->lfFont[FONT_DIALOG]);
pPreviewData->hMessageFont = CreateFontIndirect(&scheme->ncMetrics.lfMessageFont);
pPreviewData->Scheme = *scheme;
InvalidateRect(hwnd, NULL, FALSE);
@ -258,18 +260,25 @@ OnPaint(HWND hwnd, PPREVIEW_DATA pPreviewData)
hdc = BeginPaint(hwnd, &ps);
if(pPreviewData->hdcPreview)
{
BitBlt(hdc,0,0, pPreviewData->rcDesktop.right, pPreviewData->rcDesktop.bottom, pPreviewData->hdcPreview, 0,0, SRCCOPY);
EndPaint(hwnd, &ps);
return;
}
/* Desktop */
FillRect(hdc, &pPreviewData->rcDesktop, pPreviewData->hbrDesktop);
/* Inactive Window */
MyDrawEdge(hdc, &pPreviewData->rcInactiveFrame, EDGE_RAISED, BF_RECT | BF_MIDDLE, scheme);
MyDrawEdge(hdc, &pPreviewData->rcInactiveFrame, EDGE_RAISED, BF_RECT | BF_MIDDLE | MY_BF_INACTIVEBORDER, scheme);
SetTextColor(hdc, scheme->crColor[COLOR_INACTIVECAPTIONTEXT]);
MyDrawCaptionTemp(NULL, hdc, &pPreviewData->rcInactiveCaption, pPreviewData->hCaptionFont,
NULL, pPreviewData->lpInAct, DC_GRADIENT | DC_ICON | DC_TEXT, scheme);
MyDrawCaptionButtons(hdc, &pPreviewData->rcInactiveCaption, TRUE, pPreviewData->cyCaption - 2, scheme);
/* Active Window */
MyDrawEdge(hdc, &pPreviewData->rcActiveFrame, EDGE_RAISED, BF_RECT | BF_MIDDLE, scheme);
MyDrawEdge(hdc, &pPreviewData->rcActiveFrame, EDGE_RAISED, BF_RECT | BF_MIDDLE | MY_BF_ACTIVEBORDER, scheme);
SetTextColor(hdc, scheme->crColor[COLOR_CAPTIONTEXT]);
MyDrawCaptionTemp(NULL, hdc, &pPreviewData->rcActiveCaption, pPreviewData->hCaptionFont,
NULL, pPreviewData->lpAct, DC_ACTIVE | DC_GRADIENT | DC_ICON | DC_TEXT, scheme);
@ -308,7 +317,7 @@ OnPaint(HWND hwnd, PPREVIEW_DATA pPreviewData)
CopyRect(&rc, &pPreviewData->rcDialogClient);
rc.left += 4;
rc.top += 2;
SetTextColor(hdc, scheme->crColor[COLOR_BTNTEXT]);
SetTextColor(hdc, scheme->crColor[COLOR_WINDOWTEXT]);
hOldFont = SelectObject(hdc, pPreviewData->hMessageFont);
DrawText(hdc, pPreviewData->lpMessText, -1, &rc, DT_LEFT);
SelectObject(hdc, hOldFont);
@ -445,56 +454,78 @@ PreviewWndProc(HWND hwnd,
HeapFree(GetProcessHeap(), 0, pPreviewData);
break;
case PVM_GETCYCAPTION:
return pPreviewData->cyCaption;
case PVM_SETCYCAPTION:
if ((INT)lParam > 0)
{
pPreviewData->cyCaption = (INT)lParam;
CalculateItemSize(pPreviewData);
InvalidateRect(hwnd, NULL, FALSE);
}
break;
case PVM_GETCYMENU:
return pPreviewData->cyMenu;
case PVM_SETCYMENU:
if ((INT)lParam > 0)
{
pPreviewData->cyMenu = (INT)lParam;
CalculateItemSize(pPreviewData);
InvalidateRect(hwnd, NULL, FALSE);
}
break;
case PVM_GETCXSCROLLBAR:
return pPreviewData->cxScrollbar;
case PVM_SETCXSCROLLBAR:
if ((INT)lParam > 0)
{
pPreviewData->cxScrollbar = (INT)lParam;
CalculateItemSize(pPreviewData);
InvalidateRect(hwnd, NULL, FALSE);
}
break;
case PVM_GETCYSIZEFRAME:
return pPreviewData->cySizeFrame;
case PVM_SETCYSIZEFRAME:
if ((INT)lParam > 0)
{
pPreviewData->cySizeFrame = (INT)lParam;
CalculateItemSize(pPreviewData);
InvalidateRect(hwnd, NULL, FALSE);
}
break;
case PVM_UPDATETHEME:
UpdatePreviewTheme(hwnd, pPreviewData, (COLOR_SCHEME *)lParam);
CalculateItemSize(pPreviewData);
InvalidateRect(hwnd, NULL, FALSE);
break;
case PVM_SETSIZE:
SchemeSetMetric(&pPreviewData->Scheme, wParam, lParam);
pPreviewData->cySizeFrame = pPreviewData->Scheme.ncMetrics.iBorderWidth; /* SM_CYSIZEFRAME */
pPreviewData->cyCaption = pPreviewData->Scheme.ncMetrics.iCaptionHeight+1; /* SM_CYCAPTION */
pPreviewData->cyMenu = pPreviewData->Scheme.ncMetrics.iMenuHeight -1; /* SM_CYMENU */
pPreviewData->cxScrollbar = pPreviewData->Scheme.ncMetrics.iScrollWidth; /* SM_CXVSCROLL */
pPreviewData->cyBorder = pPreviewData->Scheme.ncMetrics.iBorderWidth; /* SM_CYBORDER */
CalculateItemSize(pPreviewData);
InvalidateRect(hwnd, NULL, FALSE);
break;
case PVM_SETFONT:
{
PLOGFONTW plfFont;
HFONT* phFont;
switch(wParam)
{
case FONT_CAPTION: phFont = &pPreviewData->hCaptionFont; break;
case FONT_MENU: phFont = &pPreviewData->hMenuFont; break;
case FONT_MESSAGE: phFont = &pPreviewData->hMessageFont; break;
default: return TRUE;
}
plfFont = SchemeGetFont(&pPreviewData->Scheme, wParam);
memcpy(plfFont, (PVOID)lParam, sizeof(LOGFONTW));
DeleteObject(*phFont);
*phFont = CreateFontIndirect(plfFont);
InvalidateRect(hwnd, NULL, FALSE);
break;
}
case PVM_SETCOLOR:
pPreviewData->Scheme.crColor[wParam] = lParam;
switch(wParam)
{
case COLOR_SCROLLBAR:
DeleteObject(pPreviewData->hbrScrollbar);
pPreviewData->hbrScrollbar = CreateSolidBrush(pPreviewData->Scheme.crColor[wParam]);
break;
case COLOR_DESKTOP:
DeleteObject(pPreviewData->hbrDesktop);
pPreviewData->hbrDesktop = CreateSolidBrush(pPreviewData->Scheme.crColor[wParam]);
break;
case COLOR_WINDOW:
DeleteObject(pPreviewData->hbrWindow);
pPreviewData->hbrWindow = CreateSolidBrush(pPreviewData->Scheme.crColor[wParam]);
break;
}
CalculateItemSize(pPreviewData);
InvalidateRect(hwnd, NULL, FALSE);
break;
case PVM_GETSIZE:
return SchemeGetMetric(&pPreviewData->Scheme, wParam);
case PVM_GETFONT:
return (LRESULT)SchemeGetFont(&pPreviewData->Scheme, wParam);
case PVM_GETCOLOR:
return pPreviewData->Scheme.crColor[wParam];
case PVM_SET_HDC_PREVIEW:
pPreviewData->hdcPreview = (HDC)lParam;
InvalidateRect(hwnd, NULL, FALSE);
break;
default:

View file

@ -21,19 +21,14 @@
#define IDX_APPSPACE 16
#define IDX_QUICKINFO 20
#define PVM_GETCYCAPTION (WM_USER+1)
#define PVM_SETCYCAPTION (WM_USER+2)
#define PVM_GETCYMENU (WM_USER+3)
#define PVM_SETCYMENU (WM_USER+4)
#define PVM_GETCXSCROLLBAR (WM_USER+5)
#define PVM_SETCXSCROLLBAR (WM_USER+6)
#define PVM_GETCYSIZEFRAME (WM_USER+7)
#define PVM_SETCYSIZEFRAME (WM_USER+8)
#define PVM_UPDATETHEME (WM_USER+13)
#define PVM_SETSIZE (WM_USER+1)
#define PVM_GETSIZE (WM_USER+2)
#define PVM_SETFONT (WM_USER+3)
#define PVM_GETFONT (WM_USER+4)
#define PVM_SETCOLOR (WM_USER+5)
#define PVM_GETCOLOR (WM_USER+6)
#define PVM_SET_HDC_PREVIEW (WM_USER+7)
#define PVM_UPDATETHEME (WM_USER+8)
BOOL RegisterPreviewControl(IN HINSTANCE hInstance);
VOID UnregisterPreviewControl(IN HINSTANCE hInstance);

View file

@ -97,6 +97,7 @@
#define IDC_APPEARANCE_EFFECTS 1503
#define IDC_APPEARANCE_ADVANCED 1504
#define IDC_APPEARANCE_VISUAL_STYLE 1505
#define IDC_APPEARANCE_SIZE 1506
#define IDS_INACTWIN 1510
#define IDS_ACTWIN 1511
@ -104,6 +105,7 @@
#define IDS_MESSBOX 1513
#define IDS_MESSTEXT 1514
#define IDS_BUTTEXT 1515
#define IDS_CLASSIC_THEME 1516
/* Update these IDs when you change the string id list */
#define IDS_ITEM_FIRST (IDS_ITEM_3D_OBJECTS)

File diff suppressed because it is too large Load diff