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

general.c
Go to the documentation of this file.
00001 #include "wined3dcfg.h"
00002 
00003 static LONG ReadSetting(HKEY hKey, PWCHAR szKey, PWCHAR szBuffer, DWORD dwSize)
00004 {
00005     return RegQueryValueExW(hKey, szKey, NULL, NULL, (LPBYTE)szBuffer, &dwSize);
00006 }
00007 
00008 static VOID SaveSetting(HKEY hKey, PWCHAR szKey, PWCHAR szState)
00009 {
00010     RegSetValueExW(hKey, szKey, 0, REG_SZ, (LPBYTE)szState, (wcslen(szState) + 1) * sizeof(WCHAR));
00011 }
00012 
00013 static VOID InitSettings(HWND hWndDlg)
00014 {
00015     HKEY hKey;
00016     WCHAR szBuffer[MAX_KEY_LENGTH];
00017     DWORD dwSize = MAX_KEY_LENGTH;
00018 
00019     if (RegOpenKeyExW(HKEY_CURRENT_USER,
00020                       KEY_WINE,
00021                       0,
00022                       KEY_READ,
00023                       &hKey) != ERROR_SUCCESS)
00024     {
00025         return;
00026     }
00027 
00028     if(ReadSetting(hKey, KEY_GLSL, szBuffer, dwSize) == ERROR_SUCCESS)
00029         CheckDlgButton(hWndDlg, IDC_GLSL, (wcscmp(VALUE_DISABLED, szBuffer) != 0) ? BST_CHECKED : BST_UNCHECKED);
00030 
00031     if(ReadSetting(hKey, KEY_MULTISAMPLING, szBuffer, dwSize) == ERROR_SUCCESS)
00032         CheckDlgButton(hWndDlg, IDC_MULTISAMPLING, (wcscmp(VALUE_ENABLED, szBuffer) == 0) ? BST_CHECKED : BST_UNCHECKED);
00033 
00034     if(ReadSetting(hKey, KEY_PIXELSHADERS, szBuffer, dwSize) == ERROR_SUCCESS)
00035         CheckDlgButton(hWndDlg, IDC_PIXELSHADERS, (wcscmp(VALUE_ENABLED, szBuffer) == 0) ? BST_CHECKED : BST_UNCHECKED);
00036 
00037     if(ReadSetting(hKey, KEY_STRICTDRAWORDERING, szBuffer, dwSize) == ERROR_SUCCESS)
00038         CheckDlgButton(hWndDlg, IDC_STRICTDRAWORDERING, (wcscmp(VALUE_ENABLED, szBuffer) == 0) ? BST_CHECKED : BST_UNCHECKED);
00039 
00040     if(ReadSetting(hKey, KEY_VERTEXSHADERS, szBuffer, dwSize) == ERROR_SUCCESS)
00041         CheckDlgButton(hWndDlg, IDC_VERTEXSHADERS, (wcscmp(VALUE_NONE, szBuffer) != 0) ? BST_CHECKED : BST_UNCHECKED);
00042 
00043     SendDlgItemMessageW(hWndDlg, IDC_OFFSCREEN, CB_ADDSTRING, 0, (LPARAM)VALUE_FBO);
00044     SendDlgItemMessageW(hWndDlg, IDC_OFFSCREEN, CB_ADDSTRING, 0, (LPARAM)VALUE_BACKBUFFER);
00045 
00046     SendDlgItemMessageW(hWndDlg, IDC_OFFSCREEN, CB_SETITEMDATA, ITEM_FBO, (LPARAM)ITEM_FBO);
00047     SendDlgItemMessageW(hWndDlg, IDC_OFFSCREEN, CB_SETITEMDATA, ITEM_BACKBUFFER, (LPARAM)ITEM_BACKBUFFER);
00048 
00049     if(ReadSetting(hKey, KEY_OFFSCREEN, szBuffer, dwSize) == ERROR_SUCCESS && !wcscmp(VALUE_BACKBUFFER, szBuffer))
00050         SendDlgItemMessageW(hWndDlg, IDC_OFFSCREEN, CB_SETCURSEL, 1, 0);
00051     else
00052         SendDlgItemMessageW(hWndDlg, IDC_OFFSCREEN, CB_SETCURSEL, 0, 0);
00053 
00054     SendDlgItemMessageW(hWndDlg, IDC_LOCKING, CB_ADDSTRING, 0, (LPARAM)VALUE_READTEX);
00055     SendDlgItemMessageW(hWndDlg, IDC_LOCKING, CB_ADDSTRING, 0, (LPARAM)VALUE_READDRAW);
00056     SendDlgItemMessageW(hWndDlg, IDC_LOCKING, CB_ADDSTRING, 0, (LPARAM)VALUE_DISABLED);
00057 
00058     SendDlgItemMessageW(hWndDlg, IDC_LOCKING, CB_SETITEMDATA, (WPARAM)ITEM_READTEX, (LPARAM)ITEM_READTEX);
00059     SendDlgItemMessageW(hWndDlg, IDC_LOCKING, CB_SETITEMDATA, (WPARAM)ITEM_READDRAW, (LPARAM)ITEM_READDRAW);
00060     SendDlgItemMessageW(hWndDlg, IDC_LOCKING, CB_SETITEMDATA, (WPARAM)ITEM_DISABLED, (LPARAM)ITEM_DISABLED);
00061 
00062     SendDlgItemMessageW(hWndDlg, IDC_LOCKING, CB_SETCURSEL, 0, 0);
00063 
00064     if(ReadSetting(hKey, KEY_LOCKING, szBuffer, dwSize) == ERROR_SUCCESS)
00065     {
00066         if(!wcscmp(VALUE_READDRAW, szBuffer))
00067             SendDlgItemMessageW(hWndDlg, IDC_LOCKING, CB_SETCURSEL, 1, 0);
00068         else if(!wcscmp(VALUE_DISABLED, szBuffer))
00069             SendDlgItemMessageW(hWndDlg, IDC_LOCKING, CB_SETCURSEL, 2, 0);
00070     }
00071 
00072     RegCloseKey(hKey);
00073 }
00074 
00075 static VOID WriteSettings(HWND hWndDlg)
00076 {
00077     HKEY hKey;
00078     INT iCurSel;
00079 
00080     if (RegOpenKeyExW(HKEY_CURRENT_USER,
00081                       KEY_WINE,
00082                       0,
00083                       KEY_WRITE,
00084                       &hKey) != ERROR_SUCCESS)
00085     {
00086         return;
00087     }
00088 
00089     SaveSetting(hKey, KEY_GLSL, (IsDlgButtonChecked(hWndDlg, IDC_GLSL) == BST_CHECKED) ? VALUE_ENABLED : VALUE_DISABLED);
00090     SaveSetting(hKey, KEY_MULTISAMPLING, (IsDlgButtonChecked(hWndDlg, IDC_MULTISAMPLING) == BST_CHECKED) ? VALUE_ENABLED : VALUE_DISABLED);
00091     SaveSetting(hKey, KEY_PIXELSHADERS, (IsDlgButtonChecked(hWndDlg, IDC_PIXELSHADERS) == BST_CHECKED) ? VALUE_ENABLED : VALUE_DISABLED);
00092     SaveSetting(hKey, KEY_STRICTDRAWORDERING, (IsDlgButtonChecked(hWndDlg, IDC_STRICTDRAWORDERING) == BST_CHECKED) ? VALUE_ENABLED : VALUE_DISABLED);
00093     SaveSetting(hKey, KEY_VERTEXSHADERS, (IsDlgButtonChecked(hWndDlg, IDC_VERTEXSHADERS) == BST_CHECKED) ? VALUE_ENABLED : VALUE_NONE);
00094 
00095     iCurSel = (INT)SendDlgItemMessageW(hWndDlg, IDC_LOCKING, CB_GETCURSEL, 0, 0);
00096 
00097     if(iCurSel != CB_ERR)
00098     {
00099         iCurSel = (INT)SendDlgItemMessageW(hWndDlg, IDC_LOCKING, CB_GETITEMDATA, (WPARAM)iCurSel, 0);
00100 
00101         if(iCurSel == ITEM_READDRAW)
00102             SaveSetting(hKey, KEY_LOCKING, VALUE_READDRAW);
00103         else if(iCurSel == ITEM_DISABLED)
00104             SaveSetting(hKey, KEY_LOCKING, VALUE_DISABLED);
00105         else
00106             SaveSetting(hKey, KEY_LOCKING, VALUE_READTEX);
00107     }
00108 
00109     iCurSel = (INT)SendDlgItemMessageW(hWndDlg, IDC_OFFSCREEN, CB_GETCURSEL, 0, 0);
00110 
00111     if(iCurSel != CB_ERR)
00112     {
00113         iCurSel = (INT)SendDlgItemMessageW(hWndDlg, IDC_OFFSCREEN, CB_GETITEMDATA, (WPARAM)iCurSel, 0);
00114 
00115         if(iCurSel == ITEM_BACKBUFFER)
00116             SaveSetting(hKey, KEY_OFFSCREEN, VALUE_BACKBUFFER);
00117         else
00118             SaveSetting(hKey, KEY_OFFSCREEN, VALUE_FBO);
00119     }
00120 
00121     RegCloseKey(hKey);
00122 }
00123 
00124 
00125 INT_PTR CALLBACK GeneralPageProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
00126 {
00127     LPPSHNOTIFY lppsn;
00128 
00129     switch (uMsg)
00130     {
00131         case WM_INITDIALOG:
00132             InitSettings(hWndDlg);
00133             return TRUE;
00134 
00135         case WM_COMMAND:
00136             switch (LOWORD(wParam))
00137             {
00138                 case IDC_GLSL:
00139                 case IDC_LOCKING:
00140                 case IDC_MULTISAMPLING:
00141                 case IDC_OFFSCREEN:
00142                 case IDC_PIXELSHADERS:
00143                 case IDC_STRICTDRAWORDERING:
00144                 case IDC_VERTEXSHADERS:
00145                     PropSheet_Changed(GetParent(hWndDlg), hWndDlg);
00146                     break;
00147                 default:
00148                     break;
00149             }
00150             break;
00151 
00152         case WM_NOTIFY:
00153             lppsn = (LPPSHNOTIFY)lParam;
00154             if (lppsn->hdr.code == PSN_APPLY)
00155             {
00156                 WriteSettings(hWndDlg);
00157                 return TRUE;
00158             }
00159             break;
00160     }
00161 
00162     return FALSE;
00163 }

Generated on Thu May 24 2012 04:21:04 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.