From 32d27dc77b70e1de2006e475117843a1b54a857a Mon Sep 17 00:00:00 2001 From: Steven Edwards Date: Wed, 9 Jul 2003 19:49:12 +0000 Subject: [PATCH] - Create new file ole2_16.c for ole2 16bit only functions. - Move CLSIDFromProgID16 so it can be used internally. - Compile out more Win16 sources. --- dlls/ole32/Makefile.in | 7 +-- dlls/ole32/compobj.c | 31 +++++++++++++ dlls/ole32/ole16.c | 31 ------------- dlls/ole32/ole2.c | 65 --------------------------- dlls/ole32/ole2_16.c | 120 +++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 155 insertions(+), 99 deletions(-) create mode 100644 dlls/ole32/ole2_16.c diff --git a/dlls/ole32/Makefile.in b/dlls/ole32/Makefile.in index 4886c8d0840..abdb72c7ba2 100644 --- a/dlls/ole32/Makefile.in +++ b/dlls/ole32/Makefile.in @@ -31,7 +31,6 @@ C_SRCS = \ marshal.c \ memlockbytes.c \ moniker.c \ - ole16.c \ ole2.c \ ole2stubs.c \ ole2impl.c \ @@ -42,12 +41,14 @@ C_SRCS = \ rpc.c \ stg_bigblockfile.c \ stg_stream.c \ - storage.c \ storage32.c C_SRCS16 = \ memlockbytes16.c \ - ole2nls.c + ole16.c \ + ole2_16.c \ + ole2nls.c \ + storage.c RC_SRCS = ole32res.rc version.rc diff --git a/dlls/ole32/compobj.c b/dlls/ole32/compobj.c index 88f3c14a406..9f197aa6fe0 100644 --- a/dlls/ole32/compobj.c +++ b/dlls/ole32/compobj.c @@ -703,6 +703,37 @@ HRESULT WINAPI ProgIDFromCLSID( } /****************************************************************************** + * CLSIDFromProgID [COMPOBJ.61] + * Converts a program id into the respective GUID. (By using a registry lookup) + * RETURNS + * riid associated with the progid + */ +HRESULT WINAPI CLSIDFromProgID16( + LPCOLESTR16 progid, /* [in] program id as found in registry */ + LPCLSID riid /* [out] associated CLSID */ +) { + char *buf,buf2[80]; + DWORD buf2len; + HRESULT err; + HKEY xhkey; + + buf = HeapAlloc(GetProcessHeap(),0,strlen(progid)+8); + sprintf(buf,"%s\\CLSID",progid); + if ((err=RegOpenKeyA(HKEY_CLASSES_ROOT,buf,&xhkey))) { + HeapFree(GetProcessHeap(),0,buf); + return CO_E_CLASSSTRING; + } + HeapFree(GetProcessHeap(),0,buf); + buf2len = sizeof(buf2); + if ((err=RegQueryValueA(xhkey,NULL,buf2,&buf2len))) { + RegCloseKey(xhkey); + return CO_E_CLASSSTRING; + } + RegCloseKey(xhkey); + return __CLSIDFromStringA(buf2,riid); +} + +/****************************************************************************** * CLSIDFromProgID [OLE32.2] * Converts a program id into the respective GUID. (By using a registry lookup) * RETURNS diff --git a/dlls/ole32/ole16.c b/dlls/ole32/ole16.c index d8083279ce2..0369e8b6062 100644 --- a/dlls/ole32/ole16.c +++ b/dlls/ole32/ole16.c @@ -384,37 +384,6 @@ HRESULT WINAPI ProgIDFromCLSID16( return ret; } -/****************************************************************************** - * CLSIDFromProgID [COMPOBJ.61] - * Converts a program id into the respective GUID. (By using a registry lookup) - * RETURNS - * riid associated with the progid - */ -HRESULT WINAPI CLSIDFromProgID16( - LPCOLESTR16 progid, /* [in] program id as found in registry */ - LPCLSID riid /* [out] associated CLSID */ -) { - char *buf,buf2[80]; - DWORD buf2len; - HRESULT err; - HKEY xhkey; - - buf = HeapAlloc(GetProcessHeap(),0,strlen(progid)+8); - sprintf(buf,"%s\\CLSID",progid); - if ((err=RegOpenKeyA(HKEY_CLASSES_ROOT,buf,&xhkey))) { - HeapFree(GetProcessHeap(),0,buf); - return CO_E_CLASSSTRING; - } - HeapFree(GetProcessHeap(),0,buf); - buf2len = sizeof(buf2); - if ((err=RegQueryValueA(xhkey,NULL,buf2,&buf2len))) { - RegCloseKey(xhkey); - return CO_E_CLASSSTRING; - } - RegCloseKey(xhkey); - return __CLSIDFromStringA(buf2,riid); -} - /*********************************************************************** * LookupETask (COMPOBJ.94) */ diff --git a/dlls/ole32/ole2.c b/dlls/ole32/ole2.c index 111238b7ef9..5140274e5d4 100644 --- a/dlls/ole32/ole2.c +++ b/dlls/ole32/ole2.c @@ -319,17 +319,6 @@ HRESULT WINAPI OleInitializeWOW(DWORD x) { } /*********************************************************************** - * RegisterDragDrop (OLE2.35) - */ -HRESULT WINAPI RegisterDragDrop16( - HWND16 hwnd, - LPDROPTARGET pDropTarget -) { - FIXME("(0x%04x,%p),stub!\n",hwnd,pDropTarget); - return S_OK; -} - -/*********************************************************************** * RegisterDragDrop (OLE32.139) */ HRESULT WINAPI RegisterDragDrop( @@ -373,16 +362,6 @@ HRESULT WINAPI RegisterDragDrop( } /*********************************************************************** - * RevokeDragDrop (OLE2.36) - */ -HRESULT WINAPI RevokeDragDrop16( - HWND16 hwnd -) { - FIXME("(0x%04x),stub!\n",hwnd); - return S_OK; -} - -/*********************************************************************** * RevokeDragDrop (OLE32.141) */ HRESULT WINAPI RevokeDragDrop( @@ -2215,50 +2194,6 @@ static void OLEUTL_ReadRegistryDWORDValue( } /****************************************************************************** - * OleMetaFilePictFromIconAndLabel (OLE2.56) - * - * Returns a global memory handle to a metafile which contains the icon and - * label given. - * I guess the result of that should look somehow like desktop icons. - * If no hIcon is given, we load the icon via lpszSourceFile and iIconIndex. - * This code might be wrong at some places. - */ -HGLOBAL16 WINAPI OleMetaFilePictFromIconAndLabel16( - HICON16 hIcon, - LPCOLESTR16 lpszLabel, - LPCOLESTR16 lpszSourceFile, - UINT16 iIconIndex -) { - METAFILEPICT16 *mf; - HGLOBAL16 hmf; - HDC hdc; - - FIXME("(%04x, '%s', '%s', %d): incorrect metrics, please try to correct them !\n\n\n", hIcon, lpszLabel, lpszSourceFile, iIconIndex); - - if (!hIcon) { - if (lpszSourceFile) { - HINSTANCE16 hInstance = LoadLibrary16(lpszSourceFile); - - /* load the icon at index from lpszSourceFile */ - hIcon = HICON_16(LoadIconA(HINSTANCE_32(hInstance), (LPCSTR)(DWORD)iIconIndex)); - FreeLibrary16(hInstance); - } else - return 0; - } - - hdc = CreateMetaFileA(NULL); - DrawIcon(hdc, 0, 0, HICON_32(hIcon)); /* FIXME */ - TextOutA(hdc, 0, 0, lpszLabel, 1); /* FIXME */ - hmf = GlobalAlloc16(0, sizeof(METAFILEPICT16)); - mf = (METAFILEPICT16 *)GlobalLock16(hmf); - mf->mm = MM_ANISOTROPIC; - mf->xExt = 20; /* FIXME: bogus */ - mf->yExt = 20; /* dito */ - mf->hMF = CloseMetaFile16(HDC_16(hdc)); - return hmf; -} - -/****************************************************************************** * OleDraw (OLE32.101) * * The operation of this function is documented literally in the WinAPI diff --git a/dlls/ole32/ole2_16.c b/dlls/ole32/ole2_16.c new file mode 100644 index 00000000000..e6878bb94d8 --- /dev/null +++ b/dlls/ole32/ole2_16.c @@ -0,0 +1,120 @@ + +/* + * OLE2 library - 16 bit only interfaces + * + * Copyright 1995 Martin von Loewis + * Copyright 1999 Francis Beaudet + * Copyright 1999 Noel Borthwick + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "config.h" + +#include +#include +#include +#include + +#define NONAMELESSUNION +#define NONAMELESSSTRUCT +#include "commctrl.h" +#include "ole2.h" +#include "ole2ver.h" +#include "windef.h" +#include "winbase.h" +#include "winerror.h" +#include "winuser.h" +#include "winreg.h" +#include "wownt32.h" + +#include "wine/winbase16.h" +#include "wine/wingdi16.h" +#include "wine/winuser16.h" +#include "ole32_main.h" + +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(ole); +WINE_DECLARE_DEBUG_CHANNEL(accel); + +#define HICON_16(h32) (LOWORD(h32)) +#define HICON_32(h16) ((HICON)(ULONG_PTR)(h16)) +#define HINSTANCE_32(h16) ((HINSTANCE)(ULONG_PTR)(h16)) + +/*********************************************************************** + * RegisterDragDrop (OLE2.35) + */ +HRESULT WINAPI RegisterDragDrop16( + HWND16 hwnd, + LPDROPTARGET pDropTarget +) { + FIXME("(0x%04x,%p),stub!\n",hwnd,pDropTarget); + return S_OK; +} + +/*********************************************************************** + * RevokeDragDrop (OLE2.36) + */ +HRESULT WINAPI RevokeDragDrop16( + HWND16 hwnd +) { + FIXME("(0x%04x),stub!\n",hwnd); + return S_OK; +} + +/****************************************************************************** + * OleMetaFilePictFromIconAndLabel (OLE2.56) + * + * Returns a global memory handle to a metafile which contains the icon and + * label given. + * I guess the result of that should look somehow like desktop icons. + * If no hIcon is given, we load the icon via lpszSourceFile and iIconIndex. + * This code might be wrong at some places. + */ +HGLOBAL16 WINAPI OleMetaFilePictFromIconAndLabel16( + HICON16 hIcon, + LPCOLESTR16 lpszLabel, + LPCOLESTR16 lpszSourceFile, + UINT16 iIconIndex +) { + METAFILEPICT16 *mf; + HGLOBAL16 hmf; + HDC hdc; + + FIXME("(%04x, '%s', '%s', %d): incorrect metrics, please try to correct them !\n\n\n", hIcon, lpszLabel, lpszSourceFile, iIconIndex); + + if (!hIcon) { + if (lpszSourceFile) { + HINSTANCE16 hInstance = LoadLibrary16(lpszSourceFile); + + /* load the icon at index from lpszSourceFile */ + hIcon = HICON_16(LoadIconA(HINSTANCE_32(hInstance), (LPCSTR)(DWORD)iIconIndex)); + FreeLibrary16(hInstance); + } else + return 0; + } + + hdc = CreateMetaFileA(NULL); + DrawIcon(hdc, 0, 0, HICON_32(hIcon)); /* FIXME */ + TextOutA(hdc, 0, 0, lpszLabel, 1); /* FIXME */ + hmf = GlobalAlloc16(0, sizeof(METAFILEPICT16)); + mf = (METAFILEPICT16 *)GlobalLock16(hmf); + mf->mm = MM_ANISOTROPIC; + mf->xExt = 20; /* FIXME: bogus */ + mf->yExt = 20; /* dito */ + mf->hMF = CloseMetaFile16(HDC_16(hdc)); + return hmf; +} -- 2.11.4.GIT