Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

253 lines
7.7 KiB

/******************************************************************************
Module name: Display.C
Purpose: Display Dialog handler
******************************************************************************/
#include "Access.h"
//////////////////////////////////////////////////////////////////////////////
/*******************************************************************
* DESCRIPTION: High Contrast dialog handler
*******************************************************************/
#include "Access.h"
TCHAR LastHCScheme[256];
TCHAR CurHCScheme[256];
VOID FillCustonSchemeBox (HWND hwndCB) {
HKEY hkey;
int i;
DWORD dwDisposition;
// Get the class name and the value count.
if (RegCreateKeyEx(HKEY_CURRENT_USER, CONTROL_KEY, 0, __TEXT(""),
REG_OPTION_NON_VOLATILE, KEY_ENUMERATE_SUB_KEYS | KEY_EXECUTE | KEY_QUERY_VALUE,
NULL, &hkey, &dwDisposition) != ERROR_SUCCESS) return;
// Enumerate the child keys.
for (i = 0; ; i++) {
DWORD cbValueName;
TCHAR szValueName[256];
LONG l = RegEnumValue(hkey, i, szValueName, &cbValueName, NULL, NULL, NULL, NULL);
if (ERROR_NO_MORE_ITEMS == l) break;
// Add each value to a combobox.
if (lstrlen(szValueName) == 0) lstrcpy(szValueName, __TEXT("<NO NAME>"));
ComboBox_AddString(hwndCB, ((szValueName[0] == 0) ? __TEXT("<NO NAME>") : szValueName));
}
RegCloseKey(hkey);
}
// ****************************************************************************
// Main HC Dialog handler
// ****************************************************************************
BOOL WINAPI HighContrastDlg (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
HKEY hkey;
HWND hwndCB = GetDlgItem(hwnd, IDC_HC_DEFAULTSCHEME);
int i;
DWORD dwDisposition;
TCHAR szBuf[256];
DWORD cbSize;
BOOL fProcessed = TRUE;
TCHAR szScheme[250];
switch (uMsg) {
case WM_INITDIALOG:
CheckDlgButton(hwnd, IDC_HC_HOTKEY, (g_hc.dwFlags & HCF_HOTKEYACTIVE) ? TRUE : FALSE);
CheckRadioButton(hwnd, IDC_HC_WHITE_BLACK, IDC_HC_CUSTOM, IDC_HC_WHITE_BLACK);
FillCustonSchemeBox(hwndCB);
// Get the last custom scheme
cbSize = sizeof(szScheme);
RegQueryValueEx(HKEY_CURRENT_USER, HC_KEY LAST_CUSTOM_SCHEME, NULL,
NULL, (PBYTE) szScheme, &cbSize);
// Set the proper selection in the combobox.
if (ComboBox_SelectString(hwndCB, -1, szScheme) == CB_ERR) {
// Not found, select the 1st one.
ComboBox_SetCurSel(hwndCB, 0);
}
// Leave disabled since we don't have schemes yet.
EnableWindow(hwndCB, FALSE);
// BCK - 3/14/95 - make sure white/black is default if no custom is selected.
if (g_hc.lpszDefaultScheme[0] == 0) {
// No HC Scheme has been selected as yet. Make it WHITE on BLACK.
CheckRadioButton(hwnd, IDC_HC_WHITE_BLACK, IDC_HC_CUSTOM, IDC_HC_WHITE_BLACK);
EnableWindow(hwndCB, FALSE);
// Set last and current scheme names to new default color scheme.
LoadString(g_hinst, IDS_WHITEBLACK_SCHEME, g_hc.lpszDefaultScheme, 200);
} else {
// We do have a color scheme in CurHCScheme. Check if its BlackonWHite
LoadString(g_hinst, IDS_WHITEBLACK_SCHEME, szBuf, 200);
if (lstrcmp(CurHCScheme, szBuf) == 0) {
// Color scheme is Blackon WHite. Check the correct radio button.
CheckRadioButton(hwnd, IDC_HC_WHITE_BLACK, IDC_HC_CUSTOM, IDC_HC_WHITE_BLACK);
} else {
// Check if it is whiteonblack.
LoadString(g_hinst, IDS_WHITEBLACK_SCHEME, szBuf, 200);
if (lstrcmp(CurHCScheme, szBuf) == 0) {
// it is white on black. Check the radio button.
CheckRadioButton(hwnd, IDC_HC_WHITE_BLACK, IDC_HC_CUSTOM, IDC_HC_BLACK_WHITE);
EnableWindow(hwndCB, FALSE);
} else {
// Its not white on black, and its not black on white. Enable
// the custom control.
CheckRadioButton(hwnd, IDC_HC_WHITE_BLACK, IDC_HC_CUSTOM, IDC_HC_CUSTOM);
EnableWindow(hwndCB, TRUE);
}
}
}
break;
case WM_HELP: // F1
WinHelp(((LPHELPINFO) lParam)->hItemHandle, __TEXT("access.hlp"), HELP_WM_HELP, (DWORD) (LPSTR) g_aIds);
break;
case WM_CONTEXTMENU: // right mouse click
WinHelp((HWND) wParam, __TEXT("access.hlp"), HELP_CONTEXTMENU, (DWORD) (LPSTR) g_aIds);
break;
// Handle the generic commands
case WM_COMMAND:
switch (GET_WM_COMMAND_ID(wParam, lParam)) {
case IDC_HC_HOTKEY:
g_hc.dwFlags ^= HCF_HOTKEYACTIVE;
break;
case IDC_HC_BLACK_WHITE:
// Disable the default scheme checkbox
EnableWindow(hwndCB, FALSE);
CheckRadioButton(hwnd, IDC_HC_WHITE_BLACK, IDC_HC_CUSTOM, IDC_HC_BLACK_WHITE);
LoadString(g_hinst, IDS_BLACKWHITE_SCHEME, CurHCScheme, 200);
break;
case IDC_HC_WHITE_BLACK:
EnableWindow(hwndCB, FALSE);
CheckRadioButton(hwnd, IDC_HC_WHITE_BLACK, IDC_HC_CUSTOM, IDC_HC_WHITE_BLACK);
LoadString(g_hinst, IDS_WHITEBLACK_SCHEME, CurHCScheme, 200);
break;
// The user has selected the custom button.
case IDC_HC_CUSTOM:
CheckRadioButton(hwnd, IDC_HC_WHITE_BLACK, IDC_HC_CUSTOM, IDC_HC_CUSTOM);
EnableWindow(hwndCB, TRUE);
i = ComboBox_GetCurSel(hwndCB);
ComboBox_GetLBText(hwndCB, i, g_hc.lpszDefaultScheme);
break;
case IDC_HC_DEFAULTSCHEME:
if (GET_WM_COMMAND_CMD(wParam, lParam) == CBN_SELCHANGE) {
// Get the current string into our variable
i = ComboBox_GetCurSel(hwndCB);
ComboBox_GetLBText(hwndCB, i, g_hc.lpszDefaultScheme);
}
break;
case IDOK:
// Save the current custom scheme to the registry.
if (ERROR_SUCCESS == RegCreateKeyEx(
HKEY_CURRENT_USER,
HC_KEY,
0,
__TEXT(""),
REG_OPTION_NON_VOLATILE,
KEY_EXECUTE | KEY_QUERY_VALUE | KEY_SET_VALUE,
NULL,
&hkey,
&dwDisposition)) {
TCHAR szCust[256];
i = ComboBox_GetCurSel(hwndCB);
ComboBox_GetLBText(hwndCB, i, szCust);
RegSetValueEx(hkey, LAST_CUSTOM_SCHEME, 0, REG_SZ, (PBYTE) szCust, lstrlen(szCust));
}
EndDialog(hwnd, IDOK);
break;
case IDCANCEL:
lstrcpy(CurHCScheme, LastHCScheme);
EndDialog(hwnd, IDCANCEL);
break;
}
break;
default:
fProcessed = FALSE; break;
}
return(fProcessed);
}
// *******************************************************************
// DisplayDialog handler
// *******************************************************************
BOOL WINAPI DisplayDlg (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
HIGHCONTRAST hc;
TCHAR szScheme[256];
BOOL fProcessed = TRUE;
switch (uMsg) {
case WM_INITDIALOG:
CheckDlgButton(hwnd, IDC_HC_ENABLE,
(g_hc.dwFlags & HCF_HIGHCONTRASTON) ? TRUE : FALSE);
if (!(g_hc.dwFlags & HCF_AVAILABLE)) {
EnableWindow(GetDlgItem(hwnd, IDC_HC_SETTINGS), FALSE);
EnableWindow(GetDlgItem(hwnd,IDC_HC_ENABLE), FALSE);
}
break;
case WM_HELP:
WinHelp(((LPHELPINFO) lParam)->hItemHandle, __TEXT("access.hlp"), HELP_WM_HELP, (DWORD) (LPSTR) g_aIds);
break;
case WM_CONTEXTMENU:
WinHelp((HWND) wParam, __TEXT("access.hlp"), HELP_CONTEXTMENU, (DWORD) (LPSTR) g_aIds);
break;
case WM_COMMAND:
switch (GET_WM_COMMAND_ID(wParam, lParam)) {
case IDC_HC_ENABLE:
g_hc.dwFlags ^= HCF_HIGHCONTRASTON;
SendMessage(GetParent(hwnd), PSM_CHANGED, (WPARAM) hwnd, 0);
break;
case IDC_HC_SETTINGS:
hc = g_hc;
lstrcpy(szScheme, g_hc.lpszDefaultScheme);
if (DialogBox(g_hinst, MAKEINTRESOURCE(IDD_HIGHCONSETTINGS), hwnd, HighContrastDlg) == IDCANCEL) {
g_hc = hc;
lstrcpy(g_hc.lpszDefaultScheme, szScheme);
} else {
SendMessage(GetParent(hwnd), PSM_CHANGED, (WPARAM) hwnd, 0);
}
break;
}
break;
case WM_NOTIFY:
switch (((NMHDR *)lParam)->code) {
case PSN_APPLY: SetAccessibilitySettings(); break;
}
break;
default:
fProcessed = FALSE;
break;
}
return(fProcessed);
}
///////////////////////////////// End of File /////////////////////////////////