3 * FILE: dll/cpl/input/advanced_settings_page.c
5 * PROGRAMMER: Dmitry Chapyshev (dmitry@reactos.org)
6 * Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com)
11 BOOL g_bTextServiceIsOff
= FALSE
;
13 BOOL
LoadAdvancedSettings(HWND hwndDlg
)
19 DWORD cbValue
= sizeof(dwValue
);
21 error
= RegOpenKeyExW(HKEY_CURRENT_USER
, L
"Software\\Microsoft\\CTF", 0, KEY_READ
, &hKey
);
22 if (error
!= ERROR_SUCCESS
)
25 error
= RegQueryValueExW(hKey
,
26 L
"Disable Thread Input Manager",
31 if ((error
!= ERROR_SUCCESS
) || (dwType
!= REG_DWORD
) || (cbValue
!= sizeof(dwValue
)))
32 dwValue
= FALSE
; /* Default */
36 CheckDlgButton(hwndDlg
, IDC_TURNOFFTEXTSVCS_CB
, (dwValue
? BST_CHECKED
: BST_UNCHECKED
));
37 g_bTextServiceIsOff
= !!dwValue
;
41 BOOL
SaveAdvancedSettings(HWND hwndDlg
)
45 const DWORD dwValue
= g_bTextServiceIsOff
;
46 const DWORD cbValue
= sizeof(dwValue
);
48 error
= RegOpenKeyExW(HKEY_CURRENT_USER
, L
"Software\\Microsoft\\CTF", 0, KEY_WRITE
, &hKey
);
49 if (error
!= ERROR_SUCCESS
)
52 error
= RegSetValueExW(hKey
, L
"Disable Thread Input Manager", 0, REG_DWORD
,
53 (const BYTE
*)&dwValue
, cbValue
);
56 return (error
== ERROR_SUCCESS
);
59 static INT_PTR
OnNotifyAdvancedSettingsPage(HWND hwndDlg
, LPARAM lParam
)
61 LPNMHDR header
= (LPNMHDR
)lParam
;
67 BOOL bOff
= (IsDlgButtonChecked(hwndDlg
, IDC_TURNOFFTEXTSVCS_CB
) == BST_CHECKED
);
68 g_bRebootNeeded
|= (g_bTextServiceIsOff
&& !bOff
);
69 g_bTextServiceIsOff
= bOff
;
71 /* Write advanced settings */
72 SaveAdvancedSettings(hwndDlg
);
81 AdvancedSettingsPageProc(HWND hwndDlg
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
)
86 LoadAdvancedSettings(hwndDlg
);
90 return OnNotifyAdvancedSettingsPage(hwndDlg
, lParam
);
94 switch (LOWORD(wParam
))
96 case IDC_TURNOFFTEXTSVCS_CB
:
97 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);