From 221f21c62a7c721761a41bc4fd4670eb4aa5dbe8 Mon Sep 17 00:00:00 2001 From: Ged Murphy Date: Mon, 1 Oct 2007 13:23:28 +0000 Subject: [PATCH] It's not pretty, but get desk.cpl building in msvc again. svn path=/trunk/; revision=29328 --- reactos/dll/cpl/desk/advmon.c | 23 +++++++++++++++++++++++ reactos/dll/cpl/desk/devsett.c | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/reactos/dll/cpl/desk/advmon.c b/reactos/dll/cpl/desk/advmon.c index e38ec14f6c4..dc935b55e79 100644 --- a/reactos/dll/cpl/desk/advmon.c +++ b/reactos/dll/cpl/desk/advmon.c @@ -99,6 +99,9 @@ BuildAdvPropTitle(IDataObject *pdo, LPTSTR lpBuffer, DWORD dwBufferLen) LocalFree((HLOCAL)lpDisplayName); } + +typedef HPSXA (WINAPI * CPSEAE)(HKEY,LPCWSTR,UINT,IDataObject*); + BOOL DisplayAdvancedSettings(HWND hWndParent, PDISPLAY_DEVICE_ENTRY DisplayDevice) { @@ -108,6 +111,11 @@ DisplayAdvancedSettings(HWND hWndParent, PDISPLAY_DEVICE_ENTRY DisplayDevice) HPSXA hpsxaDev, hpsxaDisp; BOOL Ret; IDataObject *pdo; + HMODULE hShell32 = NULL; + CPSEAE msvc_SHCreatePropSheetExtArrayEx; + + /* silence gcc warning */ + msvc_SHCreatePropSheetExtArrayEx = NULL; /* FIXME: Build the "%s and %s" caption string for the monitor and adapter name */ szCaption[0] = _T('\0'); @@ -127,11 +135,23 @@ DisplayAdvancedSettings(HWND hWndParent, PDISPLAY_DEVICE_ENTRY DisplayDevice) if (pdo != NULL) BuildAdvPropTitle(pdo, szCaption, sizeof(szCaption) / sizeof(szCaption[0])); +#ifdef _MSC_VER + hShell32 = LoadLibrary(_T("shell32.dll")); + if(hShell32 == NULL) + return FALSE; + msvc_SHCreatePropSheetExtArrayEx = (CPSEAE)GetProcAddress(hShell32, (LPCSTR)194); + hpsxaDev = msvc_SHCreatePropSheetExtArrayEx(HKEY_LOCAL_MACHINE, REGSTR_PATH_CONTROLSFOLDER TEXT("\\Device"), MAX_ADVANCED_PAGES - psh.nPages, pdo); +#else hpsxaDev = SHCreatePropSheetExtArrayEx(HKEY_LOCAL_MACHINE, REGSTR_PATH_CONTROLSFOLDER TEXT("\\Device"), MAX_ADVANCED_PAGES - psh.nPages, pdo); +#endif if (hpsxaDev != NULL) SHAddFromPropSheetExtArray(hpsxaDev, PropSheetAddPage, (LPARAM)&psh); +#ifdef _MSC_VER + hpsxaDisp = msvc_SHCreatePropSheetExtArrayEx(HKEY_LOCAL_MACHINE, REGSTR_PATH_CONTROLSFOLDER TEXT("\\Device"), MAX_ADVANCED_PAGES - psh.nPages, pdo); +#else hpsxaDisp = SHCreatePropSheetExtArrayEx(HKEY_LOCAL_MACHINE, REGSTR_PATH_CONTROLSFOLDER TEXT("\\Display"), MAX_ADVANCED_PAGES - psh.nPages, pdo); +#endif if (hpsxaDisp != NULL) SHAddFromPropSheetExtArray(hpsxaDisp, PropSheetAddPage, (LPARAM)&psh); @@ -145,5 +165,8 @@ DisplayAdvancedSettings(HWND hWndParent, PDISPLAY_DEVICE_ENTRY DisplayDevice) IDataObject_Release(pdo); + if (hShell32) + FreeLibrary(hShell32); + return Ret; } diff --git a/reactos/dll/cpl/desk/devsett.c b/reactos/dll/cpl/desk/devsett.c index a124826e72c..5c6320f5b1d 100644 --- a/reactos/dll/cpl/desk/devsett.c +++ b/reactos/dll/cpl/desk/devsett.c @@ -228,7 +228,7 @@ pCDevSettings_OpenDeviceKey(PCDevSettings This, if (lpRegKey != NULL) { if (wcslen(lpRegKey) >= wcslen(szRegPrefix) && - !wcsnicmp(lpRegKey, + !_wcsnicmp(lpRegKey, szRegPrefix, wcslen(szRegPrefix))) {