mirror of
https://github.com/reactos/reactos.git
synced 2025-05-30 14:39:46 +00:00
[SHELL32][SDK] Implement SHGetShellStyleHInstance (#5707)
Co-authored-by: Oleg Dubinskiy <oleg.dubinskij30@gmail.com> This PR supersedes PR #3851. - Implement SHGetShellStyleHInstance function. - Add SHGetShellStyleHInstance prototype to <shlobj.h>. CORE-17707
This commit is contained in:
parent
6c55a3aa2a
commit
29e1a41d07
3 changed files with 46 additions and 11 deletions
|
@ -1202,14 +1202,3 @@ DWORD WINAPI SHGetComputerDisplayNameW(DWORD param1, DWORD param2, DWORD param3,
|
||||||
FIXME("SHGetComputerDisplayNameW() stub\n");
|
FIXME("SHGetComputerDisplayNameW() stub\n");
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Unimplemented
|
|
||||||
*/
|
|
||||||
EXTERN_C HINSTANCE
|
|
||||||
WINAPI
|
|
||||||
SHGetShellStyleHInstance(VOID)
|
|
||||||
{
|
|
||||||
FIXME("SHGetShellStyleHInstance() stub\n");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
|
@ -9,6 +9,48 @@
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(shell);
|
WINE_DEFAULT_DEBUG_CHANNEL(shell);
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* SHGetShellStyleHInstance (SHELL32.749)
|
||||||
|
*/
|
||||||
|
EXTERN_C HINSTANCE
|
||||||
|
WINAPI
|
||||||
|
SHGetShellStyleHInstance(VOID)
|
||||||
|
{
|
||||||
|
HINSTANCE hInst = NULL;
|
||||||
|
WCHAR szPath[MAX_PATH], szColorName[100];
|
||||||
|
HRESULT hr;
|
||||||
|
CStringW strShellStyle;
|
||||||
|
|
||||||
|
TRACE("SHGetShellStyleHInstance called\n");
|
||||||
|
|
||||||
|
/* First, attempt to load the shellstyle dll from the current active theme */
|
||||||
|
hr = GetCurrentThemeName(szPath, _countof(szPath), szColorName, _countof(szColorName), NULL, 0);
|
||||||
|
if (FAILED(hr))
|
||||||
|
goto DoDefault;
|
||||||
|
|
||||||
|
/* Strip the theme filename */
|
||||||
|
PathRemoveFileSpecW(szPath);
|
||||||
|
|
||||||
|
strShellStyle = szPath;
|
||||||
|
strShellStyle += L"\\Shell\\";
|
||||||
|
strShellStyle += szColorName;
|
||||||
|
strShellStyle += L"\\ShellStyle.dll";
|
||||||
|
|
||||||
|
hInst = LoadLibraryExW(strShellStyle, NULL, LOAD_LIBRARY_AS_DATAFILE);
|
||||||
|
if (hInst)
|
||||||
|
return hInst;
|
||||||
|
|
||||||
|
/* Otherwise, use the version stored in the System32 directory */
|
||||||
|
DoDefault:
|
||||||
|
if (!ExpandEnvironmentStringsW(L"%SystemRoot%\\System32\\ShellStyle.dll",
|
||||||
|
szPath, _countof(szPath)))
|
||||||
|
{
|
||||||
|
ERR("Expand failed\n");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return LoadLibraryExW(szPath, NULL, LOAD_LIBRARY_AS_DATAFILE);
|
||||||
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* SHCreatePropertyBag (SHELL32.715)
|
* SHCreatePropertyBag (SHELL32.715)
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -336,6 +336,10 @@ SHOpenFolderAndSelectItems(
|
||||||
|
|
||||||
int WINAPI PathCleanupSpec(_In_opt_ LPCWSTR, _Inout_ LPWSTR);
|
int WINAPI PathCleanupSpec(_In_opt_ LPCWSTR, _Inout_ LPWSTR);
|
||||||
|
|
||||||
|
#if (_WIN32_WINNT >= _WIN32_WINNT_WINXP) && (_WIN32_WINNT <= _WIN32_WINNT_WS03)
|
||||||
|
HINSTANCE WINAPI SHGetShellStyleHInstance(VOID);
|
||||||
|
#endif
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* IContextMenu interface
|
* IContextMenu interface
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue