Replaced some GetProcAddress() imports by the standard dll import
mechanism.
This commit is contained in:
parent
0618746265
commit
556d8b5ecb
|
@ -92,9 +92,6 @@ typedef struct {
|
||||||
#include "shlobj.h"
|
#include "shlobj.h"
|
||||||
#include "shellapi.h"
|
#include "shellapi.h"
|
||||||
|
|
||||||
/* IMAGELIST */
|
|
||||||
extern BOOL (WINAPI* COMDLG32_ImageList_Draw) (HIMAGELIST himl, int i, HDC hdcDest, int x, int y, UINT fStyle);
|
|
||||||
|
|
||||||
/* ITEMIDLIST */
|
/* ITEMIDLIST */
|
||||||
|
|
||||||
extern LPITEMIDLIST (WINAPI *COMDLG32_PIDL_ILClone) (LPCITEMIDLIST);
|
extern LPITEMIDLIST (WINAPI *COMDLG32_PIDL_ILClone) (LPCITEMIDLIST);
|
||||||
|
@ -104,31 +101,10 @@ extern BOOL (WINAPI *COMDLG32_PIDL_ILRemoveLastID)(LPCITEMIDLIST);
|
||||||
extern BOOL (WINAPI *COMDLG32_PIDL_ILIsEqual)(LPCITEMIDLIST, LPCITEMIDLIST);
|
extern BOOL (WINAPI *COMDLG32_PIDL_ILIsEqual)(LPCITEMIDLIST, LPCITEMIDLIST);
|
||||||
|
|
||||||
/* SHELL */
|
/* SHELL */
|
||||||
extern BOOL (WINAPI *COMDLG32_SHGetPathFromIDListA) (LPCITEMIDLIST,LPSTR);
|
|
||||||
extern HRESULT (WINAPI *COMDLG32_SHGetSpecialFolderLocation)(HWND,INT,LPITEMIDLIST *);
|
|
||||||
extern DWORD (WINAPI *COMDLG32_SHGetDesktopFolder)(IShellFolder **);
|
|
||||||
extern DWORD (WINAPI *COMDLG32_SHGetFileInfoA)(LPCSTR,DWORD,SHFILEINFOA*,UINT,UINT);
|
|
||||||
extern LPVOID (WINAPI *COMDLG32_SHAlloc)(DWORD);
|
extern LPVOID (WINAPI *COMDLG32_SHAlloc)(DWORD);
|
||||||
extern DWORD (WINAPI *COMDLG32_SHFree)(LPVOID);
|
extern DWORD (WINAPI *COMDLG32_SHFree)(LPVOID);
|
||||||
extern HRESULT (WINAPI *COMDLG32_SHGetDataFromIDListA)(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID dest, int len);
|
|
||||||
extern BOOL (WINAPI *COMDLG32_SHGetFolderPathA)(HWND,int,HANDLE,DWORD,LPSTR);
|
extern BOOL (WINAPI *COMDLG32_SHGetFolderPathA)(HWND,int,HANDLE,DWORD,LPSTR);
|
||||||
|
|
||||||
|
|
||||||
/* PATH */
|
|
||||||
extern BOOL (WINAPI *COMDLG32_PathIsRootA)(LPCSTR x);
|
|
||||||
extern LPSTR (WINAPI *COMDLG32_PathFindFileNameA)(LPCSTR path);
|
|
||||||
extern DWORD (WINAPI *COMDLG32_PathRemoveFileSpecA)(LPSTR fn);
|
|
||||||
extern BOOL (WINAPI *COMDLG32_PathMatchSpecW)(LPCWSTR x, LPCWSTR y);
|
|
||||||
extern LPSTR (WINAPI *COMDLG32_PathAddBackslashA)(LPSTR path);
|
|
||||||
extern BOOL (WINAPI *COMDLG32_PathCanonicalizeA)(LPSTR pszBuf, LPCSTR pszPath);
|
|
||||||
extern int (WINAPI *COMDLG32_PathGetDriveNumberA)(LPCSTR lpszPath);
|
|
||||||
extern BOOL (WINAPI *COMDLG32_PathIsRelativeA) (LPCSTR lpszPath);
|
|
||||||
extern LPSTR (WINAPI *COMDLG32_PathFindNextComponentA)(LPCSTR pszPath);
|
|
||||||
extern LPWSTR (WINAPI *COMDLG32_PathAddBackslashW)(LPWSTR lpszPath);
|
|
||||||
extern LPSTR (WINAPI *COMDLG32_PathFindExtensionA)(LPCVOID lpszPath);
|
|
||||||
extern BOOL (WINAPI *COMDLG32_PathAddExtensionA)(LPSTR pszPath,LPCSTR pszExtension);
|
|
||||||
|
|
||||||
|
|
||||||
extern BOOL WINAPI GetFileDialog95A(LPOPENFILENAMEA ofn,UINT iDlgType);
|
extern BOOL WINAPI GetFileDialog95A(LPOPENFILENAMEA ofn,UINT iDlgType);
|
||||||
extern BOOL WINAPI GetFileDialog95W(LPOPENFILENAMEW ofn,UINT iDlgType);
|
extern BOOL WINAPI GetFileDialog95W(LPOPENFILENAMEW ofn,UINT iDlgType);
|
||||||
|
|
||||||
|
|
|
@ -20,16 +20,10 @@ HINSTANCE COMDLG32_hInstance = 0;
|
||||||
HINSTANCE16 COMDLG32_hInstance16 = 0;
|
HINSTANCE16 COMDLG32_hInstance16 = 0;
|
||||||
|
|
||||||
static DWORD COMDLG32_TlsIndex;
|
static DWORD COMDLG32_TlsIndex;
|
||||||
static int COMDLG32_Attach = 0;
|
|
||||||
|
|
||||||
HINSTANCE COMCTL32_hInstance = 0;
|
|
||||||
HINSTANCE SHELL32_hInstance = 0;
|
HINSTANCE SHELL32_hInstance = 0;
|
||||||
HINSTANCE SHLWAPI_hInstance = 0;
|
|
||||||
HINSTANCE SHFOLDER_hInstance = 0;
|
HINSTANCE SHFOLDER_hInstance = 0;
|
||||||
|
|
||||||
/* IMAGELIST */
|
|
||||||
BOOL (WINAPI* COMDLG32_ImageList_Draw) (HIMAGELIST himl, int i, HDC hdcDest, int x, int y, UINT fStyle);
|
|
||||||
|
|
||||||
/* ITEMIDLIST */
|
/* ITEMIDLIST */
|
||||||
LPITEMIDLIST (WINAPI *COMDLG32_PIDL_ILClone) (LPCITEMIDLIST);
|
LPITEMIDLIST (WINAPI *COMDLG32_PIDL_ILClone) (LPCITEMIDLIST);
|
||||||
LPITEMIDLIST (WINAPI *COMDLG32_PIDL_ILCombine)(LPCITEMIDLIST,LPCITEMIDLIST);
|
LPITEMIDLIST (WINAPI *COMDLG32_PIDL_ILCombine)(LPCITEMIDLIST,LPCITEMIDLIST);
|
||||||
|
@ -38,31 +32,10 @@ BOOL (WINAPI *COMDLG32_PIDL_ILRemoveLastID)(LPCITEMIDLIST);
|
||||||
BOOL (WINAPI *COMDLG32_PIDL_ILIsEqual)(LPCITEMIDLIST, LPCITEMIDLIST);
|
BOOL (WINAPI *COMDLG32_PIDL_ILIsEqual)(LPCITEMIDLIST, LPCITEMIDLIST);
|
||||||
|
|
||||||
/* SHELL */
|
/* SHELL */
|
||||||
BOOL (WINAPI *COMDLG32_SHGetPathFromIDListA) (LPCITEMIDLIST,LPSTR);
|
|
||||||
HRESULT (WINAPI *COMDLG32_SHGetSpecialFolderLocation)(HWND,INT,LPITEMIDLIST *);
|
|
||||||
DWORD (WINAPI *COMDLG32_SHGetDesktopFolder)(IShellFolder **);
|
|
||||||
DWORD (WINAPI *COMDLG32_SHGetFileInfoA)(LPCSTR,DWORD,SHFILEINFOA*,UINT,UINT);
|
|
||||||
LPVOID (WINAPI *COMDLG32_SHAlloc)(DWORD);
|
LPVOID (WINAPI *COMDLG32_SHAlloc)(DWORD);
|
||||||
DWORD (WINAPI *COMDLG32_SHFree)(LPVOID);
|
DWORD (WINAPI *COMDLG32_SHFree)(LPVOID);
|
||||||
HRESULT (WINAPI *COMDLG32_SHGetDataFromIDListA)(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID dest, int len);
|
|
||||||
HRESULT (WINAPI *COMDLG32_StrRetToBufA)(LPSTRRET,LPITEMIDLIST,LPSTR,DWORD);
|
|
||||||
HRESULT (WINAPI *COMDLG32_StrRetToBufW)(LPSTRRET,LPITEMIDLIST,LPWSTR,DWORD);
|
|
||||||
BOOL (WINAPI *COMDLG32_SHGetFolderPathA)(HWND,int,HANDLE,DWORD,LPSTR);
|
BOOL (WINAPI *COMDLG32_SHGetFolderPathA)(HWND,int,HANDLE,DWORD,LPSTR);
|
||||||
|
|
||||||
/* PATH */
|
|
||||||
BOOL (WINAPI *COMDLG32_PathIsRootA)(LPCSTR x);
|
|
||||||
LPSTR (WINAPI *COMDLG32_PathFindFileNameA)(LPCSTR path);
|
|
||||||
DWORD (WINAPI *COMDLG32_PathRemoveFileSpecA)(LPSTR fn);
|
|
||||||
BOOL (WINAPI *COMDLG32_PathMatchSpecW)(LPCWSTR x, LPCWSTR y);
|
|
||||||
LPSTR (WINAPI *COMDLG32_PathAddBackslashA)(LPSTR path);
|
|
||||||
BOOL (WINAPI *COMDLG32_PathCanonicalizeA)(LPSTR pszBuf, LPCSTR pszPath);
|
|
||||||
int (WINAPI *COMDLG32_PathGetDriveNumberA)(LPCSTR lpszPath);
|
|
||||||
BOOL (WINAPI *COMDLG32_PathIsRelativeA) (LPCSTR lpszPath);
|
|
||||||
LPSTR (WINAPI *COMDLG32_PathFindNextComponentA)(LPCSTR pszPath);
|
|
||||||
LPWSTR (WINAPI *COMDLG32_PathAddBackslashW)(LPWSTR lpszPath);
|
|
||||||
LPSTR (WINAPI *COMDLG32_PathFindExtensionA)(LPCVOID lpszPath);
|
|
||||||
BOOL (WINAPI *COMDLG32_PathAddExtensionA)(LPSTR pszPath,LPCSTR pszExtension);
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* COMDLG32_DllEntryPoint (COMDLG32.entry)
|
* COMDLG32_DllEntryPoint (COMDLG32.entry)
|
||||||
*
|
*
|
||||||
|
@ -87,18 +60,6 @@ BOOL WINAPI COMDLG32_DllEntryPoint(HINSTANCE hInstance, DWORD Reason, LPVOID Res
|
||||||
switch(Reason)
|
switch(Reason)
|
||||||
{
|
{
|
||||||
case DLL_PROCESS_ATTACH:
|
case DLL_PROCESS_ATTACH:
|
||||||
COMDLG32_Attach++;
|
|
||||||
if(COMDLG32_hInstance)
|
|
||||||
{
|
|
||||||
ERR("comdlg32.dll instantiated twice in one address space!\n");
|
|
||||||
/*
|
|
||||||
* We should return FALSE here, but that will break
|
|
||||||
* most apps that use CreateProcess because we do
|
|
||||||
* not yet support seperate address spaces.
|
|
||||||
*/
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
COMDLG32_hInstance = hInstance;
|
COMDLG32_hInstance = hInstance;
|
||||||
DisableThreadLibraryCalls(hInstance);
|
DisableThreadLibraryCalls(hInstance);
|
||||||
|
|
||||||
|
@ -113,19 +74,14 @@ BOOL WINAPI COMDLG32_DllEntryPoint(HINSTANCE hInstance, DWORD Reason, LPVOID Res
|
||||||
|
|
||||||
COMDLG32_TlsIndex = 0xffffffff;
|
COMDLG32_TlsIndex = 0xffffffff;
|
||||||
|
|
||||||
COMCTL32_hInstance = GetModuleHandleA("COMCTL32.DLL");
|
|
||||||
SHELL32_hInstance = GetModuleHandleA("SHELL32.DLL");
|
SHELL32_hInstance = GetModuleHandleA("SHELL32.DLL");
|
||||||
SHLWAPI_hInstance = GetModuleHandleA("SHLWAPI.DLL");
|
|
||||||
|
|
||||||
if (!COMCTL32_hInstance || !SHELL32_hInstance || !SHLWAPI_hInstance)
|
if (!SHELL32_hInstance)
|
||||||
{
|
{
|
||||||
ERR("loading of comctl32 or shell32 or shlwapi failed\n");
|
ERR("loading of shell32 failed\n");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* IMAGELIST */
|
|
||||||
GPA(COMDLG32_ImageList_Draw, COMCTL32_hInstance,"ImageList_Draw");
|
|
||||||
|
|
||||||
/* ITEMIDLIST */
|
/* ITEMIDLIST */
|
||||||
GPA(COMDLG32_PIDL_ILIsEqual, SHELL32_hInstance, (LPCSTR)21L);
|
GPA(COMDLG32_PIDL_ILIsEqual, SHELL32_hInstance, (LPCSTR)21L);
|
||||||
GPA(COMDLG32_PIDL_ILCombine, SHELL32_hInstance, (LPCSTR)25L);
|
GPA(COMDLG32_PIDL_ILCombine, SHELL32_hInstance, (LPCSTR)25L);
|
||||||
|
@ -137,12 +93,6 @@ BOOL WINAPI COMDLG32_DllEntryPoint(HINSTANCE hInstance, DWORD Reason, LPVOID Res
|
||||||
|
|
||||||
GPA(COMDLG32_SHAlloc, SHELL32_hInstance, (LPCSTR)196L);
|
GPA(COMDLG32_SHAlloc, SHELL32_hInstance, (LPCSTR)196L);
|
||||||
GPA(COMDLG32_SHFree, SHELL32_hInstance, (LPCSTR)195L);
|
GPA(COMDLG32_SHFree, SHELL32_hInstance, (LPCSTR)195L);
|
||||||
GPA(COMDLG32_SHGetSpecialFolderLocation, SHELL32_hInstance,"SHGetSpecialFolderLocation");
|
|
||||||
GPA(COMDLG32_SHGetPathFromIDListA, SHELL32_hInstance,"SHGetPathFromIDListA");
|
|
||||||
GPA(COMDLG32_SHGetDesktopFolder, SHELL32_hInstance,"SHGetDesktopFolder");
|
|
||||||
GPA(COMDLG32_SHGetFileInfoA, SHELL32_hInstance,"SHGetFileInfoA");
|
|
||||||
GPA(COMDLG32_SHGetDataFromIDListA, SHELL32_hInstance,"SHGetDataFromIDListA");
|
|
||||||
|
|
||||||
/* for the first versions of shell32 SHGetFolderPathA is in SHFOLDER.DLL */
|
/* for the first versions of shell32 SHGetFolderPathA is in SHFOLDER.DLL */
|
||||||
COMDLG32_SHGetFolderPathA = (void*)GetProcAddress(SHELL32_hInstance,"SHGetFolderPathA");
|
COMDLG32_SHGetFolderPathA = (void*)GetProcAddress(SHELL32_hInstance,"SHGetFolderPathA");
|
||||||
if (!COMDLG32_SHGetFolderPathA)
|
if (!COMDLG32_SHGetFolderPathA)
|
||||||
|
@ -151,42 +101,15 @@ BOOL WINAPI COMDLG32_DllEntryPoint(HINSTANCE hInstance, DWORD Reason, LPVOID Res
|
||||||
GPA(COMDLG32_SHGetFolderPathA, SHFOLDER_hInstance,"SHGetFolderPathA");
|
GPA(COMDLG32_SHGetFolderPathA, SHFOLDER_hInstance,"SHGetFolderPathA");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ### WARINIG ###
|
|
||||||
We can't do a GetProcAddress to link to StrRetToBuf[A|W] sine not all
|
|
||||||
versions of the shlwapi are exporting these functions. When we are
|
|
||||||
seperating the dlls then we have to dublicate code from shell32 into comdlg32.
|
|
||||||
Till then just call these functions. These functions don't have any side effects
|
|
||||||
so it won't break the use of any combination of native and buildin dll's (jsch) */
|
|
||||||
|
|
||||||
/* PATH */
|
|
||||||
GPA(COMDLG32_PathMatchSpecW, SHLWAPI_hInstance,"PathMatchSpecW");
|
|
||||||
GPA(COMDLG32_PathIsRootA, SHLWAPI_hInstance,"PathIsRootA");
|
|
||||||
GPA(COMDLG32_PathRemoveFileSpecA, SHLWAPI_hInstance,"PathRemoveFileSpecA");
|
|
||||||
GPA(COMDLG32_PathFindFileNameA, SHLWAPI_hInstance,"PathFindFileNameA");
|
|
||||||
GPA(COMDLG32_PathAddBackslashA, SHLWAPI_hInstance,"PathAddBackslashA");
|
|
||||||
GPA(COMDLG32_PathCanonicalizeA, SHLWAPI_hInstance,"PathCanonicalizeA");
|
|
||||||
GPA(COMDLG32_PathGetDriveNumberA, SHLWAPI_hInstance,"PathGetDriveNumberA");
|
|
||||||
GPA(COMDLG32_PathIsRelativeA, SHLWAPI_hInstance,"PathIsRelativeA");
|
|
||||||
GPA(COMDLG32_PathFindNextComponentA, SHLWAPI_hInstance,"PathFindNextComponentA");
|
|
||||||
GPA(COMDLG32_PathAddBackslashW, SHLWAPI_hInstance,"PathAddBackslashW");
|
|
||||||
GPA(COMDLG32_PathFindExtensionA, SHLWAPI_hInstance,"PathFindExtensionA");
|
|
||||||
GPA(COMDLG32_PathAddExtensionA, SHLWAPI_hInstance,"PathAddExtensionA");
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DLL_PROCESS_DETACH:
|
case DLL_PROCESS_DETACH:
|
||||||
if(!--COMDLG32_Attach)
|
if (COMDLG32_TlsIndex != 0xffffffff) TlsFree(COMDLG32_TlsIndex);
|
||||||
{
|
COMDLG32_TlsIndex = 0xffffffff;
|
||||||
if (COMDLG32_TlsIndex != 0xffffffff)
|
COMDLG32_hInstance = 0;
|
||||||
TlsFree(COMDLG32_TlsIndex);
|
if(COMDLG32_hInstance16) FreeLibrary16(COMDLG32_hInstance16);
|
||||||
COMDLG32_TlsIndex = 0xffffffff;
|
if(SHFOLDER_hInstance) FreeLibrary(SHFOLDER_hInstance);
|
||||||
COMDLG32_hInstance = 0;
|
break;
|
||||||
if(COMDLG32_hInstance16)
|
|
||||||
FreeLibrary16(COMDLG32_hInstance16);
|
|
||||||
if(SHFOLDER_hInstance)
|
|
||||||
FreeLibrary(SHFOLDER_hInstance);
|
|
||||||
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -763,12 +763,12 @@ HRESULT FILEDLG95_HandleCustomDialogMessages(HWND hwnd, UINT uMsg, WPARAM wParam
|
||||||
{
|
{
|
||||||
case CDM_GETFILEPATH:
|
case CDM_GETFILEPATH:
|
||||||
GetDlgItemTextA(hwnd,IDC_FILENAME,lpstrPath, sizeof(lpstrPath));
|
GetDlgItemTextA(hwnd,IDC_FILENAME,lpstrPath, sizeof(lpstrPath));
|
||||||
lpstrFileSpec = (LPSTR)COMDLG32_PathFindFileNameA(lpstrPath);
|
lpstrFileSpec = (LPSTR)PathFindFileNameA(lpstrPath);
|
||||||
if (lpstrFileSpec==lpstrPath)
|
if (lpstrFileSpec==lpstrPath)
|
||||||
{
|
{
|
||||||
char lpstrCurrentDir[MAX_PATH];
|
char lpstrCurrentDir[MAX_PATH];
|
||||||
/* Prepend the current path */
|
/* Prepend the current path */
|
||||||
COMDLG32_SHGetPathFromIDListA(fodInfos->ShellInfos.pidlAbsCurrent,lpstrCurrentDir);
|
SHGetPathFromIDListA(fodInfos->ShellInfos.pidlAbsCurrent,lpstrCurrentDir);
|
||||||
if ((LPSTR)lParam!=NULL)
|
if ((LPSTR)lParam!=NULL)
|
||||||
snprintf((LPSTR)lParam,(int)wParam,"%s\\%s",lpstrCurrentDir,lpstrPath);
|
snprintf((LPSTR)lParam,(int)wParam,"%s\\%s",lpstrCurrentDir,lpstrPath);
|
||||||
reqSize=strlen(lpstrCurrentDir)+1+strlen(lpstrPath)+1;
|
reqSize=strlen(lpstrCurrentDir)+1+strlen(lpstrPath)+1;
|
||||||
|
@ -782,14 +782,14 @@ HRESULT FILEDLG95_HandleCustomDialogMessages(HWND hwnd, UINT uMsg, WPARAM wParam
|
||||||
return reqSize;
|
return reqSize;
|
||||||
|
|
||||||
case CDM_GETFOLDERPATH:
|
case CDM_GETFOLDERPATH:
|
||||||
COMDLG32_SHGetPathFromIDListA(fodInfos->ShellInfos.pidlAbsCurrent,lpstrPath);
|
SHGetPathFromIDListA(fodInfos->ShellInfos.pidlAbsCurrent,lpstrPath);
|
||||||
if ((LPSTR)lParam!=NULL)
|
if ((LPSTR)lParam!=NULL)
|
||||||
lstrcpynA((LPSTR)lParam,lpstrPath,(int)wParam);
|
lstrcpynA((LPSTR)lParam,lpstrPath,(int)wParam);
|
||||||
return strlen(lpstrPath);
|
return strlen(lpstrPath);
|
||||||
|
|
||||||
case CDM_GETSPEC:
|
case CDM_GETSPEC:
|
||||||
reqSize=GetDlgItemTextA(hwnd,IDC_FILENAME,lpstrPath, sizeof(lpstrPath));
|
reqSize=GetDlgItemTextA(hwnd,IDC_FILENAME,lpstrPath, sizeof(lpstrPath));
|
||||||
lpstrFileSpec = (LPSTR)COMDLG32_PathFindFileNameA(lpstrPath);
|
lpstrFileSpec = (LPSTR)PathFindFileNameA(lpstrPath);
|
||||||
if ((LPSTR)lParam!=NULL)
|
if ((LPSTR)lParam!=NULL)
|
||||||
lstrcpynA((LPSTR)lParam, lpstrFileSpec, (int)wParam);
|
lstrcpynA((LPSTR)lParam, lpstrFileSpec, (int)wParam);
|
||||||
return strlen(lpstrFileSpec);
|
return strlen(lpstrFileSpec);
|
||||||
|
@ -974,7 +974,7 @@ static LRESULT FILEDLG95_InitControls(HWND hwnd)
|
||||||
/* Initialise the file name edit control */
|
/* Initialise the file name edit control */
|
||||||
if(fodInfos->ofnInfos->lpstrFile)
|
if(fodInfos->ofnInfos->lpstrFile)
|
||||||
{
|
{
|
||||||
LPSTR lpstrFile = COMDLG32_PathFindFileNameA(fodInfos->ofnInfos->lpstrFile);
|
LPSTR lpstrFile = PathFindFileNameA(fodInfos->ofnInfos->lpstrFile);
|
||||||
SetDlgItemTextA(hwnd, IDC_FILENAME, lpstrFile);
|
SetDlgItemTextA(hwnd, IDC_FILENAME, lpstrFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1175,7 +1175,7 @@ BOOL FILEDLG95_OnOpenMultipleFiles(HWND hwnd, LPSTR lpstrFileList, UINT nFileCou
|
||||||
lpstrFile = fodInfos->ofnInfos->lpstrFile;
|
lpstrFile = fodInfos->ofnInfos->lpstrFile;
|
||||||
lpstrFile[0] = '\0';
|
lpstrFile[0] = '\0';
|
||||||
|
|
||||||
COMDLG32_SHGetPathFromIDListA( fodInfos->ShellInfos.pidlAbsCurrent, lpstrPathSpec );
|
SHGetPathFromIDListA( fodInfos->ShellInfos.pidlAbsCurrent, lpstrPathSpec );
|
||||||
|
|
||||||
if ( !(fodInfos->ofnInfos->Flags & OFN_NOVALIDATE) &&
|
if ( !(fodInfos->ofnInfos->Flags & OFN_NOVALIDATE) &&
|
||||||
( fodInfos->ofnInfos->Flags & OFN_FILEMUSTEXIST))
|
( fodInfos->ofnInfos->Flags & OFN_FILEMUSTEXIST))
|
||||||
|
@ -1288,7 +1288,7 @@ BOOL FILEDLG95_OnOpen(HWND hwnd)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Get the current directory name */
|
/* Get the current directory name */
|
||||||
if (!COMDLG32_SHGetPathFromIDListA(fodInfos->ShellInfos.pidlAbsCurrent, lpstrPathAndFile))
|
if (!SHGetPathFromIDListA(fodInfos->ShellInfos.pidlAbsCurrent, lpstrPathAndFile))
|
||||||
{
|
{
|
||||||
/* we are in a special folder, default to desktop */
|
/* we are in a special folder, default to desktop */
|
||||||
if(FAILED(COMDLG32_SHGetFolderPathA(hwnd, CSIDL_DESKTOPDIRECTORY|CSIDL_FLAG_CREATE, 0, 0, lpstrPathAndFile)))
|
if(FAILED(COMDLG32_SHGetFolderPathA(hwnd, CSIDL_DESKTOPDIRECTORY|CSIDL_FLAG_CREATE, 0, 0, lpstrPathAndFile)))
|
||||||
|
@ -1297,26 +1297,26 @@ BOOL FILEDLG95_OnOpen(HWND hwnd)
|
||||||
GetCurrentDirectoryA(MAX_PATH, lpstrPathAndFile);
|
GetCurrentDirectoryA(MAX_PATH, lpstrPathAndFile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
COMDLG32_PathAddBackslashA(lpstrPathAndFile);
|
PathAddBackslashA(lpstrPathAndFile);
|
||||||
|
|
||||||
TRACE("current directory=%s\n", lpstrPathAndFile);
|
TRACE("current directory=%s\n", lpstrPathAndFile);
|
||||||
|
|
||||||
/* if the user specifyed a fully qualified path use it */
|
/* if the user specifyed a fully qualified path use it */
|
||||||
if(COMDLG32_PathIsRelativeA(lpstrFileList))
|
if(PathIsRelativeA(lpstrFileList))
|
||||||
{
|
{
|
||||||
strcat(lpstrPathAndFile, lpstrFileList);
|
strcat(lpstrPathAndFile, lpstrFileList);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* does the path have a drive letter? */
|
/* does the path have a drive letter? */
|
||||||
if (COMDLG32_PathGetDriveNumberA(lpstrFileList) == -1)
|
if (PathGetDriveNumberA(lpstrFileList) == -1)
|
||||||
strcpy(lpstrPathAndFile+2, lpstrFileList);
|
strcpy(lpstrPathAndFile+2, lpstrFileList);
|
||||||
else
|
else
|
||||||
strcpy(lpstrPathAndFile, lpstrFileList);
|
strcpy(lpstrPathAndFile, lpstrFileList);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* resolve "." and ".." */
|
/* resolve "." and ".." */
|
||||||
COMDLG32_PathCanonicalizeA(lpstrTemp, lpstrPathAndFile );
|
PathCanonicalizeA(lpstrTemp, lpstrPathAndFile );
|
||||||
strcpy(lpstrPathAndFile, lpstrTemp);
|
strcpy(lpstrPathAndFile, lpstrTemp);
|
||||||
TRACE("canon=%s\n", lpstrPathAndFile);
|
TRACE("canon=%s\n", lpstrPathAndFile);
|
||||||
|
|
||||||
|
@ -1349,7 +1349,7 @@ BOOL FILEDLG95_OnOpen(HWND hwnd)
|
||||||
goto ret;
|
goto ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (FAILED (COMDLG32_SHGetDesktopFolder(&lpsf))) return FALSE;
|
if (FAILED (SHGetDesktopFolder(&lpsf))) return FALSE;
|
||||||
|
|
||||||
lpszTemp1 = lpszTemp = lpstrPathAndFile;
|
lpszTemp1 = lpszTemp = lpstrPathAndFile;
|
||||||
while (lpszTemp1)
|
while (lpszTemp1)
|
||||||
|
@ -1358,7 +1358,7 @@ BOOL FILEDLG95_OnOpen(HWND hwnd)
|
||||||
WCHAR lpwstrTemp[MAX_PATH];
|
WCHAR lpwstrTemp[MAX_PATH];
|
||||||
DWORD dwEaten, dwAttributes;
|
DWORD dwEaten, dwAttributes;
|
||||||
|
|
||||||
lpszTemp = COMDLG32_PathFindNextComponentA(lpszTemp);
|
lpszTemp = PathFindNextComponentA(lpszTemp);
|
||||||
|
|
||||||
if (!lpszTemp) break; /* end of path */
|
if (!lpszTemp) break; /* end of path */
|
||||||
|
|
||||||
|
@ -1384,7 +1384,7 @@ BOOL FILEDLG95_OnOpen(HWND hwnd)
|
||||||
|
|
||||||
TRACE("parse now=%s next=%s sf=%p\n",debugstr_w(lpwstrTemp), debugstr_a(lpszTemp), lpsf);
|
TRACE("parse now=%s next=%s sf=%p\n",debugstr_w(lpwstrTemp), debugstr_a(lpszTemp), lpsf);
|
||||||
|
|
||||||
if(lstrlenW(lpwstrTemp)==2) COMDLG32_PathAddBackslashW(lpwstrTemp);
|
if(lstrlenW(lpwstrTemp)==2) PathAddBackslashW(lpwstrTemp);
|
||||||
|
|
||||||
dwAttributes = SFGAO_FOLDER;
|
dwAttributes = SFGAO_FOLDER;
|
||||||
if(SUCCEEDED(IShellFolder_ParseDisplayName(lpsf, hwnd, NULL, lpwstrTemp, &dwEaten, &pidl, &dwAttributes)))
|
if(SUCCEEDED(IShellFolder_ParseDisplayName(lpsf, hwnd, NULL, lpwstrTemp, &dwEaten, &pidl, &dwAttributes)))
|
||||||
|
@ -1455,7 +1455,7 @@ BOOL FILEDLG95_OnOpen(HWND hwnd)
|
||||||
TRACE("ONOPEN_SEARCH %s\n", lpstrPathAndFile);
|
TRACE("ONOPEN_SEARCH %s\n", lpstrPathAndFile);
|
||||||
{
|
{
|
||||||
int iPos;
|
int iPos;
|
||||||
LPSTR lpszTemp = COMDLG32_PathFindFileNameA(lpstrPathAndFile);
|
LPSTR lpszTemp = PathFindFileNameA(lpstrPathAndFile);
|
||||||
DWORD len;
|
DWORD len;
|
||||||
|
|
||||||
/* replace the current filter */
|
/* replace the current filter */
|
||||||
|
@ -1499,7 +1499,7 @@ BOOL FILEDLG95_OnOpen(HWND hwnd)
|
||||||
/* add default extension */
|
/* add default extension */
|
||||||
if (fodInfos->ofnInfos->lpstrDefExt)
|
if (fodInfos->ofnInfos->lpstrDefExt)
|
||||||
{
|
{
|
||||||
if (! *COMDLG32_PathFindExtensionA(lpstrPathAndFile))
|
if (! *PathFindExtensionA(lpstrPathAndFile))
|
||||||
{
|
{
|
||||||
strcat(lpstrPathAndFile, ".");
|
strcat(lpstrPathAndFile, ".");
|
||||||
strcat(lpstrPathAndFile, fodInfos->ofnInfos->lpstrDefExt);
|
strcat(lpstrPathAndFile, fodInfos->ofnInfos->lpstrDefExt);
|
||||||
|
@ -1520,17 +1520,17 @@ BOOL FILEDLG95_OnOpen(HWND hwnd)
|
||||||
+ 1] = '\0';
|
+ 1] = '\0';
|
||||||
|
|
||||||
/* set filename offset */
|
/* set filename offset */
|
||||||
lpszTemp = COMDLG32_PathFindFileNameA(lpstrPathAndFile);
|
lpszTemp = PathFindFileNameA(lpstrPathAndFile);
|
||||||
fodInfos->ofnInfos->nFileOffset = lpszTemp - lpstrPathAndFile;
|
fodInfos->ofnInfos->nFileOffset = lpszTemp - lpstrPathAndFile;
|
||||||
|
|
||||||
/* set extension offset */
|
/* set extension offset */
|
||||||
lpszTemp = COMDLG32_PathFindExtensionA(lpstrPathAndFile);
|
lpszTemp = PathFindExtensionA(lpstrPathAndFile);
|
||||||
fodInfos->ofnInfos->nFileExtension = (*lpszTemp) ? lpszTemp - lpstrPathAndFile + 1 : 0;
|
fodInfos->ofnInfos->nFileExtension = (*lpszTemp) ? lpszTemp - lpstrPathAndFile + 1 : 0;
|
||||||
|
|
||||||
/* set the lpstrFileTitle */
|
/* set the lpstrFileTitle */
|
||||||
if(fodInfos->ofnInfos->lpstrFileTitle)
|
if(fodInfos->ofnInfos->lpstrFileTitle)
|
||||||
{
|
{
|
||||||
LPSTR lpstrFileTitle = COMDLG32_PathFindFileNameA(lpstrPathAndFile);
|
LPSTR lpstrFileTitle = PathFindFileNameA(lpstrPathAndFile);
|
||||||
strncpy(fodInfos->ofnInfos->lpstrFileTitle, lpstrFileTitle, fodInfos->ofnInfos->nMaxFileTitle);
|
strncpy(fodInfos->ofnInfos->lpstrFileTitle, lpstrFileTitle, fodInfos->ofnInfos->nMaxFileTitle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1675,7 +1675,7 @@ static BOOL FILEDLG95_SHELL_BrowseToDesktop(HWND hwnd)
|
||||||
|
|
||||||
TRACE("\n");
|
TRACE("\n");
|
||||||
|
|
||||||
COMDLG32_SHGetSpecialFolderLocation(0,CSIDL_DESKTOP,&pidl);
|
SHGetSpecialFolderLocation(0,CSIDL_DESKTOP,&pidl);
|
||||||
hres = IShellBrowser_BrowseObject(fodInfos->Shell.FOIShellBrowser, pidl, SBSP_ABSOLUTE);
|
hres = IShellBrowser_BrowseObject(fodInfos->Shell.FOIShellBrowser, pidl, SBSP_ABSOLUTE);
|
||||||
COMDLG32_SHFree(pidl);
|
COMDLG32_SHFree(pidl);
|
||||||
return SUCCEEDED(hres);
|
return SUCCEEDED(hres);
|
||||||
|
@ -1900,13 +1900,13 @@ static HRESULT FILEDLG95_LOOKIN_Init(HWND hwndCombo)
|
||||||
CBSetItemHeight(hwndCombo,0,GetSystemMetrics(SM_CYSMICON));
|
CBSetItemHeight(hwndCombo,0,GetSystemMetrics(SM_CYSMICON));
|
||||||
|
|
||||||
/* Initialise data of Desktop folder */
|
/* Initialise data of Desktop folder */
|
||||||
COMDLG32_SHGetSpecialFolderLocation(0,CSIDL_DESKTOP,&pidlTmp);
|
SHGetSpecialFolderLocation(0,CSIDL_DESKTOP,&pidlTmp);
|
||||||
FILEDLG95_LOOKIN_AddItem(hwndCombo, pidlTmp,LISTEND);
|
FILEDLG95_LOOKIN_AddItem(hwndCombo, pidlTmp,LISTEND);
|
||||||
COMDLG32_SHFree(pidlTmp);
|
COMDLG32_SHFree(pidlTmp);
|
||||||
|
|
||||||
COMDLG32_SHGetSpecialFolderLocation(0,CSIDL_DRIVES,&pidlDrives);
|
SHGetSpecialFolderLocation(0,CSIDL_DRIVES,&pidlDrives);
|
||||||
|
|
||||||
COMDLG32_SHGetDesktopFolder(&psfRoot);
|
SHGetDesktopFolder(&psfRoot);
|
||||||
|
|
||||||
if (psfRoot)
|
if (psfRoot)
|
||||||
{
|
{
|
||||||
|
@ -1981,7 +1981,7 @@ static LRESULT FILEDLG95_LOOKIN_DrawItem(LPDRAWITEMSTRUCT pDIStruct)
|
||||||
|
|
||||||
if(pDIStruct->itemID == liInfos->uSelectedItem)
|
if(pDIStruct->itemID == liInfos->uSelectedItem)
|
||||||
{
|
{
|
||||||
ilItemImage = (HIMAGELIST) COMDLG32_SHGetFileInfoA ((LPCSTR) tmpFolder->pidlItem,
|
ilItemImage = (HIMAGELIST) SHGetFileInfoA ((LPCSTR) tmpFolder->pidlItem,
|
||||||
0,
|
0,
|
||||||
&sfi,
|
&sfi,
|
||||||
sizeof (SHFILEINFOA),
|
sizeof (SHFILEINFOA),
|
||||||
|
@ -1991,7 +1991,7 @@ static LRESULT FILEDLG95_LOOKIN_DrawItem(LPDRAWITEMSTRUCT pDIStruct)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ilItemImage = (HIMAGELIST) COMDLG32_SHGetFileInfoA ((LPCSTR) tmpFolder->pidlItem,
|
ilItemImage = (HIMAGELIST) SHGetFileInfoA ((LPCSTR) tmpFolder->pidlItem,
|
||||||
0,
|
0,
|
||||||
&sfi,
|
&sfi,
|
||||||
sizeof (SHFILEINFOA),
|
sizeof (SHFILEINFOA),
|
||||||
|
@ -2018,7 +2018,7 @@ static LRESULT FILEDLG95_LOOKIN_DrawItem(LPDRAWITEMSTRUCT pDIStruct)
|
||||||
if(pDIStruct->itemState & ODS_COMBOBOXEDIT)
|
if(pDIStruct->itemState & ODS_COMBOBOXEDIT)
|
||||||
{
|
{
|
||||||
iIndentation = 0;
|
iIndentation = 0;
|
||||||
ilItemImage = (HIMAGELIST) COMDLG32_SHGetFileInfoA ((LPCSTR) tmpFolder->pidlItem,
|
ilItemImage = (HIMAGELIST) SHGetFileInfoA ((LPCSTR) tmpFolder->pidlItem,
|
||||||
0,
|
0,
|
||||||
&sfi,
|
&sfi,
|
||||||
sizeof (SHFILEINFOA),
|
sizeof (SHFILEINFOA),
|
||||||
|
@ -2048,7 +2048,7 @@ static LRESULT FILEDLG95_LOOKIN_DrawItem(LPDRAWITEMSTRUCT pDIStruct)
|
||||||
(pDIStruct->rcItem.top + pDIStruct->rcItem.bottom + tm.tmHeight) / 2;
|
(pDIStruct->rcItem.top + pDIStruct->rcItem.bottom + tm.tmHeight) / 2;
|
||||||
|
|
||||||
/* Draw the icon from the image list */
|
/* Draw the icon from the image list */
|
||||||
COMDLG32_ImageList_Draw(ilItemImage,
|
ImageList_Draw(ilItemImage,
|
||||||
sfi.iIcon,
|
sfi.iIcon,
|
||||||
pDIStruct->hDC,
|
pDIStruct->hDC,
|
||||||
rectIcon.left,
|
rectIcon.left,
|
||||||
|
@ -2139,7 +2139,7 @@ static int FILEDLG95_LOOKIN_AddItem(HWND hwnd,LPITEMIDLIST pidl, int iInsertId)
|
||||||
liInfos->iMaxIndentation = tmpFolder->m_iIndent;
|
liInfos->iMaxIndentation = tmpFolder->m_iIndent;
|
||||||
|
|
||||||
sfi.dwAttributes = SFGAO_FILESYSANCESTOR | SFGAO_FILESYSTEM;
|
sfi.dwAttributes = SFGAO_FILESYSANCESTOR | SFGAO_FILESYSTEM;
|
||||||
COMDLG32_SHGetFileInfoA((LPSTR)pidl,
|
SHGetFileInfoA((LPSTR)pidl,
|
||||||
0,
|
0,
|
||||||
&sfi,
|
&sfi,
|
||||||
sizeof(sfi),
|
sizeof(sfi),
|
||||||
|
@ -2629,7 +2629,7 @@ HRESULT GetName(LPSHELLFOLDER lpsf, LPITEMIDLIST pidl,DWORD dwFlags,LPSTR lpstrF
|
||||||
if(!lpsf)
|
if(!lpsf)
|
||||||
{
|
{
|
||||||
HRESULT hRes;
|
HRESULT hRes;
|
||||||
COMDLG32_SHGetDesktopFolder(&lpsf);
|
SHGetDesktopFolder(&lpsf);
|
||||||
hRes = GetName(lpsf,pidl,dwFlags,lpstrFileName);
|
hRes = GetName(lpsf,pidl,dwFlags,lpstrFileName);
|
||||||
IShellFolder_Release(lpsf);
|
IShellFolder_Release(lpsf);
|
||||||
return hRes;
|
return hRes;
|
||||||
|
@ -2655,7 +2655,7 @@ IShellFolder *GetShellFolderFromPidl(LPITEMIDLIST pidlAbs)
|
||||||
|
|
||||||
TRACE("%p\n", pidlAbs);
|
TRACE("%p\n", pidlAbs);
|
||||||
|
|
||||||
if(SUCCEEDED(COMDLG32_SHGetDesktopFolder(&psfParent)))
|
if(SUCCEEDED(SHGetDesktopFolder(&psfParent)))
|
||||||
{
|
{
|
||||||
psf = psfParent;
|
psf = psfParent;
|
||||||
if(pidlAbs && pidlAbs->mkid.cb)
|
if(pidlAbs && pidlAbs->mkid.cb)
|
||||||
|
@ -2709,7 +2709,7 @@ LPITEMIDLIST GetPidlFromName(IShellFolder *lpsf,LPCSTR lpcstrFileName)
|
||||||
|
|
||||||
if(!lpsf)
|
if(!lpsf)
|
||||||
{
|
{
|
||||||
COMDLG32_SHGetDesktopFolder(&lpsf);
|
SHGetDesktopFolder(&lpsf);
|
||||||
pidl = GetPidlFromName(lpsf, lpcstrFileName);
|
pidl = GetPidlFromName(lpsf, lpcstrFileName);
|
||||||
IShellFolder_Release(lpsf);
|
IShellFolder_Release(lpsf);
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
#include "heap.h"
|
#include "heap.h"
|
||||||
#include "debugtools.h"
|
#include "debugtools.h"
|
||||||
|
|
||||||
|
#include "shlwapi.h"
|
||||||
#include "filedlgbrowser.h"
|
#include "filedlgbrowser.h"
|
||||||
#include "cdlg.h"
|
#include "cdlg.h"
|
||||||
#include "shlguid.h"
|
#include "shlguid.h"
|
||||||
|
@ -75,7 +76,7 @@ extern HRESULT SendCustomDlgNotificationMessage(HWND hwndParentDlg, UINT uCode);
|
||||||
static void COMDLG32_UpdateCurrentDir(FileOpenDlgInfos *fodInfos)
|
static void COMDLG32_UpdateCurrentDir(FileOpenDlgInfos *fodInfos)
|
||||||
{
|
{
|
||||||
char lpstrPath[MAX_PATH];
|
char lpstrPath[MAX_PATH];
|
||||||
COMDLG32_SHGetPathFromIDListA(fodInfos->ShellInfos.pidlAbsCurrent,lpstrPath);
|
SHGetPathFromIDListA(fodInfos->ShellInfos.pidlAbsCurrent,lpstrPath);
|
||||||
SetCurrentDirectoryA(lpstrPath);
|
SetCurrentDirectoryA(lpstrPath);
|
||||||
TRACE("new current folder %s\n", lpstrPath);
|
TRACE("new current folder %s\n", lpstrPath);
|
||||||
}
|
}
|
||||||
|
@ -138,7 +139,7 @@ IShellBrowser * IShellBrowserImpl_Construct(HWND hwndOwner)
|
||||||
sb->lpVtbl = &IShellBrowserImpl_Vtbl;
|
sb->lpVtbl = &IShellBrowserImpl_Vtbl;
|
||||||
sb->lpVtblCommDlgBrowser = &IShellBrowserImpl_ICommDlgBrowser_Vtbl;
|
sb->lpVtblCommDlgBrowser = &IShellBrowserImpl_ICommDlgBrowser_Vtbl;
|
||||||
sb->lpVtblServiceProvider = &IShellBrowserImpl_IServiceProvider_Vtbl;
|
sb->lpVtblServiceProvider = &IShellBrowserImpl_IServiceProvider_Vtbl;
|
||||||
COMDLG32_SHGetSpecialFolderLocation(hwndOwner, CSIDL_DESKTOP,
|
SHGetSpecialFolderLocation(hwndOwner, CSIDL_DESKTOP,
|
||||||
&fodInfos->ShellInfos.pidlAbsCurrent);
|
&fodInfos->ShellInfos.pidlAbsCurrent);
|
||||||
|
|
||||||
TRACE("%p\n", sb);
|
TRACE("%p\n", sb);
|
||||||
|
@ -789,7 +790,7 @@ HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_IncludeObject(ICommDlgBrowser *
|
||||||
{
|
{
|
||||||
if (SUCCEEDED(COMDLG32_StrRetToStrNW(szPathW, MAX_PATH, &str, pidl)))
|
if (SUCCEEDED(COMDLG32_StrRetToStrNW(szPathW, MAX_PATH, &str, pidl)))
|
||||||
{
|
{
|
||||||
if (COMDLG32_PathMatchSpecW(szPathW, fodInfos->ShellInfos.lpstrCurrentFilter))
|
if (PathMatchSpecW(szPathW, fodInfos->ShellInfos.lpstrCurrentFilter))
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -233,10 +233,10 @@ static HRESULT WINAPI IExtractIconA_fnExtract(IExtractIconA * iface, LPCSTR pszF
|
||||||
FIXME("(%p) (file=%p index=%u %p %p size=%u) semi-stub\n", This, pszFile, nIconIndex, phiconLarge, phiconSmall, nIconSize);
|
FIXME("(%p) (file=%p index=%u %p %p size=%u) semi-stub\n", This, pszFile, nIconIndex, phiconLarge, phiconSmall, nIconSize);
|
||||||
|
|
||||||
if (phiconLarge)
|
if (phiconLarge)
|
||||||
*phiconLarge = pImageList_GetIcon(ShellBigIconList, nIconIndex, ILD_TRANSPARENT);
|
*phiconLarge = ImageList_GetIcon(ShellBigIconList, nIconIndex, ILD_TRANSPARENT);
|
||||||
|
|
||||||
if (phiconSmall)
|
if (phiconSmall)
|
||||||
*phiconSmall = pImageList_GetIcon(ShellSmallIconList, nIconIndex, ILD_TRANSPARENT);
|
*phiconSmall = ImageList_GetIcon(ShellSmallIconList, nIconIndex, ILD_TRANSPARENT);
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -82,8 +82,8 @@ static INT SIC_IconAppend (LPCSTR sSourceFile, INT dwSourceIndex, HICON hSmallIc
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
index = pImageList_AddIcon (ShellSmallIconList, hSmallIcon);
|
index = ImageList_AddIcon (ShellSmallIconList, hSmallIcon);
|
||||||
index1= pImageList_AddIcon (ShellBigIconList, hBigIcon);
|
index1= ImageList_AddIcon (ShellBigIconList, hBigIcon);
|
||||||
|
|
||||||
if (index!=index1)
|
if (index!=index1)
|
||||||
{
|
{
|
||||||
|
@ -175,8 +175,8 @@ static HICON WINE_UNUSED SIC_GetIcon (LPCSTR sSourceFile, INT dwSourceIndex, BOO
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bSmallIcon)
|
if (bSmallIcon)
|
||||||
return pImageList_GetIcon(ShellSmallIconList, index, ILD_NORMAL);
|
return ImageList_GetIcon(ShellSmallIconList, index, ILD_NORMAL);
|
||||||
return pImageList_GetIcon(ShellBigIconList, index, ILD_NORMAL);
|
return ImageList_GetIcon(ShellBigIconList, index, ILD_NORMAL);
|
||||||
|
|
||||||
}
|
}
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
@ -203,11 +203,11 @@ BOOL SIC_Initialize(void)
|
||||||
return(FALSE);
|
return(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
ShellSmallIconList = pImageList_Create(16,16,ILC_COLORDDB | ILC_MASK,0,0x20);
|
ShellSmallIconList = ImageList_Create(16,16,ILC_COLORDDB | ILC_MASK,0,0x20);
|
||||||
ShellBigIconList = pImageList_Create(32,32,ILC_COLORDDB | ILC_MASK,0,0x20);
|
ShellBigIconList = ImageList_Create(32,32,ILC_COLORDDB | ILC_MASK,0,0x20);
|
||||||
|
|
||||||
pImageList_SetBkColor(ShellSmallIconList, GetSysColor(COLOR_WINDOW));
|
ImageList_SetBkColor(ShellSmallIconList, GetSysColor(COLOR_WINDOW));
|
||||||
pImageList_SetBkColor(ShellBigIconList, GetSysColor(COLOR_WINDOW));
|
ImageList_SetBkColor(ShellBigIconList, GetSysColor(COLOR_WINDOW));
|
||||||
|
|
||||||
for (index=1; index<39; index++)
|
for (index=1; index<39; index++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -305,7 +305,7 @@ DWORD WINAPI SHGetFileInfoA(LPCSTR path,DWORD dwFileAttributes,
|
||||||
|
|
||||||
/* icon handle */
|
/* icon handle */
|
||||||
if (SUCCEEDED(hr) && (flags & SHGFI_ICON))
|
if (SUCCEEDED(hr) && (flags & SHGFI_ICON))
|
||||||
psfi->hIcon = pImageList_GetIcon((flags & SHGFI_LARGEICON) ? ShellBigIconList:ShellSmallIconList, psfi->iIcon, ILD_NORMAL);
|
psfi->hIcon = ImageList_GetIcon((flags & SHGFI_LARGEICON) ? ShellBigIconList:ShellSmallIconList, psfi->iIcon, ILD_NORMAL);
|
||||||
|
|
||||||
if (flags & (SHGFI_UNKNOWN1 | SHGFI_UNKNOWN2 | SHGFI_UNKNOWN3))
|
if (flags & (SHGFI_UNKNOWN1 | SHGFI_UNKNOWN2 | SHGFI_UNKNOWN3))
|
||||||
FIXME("unknown attribute!\n");
|
FIXME("unknown attribute!\n");
|
||||||
|
@ -836,13 +836,6 @@ HRESULT WINAPI SHELL32_DllGetVersion (DLLVERSIONINFO *pdvi)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void (WINAPI* pDLLInitComctl)(LPVOID);
|
void (WINAPI* pDLLInitComctl)(LPVOID);
|
||||||
INT (WINAPI* pImageList_AddIcon) (HIMAGELIST himl, HICON hIcon);
|
|
||||||
INT (WINAPI* pImageList_ReplaceIcon) (HIMAGELIST, INT, HICON);
|
|
||||||
HIMAGELIST (WINAPI * pImageList_Create) (INT,INT,UINT,INT,INT);
|
|
||||||
BOOL (WINAPI* pImageList_Draw) (HIMAGELIST himl, int i, HDC hdcDest, int x, int y, UINT fStyle);
|
|
||||||
HICON (WINAPI * pImageList_GetIcon) (HIMAGELIST, INT, UINT);
|
|
||||||
INT (WINAPI* pImageList_GetImageCount)(HIMAGELIST);
|
|
||||||
COLORREF (WINAPI *pImageList_SetBkColor)(HIMAGELIST, COLORREF);
|
|
||||||
|
|
||||||
LPVOID (WINAPI* pCOMCTL32_Alloc) (INT);
|
LPVOID (WINAPI* pCOMCTL32_Alloc) (INT);
|
||||||
BOOL (WINAPI* pCOMCTL32_Free) (LPVOID);
|
BOOL (WINAPI* pCOMCTL32_Free) (LPVOID);
|
||||||
|
@ -855,16 +848,10 @@ BOOL (WINAPI* pDPA_Destroy) (const HDPA);
|
||||||
INT (WINAPI *pDPA_Search) (const HDPA, LPVOID, INT, PFNDPACOMPARE, LPARAM, UINT);
|
INT (WINAPI *pDPA_Search) (const HDPA, LPVOID, INT, PFNDPACOMPARE, LPARAM, UINT);
|
||||||
LPVOID (WINAPI *pDPA_DeletePtr) (const HDPA hdpa, INT i);
|
LPVOID (WINAPI *pDPA_DeletePtr) (const HDPA hdpa, INT i);
|
||||||
|
|
||||||
/* user32 */
|
|
||||||
HICON (WINAPI *pLookupIconIdFromDirectoryEx)(LPBYTE dir, BOOL bIcon, INT width, INT height, UINT cFlag);
|
|
||||||
HICON (WINAPI *pCreateIconFromResourceEx)(LPBYTE bits,UINT cbSize, BOOL bIcon, DWORD dwVersion, INT width, INT height,UINT cFlag);
|
|
||||||
|
|
||||||
static HINSTANCE hComctl32;
|
static HINSTANCE hComctl32;
|
||||||
static INT shell32_RefCount = 0;
|
|
||||||
|
|
||||||
LONG shell32_ObjCount = 0;
|
LONG shell32_ObjCount = 0;
|
||||||
HINSTANCE shell32_hInstance = 0;
|
HINSTANCE shell32_hInstance = 0;
|
||||||
HMODULE huser32 = 0;
|
|
||||||
HIMAGELIST ShellSmallIconList = 0;
|
HIMAGELIST ShellSmallIconList = 0;
|
||||||
HIMAGELIST ShellBigIconList = 0;
|
HIMAGELIST ShellBigIconList = 0;
|
||||||
|
|
||||||
|
@ -883,15 +870,11 @@ BOOL WINAPI Shell32LibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
|
||||||
switch (fdwReason)
|
switch (fdwReason)
|
||||||
{
|
{
|
||||||
case DLL_PROCESS_ATTACH:
|
case DLL_PROCESS_ATTACH:
|
||||||
shell32_RefCount++;
|
|
||||||
if (shell32_hInstance) return TRUE;
|
|
||||||
|
|
||||||
shell32_hInstance = hinstDLL;
|
shell32_hInstance = hinstDLL;
|
||||||
hComctl32 = GetModuleHandleA("COMCTL32.DLL");
|
hComctl32 = GetModuleHandleA("COMCTL32.DLL");
|
||||||
if(!huser32) huser32 = GetModuleHandleA("USER32.DLL");
|
|
||||||
DisableThreadLibraryCalls(shell32_hInstance);
|
DisableThreadLibraryCalls(shell32_hInstance);
|
||||||
|
|
||||||
if (!hComctl32 || !huser32)
|
if (!hComctl32)
|
||||||
{
|
{
|
||||||
ERR("P A N I C SHELL32 loading failed\n");
|
ERR("P A N I C SHELL32 loading failed\n");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -899,13 +882,6 @@ BOOL WINAPI Shell32LibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
|
||||||
|
|
||||||
/* comctl32 */
|
/* comctl32 */
|
||||||
pDLLInitComctl=(void*)GetProcAddress(hComctl32,"InitCommonControlsEx");
|
pDLLInitComctl=(void*)GetProcAddress(hComctl32,"InitCommonControlsEx");
|
||||||
pImageList_Create=(void*)GetProcAddress(hComctl32,"ImageList_Create");
|
|
||||||
pImageList_AddIcon=(void*)GetProcAddress(hComctl32,"ImageList_AddIcon");
|
|
||||||
pImageList_ReplaceIcon=(void*)GetProcAddress(hComctl32,"ImageList_ReplaceIcon");
|
|
||||||
pImageList_GetIcon=(void*)GetProcAddress(hComctl32,"ImageList_GetIcon");
|
|
||||||
pImageList_GetImageCount=(void*)GetProcAddress(hComctl32,"ImageList_GetImageCount");
|
|
||||||
pImageList_Draw=(void*)GetProcAddress(hComctl32,"ImageList_Draw");
|
|
||||||
pImageList_SetBkColor=(void*)GetProcAddress(hComctl32,"ImageList_SetBkColor");
|
|
||||||
pCOMCTL32_Alloc=(void*)GetProcAddress(hComctl32, (LPCSTR)71L);
|
pCOMCTL32_Alloc=(void*)GetProcAddress(hComctl32, (LPCSTR)71L);
|
||||||
pCOMCTL32_Free=(void*)GetProcAddress(hComctl32, (LPCSTR)73L);
|
pCOMCTL32_Free=(void*)GetProcAddress(hComctl32, (LPCSTR)73L);
|
||||||
pDPA_Create=(void*)GetProcAddress(hComctl32, (LPCSTR)328L);
|
pDPA_Create=(void*)GetProcAddress(hComctl32, (LPCSTR)328L);
|
||||||
|
@ -915,9 +891,6 @@ BOOL WINAPI Shell32LibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
|
||||||
pDPA_DeletePtr=(void*)GetProcAddress(hComctl32, (LPCSTR)336L);
|
pDPA_DeletePtr=(void*)GetProcAddress(hComctl32, (LPCSTR)336L);
|
||||||
pDPA_Sort=(void*)GetProcAddress(hComctl32, (LPCSTR)338L);
|
pDPA_Sort=(void*)GetProcAddress(hComctl32, (LPCSTR)338L);
|
||||||
pDPA_Search=(void*)GetProcAddress(hComctl32, (LPCSTR)339L);
|
pDPA_Search=(void*)GetProcAddress(hComctl32, (LPCSTR)339L);
|
||||||
/* user32 */
|
|
||||||
pLookupIconIdFromDirectoryEx=(void*)GetProcAddress(huser32,"LookupIconIdFromDirectoryEx");
|
|
||||||
pCreateIconFromResourceEx=(void*)GetProcAddress(huser32,"CreateIconFromResourceEx");
|
|
||||||
|
|
||||||
/* initialize the common controls */
|
/* initialize the common controls */
|
||||||
if (pDLLInitComctl)
|
if (pDLLInitComctl)
|
||||||
|
@ -932,18 +905,12 @@ BOOL WINAPI Shell32LibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DLL_THREAD_ATTACH:
|
case DLL_THREAD_ATTACH:
|
||||||
shell32_RefCount++;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DLL_THREAD_DETACH:
|
case DLL_THREAD_DETACH:
|
||||||
shell32_RefCount--;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DLL_PROCESS_DETACH:
|
case DLL_PROCESS_DETACH:
|
||||||
shell32_RefCount--;
|
|
||||||
|
|
||||||
if ( !shell32_RefCount )
|
|
||||||
{
|
|
||||||
shell32_hInstance = 0;
|
shell32_hInstance = 0;
|
||||||
|
|
||||||
if (pdesktopfolder)
|
if (pdesktopfolder)
|
||||||
|
@ -960,10 +927,7 @@ BOOL WINAPI Shell32LibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
|
||||||
{
|
{
|
||||||
WARN("leaving with %lu objects left (memory leak)\n", shell32_ObjCount);
|
WARN("leaving with %lu objects left (memory leak)\n", shell32_ObjCount);
|
||||||
}
|
}
|
||||||
}
|
break;
|
||||||
|
|
||||||
TRACE("refcount=%u objcount=%lu \n", shell32_RefCount, shell32_ObjCount);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,13 +30,6 @@ extern HDPA sic_hdpa;
|
||||||
* pointer to functions dynamically loaded
|
* pointer to functions dynamically loaded
|
||||||
*/
|
*/
|
||||||
extern void (WINAPI* pDLLInitComctl)(LPVOID);
|
extern void (WINAPI* pDLLInitComctl)(LPVOID);
|
||||||
extern INT (WINAPI* pImageList_AddIcon) (HIMAGELIST himl, HICON hIcon);
|
|
||||||
extern INT (WINAPI* pImageList_ReplaceIcon) (HIMAGELIST, INT, HICON);
|
|
||||||
extern HIMAGELIST (WINAPI* pImageList_Create) (INT,INT,UINT,INT,INT);
|
|
||||||
extern BOOL (WINAPI* pImageList_Draw) (HIMAGELIST himl, int i, HDC hdcDest, int x, int y, UINT fStyle);
|
|
||||||
extern HICON (WINAPI* pImageList_GetIcon) (HIMAGELIST, INT, UINT);
|
|
||||||
extern INT (WINAPI* pImageList_GetImageCount)(HIMAGELIST);
|
|
||||||
extern COLORREF (WINAPI *pImageList_SetBkColor)(HIMAGELIST, COLORREF);
|
|
||||||
|
|
||||||
extern LPVOID (WINAPI* pCOMCTL32_Alloc) (INT);
|
extern LPVOID (WINAPI* pCOMCTL32_Alloc) (INT);
|
||||||
extern BOOL (WINAPI* pCOMCTL32_Free) (LPVOID);
|
extern BOOL (WINAPI* pCOMCTL32_Free) (LPVOID);
|
||||||
|
@ -50,9 +43,6 @@ extern INT (WINAPI* pDPA_Search) (const HDPA, LPVOID, INT, PFNDPACOMPARE, LPARAM
|
||||||
extern LPVOID (WINAPI* pDPA_DeletePtr) (const HDPA hdpa, INT i);
|
extern LPVOID (WINAPI* pDPA_DeletePtr) (const HDPA hdpa, INT i);
|
||||||
#define pDPA_GetPtrCount(hdpa) (*(INT*)(hdpa))
|
#define pDPA_GetPtrCount(hdpa) (*(INT*)(hdpa))
|
||||||
|
|
||||||
extern HICON (WINAPI *pLookupIconIdFromDirectoryEx)(LPBYTE dir, BOOL bIcon, INT width, INT height, UINT cFlag);
|
|
||||||
extern HICON (WINAPI *pCreateIconFromResourceEx)(LPBYTE bits,UINT cbSize, BOOL bIcon, DWORD dwVersion, INT width, INT height,UINT cFlag);
|
|
||||||
|
|
||||||
/* ole2 */
|
/* ole2 */
|
||||||
/*
|
/*
|
||||||
extern HRESULT (WINAPI* pOleInitialize)(LPVOID reserved);
|
extern HRESULT (WINAPI* pOleInitialize)(LPVOID reserved);
|
||||||
|
|
|
@ -601,7 +601,7 @@ LRESULT WINAPI FileMenu_DrawItem(
|
||||||
ExtTextOutA (lpdis->hDC, xt , yt, ETO_OPAQUE, &TextRect, pMyItem->szItemText, pMyItem->cchItemText, NULL);
|
ExtTextOutA (lpdis->hDC, xt , yt, ETO_OPAQUE, &TextRect, pMyItem->szItemText, pMyItem->cchItemText, NULL);
|
||||||
|
|
||||||
Shell_GetImageList(0, &hImageList);
|
Shell_GetImageList(0, &hImageList);
|
||||||
pImageList_Draw(hImageList, pMyItem->iIconIndex, lpdis->hDC, xi, yi, ILD_NORMAL);
|
ImageList_Draw(hImageList, pMyItem->iIconIndex, lpdis->hDC, xi, yi, ILD_NORMAL);
|
||||||
|
|
||||||
TRACE("-- 0x%04x 0x%04x 0x%04x 0x%04x\n", TextRect.left, TextRect.top, TextRect.right, TextRect.bottom);
|
TRACE("-- 0x%04x 0x%04x 0x%04x 0x%04x\n", TextRect.left, TextRect.top, TextRect.right, TextRect.bottom);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue