3 #include <syssetup/syssetup.h>
6 #define NETWORK_SETUP_MAGIC 0x50515253
8 typedef struct _NETWORKSETUPDATA
11 BOOL bTypicalNetworkSetup
;
14 PSETUPDATA pSetupData
;
15 } NETWORKSETUPDATA
, *PNETWORKSETUPDATA
;
26 PSETUPDATA pSetupData
)
28 SendDlgItemMessageW(hwndDlg
, control
, WM_SETFONT
, (WPARAM
)pSetupData
->hBoldFont
, MAKELPARAM(TRUE
, 0));
34 NetworkSettingsPageDlgProc(
40 PNETWORKSETUPDATA pNetworkSetupData
;
41 PSETUPDATA pSetupData
;
44 /* Retrieve pointer to the global setup data */
45 pNetworkSetupData
= (PNETWORKSETUPDATA
)GetWindowLongPtr(hwndDlg
, GWLP_USERDATA
);
46 if ((pNetworkSetupData
!= NULL
) &&
47 (pNetworkSetupData
->dwMagic
== NETWORK_SETUP_MAGIC
))
48 pSetupData
= pNetworkSetupData
->pSetupData
;
53 /* Save pointer to the global setup data */
54 pNetworkSetupData
= (PNETWORKSETUPDATA
)((LPPROPSHEETPAGE
)lParam
)->lParam
;
55 SetWindowLongPtr(hwndDlg
, GWLP_USERDATA
, (DWORD_PTR
)pNetworkSetupData
);
56 pSetupData
= pNetworkSetupData
->pSetupData
;
58 /* Set the fonts of both the options to bold */
59 SetBoldText(hwndDlg
, IDC_NETWORK_TYPICAL
, pSetupData
);
60 SetBoldText(hwndDlg
, IDC_NETWORK_CUSTOM
, pSetupData
);
62 /* Set the typical settings option as the default */
63 SendDlgItemMessage(hwndDlg
, IDC_NETWORK_TYPICAL
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, 0);
65 if (pSetupData
->UnattendSetup
)
72 /* ATTENTION: Free pNetworkSetupData only in one of the page functions!!! */
77 lpnm
= (LPNMHDR
)lParam
;
82 /* Enable the Back and Next buttons */
83 PropSheet_SetWizButtons(GetParent(hwndDlg
), PSWIZB_BACK
| PSWIZB_NEXT
);
84 if (pSetupData
->UnattendSetup
)
86 SetWindowLongPtr(hwndDlg
, DWLP_MSGRESULT
, IDD_NETWORKCOMPONENTPAGE
);
92 pNetworkSetupData
->bTypicalNetworkSetup
= FALSE
;
94 /* If the Typical Settings button is chosen, then skip to the Domain Page */
95 if (IsDlgButtonChecked(hwndDlg
, IDC_NETWORK_TYPICAL
) == BST_CHECKED
)
97 pNetworkSetupData
->bTypicalNetworkSetup
= TRUE
;
98 SetWindowLongPtr(hwndDlg
, DWLP_MSGRESULT
, IDD_NETWORKDOMAINPAGE
);
104 pSetupData
->UnattendSetup
= FALSE
;
119 NetworkComponentPageDlgProc(
125 PNETWORKSETUPDATA pNetworkSetupData
;
126 PSETUPDATA pSetupData
;
129 /* Retrieve pointer to the global setup data */
130 pNetworkSetupData
= (PNETWORKSETUPDATA
)GetWindowLongPtr(hwndDlg
, GWLP_USERDATA
);
131 if ((pNetworkSetupData
!= NULL
) &&
132 (pNetworkSetupData
->dwMagic
== NETWORK_SETUP_MAGIC
))
133 pSetupData
= pNetworkSetupData
->pSetupData
;
138 /* Save pointer to the global setup data */
139 pNetworkSetupData
= (PNETWORKSETUPDATA
)((LPPROPSHEETPAGE
)lParam
)->lParam
;
140 SetWindowLongPtr(hwndDlg
, GWLP_USERDATA
, (DWORD_PTR
)pNetworkSetupData
);
141 pSetupData
= pNetworkSetupData
->pSetupData
;
143 SetBoldText(hwndDlg
, IDC_NETWORK_DEVICE
, pSetupData
);
145 if (pSetupData
->UnattendSetup
)
152 /* ATTENTION: Free pNetworkSetupData only in one of the page functions!!! */
157 lpnm
= (LPNMHDR
)lParam
;
162 /* Enable the Back and Next buttons */
163 PropSheet_SetWizButtons(GetParent(hwndDlg
), PSWIZB_BACK
| PSWIZB_NEXT
);
164 if (pSetupData
->UnattendSetup
)
166 SetWindowLongPtr(hwndDlg
, DWLP_MSGRESULT
, IDD_NETWORKDOMAINPAGE
);
172 pSetupData
->UnattendSetup
= FALSE
;
187 NetworkDomainPageDlgProc(
193 PNETWORKSETUPDATA pNetworkSetupData
;
194 PSETUPDATA pSetupData
;
195 WCHAR DomainName
[51];
197 WCHAR ErrorName
[256];
200 /* Retrieve pointer to the global setup data */
201 pNetworkSetupData
= (PNETWORKSETUPDATA
)GetWindowLongPtr(hwndDlg
, GWLP_USERDATA
);
202 if ((pNetworkSetupData
!= NULL
) &&
203 (pNetworkSetupData
->dwMagic
== NETWORK_SETUP_MAGIC
))
204 pSetupData
= pNetworkSetupData
->pSetupData
;
209 /* Save pointer to the global setup data */
210 pNetworkSetupData
= (PNETWORKSETUPDATA
)((LPPROPSHEETPAGE
)lParam
)->lParam
;
211 SetWindowLongPtr(hwndDlg
, GWLP_USERDATA
, (DWORD_PTR
)pNetworkSetupData
);
212 pSetupData
= pNetworkSetupData
->pSetupData
;
214 /* Set the workgroup option as the default */
215 SendDlgItemMessage(hwndDlg
, IDC_SELECT_WORKGROUP
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, 0);
217 wcscpy(DomainName
, L
"WORKGROUP");
219 /* Display current computer name */
220 SetDlgItemTextW(hwndDlg
, IDC_DOMAIN_NAME
, DomainName
);
222 /* Set focus to owner name */
223 SetFocus(GetDlgItem(hwndDlg
, IDC_DOMAIN_NAME
));
225 if (pSetupData
->UnattendSetup
)
233 /* ATTENTION: Free pNetworkSetupData only in one of the page functions!!! */
234 if (pNetworkSetupData
!= NULL
)
236 if ((!IsBadReadPtr(pNetworkSetupData
, sizeof(NETWORKSETUPDATA
))) &&
237 (pNetworkSetupData
->dwMagic
== NETWORK_SETUP_MAGIC
))
238 HeapFree(GetProcessHeap(), 0, pNetworkSetupData
);
240 SetWindowLongPtr(hwndDlg
, GWLP_USERDATA
, (DWORD_PTR
)NULL
);
245 lpnm
= (LPNMHDR
)lParam
;
250 /* Enable the Back and Next buttons */
251 PropSheet_SetWizButtons(GetParent(hwndDlg
), PSWIZB_BACK
| PSWIZB_NEXT
);
252 if (pSetupData
->UnattendSetup
)
254 SetWindowLongPtr(hwndDlg
, DWLP_MSGRESULT
, pSetupData
->uPostNetworkWizardPage
);
261 if (GetDlgItemTextW(hwndDlg
, IDC_DOMAIN_NAME
, DomainName
, 50) == 0)
263 if (0 == LoadStringW(netshell_hInstance
, IDS_REACTOS_SETUP
, Title
, sizeof(Title
) / sizeof(Title
[0])))
265 wcscpy(Title
, L
"ReactOS Setup");
267 if (0 == LoadStringW(netshell_hInstance
, IDS_WZD_DOMAIN_NAME
, ErrorName
, sizeof(ErrorName
) / sizeof(ErrorName
[0])))
269 wcscpy(ErrorName
, L
"Setup cannot continue until you\nenter the name of your domain/workgroup.");
271 MessageBoxW(hwndDlg
, ErrorName
, Title
, MB_ICONERROR
| MB_OK
);
273 SetFocus(GetDlgItem(hwndDlg
, IDC_DOMAIN_NAME
));
274 SetWindowLongPtr(hwndDlg
, DWLP_MSGRESULT
, -1);
276 //TODO: Implement setting the Domain/Workgroup
283 pSetupData
->UnattendSetup
= FALSE
;
285 /* If the Typical setup chosen, then skip back to the Settings Page */
286 if (pNetworkSetupData
->bTypicalNetworkSetup
== TRUE
)
288 SetWindowLongPtr(hwndDlg
, DWLP_MSGRESULT
, IDD_NETWORKSETTINGSPAGE
);
305 NetSetupRequestWizardPages(
307 HPROPSHEETPAGE
*pPages
,
308 PSETUPDATA pSetupData
)
310 PNETWORKSETUPDATA pNetworkSetupData
;
311 PROPSHEETPAGE psp
= {0};
312 DWORD dwPageCount
= 3;
315 if (pPageCount
== NULL
)
316 return ERROR_INVALID_PARAMETER
;
320 *pPageCount
= dwPageCount
;
321 return ERROR_SUCCESS
;
324 if (*pPageCount
< dwPageCount
)
325 return ERROR_BUFFER_OVERFLOW
;
327 pSetupData
->uFirstNetworkWizardPage
= IDD_NETWORKSETTINGSPAGE
;
329 pNetworkSetupData
= (PNETWORKSETUPDATA
)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, sizeof(NETWORKSETUPDATA
));
330 if (pNetworkSetupData
== NULL
)
331 return ERROR_OUTOFMEMORY
;
333 pNetworkSetupData
->dwMagic
= NETWORK_SETUP_MAGIC
;
334 pNetworkSetupData
->pSetupData
= pSetupData
;
337 /* Create the Network Settings page */
338 psp
.dwSize
= sizeof(PROPSHEETPAGE
);
339 psp
.hInstance
= netshell_hInstance
;
340 psp
.lParam
= (LPARAM
)pNetworkSetupData
;
342 psp
.dwFlags
= PSP_DEFAULT
| PSP_USEHEADERTITLE
| PSP_USEHEADERSUBTITLE
;
343 psp
.pszHeaderTitle
= MAKEINTRESOURCE(IDS_NETWORKSETTINGSTITLE
);
344 psp
.pszHeaderSubTitle
= MAKEINTRESOURCE(IDS_NETWORKSETTINGSSUBTITLE
);
345 psp
.pfnDlgProc
= NetworkSettingsPageDlgProc
;
346 psp
.pszTemplate
= MAKEINTRESOURCE(IDD_NETWORKSETTINGSPAGE
);
347 pPages
[nPage
++] = CreatePropertySheetPage(&psp
);
349 /* Create the Network Components page */
350 psp
.dwFlags
= PSP_DEFAULT
| PSP_USEHEADERTITLE
| PSP_USEHEADERSUBTITLE
;
351 psp
.pszHeaderTitle
= MAKEINTRESOURCE(IDS_NETWORKCOMPONENTTITLE
);
352 psp
.pszHeaderSubTitle
= MAKEINTRESOURCE(IDS_NETWORKCOMPONENTSUBTITLE
);
353 psp
.pfnDlgProc
= NetworkComponentPageDlgProc
;
354 psp
.pszTemplate
= MAKEINTRESOURCE(IDD_NETWORKCOMPONENTPAGE
);
355 pPages
[nPage
++] = CreatePropertySheetPage(&psp
);
357 /* Create the Domain/Workgroup page */
358 psp
.dwFlags
= PSP_DEFAULT
| PSP_USEHEADERTITLE
| PSP_USEHEADERSUBTITLE
;
359 psp
.pszHeaderTitle
= MAKEINTRESOURCE(IDS_NETWORKDOMAINTITLE
);
360 psp
.pszHeaderSubTitle
= MAKEINTRESOURCE(IDS_NETWORKDOMAINSUBTITLE
);
361 psp
.pfnDlgProc
= NetworkDomainPageDlgProc
;
362 psp
.pszTemplate
= MAKEINTRESOURCE(IDD_NETWORKDOMAINPAGE
);
363 pPages
[nPage
++] = CreatePropertySheetPage(&psp
);
365 *pPageCount
= dwPageCount
;
367 return ERROR_SUCCESS
;