ReactOS 0.4.15-dev-7942-gd23573b
intl.c File Reference
#include "intl.h"
#include <debug.h>
Include dependency graph for intl.c:

Go to the source code of this file.

Macros

#define NUM_APPLETS   (1)
 
#define BUFFERSIZE   512
 

Functions

static LONG APIENTRY Applet (HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam)
 
VOID PrintErrorMsgBox (UINT msg)
 
INT ResourceMessageBox (HWND hwnd, UINT uType, UINT uCaptionId, UINT uMessageId)
 
static VOID InitIntlPropSheetPage (PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc, LPARAM lParam)
 
BOOL OpenSetupInf (VOID)
 
VOID ParseSetupInf (VOID)
 
static int CALLBACK PropSheetProc (HWND hwndDlg, UINT uMsg, LPARAM lParam)
 
LONG APIENTRY CPlApplet (HWND hwndCpl, UINT uMsg, LPARAM lParam1, LPARAM lParam2)
 
BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpReserved)
 

Variables

HINSTANCE hApplet = 0
 
HINF hSetupInf = INVALID_HANDLE_VALUE
 
DWORD IsUnattendedSetupEnabled = 0
 
DWORD UnattendLCID = 0
 
APPLET Applets [NUM_APPLETS]
 

Macro Definition Documentation

◆ BUFFERSIZE

#define BUFFERSIZE   512

Definition at line 32 of file intl.c.

◆ NUM_APPLETS

#define NUM_APPLETS   (1)

Definition at line 30 of file intl.c.

Function Documentation

◆ Applet()

static LONG APIENTRY Applet ( HWND  hwnd,
UINT  uMsg,
LPARAM  wParam,
LPARAM  lParam 
)
static

Definition at line 169 of file intl.c.

170{
171 PROPSHEETPAGE psp[3];
172 PROPSHEETHEADER psh;
173 PGLOBALDATA pGlobalData;
174 INT nPage = 0;
175 LONG ret;
176
177 if (OpenSetupInf())
178 {
180 }
181
182 if (uMsg == CPL_STARTWPARMSW && lParam != 0)
183 nPage = _wtoi((PWSTR)lParam);
184
185 pGlobalData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBALDATA));
186 if (pGlobalData == NULL)
187 return FALSE;
188
189 pGlobalData->SystemLCID = GetSystemDefaultLCID();
190 pGlobalData->bIsUserAdmin = IsUserAdmin();
191
192 ZeroMemory(&psh, sizeof(PROPSHEETHEADER));
193 psh.dwSize = sizeof(PROPSHEETHEADER);
195 psh.hwndParent = hwnd;
196 psh.hInstance = hApplet;
197 psh.pszIcon = MAKEINTRESOURCEW(IDC_CPLICON);
198 psh.pszCaption = MAKEINTRESOURCEW(IDS_CPLNAME);
199 psh.nPages = 0;
200 psh.nStartPage = 0;
201 psh.ppsp = psp;
202 psh.pfnCallback = PropSheetProc;
203
205 psh.nPages++;
207 psh.nPages++;
208
209 if (pGlobalData->bIsUserAdmin)
210 {
212 psh.nPages++;
213 }
214
215 if (nPage != 0 && nPage <= psh.nPages)
216 psh.nStartPage = nPage;
217
218 ret = (LONG)(PropertySheet(&psh) != -1);
219 if (ret > 0)
221
222 HeapFree(GetProcessHeap(), 0, pGlobalData);
223
224 return ret;
225}
INT_PTR CALLBACK GeneralPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
LPARAM lParam
Definition: combotst.c:139
#define CPL_STARTWPARMSW
Definition: cpl.h:21
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
#define IDC_CPLICON
Definition: resource.h:7
#define IDS_CPLNAME
Definition: resource.h:8
INT_PTR CALLBACK AdvancedPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: advanced.c:422
#define IDD_GENERALPAGE
Definition: resource.h:9
#define IDD_LANGUAGESPAGE
Definition: resource.h:12
#define IDD_ADVANCEDPAGE
Definition: resource.h:13
#define GetProcessHeap()
Definition: compat.h:736
#define HeapAlloc
Definition: compat.h:733
#define HeapFree(x, y, z)
Definition: compat.h:735
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
_Check_return_ _CRTIMP int __cdecl _wtoi(_In_z_ const wchar_t *_Str)
VOID ParseSetupInf(VOID)
Definition: intl.c:123
static int CALLBACK PropSheetProc(HWND hwndDlg, UINT uMsg, LPARAM lParam)
Definition: intl.c:152
static VOID InitIntlPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc, LPARAM lParam)
Definition: intl.c:79
BOOL OpenSetupInf(VOID)
Definition: intl.c:91
HINSTANCE hApplet
Definition: intl.c:38
INT_PTR CALLBACK LanguagesPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: languages.c:48
LCID WINAPI GetSystemDefaultLCID(void)
Definition: lang.c:797
static BOOL IsUserAdmin(VOID)
Definition: netid.c:163
#define L(x)
Definition: ntvdm.h:50
long LONG
Definition: pedump.c:60
#define PROPSHEETHEADER
Definition: prsht.h:392
#define PSH_USECALLBACK
Definition: prsht.h:48
#define PropertySheet
Definition: prsht.h:400
#define PSH_PROPSHEETPAGE
Definition: prsht.h:43
#define PSH_USEICONID
Definition: prsht.h:42
#define PROPSHEETPAGE
Definition: prsht.h:389
BOOL bIsUserAdmin
Definition: intl.h:122
LCID SystemLCID
Definition: intl.h:114
uint16_t * PWSTR
Definition: typedefs.h:56
int32_t INT
Definition: typedefs.h:58
int ret
#define ZeroMemory
Definition: winbase.h:1712
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
LONG_PTR LPARAM
Definition: windef.h:208
#define HWND_BROADCAST
Definition: winuser.h:1204
#define WM_SETTINGCHANGE
Definition: winuser.h:1629
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)

◆ CPlApplet()

LONG APIENTRY CPlApplet ( HWND  hwndCpl,
UINT  uMsg,
LPARAM  lParam1,
LPARAM  lParam2 
)

Definition at line 230 of file intl.c.

234{
235 UINT i = (UINT)lParam1;
236
237 switch (uMsg)
238 {
239 case CPL_INIT:
240 return TRUE;
241
242 case CPL_GETCOUNT:
243 return NUM_APPLETS;
244
245 case CPL_INQUIRE:
246 if (i < NUM_APPLETS)
247 {
248 CPLINFO *CPlInfo = (CPLINFO*)lParam2;
249 CPlInfo->lData = 0;
250 CPlInfo->idIcon = Applets[i].idIcon;
251 CPlInfo->idName = Applets[i].idName;
252 CPlInfo->idInfo = Applets[i].idDescription;
253 }
254 else
255 {
256 return TRUE;
257 }
258 break;
259
260 case CPL_DBLCLK:
261 if (i < NUM_APPLETS)
262 Applets[i].AppletProc(hwndCpl, uMsg, lParam1, lParam2);
263 else
264 return TRUE;
265 break;
266
267 case CPL_STARTWPARMSW:
268 if (i < NUM_APPLETS)
269 return Applets[i].AppletProc(hwndCpl, uMsg, lParam1, lParam2);
270 break;
271 }
272
273 return FALSE;
274}
#define CPL_INQUIRE
Definition: cpl.h:14
#define CPL_DBLCLK
Definition: cpl.h:16
#define CPL_INIT
Definition: cpl.h:12
#define CPL_GETCOUNT
Definition: cpl.h:13
#define TRUE
Definition: types.h:120
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
#define NUM_APPLETS
Definition: intl.c:30
APPLET Applets[NUM_APPLETS]
Definition: intl.c:45
unsigned int UINT
Definition: ndis.h:50
int idDescription
Definition: hotplug.h:37
int idName
Definition: hotplug.h:36
int idIcon
Definition: hotplug.h:35
APPLET_PROC AppletProc
Definition: hotplug.h:38
Definition: cpl.h:24
LONG_PTR lData
Definition: cpl.h:28
int idName
Definition: cpl.h:26
int idInfo
Definition: cpl.h:27
int idIcon
Definition: cpl.h:25

◆ DllMain()

BOOL WINAPI DllMain ( HINSTANCE  hinstDLL,
DWORD  dwReason,
LPVOID  lpReserved 
)

Definition at line 278 of file intl.c.

281{
282 switch(dwReason)
283 {
286 hApplet = hinstDLL;
287 break;
288 }
289
290 return TRUE;
291}
DWORD dwReason
Definition: misc.cpp:154
#define DLL_PROCESS_ATTACH
Definition: compat.h:131
#define DLL_THREAD_ATTACH
Definition: compat.h:132

◆ InitIntlPropSheetPage()

static VOID InitIntlPropSheetPage ( PROPSHEETPAGE psp,
WORD  idDlg,
DLGPROC  DlgProc,
LPARAM  lParam 
)
static

Definition at line 79 of file intl.c.

80{
81 ZeroMemory(psp, sizeof(PROPSHEETPAGE));
82 psp->dwSize = sizeof(PROPSHEETPAGE);
83 psp->dwFlags = PSP_DEFAULT;
84 psp->hInstance = hApplet;
85 psp->pszTemplate = MAKEINTRESOURCE(idDlg);
86 psp->pfnDlgProc = DlgProc;
87 psp->lParam = lParam;
88}
WORD idDlg
Definition: desk.c:121
DLGPROC DlgProc
Definition: desk.c:122
#define PSP_DEFAULT
Definition: prsht.h:22
#define MAKEINTRESOURCE
Definition: winuser.h:591

Referenced by Applet().

◆ OpenSetupInf()

BOOL OpenSetupInf ( VOID  )

Definition at line 91 of file intl.c.

92{
93 PWSTR lpCmdLine;
94 PWSTR lpSwitch;
95 size_t len;
96
97 lpCmdLine = GetCommandLineW();
98
99 lpSwitch = wcsstr(lpCmdLine, L"/f:\"");
100 if (!lpSwitch)
101 return FALSE;
102
103 len = wcslen(lpSwitch);
104 if (len < 5 || lpSwitch[len-1] != L'\"')
105 {
106 DPRINT1("Invalid switch: %ls\n", lpSwitch);
107 return FALSE;
108 }
109
110 lpSwitch[len-1] = L'\0';
111
114 {
115 DPRINT1("Failed to open INF file: %ls\n", &lpSwitch[4]);
116 return FALSE;
117 }
118
119 return TRUE;
120}
#define DPRINT1
Definition: precomp.h:8
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
LPWSTR WINAPI GetCommandLineW(VOID)
Definition: proc.c:2013
HINF WINAPI SetupOpenInfFileW(PCWSTR name, PCWSTR class, DWORD style, UINT *error)
Definition: parser.c:1229
GLenum GLsizei len
Definition: glext.h:6722
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
_CONST_RETURN wchar_t *__cdecl wcsstr(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_SubStr)
#define INF_STYLE_OLDNT
Definition: infsupp.h:37
HINF hSetupInf
Definition: intl.c:39

Referenced by Applet().

◆ ParseSetupInf()

VOID ParseSetupInf ( VOID  )

Definition at line 123 of file intl.c.

124{
125 INFCONTEXT InfContext;
126 WCHAR szBuffer[30];
127
129 L"Unattend",
130 L"LocaleID",
131 &InfContext))
132 {
134 DPRINT1("SetupFindFirstLine failed\n");
135 return;
136 }
137
138 if (!SetupGetStringFieldW(&InfContext, 1, szBuffer,
139 sizeof(szBuffer) / sizeof(WCHAR), NULL))
140 {
142 DPRINT1("SetupGetStringField failed\n");
143 return;
144 }
145
146 UnattendLCID = wcstoul(szBuffer, NULL, 16);
149}
_Check_return_ unsigned long __cdecl wcstoul(_In_z_ const wchar_t *_Str, _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr, _In_ int _Radix)
DWORD UnattendLCID
Definition: intl.c:41
DWORD IsUnattendedSetupEnabled
Definition: intl.c:40
BOOL WINAPI SetupGetStringFieldW(IN PINFCONTEXT Context, IN ULONG FieldIndex, OUT PWSTR ReturnBuffer, IN ULONG ReturnBufferSize, OUT PULONG RequiredSize)
Definition: infsupp.c:186
BOOL WINAPI SetupFindFirstLineW(IN HINF InfHandle, IN PCWSTR Section, IN PCWSTR Key, IN OUT PINFCONTEXT Context)
Definition: infsupp.c:56
VOID WINAPI SetupCloseInfFile(IN HINF InfHandle)
Definition: infsupp.c:45
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by Applet().

◆ PrintErrorMsgBox()

VOID PrintErrorMsgBox ( UINT  msg)

Definition at line 51 of file intl.c.

52{
53 WCHAR szErrorText[BUFFERSIZE];
54 WCHAR szErrorCaption[BUFFERSIZE];
55
56 LoadStringW(hApplet, msg, szErrorText, sizeof(szErrorText) / sizeof(WCHAR));
57 LoadStringW(hApplet, IDS_ERROR, szErrorCaption, sizeof(szErrorCaption) / sizeof(WCHAR));
58
59 MessageBoxW(NULL, szErrorText, szErrorCaption, MB_OK | MB_ICONERROR);
60}
#define msg(x)
Definition: auth_time.c:54
#define IDS_ERROR
Definition: resource.h:18
#define BUFFERSIZE
Definition: intl.c:32
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
#define MB_ICONERROR
Definition: winuser.h:787
#define MB_OK
Definition: winuser.h:790

Referenced by LanguagesPageProc(), LoadCurrentLocale(), SaveCurrentLocale(), SaveFontSubstitutionSettings(), SaveGeoID(), SaveSystemSettings(), SetLongDateFormat(), SetShortDateFormat(), and SetShortDateSep().

◆ PropSheetProc()

static int CALLBACK PropSheetProc ( HWND  hwndDlg,
UINT  uMsg,
LPARAM  lParam 
)
static

Definition at line 152 of file intl.c.

153{
154 // NOTE: This callback is needed to set large icon correctly.
155 HICON hIcon;
156 switch (uMsg)
157 {
158 case PSCB_INITIALIZED:
159 {
161 SendMessageW(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)hIcon);
162 break;
163 }
164 }
165 return 0;
166}
static HICON
Definition: imagelist.c:84
HICON hIcon
Definition: msconfig.c:44
#define PSCB_INITIALIZED
Definition: prsht.h:75
#define ICON_BIG
Definition: tnclass.cpp:51
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE hInstance, _In_ LPCWSTR lpIconName)
Definition: cursoricon.c:2075

Referenced by Applet().

◆ ResourceMessageBox()

INT ResourceMessageBox ( HWND  hwnd,
UINT  uType,
UINT  uCaptionId,
UINT  uMessageId 
)

Definition at line 63 of file intl.c.

68{
69 WCHAR szErrorText[BUFFERSIZE];
70 WCHAR szErrorCaption[BUFFERSIZE];
71
72 LoadStringW(hApplet, uMessageId, szErrorText, sizeof(szErrorText) / sizeof(WCHAR));
73 LoadStringW(hApplet, uCaptionId, szErrorCaption, sizeof(szErrorCaption) / sizeof(WCHAR));
74
75 return MessageBoxW(hwnd, szErrorText, szErrorCaption, uType);
76}

Variable Documentation

◆ Applets

APPLET Applets[NUM_APPLETS]
Initial value:
=
{
}
#define IDS_CPLDESCRIPTION
Definition: resource.h:9
static LONG APIENTRY Applet(HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam)
Definition: intl.c:169

Definition at line 45 of file intl.c.

Referenced by CPlApplet().

◆ hApplet

HINSTANCE hApplet = 0

◆ hSetupInf

Definition at line 39 of file intl.c.

Referenced by DeviceInstallThread(), OpenSetupInf(), and ParseSetupInf().

◆ IsUnattendedSetupEnabled

DWORD IsUnattendedSetupEnabled = 0

Definition at line 40 of file intl.c.

Referenced by GeneralPageProc(), and ParseSetupInf().

◆ UnattendLCID

DWORD UnattendLCID = 0

Definition at line 41 of file intl.c.

Referenced by GeneralPageProc(), ParseSetupInf(), and VerifyUnattendLCID().