2 * PROJECT: ReactOS Applications
3 * LICENSE: LGPL - See COPYING in the top level directory
4 * FILE: base/applications/msconfig.c
5 * PURPOSE: msconfig main dialog
6 * COPYRIGHT: Copyright 2005-2006 Christoph von Wittich <Christoph@ApiViewer.de>
12 #include "toolspage.h"
14 #include "startuppage.h"
15 #include "freeldrpage.h"
16 #include "systempage.h"
17 #include "generalpage.h"
21 HWND hMainWnd
; /* Main Window */
22 HWND hTabWnd
; /* Tab Control Window */
23 UINT uXIcon
= 0, uYIcon
= 0; /* Icon sizes */
24 HICON hDialogIcon
= NULL
;
26 void MsConfig_OnTabWndSelChange(void);
28 ////////////////////////////////////////////////////////////////////////////////
29 // Taken from WinSpy++ 1.7
30 // http://www.catch22.net/software/winspy
31 // Copyright (c) 2002 by J Brown
35 // Copied from uxtheme.h
36 // If you have this new header, then delete these and
37 // #include <uxtheme.h> instead!
39 #define ETDT_DISABLE 0x00000001
40 #define ETDT_ENABLE 0x00000002
41 #define ETDT_USETABTEXTURE 0x00000004
42 #define ETDT_ENABLETAB (ETDT_ENABLE | ETDT_USETABTEXTURE)
45 typedef HRESULT (WINAPI
* ETDTProc
) (HWND
, DWORD
);
48 // Try to call EnableThemeDialogTexture, if uxtheme.dll is present
50 BOOL
EnableDialogTheme(HWND hwnd
)
53 ETDTProc fnEnableThemeDialogTexture
;
55 hUXTheme
= LoadLibrary(_T("uxtheme.dll"));
59 fnEnableThemeDialogTexture
=
60 (ETDTProc
)GetProcAddress(hUXTheme
, "EnableThemeDialogTexture");
62 if(fnEnableThemeDialogTexture
)
64 fnEnableThemeDialogTexture(hwnd
, ETDT_ENABLETAB
);
66 FreeLibrary(hUXTheme
);
71 // Failed to locate API!
72 FreeLibrary(hUXTheme
);
78 // Not running under XP? Just fail gracefully
82 BOOL
OnCreate(HWND hWnd
)
87 hTabWnd
= GetDlgItem(hWnd
, IDC_TAB
);
88 hGeneralPage
= CreateDialog(hInst
, MAKEINTRESOURCE(IDD_GENERAL_PAGE
), hWnd
, GeneralPageWndProc
); EnableDialogTheme(hGeneralPage
);
89 hSystemPage
= CreateDialog(hInst
, MAKEINTRESOURCE(IDD_SYSTEM_PAGE
), hWnd
, SystemPageWndProc
); EnableDialogTheme(hSystemPage
);
90 hFreeLdrPage
= CreateDialog(hInst
, MAKEINTRESOURCE(IDD_FREELDR_PAGE
), hWnd
, FreeLdrPageWndProc
); EnableDialogTheme(hFreeLdrPage
);
91 hServicesPage
= CreateDialog(hInst
, MAKEINTRESOURCE(IDD_SERVICES_PAGE
), hWnd
, ServicesPageWndProc
); EnableDialogTheme(hServicesPage
);
92 hStartupPage
= CreateDialog(hInst
, MAKEINTRESOURCE(IDD_STARTUP_PAGE
), hWnd
, StartupPageWndProc
); EnableDialogTheme(hStartupPage
);
93 hToolsPage
= CreateDialog(hInst
, MAKEINTRESOURCE(IDD_TOOLS_PAGE
), hWnd
, ToolsPageWndProc
); EnableDialogTheme(hToolsPage
);
95 LoadString(hInst
, IDS_MSCONFIG
, szTemp
, 256);
96 SetWindowText(hWnd
, szTemp
);
99 LoadString(hInst
, IDS_TAB_GENERAL
, szTemp
, 256);
100 memset(&item
, 0, sizeof(TCITEM
));
101 item
.mask
= TCIF_TEXT
;
102 item
.pszText
= szTemp
;
103 (void)TabCtrl_InsertItem(hTabWnd
, 0, &item
);
105 LoadString(hInst
, IDS_TAB_SYSTEM
, szTemp
, 256);
106 memset(&item
, 0, sizeof(TCITEM
));
107 item
.mask
= TCIF_TEXT
;
108 item
.pszText
= szTemp
;
109 (void)TabCtrl_InsertItem(hTabWnd
, 1, &item
);
111 LoadString(hInst
, IDS_TAB_FREELDR
, szTemp
, 256);
112 memset(&item
, 0, sizeof(TCITEM
));
113 item
.mask
= TCIF_TEXT
;
114 item
.pszText
= szTemp
;
115 (void)TabCtrl_InsertItem(hTabWnd
, 2, &item
);
117 LoadString(hInst
, IDS_TAB_SERVICES
, szTemp
, 256);
118 memset(&item
, 0, sizeof(TCITEM
));
119 item
.mask
= TCIF_TEXT
;
120 item
.pszText
= szTemp
;
121 (void)TabCtrl_InsertItem(hTabWnd
, 3, &item
);
123 LoadString(hInst
, IDS_TAB_STARTUP
, szTemp
, 256);
124 memset(&item
, 0, sizeof(TCITEM
));
125 item
.mask
= TCIF_TEXT
;
126 item
.pszText
= szTemp
;
127 (void)TabCtrl_InsertItem(hTabWnd
, 4, &item
);
129 LoadString(hInst
, IDS_TAB_TOOLS
, szTemp
, 256);
130 memset(&item
, 0, sizeof(TCITEM
));
131 item
.mask
= TCIF_TEXT
;
132 item
.pszText
= szTemp
;
133 (void)TabCtrl_InsertItem(hTabWnd
, 5, &item
);
135 MsConfig_OnTabWndSelChange();
141 void MsConfig_OnTabWndSelChange(void)
143 switch (TabCtrl_GetCurSel(hTabWnd
)) {
145 ShowWindow(hGeneralPage
, SW_SHOW
);
146 ShowWindow(hSystemPage
, SW_HIDE
);
147 ShowWindow(hFreeLdrPage
, SW_HIDE
);
148 ShowWindow(hServicesPage
, SW_HIDE
);
149 ShowWindow(hStartupPage
, SW_HIDE
);
150 ShowWindow(hToolsPage
, SW_HIDE
);
151 BringWindowToTop(hGeneralPage
);
154 ShowWindow(hGeneralPage
, SW_HIDE
);
155 ShowWindow(hSystemPage
, SW_SHOW
);
156 ShowWindow(hToolsPage
, SW_HIDE
);
157 ShowWindow(hStartupPage
, SW_HIDE
);
158 ShowWindow(hFreeLdrPage
, SW_HIDE
);
159 ShowWindow(hServicesPage
, SW_HIDE
);
160 BringWindowToTop(hSystemPage
);
163 ShowWindow(hGeneralPage
, SW_HIDE
);
164 ShowWindow(hSystemPage
, SW_HIDE
);
165 ShowWindow(hFreeLdrPage
, SW_SHOW
);
166 ShowWindow(hServicesPage
, SW_HIDE
);
167 ShowWindow(hStartupPage
, SW_HIDE
);
168 ShowWindow(hToolsPage
, SW_HIDE
);
169 BringWindowToTop(hFreeLdrPage
);
172 ShowWindow(hGeneralPage
, SW_HIDE
);
173 ShowWindow(hSystemPage
, SW_HIDE
);
174 ShowWindow(hFreeLdrPage
, SW_HIDE
);
175 ShowWindow(hServicesPage
, SW_SHOW
);
176 ShowWindow(hStartupPage
, SW_HIDE
);
177 ShowWindow(hToolsPage
, SW_HIDE
);
178 BringWindowToTop(hServicesPage
);
181 ShowWindow(hGeneralPage
, SW_HIDE
);
182 ShowWindow(hSystemPage
, SW_HIDE
);
183 ShowWindow(hFreeLdrPage
, SW_HIDE
);
184 ShowWindow(hServicesPage
, SW_HIDE
);
185 ShowWindow(hStartupPage
, SW_SHOW
);
186 ShowWindow(hToolsPage
, SW_HIDE
);
187 BringWindowToTop(hStartupPage
);
190 ShowWindow(hGeneralPage
, SW_HIDE
);
191 ShowWindow(hSystemPage
, SW_HIDE
);
192 ShowWindow(hFreeLdrPage
, SW_HIDE
);
193 ShowWindow(hServicesPage
, SW_HIDE
);
194 ShowWindow(hStartupPage
, SW_HIDE
);
195 ShowWindow(hToolsPage
, SW_SHOW
);
196 BringWindowToTop(hToolsPage
);
204 SetDialogIcon(HWND hDlg
)
206 if (hDialogIcon
) DestroyIcon(hDialogIcon
);
208 hDialogIcon
= LoadImage(GetModuleHandle(NULL
),
209 MAKEINTRESOURCE(IDI_APPICON
),
217 (LPARAM
)hDialogIcon
);
221 /* Message handler for dialog box. */
223 MsConfigWndProc(HWND hDlg
, UINT message
, WPARAM wParam
, LPARAM lParam
)
226 UINT uXIconNew
, uYIconNew
;
233 uXIcon
= GetSystemMetrics(SM_CXSMICON
);
234 uYIcon
= GetSystemMetrics(SM_CYSMICON
);
238 return OnCreate(hDlg
);
240 case WM_SETTINGCHANGE
:
241 uXIconNew
= GetSystemMetrics(SM_CXSMICON
);
242 uYIconNew
= GetSystemMetrics(SM_CYSMICON
);
244 if ((uXIcon
!= uXIconNew
) || (uYIcon
!= uYIconNew
))
254 if (LOWORD(wParam
) == IDOK
)
256 //MsConfig_OnSaveChanges();
259 if (LOWORD(wParam
) == IDOK
|| LOWORD(wParam
) == IDCANCEL
) {
260 EndDialog(hDlg
, LOWORD(wParam
));
266 pnmh
= (LPNMHDR
)lParam
;
267 if ((pnmh
->hwndFrom
== hTabWnd
) &&
268 (pnmh
->idFrom
== IDC_TAB
) &&
269 (pnmh
->code
== TCN_SELCHANGE
))
271 MsConfig_OnTabWndSelChange();
275 case WM_SYSCOLORCHANGE
:
276 /* Forward WM_SYSCOLORCHANGE to common controls */
277 SendMessage(hServicesListCtrl
, WM_SYSCOLORCHANGE
, 0, 0);
278 SendMessage(hStartupListCtrl
, WM_SYSCOLORCHANGE
, 0, 0);
279 SendMessage(hToolsListCtrl
, WM_SYSCOLORCHANGE
, 0, 0);
284 DestroyWindow(hToolsPage
);
286 DestroyWindow(hGeneralPage
);
288 DestroyWindow(hServicesPage
);
290 DestroyWindow(hStartupPage
);
292 DestroyWindow(hFreeLdrPage
);
294 DestroyWindow(hSystemPage
);
296 DestroyIcon(hDialogIcon
);
297 return DefWindowProc(hDlg
, message
, wParam
, lParam
);
303 int APIENTRY
_tWinMain(HINSTANCE hInstance
,
304 HINSTANCE hPrevInstance
,
309 INITCOMMONCONTROLSEX InitControls
;
311 UNREFERENCED_PARAMETER(hPrevInstance
);
312 UNREFERENCED_PARAMETER(lpCmdLine
);
313 UNREFERENCED_PARAMETER(nCmdShow
);
315 InitControls
.dwSize
= sizeof(INITCOMMONCONTROLSEX
);
316 InitControls
.dwICC
= ICC_TAB_CLASSES
| ICC_LISTVIEW_CLASSES
;
317 InitCommonControlsEx(&InitControls
);
321 DialogBox(hInst
, (LPCTSTR
)IDD_MSCONFIG_DIALOG
, NULL
, MsConfigWndProc
);