[prev in list] [next in list] [prev in thread] [next in thread]
List: wine-devel
Subject: Re: shdocvw(2/2): rudimentary implementation of CLSID_InternetShortcut
From: Jacek Caban <jacek () codeweavers ! com>
Date: 2008-07-31 21:07:56
Message-ID: 489229AC.80307 () codeweavers ! com
[Download RAW message or body]
Hi Damjan,
Damjan Jovanovic wrote:
> Changelog:
> * Added a rudimentary implementation of CLSID_InternetShorcut, with
> tests (#3546).
>
> Damjan Jovanovic
>
+
+static HRESULT strdupAtoW(LPCSTR in, LPWSTR *out)
+{
+ INT len;
+ if (in == NULL)
+ {
+ *out = NULL;
+ return S_OK;
+ }
+ len = MultiByteToWideChar(CP_ACP, 0, in, -1, NULL, 0);
+ *out = HeapAlloc(GetProcessHeap(), 0, len*sizeof(WCHAR));
+ if (!*out)
+ return E_OUTOFMEMORY;
+ MultiByteToWideChar(CP_ACP, 0, in, -1, *out, len);
+ return S_OK;
+}
+
+static HRESULT strdupWtoA(LPCWSTR in, LPSTR *out)
+{
+ INT len;
+ if (in == NULL)
+ {
+ *out = NULL;
+ return S_OK;
+ }
+ len = WideCharToMultiByte(CP_ACP, 0, in, -1, NULL, 0, 0, 0);
+ *out = HeapAlloc(GetProcessHeap(), 0, len);
+ if (!*out)
+ return E_OUTOFMEMORY;
+ WideCharToMultiByte(CP_ACP, 0, in, -1, *out, len, 0, 0);
+ return S_OK;
+}
These function should go to shdocvw.h and be named heap_strdup*. You may copy them \
from dlls/mshtml/mshtml_private.h.
+ else if (IsEqualGUID(&IID_IShellLinkA, riid))
+ {
+ FIXME("The IShellLinkA interface is not yet supported by \
InternetShortcut\n"); + return E_NOTIMPL;
E_NOINTERFACE is better choice.
+ }
+ else if (IsEqualGUID(&IID_IShellLinkW, riid))
+ {
+ FIXME("The IShellLinkW interface is not yet supported by \
InternetShortcut\n"); + return E_NOTIMPL;
Same here.
+ }
+ else
+ {
+ FIXME("Interface with GUID %s not yet implemented by InternetShortcut\n", \
debugstr_guid(riid)); + return E_NOINTERFACE;
+ }
You should set ppvObject to NULL here.
Also, the order of function is strange. The convention is to order function as they \
are ordered in the interface declaration and not mix interfaces.
Also there are heap_alloc, heap_alloc_zero and heap_free functions in shdocvw.h that \
you should use instead of HeapAlloc/HeapFree.
Jacek
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic