ReactOS 0.4.17-dev-609-gc4517f4
effappdlg.c
Go to the documentation of this file.
1/*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Display Control Panel
4 * PURPOSE: Effects appearance dialog
5 * PROGRAMMERS: Jan Roeloffzen <jroeloffzen@hotmail.com>
6 * Ismael Ferreras Morezuelas <swyterzone+reactos@gmail.com>
7 */
8
9#include "desk.h"
10
11#define NORMAL_ICON_SIZE 32
12#define LARGE_ICON_SIZE 48
13
15
16/* Update all the controls with the current values for the selected screen element */
17static VOID
19{
21
22#define SAVE_CHECKBOX(__CONTROL_ID, __MEMBER) \
23do { \
24 state = SendDlgItemMessageW(hwndDlg, __CONTROL_ID, BM_GETCHECK, 0, 0); \
25 g->SchemeAdv.Effects.__MEMBER = /* Do a XOR of both the conditions */ \
26 ((state == BST_CHECKED) != (__CONTROL_ID == IDC_EFFAPPEARANCE_KEYBOARDCUES)); \
27} while(0)
28
29#define SAVE_CHECKBOX_SCH(__CONTROL_ID, __MEMBER) \
30do { \
31 state = SendDlgItemMessageW(hwndDlg, __CONTROL_ID, BM_GETCHECK, 0, 0); \
32 g->SchemeAdv.__MEMBER = (state == BST_CHECKED); \
33} while(0)
34
35#define RSET_COMBOBOX(__CONTROL_ID, __PARENT_MEMBER, __MEMBER) \
36do { \
37 SendDlgItemMessageW(hwndDlg, __CONTROL_ID, CB_SETCURSEL, (WPARAM)g->SchemeAdv.Effects.__MEMBER, 0); \
38 EnableWindow(GetDlgItem(hwndDlg, __CONTROL_ID), g->SchemeAdv.Effects.__PARENT_MEMBER); \
39} while(0)
40
41 /* Animated menu transitions section (checkbox + combo) */
43 RSET_COMBOBOX(IDC_EFFAPPEARANCE_ANIMATIONTYPE, bMenuAnimation, bMenuFade);
44
45 /* Font antialiasing section (checkbox + combo) */
47 RSET_COMBOBOX(IDC_EFFAPPEARANCE_SMOOTHINGTYPE, bFontSmoothing, uiFontSmoothingType - 1);
48
49 /* Large icons */
51 g->SchemeAdv.iIconSize = (state == BST_UNCHECKED ? NORMAL_ICON_SIZE :
53
54 /* Other checkboxes */
59
60#undef SAVE_CHECKBOX
61#undef RSET_COMBOBOX
62
63 g->bSchemeChanged = TRUE;
64}
65
66static VOID
68{
69 /* The settings get saved at the end of ApplyScheme() in theme.c,
70 * when clicking Apply in the main dialog. */
71}
72
73static VOID
74AddToCombobox(INT Combo, HWND hwndDlg, INT From, INT To)
75{
76 INT iElement;
77 TCHAR tstrText[80];
78
79 for (iElement = From; iElement <= To; iElement++)
80 {
81 LoadString(hApplet, iElement, (LPTSTR)tstrText, _countof(tstrText));
82 SendDlgItemMessage(hwndDlg, Combo, CB_ADDSTRING, 0, (LPARAM)tstrText);
83 }
84}
85
86/* Initialize the effects appearance dialog from the scheme populated in LoadCurrentScheme(), in theme.c */
87static VOID
89{
91
92 /* Copy the current theme values */
93 g->SchemeAdv = g->Scheme;
94
95#define INIT_CHECKBOX(__CONTROL_ID, __MEMBER) \
96do { \
97 state = /* Do a XOR of both the conditions */ \
98 ((g->SchemeAdv.Effects.__MEMBER) != (__CONTROL_ID == IDC_EFFAPPEARANCE_KEYBOARDCUES)) \
99 ? BST_CHECKED : BST_UNCHECKED; \
100 SendDlgItemMessageW(hwndDlg, __CONTROL_ID, BM_SETCHECK, state, 0); \
101} while(0)
102
103#define INIT_CHECKBOX_SCH(__CONTROL_ID, __MEMBER) \
104do { \
105 state = /* Do a XOR of both the conditions */ \
106 ((g->SchemeAdv.__MEMBER) == TRUE) \
107 ? BST_CHECKED : BST_UNCHECKED; \
108 SendDlgItemMessageW(hwndDlg, __CONTROL_ID, BM_SETCHECK, state, 0); \
109} while(0)
110
111#define FILL_COMBOBOX(__CONTROL_ID, __FIRST_STR, __LAST_STR) \
112 AddToCombobox(__CONTROL_ID, hwndDlg, __FIRST_STR, __LAST_STR)
113
114 /* Animated menu transitions section (checkbox + combo) */
118
119 /* Font antialiasing section (checkbox + combo) */
123
124 /* Large icons */
125 if (g->SchemeAdv.iIconSize == NORMAL_ICON_SIZE)
126 {
128 }
129 else if (g->SchemeAdv.iIconSize == LARGE_ICON_SIZE)
130 {
132 }
133 else
134 {
136 g_CustomIconSize = g->SchemeAdv.iIconSize;
138 }
140
141 /* Other checkboxes */
146
147#undef INIT_CHECKBOX
148#undef FILL_COMBOBOX
149
150 /* Update the controls */
152}
153
156{
157 GLOBALS* g;
158
159 g = (GLOBALS*)GetWindowLongPtr(hwndDlg, DWLP_USER);
160
161 switch (uMsg)
162 {
163 case WM_INITDIALOG:
164 g = (GLOBALS*)lParam;
166 EffAppearanceDlg_Init(hwndDlg, g);
167 break;
168
169 case WM_DESTROY:
170 break;
171
172 case WM_COMMAND:
173 switch(LOWORD(wParam))
174 {
175 case IDOK:
177 EndDialog(hwndDlg, IDOK);
178 break;
179
180 case IDCANCEL:
181 g->SchemeAdv = g->Scheme;
182 EndDialog(hwndDlg, IDCANCEL);
183 break;
184
192 if (HIWORD(wParam) == BN_CLICKED)
194 break;
195
199 {
200 INT Index =
202 CB_GETCURSEL, 0, 0);
203
204 g->SchemeAdv.Effects.bMenuFade =
206 CB_GETCURSEL, 0, 0);
207 g->SchemeAdv.Effects.uiFontSmoothingType = (Index == CB_ERR) ? 0 : (Index + 1);
208
210 }
211 break;
212
213 default:
214 return FALSE;
215 }
216 break;
217
218 default:
219 return FALSE;
220 }
221
222 return TRUE;
223}
static int state
Definition: maze.c:121
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
HINSTANCE hApplet
Definition: access.c:17
#define IDS_CLEARTYPEEFFECT
Definition: resource.h:181
#define IDC_EFFAPPEARANCE_LARGEICONS
Definition: resource.h:172
#define IDS_SLIDEEFFECT
Definition: resource.h:177
#define IDC_EFFAPPEARANCE_SETDROPSHADOW
Definition: resource.h:173
#define IDC_EFFAPPEARANCE_DRAGFULLWINDOWS
Definition: resource.h:174
#define IDS_STANDARDEFFECT
Definition: resource.h:180
#define IDC_EFFAPPEARANCE_FLATMENUS
Definition: resource.h:175
#define IDC_EFFAPPEARANCE_SMOOTHING
Definition: resource.h:170
#define IDS_FADEEFFECT
Definition: resource.h:178
#define IDC_EFFAPPEARANCE_ANIMATIONTYPE
Definition: resource.h:169
#define IDC_EFFAPPEARANCE_KEYBOARDCUES
Definition: resource.h:167
#define IDC_EFFAPPEARANCE_ANIMATION
Definition: resource.h:168
#define IDC_EFFAPPEARANCE_SMOOTHINGTYPE
Definition: resource.h:171
#define CALLBACK
Definition: compat.h:35
#define SAVE_CHECKBOX(__CONTROL_ID, __MEMBER)
INT g_CustomIconSize
Definition: effappdlg.c:14
static VOID EffAppearanceDlg_Init(HWND hwndDlg, GLOBALS *g)
Definition: effappdlg.c:88
static VOID AddToCombobox(INT Combo, HWND hwndDlg, INT From, INT To)
Definition: effappdlg.c:74
#define SAVE_CHECKBOX_SCH(__CONTROL_ID, __MEMBER)
#define FILL_COMBOBOX(__CONTROL_ID, __FIRST_STR, __LAST_STR)
#define RSET_COMBOBOX(__CONTROL_ID, __PARENT_MEMBER, __MEMBER)
#define INIT_CHECKBOX_SCH(__CONTROL_ID, __MEMBER)
static VOID EffAppearanceDlgSaveCurrentValues(HWND hwndDlg, GLOBALS *g)
Definition: effappdlg.c:67
#define NORMAL_ICON_SIZE
Definition: effappdlg.c:11
INT_PTR CALLBACK EffAppearanceDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: effappdlg.c:155
#define LARGE_ICON_SIZE
Definition: effappdlg.c:12
#define INIT_CHECKBOX(__CONTROL_ID, __MEMBER)
static VOID EffAppearanceDlgUpdateControls(HWND hwndDlg, GLOBALS *g)
Definition: effappdlg.c:18
GLboolean GLboolean g
Definition: glext.h:6204
unsigned int UINT
Definition: sysinfo.c:13
char TCHAR
Definition: tchar.h:1402
LONG_PTR LPARAM
Definition: minwindef.h:175
UINT_PTR WPARAM
Definition: minwindef.h:174
LPSTR LPTSTR
Definition: ms-dtyp.idl:131
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
#define LOWORD(l)
Definition: pedump.c:82
#define BS_AUTO3STATE
Definition: pedump.c:657
#define _countof(array)
Definition: sndvol32.h:70
#define GetWindowLongPtr
Definition: treelist.c:73
#define SetWindowLongPtr
Definition: treelist.c:70
int32_t INT_PTR
Definition: typedefs.h:64
int32_t INT
Definition: typedefs.h:58
#define HIWORD(l)
Definition: typedefs.h:247
_In_ WDFCOLLECTION _In_ ULONG Index
#define BST_INDETERMINATE
Definition: winuser.h:198
#define DWLP_USER
Definition: winuser.h:883
#define IDCANCEL
Definition: winuser.h:842
#define BST_UNCHECKED
Definition: winuser.h:199
#define WM_COMMAND
Definition: winuser.h:1768
#define CB_ERR
Definition: winuser.h:2471
#define WM_INITDIALOG
Definition: winuser.h:1767
#define IDOK
Definition: winuser.h:841
#define CBN_SELCHANGE
Definition: winuser.h:2008
#define BM_SETCHECK
Definition: winuser.h:1950
LRESULT WINAPI SendDlgItemMessageW(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define CB_ADDSTRING
Definition: winuser.h:1965
#define BM_SETSTYLE
Definition: winuser.h:1953
#define LoadString
Definition: winuser.h:5985
#define BN_CLICKED
Definition: winuser.h:1954
#define WM_DESTROY
Definition: winuser.h:1637
#define CB_GETCURSEL
Definition: winuser.h:1972
#define SendDlgItemMessage
Definition: winuser.h:6008
#define BST_CHECKED
Definition: winuser.h:197
#define BM_GETCHECK
Definition: winuser.h:1947
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)