ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

access.c
Go to the documentation of this file.
00001 /* $Id: access.c 29112 2007-09-19 21:31:49Z ekohl $
00002  *
00003  * PROJECT:         ReactOS Accessibility Control Panel
00004  * LICENSE:         GPL - See COPYING in the top level directory
00005  * FILE:            dll/cpl/access/access.c
00006  * PURPOSE:         Main control panel code
00007  * COPYRIGHT:       Copyright 2004 Johannes Anderwald (j_anderw@sbox.tugraz.at)
00008  *                  Copyright 2007 Eric Kohl
00009  */
00010 
00011 #include "access.h"
00012 
00013 #define NUM_APPLETS (1)
00014 
00015 LONG CALLBACK SystemApplet(VOID);
00016 HINSTANCE hApplet = 0;
00017 HWND hCPLWindow;
00018 
00019 /* Applets */
00020 APPLET Applets[NUM_APPLETS] =
00021 {
00022     {IDI_CPLACCESS, IDS_CPLSYSTEMNAME, IDS_CPLSYSTEMDESCRIPTION, SystemApplet}
00023 };
00024 
00025 
00026 static BOOL
00027 ReadSettings(PGLOBAL_DATA pGlobalData)
00028 {
00029     DWORD dwDisposition;
00030     DWORD dwLength;
00031     HKEY hKey;
00032     LONG lError;
00033 
00034     /* Get sticky keys information */
00035     pGlobalData->stickyKeys.cbSize = sizeof(STICKYKEYS);
00036     if (!SystemParametersInfo(SPI_GETSTICKYKEYS,
00037                               sizeof(STICKYKEYS),
00038                               &pGlobalData->stickyKeys,
00039                               0))
00040         return FALSE;
00041 
00042     /* Get filter keys information */
00043     pGlobalData->filterKeys.cbSize = sizeof(FILTERKEYS);
00044     if (!SystemParametersInfo(SPI_GETFILTERKEYS,
00045                               sizeof(FILTERKEYS),
00046                               &pGlobalData->filterKeys,
00047                               0))
00048         return FALSE;
00049 
00050     /* Get toggle keys information */
00051     pGlobalData->toggleKeys.cbSize = sizeof(TOGGLEKEYS);
00052     if (!SystemParametersInfo(SPI_GETTOGGLEKEYS,
00053                               sizeof(TOGGLEKEYS),
00054                               &pGlobalData->toggleKeys,
00055                               0))
00056         return FALSE;
00057 
00058     /* Get keyboard preference information */
00059     if (!SystemParametersInfo(SPI_GETKEYBOARDPREF,
00060                               0,
00061                               &pGlobalData->bKeyboardPref,
00062                               0))
00063         return FALSE;
00064 
00065     /* Get high contrast information */
00066     pGlobalData->highContrast.cbSize = sizeof(HIGHCONTRAST);
00067     SystemParametersInfo(SPI_GETHIGHCONTRAST,
00068                          sizeof(HIGHCONTRAST),
00069                          &pGlobalData->highContrast,
00070                          0);
00071 
00072     SystemParametersInfo(SPI_GETCARETWIDTH,
00073                          0,
00074                          &pGlobalData->uCaretWidth,
00075                          0);
00076 
00077     pGlobalData->uCaretBlinkTime = GetCaretBlinkTime();
00078 
00079     /* Get sound settings */
00080     pGlobalData->ssSoundSentry.cbSize = sizeof(SOUNDSENTRY);
00081     SystemParametersInfo(SPI_GETSOUNDSENTRY,
00082                          sizeof(SOUNDSENTRY),
00083                          &pGlobalData->ssSoundSentry,
00084                          0);
00085 
00086     SystemParametersInfo(SPI_GETSHOWSOUNDS,
00087                          0,
00088                          &pGlobalData->bShowSounds,
00089                          0);
00090 
00091     /* Get mouse keys information */
00092     pGlobalData->mouseKeys.cbSize = sizeof(MOUSEKEYS);
00093     SystemParametersInfo(SPI_GETMOUSEKEYS,
00094                          sizeof(MOUSEKEYS),
00095                          &pGlobalData->mouseKeys,
00096                          0);
00097 
00098     /* Get access timeout information */
00099     pGlobalData->accessTimeout.cbSize = sizeof(ACCESSTIMEOUT);
00100     SystemParametersInfo(SPI_GETACCESSTIMEOUT,
00101                          sizeof(ACCESSTIMEOUT),
00102                          &pGlobalData->accessTimeout,
00103                          0);
00104 
00105     /* Get serial keys information */
00106     pGlobalData->serialKeys.cbSize = sizeof(SERIALKEYS);
00107     pGlobalData->serialKeys.lpszActivePort = pGlobalData->szActivePort;
00108     pGlobalData->serialKeys.lpszPort = pGlobalData->szPort;
00109     SystemParametersInfo(SPI_GETSERIALKEYS,
00110                          sizeof(SERIALKEYS),
00111                          &pGlobalData->serialKeys,
00112                          0);
00113 
00114     pGlobalData->bWarningSounds = TRUE;
00115     pGlobalData->bSoundOnActivation = TRUE;
00116 
00117     lError = RegCreateKeyEx(HKEY_CURRENT_USER,
00118                             _T("Control Panel\\Accessibility"),
00119                             0,
00120                             NULL,
00121                             REG_OPTION_NON_VOLATILE,
00122                             KEY_EXECUTE | KEY_QUERY_VALUE,
00123                             NULL,
00124                             &hKey,
00125                             &dwDisposition);
00126     if (lError != ERROR_SUCCESS)
00127         return TRUE;
00128 
00129     dwLength = sizeof(BOOL);
00130     lError = RegQueryValueEx(hKey,
00131                              _T("Warning Sounds"),
00132                              NULL,
00133                              NULL,
00134                              (LPBYTE)&pGlobalData->bWarningSounds,
00135                              &dwLength);
00136     if (lError != ERROR_SUCCESS)
00137         pGlobalData->bWarningSounds = TRUE;
00138 
00139     dwLength = sizeof(BOOL);
00140     lError = RegQueryValueEx(hKey,
00141                              _T("Sound On Activation"),
00142                              NULL,
00143                              NULL,
00144                              (LPBYTE)&pGlobalData->bSoundOnActivation,
00145                              &dwLength);
00146     if (lError != ERROR_SUCCESS)
00147         pGlobalData->bSoundOnActivation = TRUE;
00148 
00149     RegCloseKey(hKey);
00150 
00151     return TRUE;
00152 }
00153 
00154 
00155 static VOID
00156 InitPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc, PGLOBAL_DATA pGlobalData)
00157 {
00158     ZeroMemory(psp, sizeof(PROPSHEETPAGE));
00159     psp->dwSize = sizeof(PROPSHEETPAGE);
00160     psp->dwFlags = PSP_DEFAULT;
00161     psp->hInstance = hApplet;
00162     psp->pszTemplate = MAKEINTRESOURCE(idDlg);
00163     psp->pfnDlgProc = DlgProc;
00164     psp->lParam = (LPARAM)pGlobalData;
00165 }
00166 
00167 
00168 /* First Applet */
00169 
00170 LONG CALLBACK
00171 SystemApplet(VOID)
00172 {
00173     PGLOBAL_DATA pGlobalData;
00174     PROPSHEETPAGE psp[5];
00175     PROPSHEETHEADER psh;
00176     TCHAR Caption[1024];
00177     INT ret;
00178 
00179     LoadString(hApplet, IDS_CPLSYSTEMNAME, Caption, sizeof(Caption) / sizeof(TCHAR));
00180 
00181     pGlobalData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBAL_DATA));
00182     if (pGlobalData == NULL)
00183         return 0;
00184 
00185     if (!ReadSettings(pGlobalData))
00186         return 0;
00187 
00188     ZeroMemory(&psh, sizeof(PROPSHEETHEADER));
00189     psh.dwSize = sizeof(PROPSHEETHEADER);
00190     psh.dwFlags =  PSH_PROPSHEETPAGE;
00191     psh.hwndParent = hCPLWindow;
00192     psh.hInstance = hApplet;
00193     psh.hIcon = LoadIcon(hApplet, MAKEINTRESOURCE(IDI_CPLACCESS));
00194     psh.pszCaption = Caption;
00195     psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE);
00196     psh.nStartPage = 0;
00197     psh.ppsp = psp;
00198 
00199     InitPropSheetPage(&psp[0], IDD_PROPPAGEKEYBOARD, (DLGPROC)KeyboardPageProc, pGlobalData);
00200     InitPropSheetPage(&psp[1], IDD_PROPPAGESOUND, (DLGPROC)SoundPageProc, pGlobalData);
00201     InitPropSheetPage(&psp[2], IDD_PROPPAGEDISPLAY, (DLGPROC)DisplayPageProc, pGlobalData);
00202     InitPropSheetPage(&psp[3], IDD_PROPPAGEMOUSE, (DLGPROC)MousePageProc, pGlobalData);
00203     InitPropSheetPage(&psp[4], IDD_PROPPAGEGENERAL, (DLGPROC)GeneralPageProc, pGlobalData);
00204 
00205     ret = PropertySheet(&psh);
00206 
00207     HeapFree(GetProcessHeap(), 0, pGlobalData);
00208 
00209     return (LONG)(ret != -1);
00210 }
00211 
00212 /* Control Panel Callback */
00213 LONG CALLBACK
00214 CPlApplet(HWND hwndCPl,
00215           UINT uMsg,
00216           LPARAM lParam1,
00217           LPARAM lParam2)
00218 {
00219     INT i = (INT)lParam1;
00220 
00221     switch (uMsg)
00222     {
00223         case CPL_INIT:
00224             return TRUE;
00225 
00226         case CPL_GETCOUNT:
00227             return NUM_APPLETS;
00228 
00229         case CPL_INQUIRE:
00230             {
00231                 CPLINFO *CPlInfo = (CPLINFO*)lParam2;
00232                 CPlInfo->lData = 0;
00233                 CPlInfo->idIcon = Applets[i].idIcon;
00234                 CPlInfo->idName = Applets[i].idName;
00235                 CPlInfo->idInfo = Applets[i].idDescription;
00236             }
00237             break;
00238 
00239         case CPL_DBLCLK:
00240             hCPLWindow = hwndCPl;
00241             Applets[i].AppletProc();
00242             break;
00243     }
00244 
00245     return FALSE;
00246 }
00247 
00248 
00249 BOOL WINAPI
00250 DllMain(HINSTANCE hinstDLL,
00251         DWORD dwReason,
00252         LPVOID lpvReserved)
00253 {
00254     UNREFERENCED_PARAMETER(lpvReserved);
00255 
00256     switch (dwReason)
00257     {
00258         case DLL_PROCESS_ATTACH:
00259         case DLL_THREAD_ATTACH:
00260             hApplet = hinstDLL;
00261             break;
00262     }
00263 
00264   return TRUE;
00265 }
00266 

Generated on Sat May 26 2012 04:19:39 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.