// // Include Files. // #include "input.h" #include "util.h" #include "inputdlg.h" #include "external.h" #include "inputhlp.h" // // Define global variables. // HWND g_hwndAdvanced = NULL; static BOOL g_bAdmin = FALSE; // // Define external variable and rotines. // extern g_bAdvChanged; extern UINT g_iInputs; extern UINT g_iOrgInputs; // // Context Help Ids. // static int aAdvancedHelpIds[] = { IDC_GROUPBOX1, IDH_COMM_GROUPBOX, IDC_ADVANCED_CUAS_ENABLE, IDH_ADVANCED_CUAS, IDC_ADVANCED_CUAS_TEXT, IDH_ADVANCED_CUAS, IDC_GROUPBOX2, IDH_COMM_GROUPBOX, IDC_ADVANCED_CTFMON_DISABLE, IDH_ADVANCED_CTFMON, IDC_ADVANCED_CTFMON_TEXT, IDH_ADVANCED_CTFMON, 0, 0 }; //////////////////////////////////////////////////////////////////////////// // // AdvancedDlgInit // //////////////////////////////////////////////////////////////////////////// void AdvancedDlgInit(HWND hwnd) { HKEY hkeyTemp; // // Get the setting of enable/disalbe Text Services input // if (IsDisableCtfmon()) { EnableWindow(GetDlgItem(hwnd, IDC_ADVANCED_CUAS_ENABLE), FALSE); EnableWindow(GetDlgItem(hwnd, IDC_ADVANCED_CUAS_TEXT), FALSE); CheckDlgButton(hwnd, IDC_ADVANCED_CTFMON_DISABLE, TRUE); } else { CheckDlgButton(hwnd, IDC_ADVANCED_CTFMON_DISABLE, FALSE); // // Show the turned off advanced text service if ctfmon.exe process isn't // running with the multiple keyboard without adding any new layouts. // if (!IsSetupMode() && IsEnabledTipOrMultiLayouts() && g_iInputs == g_iOrgInputs && FindWindow(c_szCTFMonClass, NULL) == NULL) { // // ctfmon.exe process doesn't running with TIP or multi keyboard // layouts. So change the status as the disabled ctfmon. // CheckDlgButton(hwnd, IDC_ADVANCED_CTFMON_DISABLE, TRUE); EnableWindow(GetDlgItem(hwnd, IDC_ADVANCED_CUAS_ENABLE), FALSE); EnableWindow(GetDlgItem(hwnd, IDC_ADVANCED_CUAS_TEXT), FALSE); // Try to keep the disabled status when Apply button is clicked. g_bAdvChanged = TRUE; } } // // Get Cicero Unaware Application Support setting info from the registry. // if (IsDisableCUAS()) { // Turn off CUAS CheckDlgButton(hwnd, IDC_ADVANCED_CUAS_ENABLE, FALSE); } else { // Turn on CUAS CheckDlgButton(hwnd, IDC_ADVANCED_CUAS_ENABLE, TRUE); } // // Check the Administrative privileges by the token group SID. // if (IsAdminPrivilegeUser()) { g_bAdmin = TRUE; } else { // Disable Cicero Unaware Application Support checkbox for local user EnableWindow(GetDlgItem(hwnd, IDC_ADVANCED_CUAS_ENABLE), FALSE); EnableWindow(GetDlgItem(hwnd, IDC_ADVANCED_CUAS_TEXT), FALSE); } } //////////////////////////////////////////////////////////////////////////// // // InputAdvancedDlgProc // // This is the dialog proc for the Input Advanced property sheet. // //////////////////////////////////////////////////////////////////////////// INT_PTR CALLBACK InputAdvancedDlgProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case ( WM_HELP ) : { WinHelp((HWND)((LPHELPINFO)lParam)->hItemHandle, c_szHelpFile, HELP_WM_HELP, (DWORD_PTR)(LPTSTR)aAdvancedHelpIds); break; } case ( WM_CONTEXTMENU ) : // right mouse click { WinHelp((HWND)wParam, c_szHelpFile, HELP_CONTEXTMENU, (DWORD_PTR)(LPTSTR)aAdvancedHelpIds); break; } case (WM_INITDIALOG) : { HWND hwndCUASText; HWND hwndCtfmonText; TCHAR szCUASText[MAX_PATH * 2]; TCHAR szCtfmonText[MAX_PATH * 2]; // // Save Advanced tab window handle // g_hwndAdvanced = hDlg; // // Set Cicero Unawared Application Support text string. // hwndCUASText = GetDlgItem(hDlg, IDC_ADVANCED_CUAS_TEXT); CicLoadString(hInstance, IDS_ADVANCED_CUAS_TEXT, szCUASText, MAX_PATH * 2); SetWindowText(hwndCUASText, szCUASText); // // Set disable all advanced text services text string. // hwndCtfmonText = GetDlgItem(hDlg, IDC_ADVANCED_CTFMON_TEXT); CicLoadString(hInstance, IDS_ADVANCED_CTFMON_TEXT, szCtfmonText, MAX_PATH * 2); SetWindowText(hwndCtfmonText, szCtfmonText); // // Initialize CUAS and CTFMON turn off status. // AdvancedDlgInit(hDlg); break; } case (WM_NOTIFY) : { switch (((NMHDR *)lParam)->code) { case (PSN_QUERYCANCEL) : case (PSN_RESET) : case (PSN_KILLACTIVE) : break; case (PSN_APPLY) : { break; } default : { return (FALSE); } } break; } case (WM_COMMAND) : { switch (LOWORD(wParam)) { case (IDC_ADVANCED_CTFMON_DISABLE) : { if (IsDlgButtonChecked(hDlg, IDC_ADVANCED_CTFMON_DISABLE)) { EnableWindow(GetDlgItem(hDlg, IDC_ADVANCED_CUAS_ENABLE), FALSE); EnableWindow(GetDlgItem(hDlg, IDC_ADVANCED_CUAS_TEXT), FALSE); } else { if (g_bAdmin) { EnableWindow(GetDlgItem(hDlg, IDC_ADVANCED_CUAS_ENABLE), TRUE); EnableWindow(GetDlgItem(hDlg, IDC_ADVANCED_CUAS_TEXT), TRUE); } } // fall thru... } case (IDC_ADVANCED_CUAS_ENABLE) : { // // Set the advanced tab change status to apply it. // g_bAdvChanged = TRUE; PropSheet_Changed(GetParent(hDlg), hDlg); break; } case (IDOK) : { // fall thru... } case (IDCANCEL) : { EndDialog(hDlg, TRUE); break; } default : { return (FALSE); } } break; } default : { return (FALSE); } } return (TRUE); }