diff --git a/dlls/shell32/shell32.spec b/dlls/shell32/shell32.spec index e13357785ea..e7de4d39d09 100644 --- a/dlls/shell32/shell32.spec +++ b/dlls/shell32/shell32.spec @@ -335,7 +335,7 @@ import kernel32.dll @ stdcall DoEnvironmentSubstA(str str)DoEnvironmentSubstA @ stdcall DoEnvironmentSubstW(wstr wstr)DoEnvironmentSubstW @ stub DragQueryFileAorW -@ stub DuplicateIcon +@ stdcall DuplicateIcon(long long) DuplicateIcon @ stdcall ExtractAssociatedIconA(long ptr long)ExtractAssociatedIconA @ stub ExtractAssociatedIconExA @ stub ExtractAssociatedIconExW diff --git a/dlls/shell32/shell32_main.c b/dlls/shell32/shell32_main.c index c7d5012493d..b32180c2d7e 100644 --- a/dlls/shell32/shell32_main.c +++ b/dlls/shell32/shell32_main.c @@ -297,6 +297,29 @@ DWORD WINAPI SHGetFileInfoAW( return SHGetFileInfoA(path, dwFileAttributes, psfi, sizeofpsfi, flags ); } +/************************************************************************* + * DuplicateIcon [SHELL32.188] + */ +HICON WINAPI DuplicateIcon( HINSTANCE hInstance, HICON hIcon) +{ + ICONINFO IconInfo; + HICON hDupIcon = NULL; + + TRACE("(%04x, %04x)\n", hInstance, hIcon); + + if(GetIconInfo(hIcon, &IconInfo)) + { + hDupIcon = CreateIconIndirect(&IconInfo); + + /* clean up hbmMask and hbmColor */ + DeleteObject(IconInfo.hbmMask); + DeleteObject(IconInfo.hbmColor); + } + + return hDupIcon; +} + + /************************************************************************* * ExtractIconA [SHELL32.133] *