diff --git a/dlls/commdlg/Makefile.in b/dlls/commdlg/Makefile.in index cd9e332baac40f19b298829318d5b721e52b4ea2..632ab8a1aa220b10963d1e9fbbffa430cc292dc7 100644 --- a/dlls/commdlg/Makefile.in +++ b/dlls/commdlg/Makefile.in @@ -5,7 +5,7 @@ VPATH = @srcdir@ MODULE = comdlg32 SOVERSION = 1.0 ALTNAMES = commdlg -IMPORTS = shell32 ole32 comctl32 winspool +IMPORTS = winspool WRCEXTRA = -s -pcomdlg32 SPEC_SRCS = commdlg.spec comdlg32.spec diff --git a/dlls/commdlg/cdlg.h b/dlls/commdlg/cdlg.h index d4eccd333cece517063af7d68a09be0816058abd..8e8fdfac8ba890cecb1cac1e4ab202afb1f419c4 100644 --- a/dlls/commdlg/cdlg.h +++ b/dlls/commdlg/cdlg.h @@ -91,19 +91,8 @@ typedef struct { #include "wine/undocshell.h" #include "shellapi.h" -/* DPA */ -extern HDPA (WINAPI* COMDLG32_DPA_Create) (INT); -extern LPVOID (WINAPI* COMDLG32_DPA_GetPtr) (const HDPA, INT); -extern LPVOID (WINAPI* COMDLG32_DPA_DeleteAllPtrs) (const HDPA hdpa); -extern LPVOID (WINAPI* COMDLG32_DPA_DeletePtr) (const HDPA hdpa, INT i); -extern INT (WINAPI* COMDLG32_DPA_InsertPtr) (const HDPA, INT, LPVOID); -extern BOOL (WINAPI* COMDLG32_DPA_Destroy) (const HDPA); - /* IMAGELIST */ -extern HICON (WINAPI* COMDLG32_ImageList_GetIcon) (HIMAGELIST, INT, UINT); -extern HIMAGELIST (WINAPI *COMDLG32_ImageList_LoadImageA) (HINSTANCE, LPCSTR, INT, INT, COLORREF, UINT, UINT); extern BOOL (WINAPI* COMDLG32_ImageList_Draw) (HIMAGELIST himl, int i, HDC hdcDest, int x, int y, UINT fStyle); -extern BOOL (WINAPI* COMDLG32_ImageList_Destroy) (HIMAGELIST himl); /* ITEMIDLIST */ @@ -118,6 +107,7 @@ 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 DWORD (WINAPI *COMDLG32_SHFree)(LPVOID); /* PATH */ diff --git a/dlls/commdlg/cdlg32.c b/dlls/commdlg/cdlg32.c index b31f1ebe31ea32c2ad77bfa634485680ffec7a28..32b01d2dae8dd7bfeb0ed2fb16a3cbc1a95f26f7 100644 --- a/dlls/commdlg/cdlg32.c +++ b/dlls/commdlg/cdlg32.c @@ -25,19 +25,8 @@ HINSTANCE COMCTL32_hInstance = 0; HINSTANCE SHELL32_hInstance = 0; HINSTANCE SHLWAPI_hInstance = 0; -/* DPA */ -HDPA (WINAPI* COMDLG32_DPA_Create) (INT); -LPVOID (WINAPI* COMDLG32_DPA_GetPtr) (const HDPA, INT); -LPVOID (WINAPI* COMDLG32_DPA_DeletePtr) (const HDPA hdpa, INT i); -LPVOID (WINAPI* COMDLG32_DPA_DeleteAllPtrs) (const HDPA hdpa); -INT (WINAPI* COMDLG32_DPA_InsertPtr) (const HDPA, INT, LPVOID); -BOOL (WINAPI* COMDLG32_DPA_Destroy) (const HDPA); - /* IMAGELIST */ -HICON (WINAPI* COMDLG32_ImageList_GetIcon) (HIMAGELIST, INT, UINT); -HIMAGELIST (WINAPI *COMDLG32_ImageList_LoadImageA) (HINSTANCE, LPCSTR, INT, INT, COLORREF, UINT, UINT); BOOL (WINAPI* COMDLG32_ImageList_Draw) (HIMAGELIST himl, int i, HDC hdcDest, int x, int y, UINT fStyle); -BOOL (WINAPI* COMDLG32_ImageList_Destroy) (HIMAGELIST himl); /* ITEMIDLIST */ LPITEMIDLIST (WINAPI *COMDLG32_PIDL_ILClone) (LPCITEMIDLIST); @@ -51,7 +40,10 @@ 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); DWORD (WINAPI *COMDLG32_SHFree)(LPVOID); +HRESULT (WINAPI *COMDLG32_StrRetToBufA)(LPSTRRET,LPITEMIDLIST,LPSTR,DWORD); +HRESULT (WINAPI *COMDLG32_StrRetToBufW)(LPSTRRET,LPITEMIDLIST,LPWSTR,DWORD); /* PATH */ BOOL (WINAPI *COMDLG32_PathIsRootA)(LPCSTR x); @@ -115,19 +107,9 @@ BOOL WINAPI COMDLG32_DllEntryPoint(HINSTANCE hInstance, DWORD Reason, LPVOID Res ERR("loading of comctl32 or shell32 or shlwapi failed\n"); return FALSE; } - /* DPA */ - COMDLG32_DPA_Create=(void*)GetProcAddress(COMCTL32_hInstance, (LPCSTR)328L); - COMDLG32_DPA_Destroy=(void*)GetProcAddress(COMCTL32_hInstance, (LPCSTR)329L); - COMDLG32_DPA_GetPtr=(void*)GetProcAddress(COMCTL32_hInstance, (LPCSTR)332L); - COMDLG32_DPA_InsertPtr=(void*)GetProcAddress(COMCTL32_hInstance, (LPCSTR)334L); - COMDLG32_DPA_DeletePtr=(void*)GetProcAddress(COMCTL32_hInstance, (LPCSTR)336L); - COMDLG32_DPA_DeleteAllPtrs=(void*)GetProcAddress(COMCTL32_hInstance, (LPCSTR)337L); /* IMAGELIST */ - COMDLG32_ImageList_GetIcon=(void*)GetProcAddress(COMCTL32_hInstance,"ImageList_GetIcon"); - COMDLG32_ImageList_LoadImageA=(void*)GetProcAddress(COMCTL32_hInstance,"ImageList_LoadImageA"); COMDLG32_ImageList_Draw=(void*)GetProcAddress(COMCTL32_hInstance,"ImageList_Draw"); - COMDLG32_ImageList_Destroy=(void*)GetProcAddress(COMCTL32_hInstance,"ImageList_Destroy"); /* ITEMISLIST */ @@ -139,6 +121,7 @@ BOOL WINAPI COMDLG32_DllEntryPoint(HINSTANCE hInstance, DWORD Reason, LPVOID Res /* SHELL */ + COMDLG32_SHAlloc = (void*)GetProcAddress(SHELL32_hInstance, (LPCSTR)196L); COMDLG32_SHFree = (void*)GetProcAddress(SHELL32_hInstance, (LPCSTR)195L); COMDLG32_SHGetSpecialFolderLocation = (void*)GetProcAddress(SHELL32_hInstance,"SHGetSpecialFolderLocation"); COMDLG32_SHGetPathFromIDListA = (void*)GetProcAddress(SHELL32_hInstance,"SHGetPathFromIDListA"); diff --git a/dlls/commdlg/filedlg95.c b/dlls/commdlg/filedlg95.c index b62fce950b53ecda24d3439260956a747ef4485c..e6247a222fc014410c1aba2d525f2f296a878930 100644 --- a/dlls/commdlg/filedlg95.c +++ b/dlls/commdlg/filedlg95.c @@ -148,8 +148,8 @@ LPITEMIDLIST GetParentPidl(LPITEMIDLIST pidl); LPITEMIDLIST GetPidlFromName(IShellFolder *psf,LPCSTR lpcstrFileName); /* Shell memory allocation */ -void *MemAlloc(UINT size); -void MemFree(void *mem); +static void *MemAlloc(UINT size); +static void MemFree(void *mem); BOOL WINAPI GetFileName95(FileOpenDlgInfos *fodInfos); HRESULT WINAPI FileOpenDlgProc95(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); @@ -835,9 +835,6 @@ static LRESULT FILEDLG95_OnWMInitDialog(HWND hwnd, WPARAM wParam, LPARAM lParam) TRACE("\n"); - /* Make sure the common control DLL is loaded */ - InitCommonControls(); - /* Initialise shell objects */ FILEDLG95_SHELL_Init(hwnd); @@ -2303,6 +2300,35 @@ static void FILEDLG95_LOOKIN_Clean(HWND hwnd) * TOOLS */ +/* copied from shell32 to avoid linking to it */ +static HRESULT COMDLG32_StrRetToStrNA (LPVOID dest, DWORD len, LPSTRRET src, LPITEMIDLIST pidl) +{ + switch (src->uType) + { + case STRRET_WSTR: + WideCharToMultiByte(CP_ACP, 0, src->u.pOleStr, -1, (LPSTR)dest, len, NULL, NULL); + COMDLG32_SHFree(src->u.pOleStr); + break; + + case STRRET_CSTRA: + lstrcpynA((LPSTR)dest, src->u.cStr, len); + break; + + case STRRET_OFFSETA: + lstrcpynA((LPSTR)dest, ((LPCSTR)&pidl->mkid)+src->u.uOffset, len); + break; + + default: + FIXME("unknown type!\n"); + if (len) + { + *(LPSTR)dest = '\0'; + } + return(FALSE); + } + return S_OK; +} + /*********************************************************************** * GetName * @@ -2335,7 +2361,7 @@ HRESULT GetName(LPSHELLFOLDER lpsf, LPITEMIDLIST pidl,DWORD dwFlags,LPSTR lpstrF dwFlags, &str))) { - return StrRetToBufA(&str, pidl,lpstrFileName, MAX_PATH); + return COMDLG32_StrRetToStrNA(lpstrFileName, MAX_PATH, &str, pidl); } return E_FAIL; } @@ -2446,12 +2472,12 @@ BOOL GetFileExtension(IShellFolder *psf,LPITEMIDLIST pidl,LPSTR lpstrFileExtensi /* * Memory allocation methods */ -void *MemAlloc(UINT size) +static void *MemAlloc(UINT size) { return HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,size); } -void MemFree(void *mem) +static void MemFree(void *mem) { if(mem) { diff --git a/dlls/commdlg/filedlgbrowser.c b/dlls/commdlg/filedlgbrowser.c index a14a3fe5f582afe7c144726d60613f080eca78c7..a75524d2e3696916e322065e578220f452287a2d 100644 --- a/dlls/commdlg/filedlgbrowser.c +++ b/dlls/commdlg/filedlgbrowser.c @@ -108,7 +108,7 @@ IShellBrowser * IShellBrowserImpl_Construct(HWND hwndOwner) IShellBrowserImpl *sb; FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwndOwner,FileOpenDlgInfosStr); - sb=(IShellBrowserImpl*)SHAlloc(sizeof(IShellBrowserImpl)); + sb=(IShellBrowserImpl*)COMDLG32_SHAlloc(sizeof(IShellBrowserImpl)); /* Initialisation of the member variables */ sb->ref=1; @@ -704,6 +704,39 @@ HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_OnStateChange(ICommDlgBrowser * return NOERROR; } + +/* copied from shell32 to avoid linking to it */ +static HRESULT COMDLG32_StrRetToStrNW (LPVOID dest, DWORD len, LPSTRRET src, LPITEMIDLIST pidl) +{ + TRACE("dest=0x%p len=0x%lx strret=0x%p pidl=%p stub\n",dest,len,src,pidl); + + switch (src->uType) + { + case STRRET_WSTR: + lstrcpynW((LPWSTR)dest, src->u.pOleStr, len); + COMDLG32_SHFree(src->u.pOleStr); + break; + + case STRRET_CSTRA: + lstrcpynAtoW((LPWSTR)dest, src->u.cStr, len); + break; + + case STRRET_OFFSETA: + if (pidl) + { + lstrcpynAtoW((LPWSTR)dest, ((LPCSTR)&pidl->mkid)+src->u.uOffset, len); + } + break; + + default: + FIXME("unknown type!\n"); + if (len) + { *(LPSTR)dest = '\0'; + } + return(FALSE); + } + return S_OK; +} /************************************************************************** * IShellBrowserImpl_ICommDlgBrowser_IncludeObject */ @@ -738,7 +771,7 @@ HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_IncludeObject(ICommDlgBrowser * return S_OK; if (SUCCEEDED(IShellFolder_GetDisplayNameOf(fodInfos->Shell.FOIShellFolder, pidl, SHGDN_FORPARSING, &str))) - { if (SUCCEEDED(StrRetToBufW(&str, pidl,szPathW, MAX_PATH))) + { if (SUCCEEDED(COMDLG32_StrRetToStrNW(szPathW, MAX_PATH, &str, pidl))) { if (COMDLG32_PathMatchSpecW(szPathW, fodInfos->ShellInfos.lpstrCurrentFilter)) return S_OK; diff --git a/dlls/commdlg/printdlg.c b/dlls/commdlg/printdlg.c index 383a4a23038d8f12f1f3e03e4929ed5cb8424156..7275cd68e857b89f5acb0fd6137e4580bc431a8e 100644 --- a/dlls/commdlg/printdlg.c +++ b/dlls/commdlg/printdlg.c @@ -318,7 +318,7 @@ BOOL WINAPI PrintDlgW( LPPRINTDLGW printdlg ) /*********************************************************************** * PRINTDLG_UpdatePrinterInfoTexts [internal] */ -void PRINTDLG_UpdatePrinterInfoTexts(HWND hDlg, PRINT_PTRA* PrintStructures) +static void PRINTDLG_UpdatePrinterInfoTexts(HWND hDlg, PRINT_PTRA* PrintStructures) { char StatusMsg[256]; char ResourceString[256]; @@ -382,7 +382,7 @@ void PRINTDLG_UpdatePrinterInfoTexts(HWND hDlg, PRINT_PTRA* PrintStructures) * but on ID value, as some drivers name the same paper format * differently (language differences, added paper size) */ -short PRINTSETUP32DLG_UpdateComboBox(HWND hDlg, +static short PRINTSETUP32DLG_UpdateComboBox(HWND hDlg, int nIDComboBox, char* PrinterName, char* PortName) @@ -702,7 +702,7 @@ static LRESULT PRINTSETUP32DLG_WMInitDialog(HWND hDlg, WPARAM wParam, * HGLOBAL to DevNames memory object on success or * zero on faillure */ -HGLOBAL PRINTDLG_CreateDevNames( +static HGLOBAL PRINTDLG_CreateDevNames( char* DeviceDriverName, char* DeviceName, char* OutputPort, diff --git a/dlls/shell32/Makefile.in b/dlls/shell32/Makefile.in index e4991255a37419b635a45aa3afea78ecbfdce1b4..7f3769d8a939821bb45a1b628cb882a1b111790a 100644 --- a/dlls/shell32/Makefile.in +++ b/dlls/shell32/Makefile.in @@ -5,7 +5,7 @@ VPATH = @srcdir@ MODULE = shell32 SOVERSION = 1.0 ALTNAMES = shell shlwapi -IMPORTS = ole32 comctl32 +IMPORTS = ole32 WRCEXTRA = -s -p$(MODULE) SPEC_SRCS = \ diff --git a/dlls/shell32/shlview.c b/dlls/shell32/shlview.c index 63dbdf89434bf64b2fb3cc682c326547156ef03a..f2cb56209d59944275d14081354185b0cfdbbe89 100644 --- a/dlls/shell32/shlview.c +++ b/dlls/shell32/shlview.c @@ -599,7 +599,7 @@ static HRESULT ShellView_FillList(IShellViewImpl * This) for (i=0; i < DPA_GetPtrCount(hdpa); ++i) /* DPA_GetPtrCount is a macro*/ { - pidl = (LPITEMIDLIST)DPA_GetPtr(hdpa, i); + pidl = (LPITEMIDLIST)pDPA_GetPtr(hdpa, i); /* in a commdlg This works as a filemask*/ if ( IncludeObject(This, pidl)==S_OK )