2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Display Control Panel
4 * FILE: dll/cpl/desk/effappdlg.c
5 * PURPOSE: Effects appearance dialog
7 * PROGRAMMERS: Jan Roeloffzen (jroeloffzen[at]hotmail[dot]com)
8 * Ismael Ferreras Morezuelas (swyterzone+reactos@gmail.com)
13 /* Update all the controls with the current values for the selected screen element */
15 UpdateControls(HWND hwndDlg
, GLOBALS
*g
)
19 #define SAVE_CHECKBOX(__CONTROL_ID, __MEMBER) \
21 state = SendDlgItemMessageW(hwndDlg, __CONTROL_ID, BM_GETCHECK, 0, 0); \
22 g->SchemeAdv.Effects.__MEMBER = /* Do a XOR of both the conditions */ \
23 ((state == BST_CHECKED) != (__CONTROL_ID == IDC_EFFAPPEARANCE_KEYBOARDCUES)); \
26 #define RSET_COMBOBOX(__CONTROL_ID, __PARENT_MEMBER, __MEMBER) \
28 SendDlgItemMessageW(hwndDlg, __CONTROL_ID, CB_SETCURSEL, (WPARAM)g->SchemeAdv.Effects.__MEMBER, 0); \
29 EnableWindow(GetDlgItem(hwndDlg, __CONTROL_ID), g->SchemeAdv.Effects.__PARENT_MEMBER); \
32 /* Animated menu transitions section (checkbox + combo) */
33 SAVE_CHECKBOX(IDC_EFFAPPEARANCE_ANIMATION
, bMenuAnimation
);
34 RSET_COMBOBOX(IDC_EFFAPPEARANCE_ANIMATIONTYPE
, bMenuAnimation
, bMenuFade
);
36 /* Font antialiasing section (checkbox + combo) */
37 SAVE_CHECKBOX(IDC_EFFAPPEARANCE_SMOOTHING
, bFontSmoothing
);
38 RSET_COMBOBOX(IDC_EFFAPPEARANCE_SMOOTHINGTYPE
, bFontSmoothing
, uiFontSmoothingType
- 1);
40 /* Other checkboxes */
41 SAVE_CHECKBOX(IDC_EFFAPPEARANCE_SETDROPSHADOW
, bDropShadow
);
42 SAVE_CHECKBOX(IDC_EFFAPPEARANCE_DRAGFULLWINDOWS
, bDragFullWindows
);
43 SAVE_CHECKBOX(IDC_EFFAPPEARANCE_KEYBOARDCUES
, bKeyboardCues
);
48 g
->bSchemeChanged
= TRUE
;
52 SaveCurrentValues(HWND hwndDlg
, GLOBALS
*g
)
54 /* The settings get saved at the end of ApplyScheme() in theme.c,
55 * when clicking Apply in the main dialog. */
59 AddToCombobox(INT Combo
, HWND hwndDlg
, INT From
, INT To
)
64 for (iElement
= From
; iElement
<= To
; iElement
++)
66 LoadString(hApplet
, iElement
, (LPTSTR
)tstrText
, ARRAYSIZE(tstrText
));
67 SendDlgItemMessage(hwndDlg
, Combo
, CB_ADDSTRING
, 0, (LPARAM
)tstrText
);
71 /* Initialize the effects appearance dialog from the scheme populated in LoadCurrentScheme(), in theme.c */
73 EffAppearanceDlg_Init(HWND hwndDlg
, GLOBALS
*g
)
77 /* Copy the current theme values */
78 g
->SchemeAdv
= g
->Scheme
;
80 #define INIT_CHECKBOX(__CONTROL_ID, __MEMBER) \
82 state = /* Do a XOR of both the conditions */ \
83 ((g->SchemeAdv.Effects.__MEMBER) != (__CONTROL_ID == IDC_EFFAPPEARANCE_KEYBOARDCUES)) \
84 ? BST_CHECKED : BST_UNCHECKED; \
85 SendDlgItemMessageW(hwndDlg, __CONTROL_ID, BM_SETCHECK, state, 0); \
88 #define FILL_COMBOBOX(__CONTROL_ID, __FIRST_STR, __LAST_STR) \
89 AddToCombobox(__CONTROL_ID, hwndDlg, __FIRST_STR, __LAST_STR)
91 /* Animated menu transitions section (checkbox + combo) */
92 INIT_CHECKBOX(IDC_EFFAPPEARANCE_ANIMATION
, bMenuAnimation
);
93 FILL_COMBOBOX(IDC_EFFAPPEARANCE_ANIMATIONTYPE
, IDS_SLIDEEFFECT
,
96 /* Font antialiasing section (checkbox + combo) */
97 INIT_CHECKBOX(IDC_EFFAPPEARANCE_SMOOTHING
, bFontSmoothing
);
98 FILL_COMBOBOX(IDC_EFFAPPEARANCE_SMOOTHINGTYPE
, IDS_STANDARDEFFECT
,
101 /* Other checkboxes */
102 INIT_CHECKBOX(IDC_EFFAPPEARANCE_SETDROPSHADOW
, bDropShadow
);
103 INIT_CHECKBOX(IDC_EFFAPPEARANCE_DRAGFULLWINDOWS
, bDragFullWindows
);
104 INIT_CHECKBOX(IDC_EFFAPPEARANCE_KEYBOARDCUES
, bKeyboardCues
);
109 /* Update the controls */
110 UpdateControls(hwndDlg
, g
);
114 EffAppearanceDlgProc(HWND hwndDlg
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
)
118 g
= (GLOBALS
*)GetWindowLongPtr(hwndDlg
, DWLP_USER
);
123 g
= (GLOBALS
*)lParam
;
124 SetWindowLongPtr(hwndDlg
, DWLP_USER
, (LONG_PTR
)g
);
125 EffAppearanceDlg_Init(hwndDlg
, g
);
132 switch(LOWORD(wParam
))
135 SaveCurrentValues(hwndDlg
, g
);
136 EndDialog(hwndDlg
, IDOK
);
140 g
->SchemeAdv
= g
->Scheme
;
141 EndDialog(hwndDlg
, IDCANCEL
);
144 case IDC_EFFAPPEARANCE_ANIMATION
:
145 case IDC_EFFAPPEARANCE_SMOOTHING
:
146 case IDC_EFFAPPEARANCE_SETDROPSHADOW
:
147 case IDC_EFFAPPEARANCE_DRAGFULLWINDOWS
:
148 case IDC_EFFAPPEARANCE_KEYBOARDCUES
:
149 if (HIWORD(wParam
) == BN_CLICKED
)
151 UpdateControls(hwndDlg
, g
);
155 case IDC_EFFAPPEARANCE_ANIMATIONTYPE
:
156 case IDC_EFFAPPEARANCE_SMOOTHINGTYPE
:
157 if (HIWORD(wParam
) == CBN_SELCHANGE
)
160 SendDlgItemMessageW(hwndDlg
, IDC_EFFAPPEARANCE_SMOOTHINGTYPE
,
163 g
->SchemeAdv
.Effects
.bMenuFade
=
164 SendDlgItemMessageW(hwndDlg
, IDC_EFFAPPEARANCE_ANIMATIONTYPE
,
166 g
->SchemeAdv
.Effects
.uiFontSmoothingType
= (Index
== CB_ERR
) ? 0 : (Index
+ 1);
168 UpdateControls(hwndDlg
, g
);