< prev index next >
src/java.desktop/windows/native/libawt/windows/ShellFolder2.cpp
Print this page
*** 918,928 ****
* Method: extractIcon
* Signature: (JJZZ)J
*/
JNIEXPORT jlong JNICALL Java_sun_awt_shell_Win32ShellFolder2_extractIcon
(JNIEnv* env, jclass cls, jlong pIShellFolderL, jlong relativePIDL,
! jboolean getLargeIcon, jboolean getDefaultIcon)
{
IShellFolder* pIShellFolder = (IShellFolder*)pIShellFolderL;
LPITEMIDLIST pidl = (LPITEMIDLIST)relativePIDL;
if (pIShellFolder == NULL || pidl == NULL) {
return 0;
--- 918,928 ----
* Method: extractIcon
* Signature: (JJZZ)J
*/
JNIEXPORT jlong JNICALL Java_sun_awt_shell_Win32ShellFolder2_extractIcon
(JNIEnv* env, jclass cls, jlong pIShellFolderL, jlong relativePIDL,
! jint sz, jboolean getDefaultIcon)
{
IShellFolder* pIShellFolder = (IShellFolder*)pIShellFolderL;
LPITEMIDLIST pidl = (LPITEMIDLIST)relativePIDL;
if (pIShellFolder == NULL || pidl == NULL) {
return 0;
*** 939,958 ****
INT index;
UINT flags;
UINT uFlags = getDefaultIcon ? GIL_DEFAULTICON : GIL_FORSHELL | GIL_ASYNC;
hres = pIcon->GetIconLocation(uFlags, szBuf, MAX_PATH, &index, &flags);
if (SUCCEEDED(hres)) {
! HICON hIconLarge;
! hres = pIcon->Extract(szBuf, index, &hIconLarge, &hIcon, (16 << 16) + 32);
! if (SUCCEEDED(hres)) {
! if (getLargeIcon) {
! fn_DestroyIcon((HICON)hIcon);
! hIcon = hIconLarge;
! } else {
! fn_DestroyIcon((HICON)hIconLarge);
! }
! }
} else if (hres == E_PENDING) {
pIcon->Release();
return E_PENDING;
}
pIcon->Release();
--- 939,949 ----
INT index;
UINT flags;
UINT uFlags = getDefaultIcon ? GIL_DEFAULTICON : GIL_FORSHELL | GIL_ASYNC;
hres = pIcon->GetIconLocation(uFlags, szBuf, MAX_PATH, &index, &flags);
if (SUCCEEDED(hres)) {
! pIcon->Extract(szBuf, index, &hIcon, 0, sz);
} else if (hres == E_PENDING) {
pIcon->Release();
return E_PENDING;
}
pIcon->Release();
< prev index next >