/*---------------------------------------------** ** Copyright (c) 1998 Microsoft Corporation ** ** All Rights reserved ** ** ** ** misc.c ** ** ** ** Miscellaneous dialog - TSREG ** ** 07-01-98 a-clindh Created ** **---------------------------------------------*/ #include #include #include #include #include #include "tsreg.h" #include "resource.h" //HKEY_CURRENT_USER\Control Panel\Desktop\ForegroundLockTimeout. Set it to zero TCHAR lpszTimoutPath[] = "Control Panel\\Desktop"; TCHAR lpszTimeoutKey[] = "ForegroundLockTimeout"; HWND g_hwndMiscDlg; /////////////////////////////////////////////////////////////////////////////// INT_PTR CALLBACK Miscellaneous(HWND hDlg, UINT nMsg, WPARAM wParam, LPARAM lParam) { NMHDR *lpnmhdr; static HWND hwndComboOrder; static HWND hwndRadioShadowEn, hwndRadioShadowDis; static HWND hwndRadioDedicatedEn, hwndRadioDedicatedDis; static HWND hwndSliderTimeout, hwndEditTimeout; static HWND hwndSliderFrame; static TCHAR lpszRegPath[MAX_PATH]; TCHAR lpszBuffer[6]; TCHAR lpszMBoxTitle[25]; TCHAR lpszMBoxError[90]; int i, nPos; LPHELPINFO lphi; OSVERSIONINFO osvi; static BOOL bIsWindows98orLater; static BOOL bIsNT5orLater; static int nLockValue; // // get a pointer to the NMHDR struct for apply button // lpnmhdr = (LPNMHDR) lParam; switch (nMsg) { case WM_INITDIALOG: LoadString (g_hInst, IDS_REG_PATH, lpszRegPath, sizeof (lpszRegPath)); // // get handles // g_hwndMiscDlg = hDlg; hwndComboOrder = GetDlgItem(hDlg, IDC_COMBO_ORDER); hwndRadioShadowEn = GetDlgItem(hDlg, IDC_SHADOW_ENABLED); hwndRadioShadowDis = GetDlgItem(hDlg, IDC_SHADOW_DISABLED); hwndRadioDedicatedEn = GetDlgItem(hDlg, IDC_DEDICATED_ENABLED); hwndRadioDedicatedDis = GetDlgItem(hDlg, IDC_DEDICATED_DISABLED); // // lock timeout stuff -------> hwndSliderTimeout = GetDlgItem(hDlg, IDC_SLD_TIMEOUT); hwndEditTimeout = GetDlgItem(hDlg, IDC_TXT_TIMEOUT); hwndSliderFrame = GetDlgItem(hDlg, IDC_FRAME_TIMEOUT); // // Find out what operating system is is // before doing the lock timeout stuff // osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx (&osvi); bIsWindows98orLater = (osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) && ( (osvi.dwMajorVersion > 4) || ( (osvi.dwMajorVersion == 4) && (osvi.dwMinorVersion > 0) ) ); osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx (&osvi); bIsNT5orLater = (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT) && ( (osvi.dwMajorVersion > 4) || ( (osvi.dwMajorVersion == 5) ) ); if ((bIsNT5orLater == TRUE) || (bIsWindows98orLater == TRUE)) { // // set range on slider // SendMessage(hwndSliderTimeout, TBM_SETRANGE, TRUE, (LPARAM) MAKELONG(1, 6)); // // get value from registry // nPos = GetKeyVal(lpszTimoutPath, lpszTimeoutKey); // Use '<=' here - if there is no reg value for // ForegroundWindowLockTimeout, the slider control // will read -1. if (nPos <= 0) { SendMessage(hwndSliderTimeout, TBM_SETPOS, TRUE, 0); _itot(0, lpszBuffer, 10); SetWindowText(hwndEditTimeout, lpszBuffer); } else { SendMessage(hwndSliderTimeout, TBM_SETPOS, TRUE, ((nPos / 100000) + 1)); _itot(nPos / 100000, lpszBuffer, 10); SetWindowText(hwndEditTimeout, lpszBuffer); } } else { // // disable controls if not NT 5 / Win98 or greater // EnableWindow(hwndSliderTimeout, FALSE); EnableWindow(hwndEditTimeout, FALSE); EnableWindow(hwndSliderFrame, FALSE); } //<------------ end lock timeout stuff //_____________________________________________________ // // set radio buttons // RestoreSettings(hDlg, SHADOWINDEX, IDC_SHADOW_DISABLED, IDC_SHADOW_ENABLED, lpszRegPath); RestoreSettings(hDlg, DEDICATEDINDEX, IDC_DEDICATED_ENABLED, IDC_DEDICATED_DISABLED, lpszRegPath); // --------------------------------------- // fill the combo box list with a range of // typical values. // SendMessage(hwndComboOrder, CB_ADDSTRING, 0, (LPARAM) (LPCTSTR) TEXT("0")); for (i = 5; i < 55; i+= 5) { _itot(i, lpszBuffer, 10); SendMessage(hwndComboOrder, CB_ADDSTRING, 0, (LPARAM) (LPCTSTR) lpszBuffer); } // ** end for loop for (i = 100; i < 1000; i+= 100) { _itot(i, lpszBuffer, 10); SendMessage(hwndComboOrder, CB_ADDSTRING, 0, (LPARAM) (LPCTSTR) lpszBuffer); } // ** end for loop for (i = 1000; i < 10000; i+= 1000) { _itot(i, lpszBuffer, 10); SendMessage(hwndComboOrder, CB_ADDSTRING, 0, (LPARAM) (LPCTSTR) lpszBuffer); } // ** end for loop for (i = 10000; i < 70000; i+= 10000) { _itot(i, lpszBuffer, 10); SendMessage(hwndComboOrder, CB_ADDSTRING, 0, (LPARAM) (LPCTSTR) lpszBuffer); } // ** end for loop // // end filling the combo box dropdown list. // ---------------------------------------- // // limit combo box to 5 characters // SendMessage(hwndComboOrder, CB_LIMITTEXT, 5, 0); // // set edit box from registry // if (GetRegKey(ORDERINDEX, lpszRegPath) == 1) { g_KeyInfo[ORDERINDEX].CurrentKeyValue = (GetRegKeyValue(ORDERINDEX)); } else { g_KeyInfo[ORDERINDEX].CurrentKeyValue = g_KeyInfo[ORDERINDEX].DefaultKeyValue; } // // write to the edit box // _itot( g_KeyInfo[ORDERINDEX].CurrentKeyValue, lpszBuffer, 10); SetWindowText(hwndComboOrder, lpszBuffer); break; case WM_NOTIFY: switch (lpnmhdr->code) { case PSN_HELP: lphi = (LPHELPINFO) lParam; WinHelp(lphi->hItemHandle, g_lpszPath, HELP_CONTENTS, lphi->iCtrlId); break; case PSN_APPLY: if (g_KeyInfo[ORDERINDEX].CurrentKeyValue == g_KeyInfo[ORDERINDEX].DefaultKeyValue) { DeleteRegKey(ORDERINDEX, lpszRegPath); } else { SetRegKey(ORDERINDEX, lpszRegPath); } // // save radio button settings // SaveSettings(hDlg, DEDICATEDINDEX, IDC_DEDICATED_ENABLED, IDC_DEDICATED_DISABLED, lpszRegPath); SaveSettings(hDlg, SHADOWINDEX, IDC_SHADOW_DISABLED, IDC_SHADOW_ENABLED, lpszRegPath); // // Write the lock timeout (milliseconds) to // the registry. // SetRegKeyVal(lpszTimoutPath, lpszTimeoutKey, (nLockValue - 1) * 100000); break; } break; case WM_HELP: lphi = (LPHELPINFO) lParam; WinHelp(lphi->hItemHandle, g_lpszPath, HELP_CONTEXTPOPUP, lphi->iCtrlId); break; case WM_COMMAND: switch LOWORD (wParam) { case IDC_SHADOW_ENABLED: CheckDlgButton(hDlg, IDC_SHADOW_DISABLED, FALSE); break; case IDC_SHADOW_DISABLED: CheckDlgButton(hDlg, IDC_SHADOW_ENABLED, FALSE); break; case IDC_DEDICATED_ENABLED: CheckDlgButton(hDlg, IDC_DEDICATED_DISABLED, FALSE); break; case IDC_DEDICATED_DISABLED: CheckDlgButton(hDlg, IDC_DEDICATED_ENABLED, FALSE); break; case IDC_MISC_BUTTON_RESTORE: CheckDlgButton(hDlg, IDC_SHADOW_ENABLED, TRUE); CheckDlgButton(hDlg, IDC_SHADOW_DISABLED, FALSE); CheckDlgButton(hDlg, IDC_DEDICATED_DISABLED, TRUE); CheckDlgButton(hDlg, IDC_DEDICATED_ENABLED, FALSE); _itot( g_KeyInfo[ORDERINDEX].DefaultKeyValue, lpszBuffer, 10); SetWindowText(hwndComboOrder, lpszBuffer); g_KeyInfo[ORDERINDEX].CurrentKeyValue = g_KeyInfo[ORDERINDEX].DefaultKeyValue; // // Reset the position of the slider control // for the foreground lock timeout. // _itot(LOCK_TIMEOUT / 100000, lpszBuffer, 10); SetWindowText(hwndEditTimeout, lpszBuffer); SendMessage(hwndSliderTimeout, TBM_SETPOS, TRUE, ((LOCK_TIMEOUT / 100000) + 1)); nLockValue = (LOCK_TIMEOUT / 100000) + 1; break; } switch HIWORD (wParam) { case CBN_SELCHANGE: g_KeyInfo[ORDERINDEX].CurrentKeyValue = (DWORD) SendMessage(hwndComboOrder, CB_GETCURSEL, 0, 0); SendMessage(hwndComboOrder, CB_GETLBTEXT, g_KeyInfo[ORDERINDEX].CurrentKeyValue, (LPARAM) lpszBuffer); g_KeyInfo[ORDERINDEX].CurrentKeyValue = _ttoi(lpszBuffer); break; case CBN_EDITUPDATE: GetWindowText(hwndComboOrder, lpszBuffer, 6); g_KeyInfo[ORDERINDEX].CurrentKeyValue = _ttoi(lpszBuffer); break; case CBN_KILLFOCUS: GetWindowText(hwndComboOrder, lpszBuffer, 6); g_KeyInfo[ORDERINDEX].CurrentKeyValue = _ttoi(lpszBuffer); if ( (g_KeyInfo[ORDERINDEX].CurrentKeyValue > MAX_ORDER_DRAW_VAL) ) { // // display error if value is off // LoadString (g_hInst, IDS_MISC_TAB, lpszMBoxTitle, sizeof (lpszMBoxTitle)); LoadString (g_hInst, IDS_ODRAW_ERROR, lpszMBoxError, sizeof (lpszMBoxError)); MessageBox(hDlg, lpszMBoxError, lpszMBoxTitle, MB_OK | MB_ICONEXCLAMATION); _itot(g_KeyInfo[ORDERINDEX].DefaultKeyValue, lpszBuffer, 10); SetWindowText(hwndComboOrder, lpszBuffer); g_KeyInfo[ORDERINDEX].CurrentKeyValue = g_KeyInfo[ORDERINDEX].DefaultKeyValue ; } break; } break; case WM_HSCROLL: // // get the position of the slider control // nLockValue = (int) SendMessage(hwndSliderTimeout, TBM_GETPOS, 0,0); _itot(nLockValue - 1, lpszBuffer, 10); SetWindowText(hwndEditTimeout, lpszBuffer); break; } return (FALSE); } // end of file ///////////////////////////////////////////////////////////////////////////////