Partially fixed up tree after merge from HEAD. More to do.
[reactos.git] / reactos / base / applications / msconfig / msconfig.c
1 /*
2 * PROJECT: ReactOS Applications
3 * LICENSE: GPL - 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>
7 *
8 */
9 #include <precomp.h>
10
11 HINSTANCE hInst = 0;
12
13 HWND hMainWnd; /* Main Window */
14 HWND hTabWnd; /* Tab Control Window */
15
16 void MsConfig_OnTabWndSelChange(void);
17
18 BOOL OnCreate(HWND hWnd)
19 {
20 TCHAR szTemp[256];
21 TCITEM item;
22
23 hTabWnd = GetDlgItem(hWnd, IDC_TAB);
24 hGeneralPage = CreateDialog(hInst, MAKEINTRESOURCE(IDD_GENERAL_PAGE), hWnd, (DLGPROC) GeneralPageWndProc);
25 hSystemPage = CreateDialog(hInst, MAKEINTRESOURCE(IDD_SYSTEM_PAGE), hWnd, (DLGPROC) SystemPageWndProc);
26 hFreeLdrPage = CreateDialog(hInst, MAKEINTRESOURCE(IDD_FREELDR_PAGE), hWnd, (DLGPROC) FreeLdrPageWndProc);
27 hServicesPage = CreateDialog(hInst, MAKEINTRESOURCE(IDD_SERVICES_PAGE), hWnd, (DLGPROC) ServicesPageWndProc);
28 hStartupPage = CreateDialog(hInst, MAKEINTRESOURCE(IDD_STARTUP_PAGE), hWnd, (DLGPROC) StartupPageWndProc);
29 hToolsPage = CreateDialog(hInst, MAKEINTRESOURCE(IDD_TOOLS_PAGE), hWnd, (DLGPROC) ToolsPageWndProc);
30
31 LoadString(hInst, IDS_MSCONFIG, szTemp, 256);
32 SetWindowText(hWnd, szTemp);
33
34 // Insert Tab Pages
35 LoadString(hInst, IDS_TAB_GENERAL, szTemp, 256);
36 memset(&item, 0, sizeof(TCITEM));
37 item.mask = TCIF_TEXT;
38 item.pszText = szTemp;
39 (void)TabCtrl_InsertItem(hTabWnd, 0, &item);
40
41 LoadString(hInst, IDS_TAB_SYSTEM, szTemp, 256);
42 memset(&item, 0, sizeof(TCITEM));
43 item.mask = TCIF_TEXT;
44 item.pszText = szTemp;
45 (void)TabCtrl_InsertItem(hTabWnd, 1, &item);
46
47 LoadString(hInst, IDS_TAB_FREELDR, szTemp, 256);
48 memset(&item, 0, sizeof(TCITEM));
49 item.mask = TCIF_TEXT;
50 item.pszText = szTemp;
51 (void)TabCtrl_InsertItem(hTabWnd, 2, &item);
52
53 LoadString(hInst, IDS_TAB_SERVICES, szTemp, 256);
54 memset(&item, 0, sizeof(TCITEM));
55 item.mask = TCIF_TEXT;
56 item.pszText = szTemp;
57 (void)TabCtrl_InsertItem(hTabWnd, 3, &item);
58
59 LoadString(hInst, IDS_TAB_STARTUP, szTemp, 256);
60 memset(&item, 0, sizeof(TCITEM));
61 item.mask = TCIF_TEXT;
62 item.pszText = szTemp;
63 (void)TabCtrl_InsertItem(hTabWnd, 4, &item);
64
65 LoadString(hInst, IDS_TAB_TOOLS, szTemp, 256);
66 memset(&item, 0, sizeof(TCITEM));
67 item.mask = TCIF_TEXT;
68 item.pszText = szTemp;
69 (void)TabCtrl_InsertItem(hTabWnd, 5, &item);
70
71 MsConfig_OnTabWndSelChange();
72
73 return TRUE;
74 }
75
76
77 void MsConfig_OnTabWndSelChange(void)
78 {
79 switch (TabCtrl_GetCurSel(hTabWnd)) {
80 case 0: //General
81 ShowWindow(hGeneralPage, SW_SHOW);
82 ShowWindow(hSystemPage, SW_HIDE);
83 ShowWindow(hFreeLdrPage, SW_HIDE);
84 ShowWindow(hServicesPage, SW_HIDE);
85 ShowWindow(hStartupPage, SW_HIDE);
86 ShowWindow(hToolsPage, SW_HIDE);
87 BringWindowToTop(hGeneralPage);
88 break;
89 case 1: //SYSTEM.INI
90 ShowWindow(hGeneralPage, SW_HIDE);
91 ShowWindow(hSystemPage, SW_SHOW);
92 ShowWindow(hToolsPage, SW_HIDE);
93 ShowWindow(hStartupPage, SW_HIDE);
94 ShowWindow(hFreeLdrPage, SW_HIDE);
95 ShowWindow(hServicesPage, SW_HIDE);
96 BringWindowToTop(hSystemPage);
97 break;
98 case 2: //Freeldr
99 ShowWindow(hGeneralPage, SW_HIDE);
100 ShowWindow(hSystemPage, SW_HIDE);
101 ShowWindow(hFreeLdrPage, SW_SHOW);
102 ShowWindow(hServicesPage, SW_HIDE);
103 ShowWindow(hStartupPage, SW_HIDE);
104 ShowWindow(hToolsPage, SW_HIDE);
105 BringWindowToTop(hFreeLdrPage);
106 break;
107 case 3: //Services
108 ShowWindow(hGeneralPage, SW_HIDE);
109 ShowWindow(hSystemPage, SW_HIDE);
110 ShowWindow(hFreeLdrPage, SW_HIDE);
111 ShowWindow(hServicesPage, SW_SHOW);
112 ShowWindow(hStartupPage, SW_HIDE);
113 ShowWindow(hToolsPage, SW_HIDE);
114 BringWindowToTop(hServicesPage);
115 break;
116 case 4: //startup
117 ShowWindow(hGeneralPage, SW_HIDE);
118 ShowWindow(hSystemPage, SW_HIDE);
119 ShowWindow(hFreeLdrPage, SW_HIDE);
120 ShowWindow(hServicesPage, SW_HIDE);
121 ShowWindow(hStartupPage, SW_SHOW);
122 ShowWindow(hToolsPage, SW_HIDE);
123 BringWindowToTop(hStartupPage);
124 break;
125 case 5: //Tools
126 ShowWindow(hGeneralPage, SW_HIDE);
127 ShowWindow(hSystemPage, SW_HIDE);
128 ShowWindow(hFreeLdrPage, SW_HIDE);
129 ShowWindow(hServicesPage, SW_HIDE);
130 ShowWindow(hStartupPage, SW_HIDE);
131 ShowWindow(hToolsPage, SW_SHOW);
132 BringWindowToTop(hToolsPage);
133 break;
134 }
135 }
136
137
138 /* Message handler for dialog box. */
139 INT_PTR CALLBACK
140 MsConfigWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
141 {
142 int idctrl;
143 LPNMHDR pnmh;
144
145 switch (message)
146 {
147 case WM_INITDIALOG:
148 hMainWnd = hDlg;
149 return OnCreate(hDlg);
150
151 case WM_COMMAND:
152
153 if (LOWORD(wParam) == IDOK)
154 {
155 //MsConfig_OnSaveChanges();
156 }
157
158 if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) {
159 EndDialog(hDlg, LOWORD(wParam));
160 return TRUE;
161 }
162 break;
163
164 case WM_NOTIFY:
165 idctrl = (int)wParam;
166 pnmh = (LPNMHDR)lParam;
167 if ((pnmh->hwndFrom == hTabWnd) &&
168 (pnmh->idFrom == IDC_TAB) &&
169 (pnmh->code == TCN_SELCHANGE))
170 {
171 MsConfig_OnTabWndSelChange();
172 }
173 break;
174
175 case WM_DESTROY:
176 DestroyWindow(hToolsPage);
177 DestroyWindow(hGeneralPage);
178 DestroyWindow(hServicesPage);
179 DestroyWindow(hStartupPage);
180 DestroyWindow(hFreeLdrPage);
181 DestroyWindow(hSystemPage);
182 return DefWindowProc(hDlg, message, wParam, lParam);
183 }
184
185 return 0;
186 }
187
188 int APIENTRY WinMain(HINSTANCE hInstance,
189 HINSTANCE hPrevInstance,
190 LPSTR lpCmdLine,
191 int nCmdShow)
192 {
193
194 INITCOMMONCONTROLSEX InitControls;
195
196 UNREFERENCED_PARAMETER(hPrevInstance);
197 UNREFERENCED_PARAMETER(lpCmdLine);
198 UNREFERENCED_PARAMETER(nCmdShow);
199
200 InitControls.dwSize = sizeof(INITCOMMONCONTROLSEX);
201 InitControls.dwICC = ICC_TAB_CLASSES | ICC_LISTVIEW_CLASSES;
202 InitCommonControlsEx(&InitControls);
203
204 hInst = hInstance;
205
206 DialogBox(hInst, (LPCTSTR)IDD_MSCONFIG_DIALOG, NULL, (DLGPROC) MsConfigWndProc);
207
208 return 0;
209 }
210
211 /* EOF */