ReactOS 0.4.15-dev-7953-g1f49173
CExtractIcon Class Reference
Inheritance diagram for CExtractIcon:
Collaboration diagram for CExtractIcon:

Public Member Functions

 CExtractIcon ()
 
 ~CExtractIcon ()
 
STDMETHOD() SetDefaultIcon (LPCWSTR pszFile, int iIcon) override
 
STDMETHOD() SetFlags (UINT uFlags) override
 
STDMETHOD() SetKey (HKEY hkey) override
 
STDMETHOD() SetNormalIcon (LPCWSTR pszFile, int iIcon) override
 
STDMETHOD() SetOpenIcon (LPCWSTR pszFile, int iIcon) override
 
STDMETHOD() SetShortcutIcon (LPCWSTR pszFile, int iIcon) override
 
STDMETHOD() GetIconLocation (UINT uFlags, LPWSTR szIconFile, UINT cchMax, int *piIndex, UINT *pwFlags) override
 
STDMETHOD() Extract (LPCWSTR pszFile, UINT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize) override
 
STDMETHOD() GetIconLocation (UINT uFlags, LPSTR szIconFile, UINT cchMax, int *piIndex, UINT *pwFlags) override
 
STDMETHOD() Extract (LPCSTR pszFile, UINT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize) override
 
STDMETHOD() GetClassID (CLSID *pClassID) override
 
STDMETHOD() IsDirty () override
 
STDMETHOD() Load (LPCOLESTR pszFileName, DWORD dwMode) override
 
STDMETHOD() Save (LPCOLESTR pszFileName, BOOL fRemember) override
 
STDMETHOD() SaveCompleted (LPCOLESTR pszFileName) override
 
STDMETHOD() GetCurFile (LPOLESTR *ppszFileName) override
 
- Public Member Functions inherited from ATL::CComObjectRootEx< CComMultiThreadModelNoCS >
 ~CComObjectRootEx ()
 
ULONG InternalAddRef ()
 
ULONG InternalRelease ()
 
void Lock ()
 
void Unlock ()
 
HRESULT _AtlInitialConstruct ()
 
- Public Member Functions inherited from ATL::CComObjectRootBase
 CComObjectRootBase ()
 
 ~CComObjectRootBase ()
 
void SetVoid (void *)
 
HRESULT _AtlFinalConstruct ()
 
HRESULT FinalConstruct ()
 
void InternalFinalConstructAddRef ()
 
void InternalFinalConstructRelease ()
 
void FinalRelease ()
 
HRESULT SetDefaultIcon ([in] LPCWSTR pszFile, [in] int iIcon)
 
HRESULT SetFlags ([in] UINT uFlags)
 
HRESULT SetKey ([in] HKEY hkey)
 
HRESULT SetNormalIcon ([in] LPCWSTR pszFile, [in] int iIcon)
 
HRESULT SetOpenIcon ([in] LPCWSTR pszFile, [in] int iIcon)
 
HRESULT SetShortcutIcon ([in] LPCWSTR pszFile, [in] int iIcon)
 
- Public Member Functions inherited from IUnknown
HRESULT QueryInterface ([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
 
ULONG AddRef ()
 
ULONG Release ()
 
- Public Member Functions inherited from IExtractIconW
HRESULT GetIconLocation ([in] UINT uFlags, [out, size_is(cchMax)] LPWSTR szIconFile, [in] UINT cchMax, [out] INT *piIndex, [out] UINT *pwFlags)
 
HRESULT Extract ([in] LPCWSTR pszFile, [in] UINT nIconIndex, [out] HICON *phiconLarge, [out] HICON *phiconSmall, [in] UINT nIconSize)
 
- Public Member Functions inherited from IExtractIconA
HRESULT GetIconLocation ([in] UINT uFlags, [out, size_is(cchMax)] LPSTR szIconFile, [in] UINT cchMax, [out] INT *piIndex, [out] UINT *pwFlags)
 
HRESULT Extract ([in] LPCSTR pszFile, [in] UINT nIconIndex, [out] HICON *phiconLarge, [out] HICON *phiconSmall, [in] UINT nIconSize)
 
HRESULT IsDirty ()
 
HRESULT Load ([in] LPCOLESTR pszFileName, [in] DWORD dwMode)
 
HRESULT Save ([in, unique] LPCOLESTR pszFileName, [in] BOOL fRemember)
 
HRESULT SaveCompleted ([in, unique] LPCOLESTR pszFileName)
 
HRESULT GetCurFile ([out] LPOLESTR *ppszFileName)
 
HRESULT GetClassID ([out] CLSID *pClassID)
 

Private Attributes

UINT flags
 
struct IconLocation defaultIcon
 
struct IconLocation normalIcon
 
struct IconLocation openIcon
 
struct IconLocation shortcutIcon
 

Additional Inherited Members

- Public Types inherited from IUnknown
typedef IUnknownLPUNKNOWN
 
- Public Types inherited from IExtractIconW
typedef IExtractIconWLPEXTRACTICONW
 
- Public Types inherited from IExtractIconA
typedef IExtractIconALPEXTRACTICONA
 
- Public Types inherited from IPersistFile
typedef IPersistFileLPPERSISTFILE
 
- Public Types inherited from IPersist
typedef IPersistLPPERSIST
 
- Static Public Member Functions inherited from ATL::CComObjectRootBase
static void WINAPI ObjectMain (bool)
 
static const struct _ATL_CATMAP_ENTRYGetCategoryMap ()
 
static HRESULT WINAPI InternalQueryInterface (void *pThis, const _ATL_INTMAP_ENTRY *pEntries, REFIID iid, void **ppvObject)
 
- Public Attributes inherited from ATL::CComObjectRootBase
LONG m_dwRef
 

Detailed Description

Definition at line 20 of file CExtractIcon.cpp.

Constructor & Destructor Documentation

◆ CExtractIcon()

CExtractIcon::CExtractIcon ( )

Definition at line 88 of file CExtractIcon.cpp.

89{
90 flags = 0;
91 memset(&defaultIcon, 0, sizeof(defaultIcon));
92 memset(&normalIcon, 0, sizeof(normalIcon));
93 memset(&openIcon, 0, sizeof(openIcon));
94 memset(&shortcutIcon, 0, sizeof(shortcutIcon));
95}
struct IconLocation normalIcon
struct IconLocation defaultIcon
struct IconLocation shortcutIcon
struct IconLocation openIcon
GLbitfield flags
Definition: glext.h:7161
#define memset(x, y, z)
Definition: compat.h:39

◆ ~CExtractIcon()

CExtractIcon::~CExtractIcon ( )

Definition at line 97 of file CExtractIcon.cpp.

98{
100 if (normalIcon.file) CoTaskMemFree(normalIcon.file);
101 if (openIcon.file) CoTaskMemFree(openIcon.file);
103}
VOID WINAPI CoTaskMemFree(LPVOID ptr)
Definition: ifs.c:442

Member Function Documentation

◆ Extract() [1/2]

HRESULT STDMETHODCALLTYPE CExtractIcon::Extract ( LPCSTR  pszFile,
UINT  nIconIndex,
HICON phiconLarge,
HICON phiconSmall,
UINT  nIconSize 
)
override

Implements IExtractIconA.

Definition at line 250 of file CExtractIcon.cpp.

256{
257 LPWSTR pszFileW = NULL;
258 HRESULT hr;
259
260 if (pszFile)
261 {
262 int nLength;
263
264 nLength = MultiByteToWideChar(CP_ACP, 0, pszFile, -1, NULL, 0);
265 if (nLength == 0)
266 return E_FAIL;
267 pszFileW = (LPWSTR)CoTaskMemAlloc(nLength * sizeof(WCHAR));
268 if (!pszFileW)
269 return E_OUTOFMEMORY;
270 if (!MultiByteToWideChar(CP_ACP, 0, pszFile, nLength, pszFileW, nLength))
271 {
272 CoTaskMemFree(pszFileW);
273 return E_FAIL;
274 }
275 }
276
277 hr = Extract(pszFileW, nIconIndex, phiconLarge, phiconSmall, nIconSize);
278
279 if (pszFileW)
280 CoTaskMemFree(pszFileW);
281 return hr;
282}
STDMETHOD() Extract(LPCWSTR pszFile, UINT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize) override
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_FAIL
Definition: ddrawi.h:102
#define NULL
Definition: types.h:112
#define CP_ACP
Definition: compat.h:109
#define MultiByteToWideChar
Definition: compat.h:110
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: ifs.c:426
HRESULT hr
Definition: shlfolder.c:183
_In_ DWORD nLength
Definition: wincon.h:473
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184

◆ Extract() [2/2]

HRESULT STDMETHODCALLTYPE CExtractIcon::Extract ( LPCWSTR  pszFile,
UINT  nIconIndex,
HICON phiconLarge,
HICON phiconSmall,
UINT  nIconSize 
)
override

Implements IExtractIconW.

Definition at line 210 of file CExtractIcon.cpp.

216{
217 TRACE("(%p, %s, %u, %p, %p, %u)\n", this, debugstr_w(pszFile), nIconIndex, phiconLarge, phiconSmall, nIconSize);
218
219 /* Nothing to do, ExtractIconW::GetIconLocation should be enough */
220 return S_FALSE;
221}
#define debugstr_w
Definition: kernel32.h:32
#define TRACE(s)
Definition: solgame.cpp:4
#define S_FALSE
Definition: winerror.h:2357

Referenced by Extract().

◆ GetClassID()

HRESULT STDMETHODCALLTYPE CExtractIcon::GetClassID ( CLSID pClassID)
override

Implements IPersist.

Definition at line 284 of file CExtractIcon.cpp.

286{
287 TRACE("(%p, %p)\n", this, pClassID);
288
289 if (!pClassID)
290 return E_POINTER;
291
292 *pClassID = GUID_NULL;
293 return S_OK;
294}
#define S_OK
Definition: intsafe.h:52
#define GUID_NULL
Definition: ks.h:106
#define E_POINTER
Definition: winerror.h:2365

◆ GetCurFile()

HRESULT STDMETHODCALLTYPE CExtractIcon::GetCurFile ( LPOLESTR ppszFileName)
override

Implements IPersistFile.

Definition at line 329 of file CExtractIcon.cpp.

331{
332 FIXME("(%p, %p)\n", this, ppszFileName);
334 return E_NOTIMPL;
335}
#define FIXME(fmt,...)
Definition: debug.h:111
#define UNIMPLEMENTED
Definition: debug.h:115
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ GetIconLocation() [1/2]

HRESULT STDMETHODCALLTYPE CExtractIcon::GetIconLocation ( UINT  uFlags,
LPSTR  szIconFile,
UINT  cchMax,
int piIndex,
UINT pwFlags 
)
override

Definition at line 223 of file CExtractIcon.cpp.

229{
230 LPWSTR szIconFileW = NULL;
231 HRESULT hr;
232
233 if (cchMax > 0)
234 {
235 szIconFileW = (LPWSTR)CoTaskMemAlloc(cchMax * sizeof(WCHAR));
236 if (!szIconFileW)
237 return E_OUTOFMEMORY;
238 }
239
240 hr = GetIconLocation(uFlags, szIconFileW, cchMax, piIndex, pwFlags);
241 if (SUCCEEDED(hr) && cchMax > 0)
242 if (0 == WideCharToMultiByte(CP_ACP, 0, szIconFileW, cchMax, szIconFile, cchMax, NULL, NULL))
243 hr = E_FAIL;
244
245 if (szIconFileW)
246 CoTaskMemFree(szIconFileW);
247 return hr;
248}
UINT cchMax
STDMETHOD() GetIconLocation(UINT uFlags, LPWSTR szIconFile, UINT cchMax, int *piIndex, UINT *pwFlags) override
UINT uFlags
Definition: api.c:59
#define WideCharToMultiByte
Definition: compat.h:111
#define SUCCEEDED(hr)
Definition: intsafe.h:50

◆ GetIconLocation() [2/2]

HRESULT STDMETHODCALLTYPE CExtractIcon::GetIconLocation ( UINT  uFlags,
LPWSTR  szIconFile,
UINT  cchMax,
int piIndex,
UINT pwFlags 
)
override

Definition at line 174 of file CExtractIcon.cpp.

180{
181 const struct IconLocation *icon = NULL;
182 SIZE_T cb;
183
184 TRACE("(%p, 0x%x, %s, 0x%x, %p, %p)\n", this, uFlags, debugstr_w(szIconFile), cchMax, piIndex, pwFlags);
185
186 if (!piIndex || !pwFlags)
187 return E_POINTER;
188
189 if (uFlags & GIL_DEFAULTICON)
190 icon = defaultIcon.file ? &defaultIcon : &normalIcon;
191 else if (uFlags & GIL_FORSHORTCUT)
192 icon = shortcutIcon.file ? &shortcutIcon : &normalIcon;
193 else if (uFlags & GIL_OPENICON)
194 icon = openIcon.file ? &openIcon : &normalIcon;
195 else
196 icon = &normalIcon;
197
198 if (!icon->file)
199 return E_FAIL;
200
201 cb = wcslen(icon->file) + 1;
202 if (cchMax < (UINT)cb)
203 return E_FAIL;
204 CopyMemory(szIconFile, icon->file, cb * sizeof(WCHAR));
205 *piIndex = icon->index;
206 *pwFlags = flags;
207 return S_OK;
208}
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
static HMODULE MODULEINFO DWORD cb
Definition: module.c:33
unsigned int UINT
Definition: ndis.h:50
ULONG_PTR SIZE_T
Definition: typedefs.h:80
#define CopyMemory
Definition: winbase.h:1710

Referenced by GetIconLocation().

◆ IsDirty()

HRESULT STDMETHODCALLTYPE CExtractIcon::IsDirty ( void  )
override

Implements IPersistFile.

Definition at line 296 of file CExtractIcon.cpp.

297{
298 FIXME("(%p)\n", this);
300 return E_NOTIMPL;
301}

◆ Load()

HRESULT STDMETHODCALLTYPE CExtractIcon::Load ( LPCOLESTR  pszFileName,
DWORD  dwMode 
)
override

Implements IPersistFile.

Definition at line 303 of file CExtractIcon.cpp.

306{
307 FIXME("(%p, %s, %u)\n", this, debugstr_w(pszFileName), dwMode);
309 return E_NOTIMPL;
310}
WORD WORD PSZ PSZ pszFileName
Definition: vdmdbg.h:44

◆ Save()

HRESULT STDMETHODCALLTYPE CExtractIcon::Save ( LPCOLESTR  pszFileName,
BOOL  fRemember 
)
override

Implements IPersistFile.

Definition at line 312 of file CExtractIcon.cpp.

315{
316 FIXME("(%p, %s, %d)\n", this, debugstr_w(pszFileName), fRemember);
318 return E_NOTIMPL;
319}

◆ SaveCompleted()

HRESULT STDMETHODCALLTYPE CExtractIcon::SaveCompleted ( LPCOLESTR  pszFileName)
override

Implements IPersistFile.

Definition at line 321 of file CExtractIcon.cpp.

323{
324 FIXME("(%p, %s)\n", this, debugstr_w(pszFileName));
326 return E_NOTIMPL;
327}

◆ SetDefaultIcon()

HRESULT STDMETHODCALLTYPE CExtractIcon::SetDefaultIcon ( LPCWSTR  pszFile,
int  iIcon 
)
override

Implements IDefaultExtractIconInit.

Definition at line 105 of file CExtractIcon.cpp.

108{
109 TRACE("(%p, %s, %d)\n", this, debugstr_w(pszFile), iIcon);
110
111 DuplicateString(pszFile, &defaultIcon.file);
112 if (!defaultIcon.file)
113 return E_OUTOFMEMORY;
114 defaultIcon.index = iIcon;
115 return S_OK;
116}
#define DuplicateString(x)
Definition: stringutils.h:45

◆ SetFlags()

HRESULT STDMETHODCALLTYPE CExtractIcon::SetFlags ( UINT  uFlags)
override

Implements IDefaultExtractIconInit.

Definition at line 118 of file CExtractIcon.cpp.

120{
121 TRACE("(%p, 0x%x)\n", this, uFlags);
122
123 flags = uFlags;
124 return S_OK;
125}

◆ SetKey()

HRESULT STDMETHODCALLTYPE CExtractIcon::SetKey ( HKEY  hkey)
override

Implements IDefaultExtractIconInit.

Definition at line 127 of file CExtractIcon.cpp.

129{
130 FIXME("(%p, %p)\n", this, hkey);
132 return E_NOTIMPL;
133}

◆ SetNormalIcon()

HRESULT STDMETHODCALLTYPE CExtractIcon::SetNormalIcon ( LPCWSTR  pszFile,
int  iIcon 
)
override

Implements IDefaultExtractIconInit.

Definition at line 135 of file CExtractIcon.cpp.

138{
139 TRACE("(%p, %s, %d)\n", this, debugstr_w(pszFile), iIcon);
140
141 DuplicateString(pszFile, &normalIcon.file);
142 if (!normalIcon.file)
143 return E_OUTOFMEMORY;
144 normalIcon.index = iIcon;
145 return S_OK;
146}

◆ SetOpenIcon()

HRESULT STDMETHODCALLTYPE CExtractIcon::SetOpenIcon ( LPCWSTR  pszFile,
int  iIcon 
)
override

Implements IDefaultExtractIconInit.

Definition at line 148 of file CExtractIcon.cpp.

151{
152 TRACE("(%p, %s, %d)\n", this, debugstr_w(pszFile), iIcon);
153
154 DuplicateString(pszFile, &openIcon.file);
155 if (!openIcon.file)
156 return E_OUTOFMEMORY;
157 openIcon.index = iIcon;
158 return S_OK;
159}

◆ SetShortcutIcon()

HRESULT STDMETHODCALLTYPE CExtractIcon::SetShortcutIcon ( LPCWSTR  pszFile,
int  iIcon 
)
override

Implements IDefaultExtractIconInit.

Definition at line 161 of file CExtractIcon.cpp.

164{
165 TRACE("(%p, %s, %d)\n", this, debugstr_w(pszFile), iIcon);
166
167 DuplicateString(pszFile, &shortcutIcon.file);
168 if (!shortcutIcon.file)
169 return E_OUTOFMEMORY;
170 shortcutIcon.index = iIcon;
171 return S_OK;
172}

Member Data Documentation

◆ defaultIcon

struct IconLocation CExtractIcon::defaultIcon
private

Definition at line 29 of file CExtractIcon.cpp.

Referenced by CExtractIcon(), GetIconLocation(), SetDefaultIcon(), and ~CExtractIcon().

◆ flags

UINT CExtractIcon::flags
private

Definition at line 28 of file CExtractIcon.cpp.

Referenced by GetIconLocation().

◆ normalIcon

struct IconLocation CExtractIcon::normalIcon
private

Definition at line 30 of file CExtractIcon.cpp.

Referenced by CExtractIcon(), GetIconLocation(), SetNormalIcon(), and ~CExtractIcon().

◆ openIcon

struct IconLocation CExtractIcon::openIcon
private

Definition at line 31 of file CExtractIcon.cpp.

Referenced by CExtractIcon(), GetIconLocation(), SetOpenIcon(), and ~CExtractIcon().

◆ shortcutIcon

struct IconLocation CExtractIcon::shortcutIcon
private

Definition at line 32 of file CExtractIcon.cpp.

Referenced by CExtractIcon(), GetIconLocation(), SetShortcutIcon(), and ~CExtractIcon().


The documentation for this class was generated from the following file: