ReactOS 0.4.16-dev-1506-g117cd33
msconfig.c
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS Applications
3 * LICENSE: LGPL - See COPYING in the top level directory
4 * FILE: base/applications/msconfig/msconfig.c
5 * PURPOSE: msconfig main dialog
6 * COPYRIGHT: Copyright 2005-2006 Christoph von Wittich <Christoph@ApiViewer.de>
7 *
8 */
9
10#include "precomp.h"
11
12#include "toolspage.h"
13#include "srvpage.h"
14#include "startuppage.h"
15#include "freeldrpage.h"
16#include "systempage.h"
17#include "generalpage.h"
18
20
21HWND hMainWnd; /* Main Window */
22HWND hTabWnd; /* Tab Control Window */
23UINT uXIcon = 0, uYIcon = 0; /* Icon sizes */
26
28
30// Taken from WinSpy++ 1.7
31// http://www.catch22.net/software/winspy
32// Copyright (c) 2002 by J Brown
33//
34
35//
36// Copied from uxtheme.h
37// If you have this new header, then delete these and
38// #include <uxtheme.h> instead!
39//
40#define ETDT_DISABLE 0x00000001
41#define ETDT_ENABLE 0x00000002
42#define ETDT_USETABTEXTURE 0x00000004
43#define ETDT_ENABLETAB (ETDT_ENABLE | ETDT_USETABTEXTURE)
44
45//
47
48//
49// Try to call EnableThemeDialogTexture, if uxtheme.dll is present
50//
52{
53 HMODULE hUXTheme;
55
56 hUXTheme = LoadLibrary(_T("uxtheme.dll"));
57
58 if(hUXTheme)
59 {
61 (ETDTProc)GetProcAddress(hUXTheme, "EnableThemeDialogTexture");
62
64 {
66
67 FreeLibrary(hUXTheme);
68 return TRUE;
69 }
70 else
71 {
72 // Failed to locate API!
73 FreeLibrary(hUXTheme);
74 return FALSE;
75 }
76 }
77 else
78 {
79 // Not running under XP? Just fail gracefully
80 return FALSE;
81 }
82}
83
84VOID DisableAllExcept(HWND hTabDlg, UINT idExcept)
85{
86 HWND hSkip = GetDlgItem(hTabDlg, idExcept);
87 for (HWND hWnd = NULL; (hWnd = FindWindowExW(hTabDlg, hWnd, NULL, NULL)) != NULL;)
88 EnableWindow(hWnd, hWnd == hSkip);
89}
90
92{
93 TCHAR szTemp[256];
95
103
104 LoadString(hInst, IDS_MSCONFIG, szTemp, 256);
105 SetWindowText(hWnd, szTemp);
106
107 // Insert Tab Pages
108 LoadString(hInst, IDS_TAB_GENERAL, szTemp, 256);
109 memset(&item, 0, sizeof(TCITEM));
110 item.mask = TCIF_TEXT;
111 item.pszText = szTemp;
113
114 LoadString(hInst, IDS_TAB_SYSTEM, szTemp, 256);
115 memset(&item, 0, sizeof(TCITEM));
116 item.mask = TCIF_TEXT;
117 item.pszText = szTemp;
119
120 LoadString(hInst, IDS_TAB_FREELDR, szTemp, 256);
121 memset(&item, 0, sizeof(TCITEM));
122 item.mask = TCIF_TEXT;
123 item.pszText = szTemp;
125
126 LoadString(hInst, IDS_TAB_SERVICES, szTemp, 256);
127 memset(&item, 0, sizeof(TCITEM));
128 item.mask = TCIF_TEXT;
129 item.pszText = szTemp;
131
132 LoadString(hInst, IDS_TAB_STARTUP, szTemp, 256);
133 memset(&item, 0, sizeof(TCITEM));
134 item.mask = TCIF_TEXT;
135 item.pszText = szTemp;
137
138 LoadString(hInst, IDS_TAB_TOOLS, szTemp, 256);
139 memset(&item, 0, sizeof(TCITEM));
140 item.mask = TCIF_TEXT;
141 item.pszText = szTemp;
143
145
146 // FIXME: We don't support applying anything
150 return TRUE;
151}
152
153
155{
156 switch (TabCtrl_GetCurSel(hTabWnd)) {
157 case 0: //General
165 break;
166 case 1: //SYSTEM.INI
174 break;
175 case 2: //Freeldr
183 break;
184 case 3: //Services
192 break;
193 case 4: //startup
201 break;
202 case 5: //Tools
210 break;
211 }
212}
213
214
215static
216VOID
218{
221
227 uXIcon,
228 uYIcon,
229 0);
230 SendMessage(hDlg,
231 WM_SETICON,
232 ICON_BIG,
234 SendMessage(hDlg,
235 WM_SETICON,
238}
239
240
241/* Message handler for dialog box. */
244{
245 LPNMHDR pnmh;
246 UINT uXIconNew, uYIconNew;
247
248 switch (message)
249 {
250 case WM_INITDIALOG:
251 hMainWnd = hDlg;
252
255
256 SetDialogIcon(hDlg);
257
258 return OnCreate(hDlg);
259
260 case WM_SETTINGCHANGE:
261 uXIconNew = GetSystemMetrics(SM_CXSMICON);
262 uYIconNew = GetSystemMetrics(SM_CYSMICON);
263
264 if ((uXIcon != uXIconNew) || (uYIcon != uYIconNew))
265 {
266 uXIcon = uXIconNew;
267 uYIcon = uYIconNew;
268 SetDialogIcon(hDlg);
269 }
270 break;
271
272 case WM_COMMAND:
273
274 if (LOWORD(wParam) == IDOK)
275 {
276 //MsConfig_OnSaveChanges();
277 }
278
279 if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) {
280 EndDialog(hDlg, LOWORD(wParam));
281 return TRUE;
282 }
283 break;
284
285 case WM_NOTIFY:
286 pnmh = (LPNMHDR)lParam;
287 if ((pnmh->hwndFrom == hTabWnd) &&
288 (pnmh->idFrom == IDC_TAB) &&
289 (pnmh->code == TCN_SELCHANGE))
290 {
292 }
293 break;
294
296 /* Forward WM_SYSCOLORCHANGE to common controls */
300 break;
301
302 case WM_DESTROY:
303 if (hToolsPage)
305 if (hGeneralPage)
307 if (hServicesPage)
309 if (hStartupPage)
311 if (hFreeLdrPage)
313 if (hSystemPage)
315 if (hDialogIconBig)
319 return DefWindowProc(hDlg, message, wParam, lParam);
320 }
321
322 return 0;
323}
324
326 HINSTANCE hPrevInstance,
327 LPTSTR lpCmdLine,
328 int nCmdShow)
329{
330
332
333 UNREFERENCED_PARAMETER(hPrevInstance);
334 UNREFERENCED_PARAMETER(lpCmdLine);
335 UNREFERENCED_PARAMETER(nCmdShow);
336
337 InitControls.dwSize = sizeof(INITCOMMONCONTROLSEX);
340
342
344
345 return 0;
346}
347
348/* EOF */
HWND hWnd
Definition: settings.c:17
INT_PTR CALLBACK SystemPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
Definition: system.c:393
#define IDI_APPICON
Definition: resource.h:166
#define IDD_GENERAL_PAGE
Definition: resource.h:6
#define IDS_TAB_TOOLS
Definition: resource.h:72
#define IDD_FREELDR_PAGE
Definition: resource.h:8
#define IDC_TAB
Definition: resource.h:12
#define IDD_TOOLS_PAGE
Definition: resource.h:4
#define IDC_BTN_APPLY
Definition: resource.h:13
#define IDS_TAB_FREELDR
Definition: resource.h:74
#define IDD_STARTUP_PAGE
Definition: resource.h:7
#define IDD_MSCONFIG_DIALOG
Definition: resource.h:3
#define IDS_TAB_STARTUP
Definition: resource.h:75
#define IDD_SERVICES_PAGE
Definition: resource.h:5
#define IDD_SYSTEM_PAGE
Definition: resource.h:9
#define IDC_BTN_HELP
Definition: resource.h:14
#define IDS_MSCONFIG
Definition: resource.h:114
#define IDS_TAB_GENERAL
Definition: resource.h:77
#define IDS_TAB_SERVICES
Definition: resource.h:76
#define IDS_TAB_SYSTEM
Definition: resource.h:73
HINSTANCE hInstance
Definition: charmap.c:19
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
BOOL WINAPI InitCommonControlsEx(const INITCOMMONCONTROLSEX *lpInitCtrls)
Definition: commctrl.c:904
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define APIENTRY
Definition: api.h:79
HANDLE HWND
Definition: compat.h:19
#define GetProcAddress(x, y)
Definition: compat.h:753
#define FreeLibrary(x)
Definition: compat.h:748
#define CALLBACK
Definition: compat.h:35
unsigned int BOOL
Definition: ntddk_ex.h:94
#define _tWinMain
Definition: tchar.h:498
static HICON
Definition: imagelist.c:80
static VOID InitControls(HWND hwnd)
Definition: mplay32.c:303
HWND hFreeLdrPage
Definition: freeldrpage.c:12
INT_PTR CALLBACK FreeLdrPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
Definition: freeldrpage.c:134
HWND hGeneralPage
Definition: generalpage.c:12
INT_PTR CALLBACK GeneralPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
Definition: generalpage.c:25
HRESULT(WINAPI * ETDTProc)(HWND, DWORD)
Definition: msconfig.c:46
#define ETDT_ENABLETAB
Definition: msconfig.c:43
BOOL OnCreate(HWND hWnd)
Definition: msconfig.c:91
INT_PTR CALLBACK MsConfigWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
Definition: msconfig.c:243
HINSTANCE hInst
Definition: msconfig.c:19
HICON hDialogIconSmall
Definition: msconfig.c:25
BOOL EnableDialogTheme(HWND hwnd)
Definition: msconfig.c:51
HWND hMainWnd
Definition: msconfig.c:21
UINT uYIcon
Definition: msconfig.c:23
void MsConfig_OnTabWndSelChange(void)
Definition: msconfig.c:154
UINT uXIcon
Definition: msconfig.c:23
VOID DisableAllExcept(HWND hTabDlg, UINT idExcept)
Definition: msconfig.c:84
HICON hDialogIconBig
Definition: msconfig.c:24
HWND hTabWnd
Definition: msconfig.c:22
static VOID SetDialogIcon(HWND hDlg)
Definition: msconfig.c:217
HWND hStartupListCtrl
Definition: startuppage.c:13
HWND hStartupPage
Definition: startuppage.c:12
INT_PTR CALLBACK StartupPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
Definition: startuppage.c:20
HWND hSystemPage
Definition: systempage.c:12
unsigned int UINT
Definition: ndis.h:50
#define DWORD
Definition: nt_native.h:44
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:329
#define MAKEINTRESOURCE(i)
Definition: ntverrsrc.c:25
#define LOWORD(l)
Definition: pedump.c:82
#define TabCtrl_GetCurSel(hwnd)
Definition: commctrl.h:4068
struct tagINITCOMMONCONTROLSEX INITCOMMONCONTROLSEX
#define TCITEM
Definition: commctrl.h:4034
#define ICC_TAB_CLASSES
Definition: commctrl.h:61
#define TabCtrl_InsertItem(hwnd, iItem, pitem)
Definition: commctrl.h:4056
#define TCN_SELCHANGE
Definition: commctrl.h:4137
#define TCIF_TEXT
Definition: commctrl.h:3976
#define ICC_LISTVIEW_CLASSES
Definition: commctrl.h:58
#define WM_NOTIFY
Definition: richedit.h:61
#define DefWindowProc
Definition: ros2win.h:31
#define memset(x, y, z)
Definition: compat.h:39
HWND hServicesListCtrl
Definition: srvpage.c:16
HWND hServicesPage
Definition: srvpage.c:15
INT_PTR CALLBACK ServicesPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
Definition: srvpage.c:22
Definition: tftpd.h:60
UINT_PTR idFrom
Definition: winuser.h:3260
UINT code
Definition: winuser.h:3261
HWND hwndFrom
Definition: winuser.h:3259
#define ICON_BIG
Definition: tnclass.cpp:51
#define ICON_SMALL
Definition: tnclass.cpp:48
HWND hToolsPage
Definition: toolspage.c:14
INT_PTR CALLBACK ToolsPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
Definition: toolspage.c:56
HWND hToolsListCtrl
Definition: toolspage.c:15
int32_t INT_PTR
Definition: typedefs.h:64
static ETDTProc fnEnableThemeDialogTexture
Definition: uxthemesupp.c:15
#define _T(x)
Definition: vfdio.h:22
#define LoadLibrary
Definition: winbase.h:3903
#define GetModuleHandle
Definition: winbase.h:3868
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
LONG_PTR LPARAM
Definition: windef.h:208
UINT_PTR WPARAM
Definition: windef.h:207
#define HRESULT
Definition: msvc.h:7
#define WINAPI
Definition: msvc.h:6
#define SW_HIDE
Definition: winuser.h:779
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define IDCANCEL
Definition: winuser.h:842
#define IMAGE_ICON
Definition: winuser.h:212
#define WM_COMMAND
Definition: winuser.h:1768
#define CreateDialog
Definition: winuser.h:5860
#define SM_CYSMICON
Definition: winuser.h:1024
#define WM_INITDIALOG
Definition: winuser.h:1767
#define WM_SYSCOLORCHANGE
Definition: winuser.h:1654
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define IDOK
Definition: winuser.h:841
#define WM_SETTINGCHANGE
Definition: winuser.h:1657
HWND WINAPI FindWindowExW(_In_opt_ HWND, _In_opt_ HWND, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR)
#define SM_CXSMICON
Definition: winuser.h:1023
struct tagNMHDR * LPNMHDR
#define SendMessage
Definition: winuser.h:5954
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
#define LoadImage
Definition: winuser.h:5926
#define LoadString
Definition: winuser.h:5930
#define SW_SHOW
Definition: winuser.h:786
#define WM_DESTROY
Definition: winuser.h:1637
#define SetWindowText
Definition: winuser.h:5968
BOOL WINAPI DestroyWindow(_In_ HWND)
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE hInstance, _In_ LPCWSTR lpIconName)
Definition: cursoricon.c:2427
int WINAPI GetSystemMetrics(_In_ int)
BOOL WINAPI BringWindowToTop(_In_ HWND)
#define DialogBox
Definition: winuser.h:5872
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
BOOL WINAPI DestroyIcon(_In_ HICON)
Definition: cursoricon.c:2405
char TCHAR
Definition: xmlstorage.h:189
const CHAR * LPCTSTR
Definition: xmlstorage.h:193
CHAR * LPTSTR
Definition: xmlstorage.h:192