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