ReactOS 0.4.16-dev-295-g4aee028
livecd.c
Go to the documentation of this file.
1/*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Userinit Logon Application
4 * FILE: base/system/userinit/livecd.c
5 * PROGRAMMERS: Eric Kohl
6 */
7
8#include "userinit.h"
9
13
14typedef struct _LIVECD_UNATTEND
15{
19
20
21/*
22 * Taken and adapted from dll/cpl/sysdm/general.c
23 */
24static VOID
26{
27 BITMAP logoBitmap;
28 BITMAP maskBitmap;
30 HDC hDC, hDCLogo, hDCMask;
31 HBITMAP hMask = NULL, hLogo = NULL;
32 HBITMAP hAlphaLogo = NULL;
33 COLORREF *pBits;
35
36 hDC = GetDC(hwndDlg);
37 hDCLogo = CreateCompatibleDC(NULL);
38 hDCMask = CreateCompatibleDC(NULL);
39
40 if (hDC == NULL || hDCLogo == NULL || hDCMask == NULL)
41 goto Cleanup;
42
43 ZeroMemory(pImgInfo, sizeof(*pImgInfo));
44 ZeroMemory(&bmpi, sizeof(bmpi));
45
48
49 if (hLogo == NULL || hMask == NULL)
50 goto Cleanup;
51
52 GetObject(hLogo, sizeof(logoBitmap), &logoBitmap);
53 GetObject(hMask, sizeof(maskBitmap), &maskBitmap);
54
55 if (logoBitmap.bmHeight != maskBitmap.bmHeight || logoBitmap.bmWidth != maskBitmap.bmWidth)
56 goto Cleanup;
57
59 bmpi.bmiHeader.biWidth = logoBitmap.bmWidth;
60 bmpi.bmiHeader.biHeight = logoBitmap.bmHeight;
64 bmpi.bmiHeader.biSizeImage = 4 * logoBitmap.bmWidth * logoBitmap.bmHeight;
65
66 /* Create a premultiplied bitmap */
67 hAlphaLogo = CreateDIBSection(hDC, &bmpi, DIB_RGB_COLORS, (PVOID*)&pBits, 0, 0);
68 if (!hAlphaLogo)
69 goto Cleanup;
70
71 SelectObject(hDCLogo, hLogo);
72 SelectObject(hDCMask, hMask);
73
74 for (line = logoBitmap.bmHeight - 1; line >= 0; line--)
75 {
76 for (column = 0; column < logoBitmap.bmWidth; column++)
77 {
78 COLORREF alpha = GetPixel(hDCMask, column, line) & 0xFF;
79 COLORREF Color = GetPixel(hDCLogo, column, line);
80 DWORD r, g, b;
81
82 r = GetRValue(Color) * alpha / 255;
83 g = GetGValue(Color) * alpha / 255;
84 b = GetBValue(Color) * alpha / 255;
85
86 *pBits++ = b | (g << 8) | (r << 16) | (alpha << 24);
87 }
88 }
89
90 pImgInfo->hBitmap = hAlphaLogo;
91 pImgInfo->cxSource = logoBitmap.bmWidth;
92 pImgInfo->cySource = logoBitmap.bmHeight;
93 pImgInfo->iBits = logoBitmap.bmBitsPixel;
94 pImgInfo->iPlanes = logoBitmap.bmPlanes;
95
97 if (hMask != NULL) DeleteObject(hMask);
98 if (hLogo != NULL) DeleteObject(hLogo);
99 if (hDCMask != NULL) DeleteDC(hDCMask);
100 if (hDCLogo != NULL) DeleteDC(hDCLogo);
101 if (hDC != NULL) ReleaseDC(hwndDlg, hDC);
102}
103
104
105BOOL
107{
108 HKEY ControlKey = NULL;
109 LPWSTR SystemStartOptions = NULL;
110 LPWSTR CurrentOption, NextOption; /* Pointers into SystemStartOptions */
111 LONG rc;
112 BOOL ret = FALSE;
113
114 TRACE("IsLiveCD()\n");
115
118 0,
120 &ControlKey);
121 if (rc != ERROR_SUCCESS)
122 {
123 WARN("RegOpenKeyEx() failed with error %lu\n", rc);
124 goto cleanup;
125 }
126
127 rc = ReadRegSzKey(ControlKey, L"SystemStartOptions", &SystemStartOptions);
128 if (rc != ERROR_SUCCESS)
129 {
130 WARN("ReadRegSzKey() failed with error %lu\n", rc);
131 goto cleanup;
132 }
133
134 /* Check for CONSOLE switch in SystemStartOptions */
135 CurrentOption = SystemStartOptions;
136 while (CurrentOption)
137 {
138 NextOption = wcschr(CurrentOption, L' ');
139 if (NextOption)
140 *NextOption = L'\0';
141 if (_wcsicmp(CurrentOption, L"MININT") == 0)
142 {
143 TRACE("Found 'MININT' boot option\n");
144 ret = TRUE;
145 goto cleanup;
146 }
147 CurrentOption = NextOption ? NextOption + 1 : NULL;
148 }
149
150cleanup:
151 if (ControlKey != NULL)
152 RegCloseKey(ControlKey);
153 HeapFree(GetProcessHeap(), 0, SystemStartOptions);
154
155 TRACE("IsLiveCD() returning %d\n", ret);
156
157 return ret;
158}
159
160
161static BOOL CALLBACK
163{
164 LCID lcid;
165 WCHAR lang[255];
166 INT index;
167 BOOL bNoShow = FALSE;
168
169 lcid = wcstoul(lpLocale, NULL, 16);
170
171 /* Display only languages with installed support */
172 if (!IsValidLocale(lcid, LCID_INSTALLED))
173 return TRUE;
174
175 // See http://archives.miloush.net/michkap/archive/2006/09/23/768178.html for why we handle spain differently
178 {
179 if (bSpain == FALSE)
180 {
182 bSpain = TRUE;
183 }
184 else
185 {
186 bNoShow = TRUE;
187 }
188 }
189 else
190 {
192 }
193
194 if (bNoShow == FALSE)
195 {
198 0,
199 (LPARAM)lang);
200
203 index,
204 (LPARAM)lcid);
205 }
206
207 return TRUE;
208}
209
210
211static VOID
213{
214 WCHAR langSel[255];
215 LCID Locale = 0;
216
217 hList = hwnd;
218 bSpain = FALSE;
220
221 if (pState->Unattend->bEnabled)
222 Locale = pState->Unattend->LocaleID;
223
224 if (!Locale)
225 {
226 /* Select current locale */
227 /* or should it be System and not user? */
228 Locale = GetUserDefaultLCID();
229 }
231
234 -1,
235 (LPARAM)langSel);
236}
237
238
239static
240BOOL
242 LPCWSTR szLCID,
244{
245 HKEY hKey;
247 WCHAR szBuf[MAX_PATH], szDispName[MAX_PATH], szIndex[MAX_PATH], szPath[MAX_PATH];
248 HANDLE hLib;
249 UINT i, j, k;
250
251 wsprintf(szBuf, L"SYSTEM\\CurrentControlSet\\Control\\Keyboard Layouts\\%s", szLCID);
252
254 {
255 dwBufLen = sizeof(szDispName);
256
257 if (RegQueryValueExW(hKey, L"Layout Display Name", NULL, NULL, (LPBYTE)szDispName, &dwBufLen) == ERROR_SUCCESS)
258 {
259 if (szDispName[0] == '@')
260 {
261 for (i = 0; i < wcslen(szDispName); i++)
262 {
263 if ((szDispName[i] == ',') && (szDispName[i + 1] == '-'))
264 {
265 for (j = i + 2, k = 0; j < wcslen(szDispName)+1; j++, k++)
266 {
267 szIndex[k] = szDispName[j];
268 }
269 szDispName[i - 1] = '\0';
270 break;
271 }
272 else
273 szDispName[i] = szDispName[i + 1];
274 }
275
277 {
278 hLib = LoadLibraryW(szPath);
279 if (hLib)
280 {
281 if (LoadStringW(hLib, _wtoi(szIndex), szPath, ARRAYSIZE(szPath)) != 0)
282 {
285 return TRUE;
286 }
287 FreeLibrary(hLib);
288 }
289 }
290 }
291 }
292
293 dwBufLen = sizeof(szBuf);
294
295 if (RegQueryValueExW(hKey, L"Layout Text", NULL, NULL, (LPBYTE)szName, &dwBufLen) == ERROR_SUCCESS)
296 {
298 return TRUE;
299 }
300 }
301
302 return FALSE;
303}
304
305
306static
307VOID
309 HWND hwnd)
310{
311 INT iCurSel;
312 ULONG ulLayoutId;
313 HKL hKl;
314 WCHAR szLayoutId[9];
315
316 iCurSel = SendMessageW(hwnd, CB_GETCURSEL, 0, 0);
317 if (iCurSel == CB_ERR)
318 return;
319
320 ulLayoutId = (ULONG)SendMessageW(hwnd, CB_GETITEMDATA, iCurSel, 0);
321 if (ulLayoutId == (ULONG)CB_ERR)
322 return;
323
324 swprintf(szLayoutId, L"%08lx", ulLayoutId);
325
327 SystemParametersInfoW(SPI_SETDEFAULTINPUTLANG, 0, &hKl, SPIF_SENDCHANGE);
328}
329
330
331static
332VOID
334 HWND hwnd,
335 LCID lcid)
336{
337 INT i, nCount;
338 LCID LayoutId;
339
340 TRACE("LCID: %08lx\n", lcid);
341 TRACE("LangID: %04lx\n", LANGIDFROMLCID(lcid));
342
343 nCount = SendMessageW(hwnd, CB_GETCOUNT, 0, 0);
344
345 for (i = 0; i < nCount; i++)
346 {
347 LayoutId = (LCID)SendMessageW(hwnd, CB_GETITEMDATA, i, 0);
348 TRACE("Layout: %08lx\n", LayoutId);
349
350 if (LANGIDFROMLCID(LayoutId) == LANGIDFROMLCID(lcid))
351 {
352 TRACE("Found 1: %08lx --> %08lx\n", LayoutId, lcid);
354 return;
355 }
356 }
357
358 for (i = 0; i < nCount; i++)
359 {
360 LayoutId = (LCID)SendMessageW(hwnd, CB_GETITEMDATA, i, 0);
361 TRACE("Layout: %08lx\n", LayoutId);
362
363 if (PRIMARYLANGID(LayoutId) == PRIMARYLANGID(lcid))
364 {
365 TRACE("Found 2: %08lx --> %08lx\n", LayoutId, lcid);
367 return;
368 }
369 }
370
371 TRACE("No match found!\n");
372}
373
374
375static
376VOID
378 HWND hItemsList)
379{
380 HKEY hKey;
381 WCHAR szLayoutId[9], szCurrentLayoutId[9];
383 DWORD dwIndex = 0;
385 INT iIndex;
386 LONG lError;
387 ULONG ulLayoutId;
388
389 if (!GetKeyboardLayoutNameW(szCurrentLayoutId))
390 wcscpy(szCurrentLayoutId, L"00000409");
391
393 L"System\\CurrentControlSet\\Control\\Keyboard Layouts",
394 0,
396 &hKey);
397 if (lError != ERROR_SUCCESS)
398 return;
399
400 while (TRUE)
401 {
402 dwSize = ARRAYSIZE(szLayoutId);
403
404 lError = RegEnumKeyExW(hKey,
405 dwIndex,
406 szLayoutId,
407 &dwSize,
408 NULL,
409 NULL,
410 NULL,
411 NULL);
412 if (lError != ERROR_SUCCESS)
413 break;
414
415 GetLayoutName(szLayoutId, KeyName);
416
417 iIndex = (INT)SendMessageW(hItemsList, CB_ADDSTRING, 0, (LPARAM)KeyName);
418
419 ulLayoutId = wcstoul(szLayoutId, NULL, 16);
420 SendMessageW(hItemsList, CB_SETITEMDATA, iIndex, (LPARAM)ulLayoutId);
421
422 if (wcscmp(szLayoutId, szCurrentLayoutId) == 0)
423 {
424 SendMessageW(hItemsList, CB_SETCURSEL, (WPARAM)iIndex, (LPARAM)0);
425 }
426
427 dwIndex++;
428 }
429
431}
432
433
434static
435VOID
437 PLCID pNewLcid)
438{
439 WCHAR szBuffer[80];
440 PWSTR ptr;
441 HKEY hLocaleKey;
442 DWORD ret;
444 LCID lcid;
445 INT i;
446
447 struct {LCTYPE LCType; PWSTR pValue;} LocaleData[] = {
448 /* Number */
449 {LOCALE_SDECIMAL, L"sDecimal"},
450 {LOCALE_STHOUSAND, L"sThousand"},
451 {LOCALE_SNEGATIVESIGN, L"sNegativeSign"},
452 {LOCALE_SPOSITIVESIGN, L"sPositiveSign"},
453 {LOCALE_SGROUPING, L"sGrouping"},
454 {LOCALE_SLIST, L"sList"},
455 {LOCALE_SNATIVEDIGITS, L"sNativeDigits"},
456 {LOCALE_INEGNUMBER, L"iNegNumber"},
457 {LOCALE_IDIGITS, L"iDigits"},
458 {LOCALE_ILZERO, L"iLZero"},
459 {LOCALE_IMEASURE, L"iMeasure"},
460 {LOCALE_IDIGITSUBSTITUTION, L"NumShape"},
461
462 /* Currency */
463 {LOCALE_SCURRENCY, L"sCurrency"},
464 {LOCALE_SMONDECIMALSEP, L"sMonDecimalSep"},
465 {LOCALE_SMONTHOUSANDSEP, L"sMonThousandSep"},
466 {LOCALE_SMONGROUPING, L"sMonGrouping"},
467 {LOCALE_ICURRENCY, L"iCurrency"},
468 {LOCALE_INEGCURR, L"iNegCurr"},
469 {LOCALE_ICURRDIGITS, L"iCurrDigits"},
470
471 /* Time */
472 {LOCALE_STIMEFORMAT, L"sTimeFormat"},
473 {LOCALE_STIME, L"sTime"},
474 {LOCALE_S1159, L"s1159"},
475 {LOCALE_S2359, L"s2359"},
476 {LOCALE_ITIME, L"iTime"},
477 {LOCALE_ITIMEMARKPOSN, L"iTimePrefix"},
478 {LOCALE_ITLZERO, L"iTLZero"},
479
480 /* Date */
481 {LOCALE_SLONGDATE, L"sLongDate"},
482 {LOCALE_SSHORTDATE, L"sShortDate"},
483 {LOCALE_SDATE, L"sDate"},
484 {LOCALE_IFIRSTDAYOFWEEK, L"iFirstDayOfWeek"},
485 {LOCALE_IFIRSTWEEKOFYEAR, L"iFirstWeekOfYear"},
486 {LOCALE_IDATE, L"iDate"},
487 {LOCALE_ICALENDARTYPE, L"iCalendarType"},
488
489 /* Misc */
490 {LOCALE_SCOUNTRY, L"sCountry"},
491 {LOCALE_SABBREVLANGNAME, L"sLanguage"},
492 {LOCALE_ICOUNTRY, L"iCountry"},
493 {0, NULL}};
494
496 L".DEFAULT\\Control Panel\\International",
497 0,
499 &hLocaleKey);
500 if (ret != ERROR_SUCCESS)
501 {
502 return;
503 }
504
505 if (pNewLcid == NULL)
506 {
507 dwSize = 9 * sizeof(WCHAR);
508 ret = RegQueryValueExW(hLocaleKey,
509 L"Locale",
510 NULL,
511 NULL,
512 (PBYTE)szBuffer,
513 &dwSize);
514 if (ret != ERROR_SUCCESS)
515 goto done;
516
517 lcid = (LCID)wcstoul(szBuffer, &ptr, 16);
518 if (lcid == 0)
519 goto done;
520 }
521 else
522 {
523 lcid = *pNewLcid;
524
525 swprintf(szBuffer, L"%08lx", lcid);
526 RegSetValueExW(hLocaleKey,
527 L"Locale",
528 0,
529 REG_SZ,
530 (PBYTE)szBuffer,
531 (wcslen(szBuffer) + 1) * sizeof(WCHAR));
532 }
533
534 i = 0;
535 while (LocaleData[i].pValue != NULL)
536 {
537 if (GetLocaleInfoW(lcid,
538 LocaleData[i].LCType | LOCALE_NOUSEROVERRIDE,
539 szBuffer,
540 ARRAYSIZE(szBuffer)))
541 {
542 RegSetValueExW(hLocaleKey,
543 LocaleData[i].pValue,
544 0,
545 REG_SZ,
546 (PBYTE)szBuffer,
547 (wcslen(szBuffer) + 1) * sizeof(WCHAR));
548 }
549
550 i++;
551 }
552
553done:
554 RegCloseKey(hLocaleKey);
555}
556
557
558VOID
560{
562 RECT rcParent;
563 RECT rcWindow;
564
566 if (hWndParent == NULL)
568
569 GetWindowRect(hWndParent, &rcParent);
570 GetWindowRect(hWnd, &rcWindow);
571
573 HWND_TOP,
574 ((rcParent.right - rcParent.left) - (rcWindow.right - rcWindow.left)) / 2,
575 ((rcParent.bottom - rcParent.top) - (rcWindow.bottom - rcWindow.top)) / 2,
576 0,
577 0,
578 SWP_NOSIZE);
579}
580
581
582static
583VOID
585 LPDRAWITEMSTRUCT lpDrawItem,
586 PSTATE pState,
587 UINT uCtlID)
588{
589 HDC hdcMem;
590 LONG left;
591
592 if (lpDrawItem->CtlID == uCtlID)
593 {
594 /* Position image in centre of dialog */
595 left = (lpDrawItem->rcItem.right - pState->ImageInfo.cxSource) / 2;
596
597 hdcMem = CreateCompatibleDC(lpDrawItem->hDC);
598 if (hdcMem != NULL)
599 {
601
602 SelectObject(hdcMem, pState->ImageInfo.hBitmap);
603 GdiAlphaBlend(lpDrawItem->hDC,
604 left,
605 lpDrawItem->rcItem.top,
606 pState->ImageInfo.cxSource,
607 pState->ImageInfo.cySource,
608 hdcMem,
609 0, 0,
610 pState->ImageInfo.cxSource,
611 pState->ImageInfo.cySource,
612 BlendFunc);
614 }
615 }
616}
617
618
619static
623 HWND hwndDlg,
624 UINT uMsg,
627{
628 PSTATE pState;
629
630 /* Retrieve pointer to the state */
631 pState = (PSTATE)GetWindowLongPtrW(hwndDlg, GWLP_USERDATA);
632
633 switch (uMsg)
634 {
635 case WM_INITDIALOG:
636 /* Save pointer to the global state */
637 pState = (PSTATE)lParam;
638 SetWindowLongPtrW(hwndDlg, GWLP_USERDATA, (DWORD_PTR)pState);
639
640 /* Center the dialog window */
641 CenterWindow(hwndDlg);
642
643 /* Fill the language and keyboard layout lists */
646 if (pState->Unattend->bEnabled)
647 {
648 // Advance to the next page
650 }
651 return FALSE;
652
653 case WM_DRAWITEM:
655 pState,
657 return TRUE;
658
659 case WM_COMMAND:
660 switch (LOWORD(wParam))
661 {
662 case IDC_LANGUAGELIST:
664 {
665 LCID NewLcid;
666 INT iCurSel;
667
668 iCurSel = SendDlgItemMessageW(hwndDlg,
671 0,
672 0);
673 if (iCurSel == CB_ERR)
674 break;
675
676 NewLcid = SendDlgItemMessageW(hwndDlg,
679 iCurSel,
680 0);
681 if (NewLcid == (LCID)CB_ERR)
682 break;
683
684 TRACE("LCID: 0x%08lx\n", NewLcid);
686 NewLcid);
687 }
688 break;
689
690 case IDOK:
691 if (HIWORD(wParam) == BN_CLICKED)
692 {
693 LCID NewLcid;
694 INT iCurSel;
695
696 iCurSel = SendDlgItemMessageW(hwndDlg,
699 0,
700 0);
701 if (iCurSel == CB_ERR)
702 break;
703
704 NewLcid = SendDlgItemMessageW(hwndDlg,
707 iCurSel,
708 0);
709 if (NewLcid == (LCID)CB_ERR)
710 break;
711
712 /* Set the locale for the current thread */
713 NtSetDefaultLocale(TRUE, NewLcid);
714
715 /* Store the locale settings in the registry */
717
718 /* Set UI language for this thread */
719 SetThreadLocale(NewLcid);
720
722
723 pState->NextPage = STARTPAGE;
724 EndDialog(hwndDlg, LOWORD(wParam));
725 }
726 break;
727
728 case IDCANCEL:
729 if (HIWORD(wParam) == BN_CLICKED)
730 {
731 static WCHAR szMsg[RC_STRING_MAX_SIZE];
732 INT ret;
734 ret = MessageBoxW(hwndDlg, szMsg, L"ReactOS LiveCD", MB_ICONWARNING | MB_YESNO | MB_DEFBUTTON2);
735 if (ret == IDOK || ret == IDYES)
736 {
737 pState->NextPage = DONE;
738 pState->Run = REBOOT;
739 EndDialog(hwndDlg, LOWORD(wParam));
740 }
741 }
742 break;
743
744 default:
745 break;
746 }
747 break;
748
749 default:
750 break;
751 }
752
753 return FALSE;
754}
755
756
757static
761 HWND hwndDlg,
762 UINT uMsg,
765{
766 PSTATE pState;
767
768 /* Retrieve pointer to the state */
769 pState = (PSTATE)GetWindowLongPtrW(hwndDlg, GWLP_USERDATA);
770
771 switch (uMsg)
772 {
773 case WM_INITDIALOG:
774 /* Save pointer to the state */
775 pState = (PSTATE)lParam;
776 SetWindowLongPtrW(hwndDlg, GWLP_USERDATA, (DWORD_PTR)pState);
777
778 /* Center the dialog window */
779 CenterWindow(hwndDlg);
780
781 if (pState->Unattend->bEnabled)
782 {
783 // Click on the 'Run' button
785 }
786
787 return FALSE;
788
789 case WM_DRAWITEM:
791 pState,
793 return TRUE;
794
795 case WM_COMMAND:
796 if (HIWORD(wParam) == BN_CLICKED)
797 {
798 switch (LOWORD(wParam))
799 {
800 case IDC_RUN:
801 pState->NextPage = DONE;
802 pState->Run = SHELL;
803 EndDialog(hwndDlg, LOWORD(wParam));
804 break;
805
806 case IDC_INSTALL:
807 pState->NextPage = DONE;
808 pState->Run = INSTALLER;
809 EndDialog(hwndDlg, LOWORD(wParam));
810 break;
811
812 case IDOK:
813 pState->NextPage = LOCALEPAGE;
814 EndDialog(hwndDlg, LOWORD(wParam));
815 break;
816
817 case IDCANCEL:
818 if (HIWORD(wParam) == BN_CLICKED)
819 {
820 static WCHAR szMsg[RC_STRING_MAX_SIZE];
821 INT ret;
823 ret = MessageBoxW(hwndDlg, szMsg, L"ReactOS LiveCD", MB_ICONWARNING | MB_YESNO | MB_DEFBUTTON2);
824 if (ret == IDOK || ret == IDYES)
825 {
826 pState->NextPage = DONE;
827 pState->Run = REBOOT;
828 EndDialog(hwndDlg, LOWORD(wParam));
829 }
830 }
831 break;
832
833 default:
834 break;
835 }
836 }
837 break;
838
839 default:
840 break;
841 }
842
843 return FALSE;
844}
845
847{
849
850 pUnattend->bEnabled = FALSE;
851
852 if (!GetPrivateProfileStringW(L"Unattend", L"Signature", L"", Buffer, _countof(Buffer), UnattendInf))
853 {
854 ERR("Unable to parse Signature\n");
855 return;
856 }
857
858 if (_wcsicmp(Buffer, L"$ReactOS$") && _wcsicmp(Buffer, L"$Windows NT$"))
859 {
860 TRACE("Unknown signature: %S\n", Buffer);
861 return;
862 }
863
864 if (!GetPrivateProfileStringW(L"Unattend", L"UnattendSetupEnabled", L"", Buffer, _countof(Buffer), UnattendInf))
865 {
866 ERR("Unable to parse UnattendSetupEnabled\n");
867 return;
868 }
869
870 if (_wcsicmp(Buffer, L"yes"))
871 {
872 TRACE("Unattended setup is not enabled\n", Buffer);
873 return;
874 }
875
876 pUnattend->bEnabled = TRUE;
877 pUnattend->LocaleID = 0;
878
879 if (GetPrivateProfileStringW(L"Unattend", L"LocaleID", L"", Buffer, _countof(Buffer), UnattendInf) && Buffer[0])
880 {
881 pUnattend->LocaleID = wcstol(Buffer, NULL, 16);
882 }
883}
884
885VOID
887 PSTATE pState)
888{
889 LIVECD_UNATTEND Unattend = {0};
890 WCHAR UnattendInf[MAX_PATH];
891
892 InitLogo(&pState->ImageInfo, NULL);
893
894 GetWindowsDirectoryW(UnattendInf, _countof(UnattendInf));
895 wcscat(UnattendInf, L"\\unattend.inf");
896 ParseUnattend(UnattendInf, &Unattend);
897 pState->Unattend = &Unattend;
898
899 while (pState->NextPage != DONE)
900 {
901 switch (pState->NextPage)
902 {
903 case LOCALEPAGE:
906 NULL,
908 (LPARAM)pState);
909 break;
910
911 case STARTPAGE:
914 NULL,
916 (LPARAM)pState);
917 break;
918
919 default:
920 break;
921 }
922 }
923
924 DeleteObject(pState->ImageInfo.hBitmap);
925}
926
927/* EOF */
static HDC hDC
Definition: 3dtext.c:33
HWND hWnd
Definition: settings.c:17
#define RC_STRING_MAX_SIZE
Definition: resource.h:3
#define index(s, c)
Definition: various.h:29
static LONG ReadRegSzKey(IN HKEY hKey, IN LPCWSTR pszKey, OUT LPWSTR *pValue)
Definition: install.c:253
#define IDD_STARTPAGE
Definition: resource.h:18
#define WARN(fmt,...)
Definition: precomp.h:61
#define ERR(fmt,...)
Definition: precomp.h:57
#define IDC_LOCALELOGO
Definition: resource.h:14
#define IDB_ROSLOGO
Definition: resource.h:6
#define IDB_ROSMASK
Definition: resource.h:7
#define IDC_LAYOUTLIST
Definition: resource.h:17
#define IDC_STARTLOGO
Definition: resource.h:20
#define IDD_LOCALEPAGE
Definition: resource.h:13
#define IDC_LANGUAGELIST
Definition: resource.h:15
#define IDS_CANCEL_CONFIRM
Definition: resource.h:30
#define IDS_SPAIN
Definition: resource.h:32
#define IDC_RUN
Definition: resource.h:21
DWORD GetPixel(LPDIRECTDRAWSURFACE7 Surface, UINT x, UINT y)
Definition: blt.cpp:2
#define RegCloseKey(hKey)
Definition: registry.h:49
HINSTANCE hInstance
Definition: charmap.c:19
Definition: bufpool.h:45
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define ERROR_SUCCESS
Definition: deptool.c:10
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
static const BLENDFUNCTION BlendFunc
Definition: general.c:34
static PIMGINFO pImgInfo
Definition: general.c:33
#define ARRAYSIZE(array)
Definition: filtermapper.c:47
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3333
LONG WINAPI RegEnumKeyExW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPWSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPWSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
Definition: reg.c:2504
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
Definition: reg.c:4882
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4103
#define wcschr
Definition: compat.h:17
#define GetProcessHeap()
Definition: compat.h:736
#define FreeLibrary(x)
Definition: compat.h:748
#define MAX_PATH
Definition: compat.h:34
#define HeapFree(x, y, z)
Definition: compat.h:735
#define CALLBACK
Definition: compat.h:35
#define LoadLibraryW(x)
Definition: compat.h:747
static void cleanup(void)
Definition: main.c:1335
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
Definition: environ.c:519
UINT WINAPI GetWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
Definition: path.c:2352
INT WINAPI GetPrivateProfileStringW(LPCWSTR section, LPCWSTR entry, LPCWSTR def_val, LPWSTR buffer, UINT len, LPCWSTR filename)
Definition: profile.c:1142
BOOL WINAPI SetThreadLocale(LCID lcid)
Definition: locale.c:2820
BOOL WINAPI EnumSystemLocalesW(LOCALE_ENUMPROCW lpfnLocaleEnum, DWORD dwFlags)
Definition: locale.c:2999
BOOL WINAPI IsValidLocale(LCID lcid, DWORD flags)
Definition: locale.c:2923
LCID WINAPI GetUserDefaultLCID(void)
Definition: locale.c:1211
INT WINAPI GetLocaleInfoW(LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len)
Definition: locale.c:1666
#define swprintf
Definition: precomp.h:40
static const WCHAR Cleanup[]
Definition: register.c:80
#define BI_RGB
Definition: precomp.h:56
#define GetBValue(quad)
Definition: precomp.h:75
#define GetGValue(quad)
Definition: precomp.h:74
#define GetRValue(quad)
Definition: precomp.h:73
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
#define IDC_INSTALL
Definition: fontview.h:13
FxAutoRegKey hKey
PWCHAR pValue
pKey DeleteObject()
GLclampf GLclampf GLclampf alpha
Definition: gl.h:1740
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
GLuint index
Definition: glext.h:6031
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
GLint left
Definition: glext.h:7726
GLboolean GLboolean g
Definition: glext.h:6204
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
_Check_return_ long __cdecl wcstol(_In_z_ const wchar_t *_Str, _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr, _In_ int _Radix)
_Check_return_ unsigned long __cdecl wcstoul(_In_z_ const wchar_t *_Str, _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr, _In_ int _Radix)
_Check_return_ _CRTIMP int __cdecl _wtoi(_In_z_ const wchar_t *_Str)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define b
Definition: ke_i.h:79
#define REG_SZ
Definition: layer.c:22
static VOID CreateLanguagesList(HWND hwnd, PSTATE pState)
Definition: livecd.c:212
static VOID CreateKeyboardLayoutList(HWND hItemsList)
Definition: livecd.c:377
static INT_PTR CALLBACK LocaleDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: livecd.c:622
BOOL IsLiveCD(VOID)
Definition: livecd.c:106
HWND hLocaleList
Definition: livecd.c:11
HWND hList
Definition: livecd.c:10
static VOID InitializeDefaultUserLocale(PLCID pNewLcid)
Definition: livecd.c:436
VOID RunLiveCD(PSTATE pState)
Definition: livecd.c:886
struct _LIVECD_UNATTEND LIVECD_UNATTEND
VOID ParseUnattend(LPCWSTR UnattendInf, LIVECD_UNATTEND *pUnattend)
Definition: livecd.c:846
VOID CenterWindow(HWND hWnd)
Definition: livecd.c:559
static INT_PTR CALLBACK StartDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: livecd.c:760
static VOID SetKeyboardLayout(HWND hwnd)
Definition: livecd.c:308
static VOID OnDrawItem(LPDRAWITEMSTRUCT lpDrawItem, PSTATE pState, UINT uCtlID)
Definition: livecd.c:584
static VOID SelectKeyboardForLanguage(HWND hwnd, LCID lcid)
Definition: livecd.c:333
static BOOL CALLBACK LocalesEnumProc(LPTSTR lpLocale)
Definition: livecd.c:162
static VOID InitLogo(PIMGINFO pImgInfo, HWND hwndDlg)
Definition: livecd.c:25
BOOL bSpain
Definition: livecd.c:12
static BOOL GetLayoutName(LPCWSTR szLCID, LPWSTR szName)
Definition: livecd.c:241
static char * NextOption(const char *const ostr)
Definition: getopt.c:31
LPCWSTR szPath
Definition: env.c:37
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56
static PVOID ptr
Definition: dispmode.c:27
BITMAPINFO bmpi
Definition: alphablend.c:68
BOOL WINAPI GdiAlphaBlend(HDC hdcDst, int xDst, int yDst, int widthDst, int heightDst, HDC hdcSrc, int xSrc, int ySrc, int widthSrc, int heightSrc, BLENDFUNCTION blendFunction)
#define AC_SRC_ALPHA
Definition: alphablend.c:9
static HBITMAP
Definition: button.c:44
static HDC
Definition: imagelist.c:88
int k
Definition: mpi.c:3369
UINT_PTR HKL
Definition: msctf.idl:143
unsigned int UINT
Definition: ndis.h:50
struct _STATE * PSTATE
#define KEY_READ
Definition: nt_native.h:1023
#define KEY_QUERY_VALUE
Definition: nt_native.h:1016
#define KEY_ENUMERATE_SUB_KEYS
Definition: nt_native.h:1019
#define KEY_WRITE
Definition: nt_native.h:1031
* PLCID
Definition: ntbasedef.h:517
#define SORT_DEFAULT
#define MAKELCID(lgid, srtid)
NTSTATUS NTAPI NtSetDefaultLocale(IN BOOLEAN UserProfile, IN LCID DefaultLocaleId)
Definition: locale.c:437
#define L(x)
Definition: ntvdm.h:50
#define LOWORD(l)
Definition: pedump.c:82
BYTE * PBYTE
Definition: pedump.c:66
long LONG
Definition: pedump.c:60
#define INT
Definition: polytest.cpp:20
TCHAR langSel[255]
Definition: powercfg.c:24
static const WCHAR szName[]
Definition: powrprof.c:45
#define REGSTR_PATH_CURRENT_CONTROL_SET
Definition: regstr.h:564
#define DONE
Definition: rnr20lib.h:14
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
_CRTIMP wchar_t *__cdecl wcscat(_Inout_updates_z_(_String_length_(_Dest)+_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
#define SUBLANG_SPANISH
Definition: nls.h:336
#define MAKELANGID(p, s)
Definition: nls.h:15
#define LANG_SPANISH
Definition: nls.h:123
#define LANGIDFROMLCID(l)
Definition: nls.h:18
DWORD LCID
Definition: nls.h:13
#define PRIMARYLANGID(l)
Definition: nls.h:16
#define SUBLANG_SPANISH_MODERN
Definition: nls.h:338
#define _countof(array)
Definition: sndvol32.h:70
#define TRACE(s)
Definition: solgame.cpp:4
Definition: bl.h:1331
INT iPlanes
Definition: userinit.h:52
INT cxSource
Definition: userinit.h:50
INT iBits
Definition: userinit.h:53
INT cySource
Definition: userinit.h:51
HBITMAP hBitmap
Definition: userinit.h:49
LCID LocaleID
Definition: livecd.c:17
BOOL bEnabled
Definition: livecd.c:16
Definition: parser.c:49
USHORT biBitCount
Definition: precomp.h:46
ULONG biCompression
Definition: precomp.h:47
BITMAPINFOHEADER bmiHeader
Definition: wingdi.h:1476
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
#define GWLP_USERDATA
Definition: treelist.c:63
uint16_t * PWSTR
Definition: typedefs.h:56
int32_t INT_PTR
Definition: typedefs.h:64
uint32_t DWORD_PTR
Definition: typedefs.h:65
unsigned char * LPBYTE
Definition: typedefs.h:53
int32_t INT
Definition: typedefs.h:58
#define MAKELONG(a, b)
Definition: typedefs.h:249
uint32_t ULONG
Definition: typedefs.h:59
#define HIWORD(l)
Definition: typedefs.h:247
@ REBOOT
Definition: userinit.h:44
@ INSTALLER
Definition: userinit.h:43
@ SHELL
Definition: userinit.h:42
@ LOCALEPAGE
Definition: userinit.h:35
@ STARTPAGE
Definition: userinit.h:36
static const WCHAR lang[]
Definition: wbemdisp.c:287
int ret
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING KeyName
Definition: wdfdevice.h:2699
HDC hdcMem
Definition: welcome.c:104
HBITMAP WINAPI CreateDIBSection(HDC hDC, CONST BITMAPINFO *BitmapInfo, UINT Usage, VOID **Bits, HANDLE hSection, DWORD dwOffset)
Definition: bitmap.c:245
#define ZeroMemory
Definition: winbase.h:1737
#define GetModuleHandle
Definition: winbase.h:3852
_In_ HCRYPTHASH _In_ BOOL _In_ DWORD _Inout_ DWORD _In_ DWORD dwBufLen
Definition: wincrypt.h:4246
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
LONG_PTR LPARAM
Definition: windef.h:208
UINT_PTR WPARAM
Definition: windef.h:207
DWORD COLORREF
Definition: windef.h:300
#define DIB_RGB_COLORS
Definition: wingdi.h:367
#define AC_SRC_OVER
Definition: wingdi.h:1369
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1546
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
struct tagBITMAPINFO BITMAPINFO
#define GetObject
Definition: wingdi.h:4468
BOOL WINAPI DeleteDC(_In_ HDC)
#define LOCALE_ICURRDIGITS
Definition: winnls.h:56
#define LOCALE_SCOUNTRY
Definition: winnls.h:32
#define LOCALE_SDATE
Definition: winnls.h:60
#define LCID_INSTALLED
Definition: winnls.h:203
#define LOCALE_SGROUPING
Definition: winnls.h:46
#define LOCALE_ICOUNTRY
Definition: winnls.h:31
#define LOCALE_SDECIMAL
Definition: winnls.h:44
#define LOCALE_IDATE
Definition: winnls.h:65
#define LOCALE_IFIRSTWEEKOFYEAR
Definition: winnls.h:78
#define LOCALE_IMEASURE
Definition: winnls.h:43
#define LOCALE_SLONGDATE
Definition: winnls.h:63
#define LOCALE_S1159
Definition: winnls.h:73
#define LOCALE_SSHORTDATE
Definition: winnls.h:62
#define LOCALE_SPOSITIVESIGN
Definition: winnls.h:119
#define LOCALE_SMONDECIMALSEP
Definition: winnls.h:53
#define LOCALE_ITIME
Definition: winnls.h:67
#define LOCALE_ICURRENCY
Definition: winnls.h:58
#define LOCALE_ITLZERO
Definition: winnls.h:70
#define LOCALE_SLANGUAGE
Definition: winnls.h:26
#define LOCALE_SMONTHOUSANDSEP
Definition: winnls.h:54
#define LOCALE_NOUSEROVERRIDE
Definition: winnls.h:19
#define LOCALE_IDIGITS
Definition: winnls.h:47
#define LCID_SUPPORTED
Definition: winnls.h:204
#define LOCALE_STHOUSAND
Definition: winnls.h:45
#define LOCALE_STIMEFORMAT
Definition: winnls.h:64
#define LOCALE_IFIRSTDAYOFWEEK
Definition: winnls.h:77
#define LOCALE_STIME
Definition: winnls.h:61
#define LOCALE_SABBREVLANGNAME
Definition: winnls.h:29
#define LOCALE_INEGNUMBER
Definition: winnls.h:49
#define LOCALE_SNEGATIVESIGN
Definition: winnls.h:120
DWORD LCTYPE
Definition: winnls.h:519
#define LOCALE_S2359
Definition: winnls.h:74
#define LOCALE_SNATIVEDIGITS
Definition: winnls.h:50
#define LOCALE_SLIST
Definition: winnls.h:42
#define LOCALE_ILZERO
Definition: winnls.h:48
#define LOCALE_ICALENDARTYPE
Definition: winnls.h:75
#define LOCALE_SMONGROUPING
Definition: winnls.h:55
#define LOCALE_SCURRENCY
Definition: winnls.h:51
#define LOCALE_INEGCURR
Definition: winnls.h:59
#define LOCALE_ITIMEMARKPOSN
Definition: winnls.h:68
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
#define HKEY_USERS
Definition: winreg.h:13
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
BOOL WINAPI GetKeyboardLayoutNameW(_Out_writes_(KL_NAMELENGTH) LPWSTR)
#define CB_SELECTSTRING
Definition: winuser.h:1963
#define CB_SETITEMDATA
Definition: winuser.h:1969
#define IMAGE_BITMAP
Definition: winuser.h:211
#define GetWindowLongPtrW
Definition: winuser.h:4832
#define KLF_SETFORPROCESS
Definition: winuser.h:117
#define IDCANCEL
Definition: winuser.h:834
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define KLF_REPLACELANG
Definition: winuser.h:115
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
#define KLF_ACTIVATE
Definition: winuser.h:111
#define WM_COMMAND
Definition: winuser.h:1743
#define CB_ERR
Definition: winuser.h:2438
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE hInst, _In_ LPCWSTR name, _In_ UINT type, _In_ int cx, _In_ int cy, _In_ UINT fuLoad)
Definition: cursoricon.c:2255
#define CB_SETCURSEL
Definition: winuser.h:1964
#define SWP_NOSIZE
Definition: winuser.h:1248
#define WM_INITDIALOG
Definition: winuser.h:1742
#define MB_YESNO
Definition: winuser.h:820
#define CB_GETCOUNT
Definition: winuser.h:1945
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define IDOK
Definition: winuser.h:833
#define WM_DRAWITEM
Definition: winuser.h:1648
#define CBN_SELCHANGE
Definition: winuser.h:1982
#define SPIF_SENDCHANGE
Definition: winuser.h:1575
LRESULT WINAPI SendDlgItemMessageW(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HWND WINAPI GetDesktopWindow(void)
Definition: window.c:628
#define HWND_TOP
Definition: winuser.h:1210
HKL WINAPI LoadKeyboardLayoutW(_In_ LPCWSTR, _In_ UINT)
#define CB_ADDSTRING
Definition: winuser.h:1939
#define CB_GETITEMDATA
Definition: winuser.h:1953
HDC WINAPI GetDC(_In_opt_ HWND)
#define wsprintf
Definition: winuser.h:5877
BOOL WINAPI SystemParametersInfoW(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
#define MB_ICONWARNING
Definition: winuser.h:789
HWND WINAPI GetParent(_In_ HWND)
#define MB_DEFBUTTON2
Definition: winuser.h:802
#define LR_DEFAULTCOLOR
Definition: winuser.h:1090
#define BN_CLICKED
Definition: winuser.h:1928
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
#define IDYES
Definition: winuser.h:838
#define CB_GETCURSEL
Definition: winuser.h:1946
#define SetWindowLongPtrW
Definition: winuser.h:5358
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
INT_PTR WINAPI DialogBoxParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184
const CHAR * LPCTSTR
Definition: xmlstorage.h:193
CHAR * LPTSTR
Definition: xmlstorage.h:192
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185