📄 advappdlg.c
字号:
return TRUE;
}
}
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);
}
static VOID
SelectComboByElement(HWND hwnd, INT id, LPARAM lParam)
{
INT nCount;
INT i;
nCount = SendDlgItemMessage(hwnd, id, CB_GETCOUNT, 0, 0);
if (nCount == CB_ERR)
return;
for (i = 0; i < nCount; i++)
{
if (SendDlgItemMessage(hwnd, id, CB_GETITEMDATA, (WPARAM)i, 0) == lParam)
{
SendDlgItemMessage(hwnd, id, CB_SETCURSEL, (WPARAM)i, 0);
break;
}
}
}
static VOID
GetSelectedComboText(HWND hwnd, INT id, LPWSTR lpStr)
{
INT nCount;
// INT i;
nCount = SendDlgItemMessage(hwnd, id, CB_GETCURSEL, 0, 0);
if (nCount == CB_ERR)
{
*lpStr = 0;
return;
}
nCount = SendDlgItemMessage(hwnd, id, CB_GETLBTEXT, (WPARAM)nCount, (LPARAM)lpStr);
if (nCount == CB_ERR)
{
*lpStr = 0;
}
}
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_APPEARANCE_PREVIEW:
SaveCurrentValues(hwndDlg, g);
SelectComboByElement(hwndDlg, IDC_ADVAPPEARANCE_ELEMENT, lParam);
g->CurrentElement = (INT)lParam;
UpdateControls(hwndDlg, g);
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_SIZE_E:
if (g && HIWORD(wParam) == EN_CHANGE)
{
int i = (int)LOWORD(SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_SIZE_UD, UDM_GETPOS,0,0L));
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;
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;
}
}
break;
case IDC_ADVAPPEARANCE_FONT_C:
if (g && HIWORD(wParam) == CBN_SELCHANGE)
{
// MessageBeep(-1);
switch (g->CurrentElement)
{
case IDX_INACTIVE_CAPTION:
case IDX_ACTIVE_CAPTION:
GetSelectedComboText(hwndDlg, IDC_ADVAPPEARANCE_FONT_C,
g->ThemeAdv.lfFont[g_Assignment[g->CurrentElement].Font].lfFaceName);
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_SETCAPTIONFONT, 0,
(LPARAM)&g->ThemeAdv.lfFont[g_Assignment[g->CurrentElement].Font]);
break;
case IDX_MENU:
GetSelectedComboText(hwndDlg, IDC_ADVAPPEARANCE_FONT_C,
g->ThemeAdv.lfFont[g_Assignment[g->CurrentElement].Font].lfFaceName);
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_SETMENUFONT, 0,
(LPARAM)&g->ThemeAdv.lfFont[g_Assignment[g->CurrentElement].Font]);
break;
case IDX_DIALOG:
GetSelectedComboText(hwndDlg, IDC_ADVAPPEARANCE_FONT_C,
g->ThemeAdv.lfFont[g_Assignment[g->CurrentElement].Font].lfFaceName);
SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_SETDIALOGFONT, 0,
(LPARAM)&g->ThemeAdv.lfFont[g_Assignment[g->CurrentElement].Font]);
break;
}
}
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;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -