ReactOS 0.4.16-dev-2293-g4d8327b
CFontExt Class Reference

#include <CFontExt.hpp>

Inheritance diagram for CFontExt:
Collaboration diagram for CFontExt:

Public Member Functions

 CFontExt ()
 
 ~CFontExt ()
 
void SetViewWindow (HWND hwndView)
 
STDMETHODIMP GetDefaultSearchGUID (GUID *lpguid) override
 
STDMETHODIMP EnumSearches (IEnumExtraSearch **ppenum) override
 
STDMETHODIMP GetDefaultColumn (DWORD dwReserved, ULONG *pSort, ULONG *pDisplay) override
 
STDMETHODIMP GetDefaultColumnState (UINT iColumn, SHCOLSTATEF *pcsFlags) override
 
STDMETHODIMP GetDetailsEx (PCUITEMID_CHILD pidl, const SHCOLUMNID *pscid, VARIANT *pv) override
 
STDMETHODIMP GetDetailsOf (PCUITEMID_CHILD pidl, UINT iColumn, SHELLDETAILS *psd) override
 
STDMETHODIMP MapColumnToSCID (UINT iColumn, SHCOLUMNID *pscid) override
 
STDMETHODIMP ParseDisplayName (HWND hwndOwner, LPBC pbc, LPOLESTR lpszDisplayName, DWORD *pchEaten, PIDLIST_RELATIVE *ppidl, DWORD *pdwAttributes) override
 
STDMETHODIMP EnumObjects (HWND hwndOwner, DWORD dwFlags, LPENUMIDLIST *ppEnumIDList) override
 
STDMETHODIMP BindToObject (PCUIDLIST_RELATIVE pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut) override
 
STDMETHODIMP BindToStorage (PCUIDLIST_RELATIVE pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut) override
 
STDMETHODIMP CompareIDs (LPARAM lParam, PCUIDLIST_RELATIVE pidl1, PCUIDLIST_RELATIVE pidl2) override
 
STDMETHODIMP CreateViewObject (HWND hwndOwner, REFIID riid, LPVOID *ppvOut) override
 
STDMETHODIMP GetAttributesOf (UINT cidl, PCUITEMID_CHILD_ARRAY apidl, DWORD *rgfInOut) override
 
STDMETHODIMP GetUIObjectOf (HWND hwndOwner, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, REFIID riid, UINT *prgfInOut, LPVOID *ppvOut) override
 
STDMETHODIMP GetDisplayNameOf (PCUITEMID_CHILD pidl, DWORD dwFlags, LPSTRRET strRet) override
 
STDMETHODIMP SetNameOf (HWND hwndOwner, PCUITEMID_CHILD pidl, LPCOLESTR lpName, DWORD dwFlags, PITEMID_CHILD *pPidlOut) override
 
STDMETHODIMP GetCurFolder (LPITEMIDLIST *ppidl) override
 
STDMETHODIMP Initialize (LPCITEMIDLIST pidl) override
 
STDMETHODIMP GetClassID (CLSID *lpClassId) override
 
STDMETHODIMP DragEnter (IDataObject *pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect) override
 
STDMETHODIMP DragOver (DWORD grfKeyState, POINTL pt, DWORD *pdwEffect) override
 
STDMETHODIMP DragLeave () override
 
STDMETHODIMP Drop (IDataObject *pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect) 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 GetDefaultSearchGUID ([out] GUID *lpguid)
 
HRESULT EnumSearches ([out] IEnumExtraSearch **ppenum)
 
HRESULT GetDefaultColumn ([in] DWORD dwReserved, [out] ULONG *pSort, [out] ULONG *pDisplay)
 
HRESULT GetDefaultColumnState ([in] UINT iColumn, [out] SHCOLSTATEF *pcsFlags)
 
HRESULT GetDetailsEx ([in] PCUITEMID_CHILD pidl, [in] const SHCOLUMNID *pscid, [out] VARIANT *pv)
 
HRESULT GetDetailsOf ([in] PCUITEMID_CHILD pidl, [in] UINT iColumn, [out] SHELLDETAILS *psd)
 
HRESULT MapColumnToSCID ([in] UINT iColumn, [in] SHCOLUMNID *pscid)
 
- Public Member Functions inherited from IShellFolder
HRESULT ParseDisplayName ([in] HWND hwndOwner, [in] LPBC pbcReserved, [in, string] LPOLESTR lpszDisplayName, [out] ULONG *pchEaten, [out] PIDLIST_RELATIVE *ppidl, [in, out, unique] ULONG *pdwAttributes)
 
HRESULT EnumObjects ([in] HWND hwndOwner, [in] SHCONTF grfFlags, [out] IEnumIDList **ppenumIDList)
 
HRESULT BindToObject ([in] PCUIDLIST_RELATIVE pidl, [in] LPBC pbcReserved, [in] REFIID riid, [out, iid_is(riid)] void **ppvOut)
 
HRESULT BindToStorage ([in] PCUIDLIST_RELATIVE pidl, [in] LPBC pbcReserved, [in] REFIID riid, [out, iid_is(riid)] void **ppvObj)
 
HRESULT CompareIDs ([in] LPARAM lParam, [in] PCUIDLIST_RELATIVE pidl1, [in] PCUIDLIST_RELATIVE pidl2)
 
HRESULT CreateViewObject ([in] HWND hwndOwner, [in] REFIID riid, [out, iid_is(riid)] void **ppvOut)
 
HRESULT GetAttributesOf ([in] UINT cidl, [in, size_is(cidl)] PCUITEMID_CHILD_ARRAY apidl, [in, out] SFGAOF *rgfInOut)
 
HRESULT GetUIObjectOf ([in] HWND hwndOwner, [in] UINT cidl, [in, size_is(cidl)] PCUITEMID_CHILD_ARRAY apidl, [in] REFIID riid, [in, out, unique] UINT *prgfInOut, [out, iid_is(riid)] void **ppvOut)
 
HRESULT GetDisplayNameOf ([in] PCUITEMID_CHILD pidl, [in] SHGDNF uFlags, [out] STRRET *lpName)
 
HRESULT SetNameOf ([in] HWND hwnd, [in] PCUITEMID_CHILD pidl, [in, string] LPCOLESTR lpszName, [in] SHGDNF uFlags, [out] PITEMID_CHILD *ppidlOut)
 
- 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 IPersistFolder2
HRESULT GetCurFolder ([out] PIDLIST_ABSOLUTE *ppidl)
 
- Public Member Functions inherited from IPersistFolder
HRESULT Initialize ([in] PCIDLIST_ABSOLUTE pidl)
 
HRESULT GetClassID ([out] CLSID *pClassID)
 
HRESULT DragEnter ([in, unique] IDataObject *pDataObj, [in] DWORD grfKeyState, [in] POINTL pt, [in, out] DWORD *pdwEffect)
 
HRESULT DragOver ([in] DWORD grfKeyState, [in] POINTL pt, [in, out] DWORD *pdwEffect)
 
HRESULT DragLeave ()
 
HRESULT Drop ([in, unique] IDataObject *pDataObj, [in] DWORD grfKeyState, [in] POINTL pt, [in, out] DWORD *pdwEffect)
 

Private Member Functions

HRESULT PreviewItems (IDataObject *pDataObj)
 
HRESULT DeleteItems (IDataObject *pDataObj)
 

Static Private Member Functions

static HRESULT CALLBACK MenuCallback (IShellFolder *psf, HWND hwnd, IDataObject *pdtobj, UINT uMsg, WPARAM wParam, LPARAM lParam)
 

Private Attributes

CComHeapPtr< ITEMIDLISTm_Folder
 
BOOL m_bDragAccepted = FALSE
 
HWND m_hwndView = nullptr
 

Additional Inherited Members

- Public Types inherited from IShellFolder2
typedef struct IShellFolder2::SHCOLUMNIDLPSHCOLUMNID
 
typedef const SHCOLUMNIDLPCSHCOLUMNID
 
- Public Types inherited from IShellFolder
enum  tagSHGDN {
  SHGDN_NORMAL = 0 , SHGDN_INFOLDER = 1 , SHGDN_FOREDITING = 0x1000 , SHGDN_INCLUDE_NONFILESYS = 0x2000 ,
  SHGDN_FORADDRESSBAR = 0x4000 , SHGDN_FORPARSING = 0x8000
}
 
enum  tagSHCONTF {
  SHCONTF_FOLDERS = 32 , SHCONTF_NONFOLDERS = 64 , SHCONTF_INCLUDEHIDDEN = 128 , SHCONTF_INIT_ON_FIRST_NEXT = 256 ,
  SHCONTF_NETPRINTERSRCH = 512 , SHCONTF_SHAREABLE = 1024 , SHCONTF_STORAGE = 2048 , SHCONTF_NAVIGATION_ENUM = 0x01000 ,
  SHCONTF_FASTITEMS = 0x02000 , SHCONTF_FLATLIST = 0x04000 , SHCONTF_ENABLE_ASYNC = 0x08000 , SHCONTF_INCLUDESUPERHIDDEN = 0x10000
}
 
typedef IShellFolderLPSHELLFOLDER
 
typedef enum IShellFolder::tagSHGDN SHGNO
 
typedef DWORD SHGDNF
 
typedef DWORD SHCONTF
 
typedef ULONG SFGAOF
 
- Public Types inherited from IUnknown
typedef IUnknownLPUNKNOWN
 
- Public Types inherited from IPersistFolder2
typedef IPersistFolder2LPPERSISTFOLDER2
 
- Public Types inherited from IPersistFolder
typedef IPersistFolderLPPERSISTFOLDER
 
- Public Types inherited from IPersist
typedef IPersistLPPERSIST
 
- Public Types inherited from IDropTarget
typedef IDropTargetLPDROPTARGET
 
- 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
 
- Public Attributes inherited from IDropTarget
const DWORD MK_ALT = 0x20
 
const DWORD DROPEFFECT_NONE = 0
 
const DWORD DROPEFFECT_COPY = 1
 
const DWORD DROPEFFECT_MOVE = 2
 
const DWORD DROPEFFECT_LINK = 4
 
const DWORD DROPEFFECT_SCROLL = 0x80000000
 
const DWORD DD_DEFSCROLLINSET = 11
 
const DWORD DD_DEFSCROLLDELAY = 50
 
const DWORD DD_DEFSCROLLINTERVAL = 50
 
const DWORD DD_DEFDRAGDELAY = 200
 
const DWORD DD_DEFDRAGMINDIST = 2
 

Detailed Description

Definition at line 11 of file CFontExt.hpp.

Constructor & Destructor Documentation

◆ CFontExt()

CFontExt::CFontExt ( )

Definition at line 104 of file CFontExt.cpp.

105{
107}
LONG g_ModuleRefCnt
Definition: ACPPage.cpp:13
#define InterlockedIncrement
Definition: armddk.h:53

◆ ~CFontExt()

CFontExt::~CFontExt ( )

Definition at line 109 of file CFontExt.cpp.

110{
112}
#define InterlockedDecrement
Definition: armddk.h:52

Member Function Documentation

◆ BindToObject()

STDMETHODIMP CFontExt::BindToObject ( PCUIDLIST_RELATIVE  pidl,
LPBC  pbcReserved,
REFIID  riid,
LPVOID ppvOut 
)
override

Definition at line 309 of file CFontExt.cpp.

310{
311 ERR("%s(riid=%S) UNIMPLEMENTED\n", __FUNCTION__, g2s(riid));
312 return E_NOTIMPL;
313}
WCHAR * g2s(REFCLSID iid)
Definition: CFontExt.cpp:55
#define ERR(fmt,...)
Definition: precomp.h:57
#define E_NOTIMPL
Definition: ddrawi.h:99
#define __FUNCTION__
Definition: types.h:116
REFIID riid
Definition: atlbase.h:39

◆ BindToStorage()

STDMETHODIMP CFontExt::BindToStorage ( PCUIDLIST_RELATIVE  pidl,
LPBC  pbcReserved,
REFIID  riid,
LPVOID ppvOut 
)
override

Definition at line 315 of file CFontExt.cpp.

316{
317 ERR("%s() UNIMPLEMENTED\n", __FUNCTION__);
318 return E_NOTIMPL;
319}

◆ CompareIDs()

STDMETHODIMP CFontExt::CompareIDs ( LPARAM  lParam,
PCUIDLIST_RELATIVE  pidl1,
PCUIDLIST_RELATIVE  pidl2 
)
override

Implements IShellFolder.

Definition at line 321 of file CFontExt.cpp.

322{
323 const FontPidlEntry* fontEntry1 = _FontFromIL(pidl1);
324 const FontPidlEntry* fontEntry2 = _FontFromIL(pidl2);
325 if (!fontEntry1 || !fontEntry2)
326 return E_INVALIDARG;
327
328 int result;
329 DWORD sortMode = lParam & 0xFFFF0000;
330 DWORD column = lParam & 0x0000FFFF;
331 if (sortMode == SHCIDS_ALLFIELDS)
332 {
333 result = StrCmpIW(fontEntry1->Name(), fontEntry2->Name());
334 }
335 else
336 {
337 auto info1 = g_FontCache->Find(fontEntry1);
338 auto info2 = g_FontCache->Find(fontEntry2);
339
340 if (!info1 || !info2)
341 {
342 ERR("Unable to find font %S or %S in cache!\n", fontEntry1->Name(), fontEntry2->Name());
343 return E_INVALIDARG;
344 }
345
346 switch (column)
347 {
348 case 0xffff:
349 /* ROS bug? */
350 case FONTEXT_COL_NAME:
351 result = StrCmpIW(fontEntry1->Name(), fontEntry2->Name());
352 break;
354 result = StrCmpIW(PathFindFileNameW(info1->File()), PathFindFileNameW(info2->File()));
355 break;
356 case FONTEXT_COL_SIZE:
357 {
358 ULONGLONG size1 = info1->FileSize().QuadPart, size2 = info2->FileSize().QuadPart;
359 result = (size1 < size2) ? -1 : ((size1 > size2) ? 1 : 0);
360 }
361 break;
363 result = CompareFileTime(&info1->FileWriteTime(), &info2->FileWriteTime());
364 break;
365 case FONTEXT_COL_ATTR:
366 {
367 HRESULT hr;
368 WCHAR szAttr1[8], szAttr2[8];
369 hr = FONTEXT_GetAttributeString(info1->FileAttributes(), szAttr1, _countof(szAttr1));
371 return hr;
372 hr = FONTEXT_GetAttributeString(info2->FileAttributes(), szAttr2, _countof(szAttr2));
374 return hr;
375 result = _wcsicmp(szAttr1, szAttr2);
376 }
377 break;
378 default:
379 ERR("Unimplemented column %u\n", column);
380 return E_INVALIDARG;
381 }
382 }
383
385}
CFontCache * g_FontCache
Definition: CFontCache.cpp:12
#define SHCIDS_ALLFIELDS
Definition: CFontExt.cpp:14
@ FONTEXT_COL_NAME
Definition: CFontExt.cpp:27
@ FONTEXT_COL_SIZE
Definition: CFontExt.cpp:29
@ FONTEXT_COL_FILENAME
Definition: CFontExt.cpp:28
@ FONTEXT_COL_MODIFIED
Definition: CFontExt.cpp:30
@ FONTEXT_COL_ATTR
Definition: CFontExt.cpp:31
static HRESULT FONTEXT_GetAttributeString(DWORD dwAttributes, LPWSTR pszOut, UINT cchMax)
Definition: CFontExt.cpp:80
CFontInfo * Find(const FontPidlEntry *fontEntry)
Definition: CFontCache.cpp:157
LPARAM lParam
Definition: combotst.c:139
#define E_INVALIDARG
Definition: ddrawi.h:101
LONG WINAPI CompareFileTime(IN CONST FILETIME *lpFileTime1, IN CONST FILETIME *lpFileTime2)
Definition: time.c:106
WCHAR *WINAPI PathFindFileNameW(const WCHAR *path)
Definition: path.c:1701
int WINAPI StrCmpIW(const WCHAR *str, const WCHAR *comp)
Definition: string.c:456
_ACRTIMP int __cdecl _wcsicmp(const wchar_t *, const wchar_t *)
Definition: wcs.c:159
#define FAILED_UNEXPECTEDLY
Definition: utils.cpp:30
unsigned long DWORD
Definition: ntddk_ex.h:95
const FontPidlEntry * _FontFromIL(PCITEMID_CHILD pidl)
Definition: fontpidl.cpp:80
GLuint64EXT * result
Definition: glext.h:11304
#define MAKE_COMPARE_HRESULT(x)
Definition: shellutils.h:678
HRESULT hr
Definition: shlfolder.c:183
#define _countof(array)
Definition: sndvol32.h:70
LPWSTR Name()
Definition: fontpidl.hpp:18
uint64_t ULONGLONG
Definition: typedefs.h:67
__wchar_t WCHAR
Definition: xmlstorage.h:180

◆ CreateViewObject()

STDMETHODIMP CFontExt::CreateViewObject ( HWND  hwndOwner,
REFIID  riid,
LPVOID ppvOut 
)
override

Definition at line 387 of file CFontExt.cpp.

388{
390
391 *ppvOut = NULL;
392
393 if (IsEqualIID(riid, IID_IDropTarget))
394 {
395 *ppvOut = static_cast<IDropTarget *>(this);
396 AddRef();
397 hr = S_OK;
398 }
399 else if (IsEqualIID(riid, IID_IContextMenu))
400 {
401 TRACE("IContextMenu\n");
402 return CFontBackgroundMenu_Create(this, hwndOwner, this, (IContextMenu**)ppvOut);
403 }
404 else if (IsEqualIID(riid, IID_IShellView))
405 {
407 if (SUCCEEDED(hr = ShellObjectCreator(sfviewcb)))
408 {
409 SFV_CREATE create = { sizeof(create), this, NULL, sfviewcb };
411 if (SUCCEEDED(hr))
412 sfviewcb->Initialize(this, (IShellView*)*ppvOut, m_Folder);
413 }
414 }
415
416 return hr;
417}
HRESULT WINAPI SHCreateShellFolderView(const SFV_CREATE *pcsfv, IShellView **ppsv)
Definition: CDefView.cpp:4823
HRESULT APIENTRY CFontBackgroundMenu_Create(CFontExt *pFontExt, HWND hwnd, IShellFolder *psf, IContextMenu **ppcm)
CComHeapPtr< ITEMIDLIST > m_Folder
Definition: CFontExt.hpp:18
#define NULL
Definition: types.h:112
ULONG AddRef()
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
static const struct access_res create[16]
Definition: package.c:7505
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
#define TRACE(s)
Definition: solgame.cpp:4
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ DeleteItems()

HRESULT CFontExt::DeleteItems ( IDataObject pDataObj)
private

Definition at line 119 of file CFontExt.cpp.

120{
123 return S_OK; // Override default action
124}
HWND m_hwndView
Definition: CFontExt.hpp:20
HRESULT DoDeleteFontFiles(HWND hwnd, IDataObject *pDataObj)
Definition: fontext.cpp:526

Referenced by MenuCallback().

◆ DragEnter()

STDMETHODIMP CFontExt::DragEnter ( IDataObject pDataObj,
DWORD  grfKeyState,
POINTL  pt,
DWORD pdwEffect 
)
override

Implements IDropTarget.

Definition at line 667 of file CFontExt.cpp.

668{
670 if (!m_bDragAccepted)
671 {
672 *pdwEffect = DROPEFFECT_NONE;
673 return E_FAIL;
674 }
675
676 *pdwEffect &= DROPEFFECT_COPY;
677 return S_OK;
678}
BOOL m_bDragAccepted
Definition: CFontExt.hpp:19
#define E_FAIL
Definition: ddrawi.h:102
BOOL CheckDataObject(IDataObject *pDataObj)
Definition: fontext.cpp:308
const DWORD DROPEFFECT_NONE
Definition: oleidl.idl:929
const DWORD DROPEFFECT_COPY
Definition: oleidl.idl:930

◆ DragLeave()

STDMETHODIMP CFontExt::DragLeave ( void  )
override

Implements IDropTarget.

Definition at line 691 of file CFontExt.cpp.

692{
693 return S_OK;
694}

◆ DragOver()

STDMETHODIMP CFontExt::DragOver ( DWORD  grfKeyState,
POINTL  pt,
DWORD pdwEffect 
)
override

Implements IDropTarget.

Definition at line 680 of file CFontExt.cpp.

681{
682 if (!m_bDragAccepted)
683 {
684 *pdwEffect = DROPEFFECT_NONE;
685 return E_FAIL;
686 }
687 *pdwEffect &= DROPEFFECT_COPY;
688 return S_OK;
689}

◆ Drop()

STDMETHODIMP CFontExt::Drop ( IDataObject pDataObj,
DWORD  grfKeyState,
POINTL  pt,
DWORD pdwEffect 
)
override

Implements IDropTarget.

Definition at line 696 of file CFontExt.cpp.

697{
700
702 title.LoadStringW(IDS_REACTOS_FONTS_FOLDER);
704 {
705 // Show error message
706 text.LoadStringW(IDS_INSTALL_FAILED);
708 }
709 else if (hr == S_OK)
710 {
711 // Refresh font cache and notify the system about the font change
712 if (g_FontCache)
713 g_FontCache->Read();
714
717
718 // Show successful message
719 text.LoadStringW(IDS_INSTALL_OK);
721 }
722
723 return hr;
724}
#define ATLASSERT(x)
Definition: CComVariant.cpp:10
void Read()
Definition: CFontCache.cpp:243
#define IDS_INSTALL_FAILED
Definition: resource.h:9
#define IDS_INSTALL_OK
Definition: resource.h:8
#define IDS_REACTOS_FONTS_FOLDER
Definition: resource.h:7
const WCHAR * text
Definition: package.c:1794
#define L(x)
Definition: resources.c:13
HRESULT InstallFontsFromDataObject(HWND hwndView, IDataObject *pDataObj)
Definition: fontext.cpp:390
LONG_PTR LPARAM
Definition: minwindef.h:175
static char title[]
Definition: ps.c:92
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define HWND_BROADCAST
Definition: winuser.h:1215
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
#define MB_ICONERROR
Definition: winuser.h:798
#define WM_SETTINGCHANGE
Definition: winuser.h:1657
#define MB_ICONINFORMATION
Definition: winuser.h:813
#define WM_FONTCHANGE
Definition: winuser.h:1661

◆ EnumObjects()

STDMETHODIMP CFontExt::EnumObjects ( HWND  hwndOwner,
DWORD  dwFlags,
LPENUMIDLIST *  ppEnumIDList 
)
override

Definition at line 304 of file CFontExt.cpp.

305{
306 return _CEnumFonts_CreateInstance(this, dwFlags, IID_PPV_ARG(IEnumIDList, ppEnumIDList));
307}
HRESULT _CEnumFonts_CreateInstance(CFontExt *zip, DWORD flags, REFIID riid, LPVOID *ppvOut)
Definition: CEnumFonts.cpp:110
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141
#define IID_PPV_ARG(Itype, ppType)

◆ EnumSearches()

STDMETHODIMP CFontExt::EnumSearches ( IEnumExtraSearch **  ppenum)
override

Implements IShellFolder2.

Definition at line 140 of file CFontExt.cpp.

141{
142 ERR("%s() UNIMPLEMENTED\n", __FUNCTION__);
143 return E_NOTIMPL;
144}

◆ GetAttributesOf()

STDMETHODIMP CFontExt::GetAttributesOf ( UINT  cidl,
PCUITEMID_CHILD_ARRAY  apidl,
DWORD rgfInOut 
)
override

Definition at line 419 of file CFontExt.cpp.

420{
421 if (!rgfInOut || !cidl || !apidl)
422 return E_INVALIDARG;
423
424 if (cidl <= 0)
425 {
426 *rgfInOut = 0;
427 return S_OK;
428 }
429
430 DWORD rgf = (SFGAO_CANDELETE | SFGAO_HASPROPSHEET | SFGAO_CANCOPY | SFGAO_FILESYSTEM);
431 while (cidl > 0 && *apidl)
432 {
433 const FontPidlEntry* fontEntry = _FontFromIL(*apidl);
434 if (!fontEntry)
435 {
436 rgf = 0;
437 break;
438 }
439
440 apidl++;
441 cidl--;
442 }
443
444 *rgfInOut &= rgf;
445 *rgfInOut &= ~SFGAO_VALIDATE; // Make sure SFGAO_VALIDATE is cleared, some apps depend on that
446
447 return S_OK;
448}

◆ GetClassID()

STDMETHODIMP CFontExt::GetClassID ( CLSID lpClassId)
override

Implements IPersist.

Definition at line 660 of file CFontExt.cpp.

661{
662 *lpClassId = CLSID_CFontExt;
663 return S_OK;
664}
const GUID CLSID_CFontExt
Definition: fontext.cpp:13

◆ GetCurFolder()

STDMETHODIMP CFontExt::GetCurFolder ( LPITEMIDLIST ppidl)
override

Definition at line 618 of file CFontExt.cpp.

619{
620 if (ppidl && m_Folder)
621 {
622 *ppidl = ILClone(m_Folder);
623 return S_OK;
624 }
625
626 return E_POINTER;
627}
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
Definition: pidl.c:238
#define E_POINTER
Definition: winerror.h:3480

◆ GetDefaultColumn()

STDMETHODIMP CFontExt::GetDefaultColumn ( DWORD  dwReserved,
ULONG pSort,
ULONG pDisplay 
)
override

Implements IShellFolder2.

Definition at line 146 of file CFontExt.cpp.

147{
148 ERR("%s() UNIMPLEMENTED\n", __FUNCTION__);
149 return E_NOTIMPL;
150}

◆ GetDefaultColumnState()

STDMETHODIMP CFontExt::GetDefaultColumnState ( UINT  iColumn,
SHCOLSTATEF pcsFlags 
)
override

Implements IShellFolder2.

Definition at line 152 of file CFontExt.cpp.

153{
154 if (!pcsFlags || iColumn >= _countof(g_ColumnDefs))
155 return E_INVALIDARG;
156
157 *pcsFlags = g_ColumnDefs[iColumn].dwDefaultState;
158 return S_OK;
159}
static FolderViewColumns g_ColumnDefs[]
Definition: CFontExt.cpp:34
DWORD dwDefaultState
Definition: CFontExt.cpp:20

◆ GetDefaultSearchGUID()

STDMETHODIMP CFontExt::GetDefaultSearchGUID ( GUID lpguid)
override

Implements IShellFolder2.

Definition at line 134 of file CFontExt.cpp.

135{
136 ERR("%s() UNIMPLEMENTED\n", __FUNCTION__);
137 return E_NOTIMPL;
138}

◆ GetDetailsEx()

STDMETHODIMP CFontExt::GetDetailsEx ( PCUITEMID_CHILD  pidl,
const SHCOLUMNID pscid,
VARIANT pv 
)
override

Implements IShellFolder2.

Definition at line 161 of file CFontExt.cpp.

162{
163 ERR("%s() UNIMPLEMENTED\n", __FUNCTION__);
164 return E_NOTIMPL;
165}

◆ GetDetailsOf()

STDMETHODIMP CFontExt::GetDetailsOf ( PCUITEMID_CHILD  pidl,
UINT  iColumn,
SHELLDETAILS psd 
)
override

Implements IShellFolder2.

Definition at line 167 of file CFontExt.cpp.

168{
169 if (iColumn >= _countof(g_ColumnDefs))
170 return E_FAIL;
171
172 psd->cxChar = g_ColumnDefs[iColumn].cxChar;
173 psd->fmt = g_ColumnDefs[iColumn].fmt;
174
175 // No item requested, so return the column name
176 if (pidl == NULL)
177 {
178 return SHSetStrRet(&psd->str, _AtlBaseModule.GetResourceInstance(), g_ColumnDefs[iColumn].iResource);
179 }
180
181 // Validate that this pidl is the last one
182 PCUIDLIST_RELATIVE curpidl = ILGetNext(pidl);
183 if (curpidl->mkid.cb != 0)
184 {
185 ERR("ERROR, unhandled PIDL!\n");
186 return E_FAIL;
187 }
188
189 // Name, ReactOS specific?
190 if (iColumn == FONTEXT_COL_NAME)
191 return GetDisplayNameOf(pidl, 0, &psd->str);
192
193 const FontPidlEntry* fontEntry = _FontFromIL(pidl);
194 if (!fontEntry)
195 {
196 ERR("ERROR, not a font PIDL!\n");
197 return E_FAIL;
198 }
199
200 // If we got here, we are in details view!
201 auto info = g_FontCache->Find(fontEntry);
202 if (info == nullptr)
203 {
204 ERR("Unable to query info about %S\n", fontEntry->Name());
206 }
207
208 int ret;
210 switch (iColumn)
211 {
213 return SHSetStrRet(&psd->str, PathFindFileNameW(info->File()));
214 case FONTEXT_COL_SIZE:
215 psd->str.uType = STRRET_CSTR;
216 StrFormatKBSizeA(info->FileSize().QuadPart, psd->str.cStr, MAX_PATH);
217 return S_OK;
219 psd->str.uType = STRRET_CSTR;
220 FileTimeToSystemTime(&info->FileWriteTime(), &time);
222 if (ret < 1)
223 {
224 ERR("GetDateFormatA failed\n");
225 return E_FAIL;
226 }
227 psd->str.cStr[ret-1] = ' ';
229 return S_OK;
230 case FONTEXT_COL_ATTR:
231 {
232 WCHAR szAttr[8];
233 HRESULT hr = FONTEXT_GetAttributeString(info->FileAttributes(), szAttr, _countof(szAttr));
235 return hr;
236 return SHSetStrRet(&psd->str, szAttr);
237 }
238 default:
239 break;
240 }
241
243 return E_NOTIMPL;
244}
#define UNIMPLEMENTED
Definition: ntoskrnl.c:15
STDMETHODIMP GetDisplayNameOf(PCUITEMID_CHILD pidl, DWORD dwFlags, LPSTRRET strRet) override
Definition: CFontExt.cpp:579
#define MAX_PATH
Definition: compat.h:34
BOOL WINAPI FileTimeToSystemTime(IN CONST FILETIME *lpFileTime, OUT LPSYSTEMTIME lpSystemTime)
Definition: time.c:188
LPSTR WINAPI StrFormatKBSizeA(LONGLONG llBytes, LPSTR lpszDest, UINT cchMax)
Definition: string.c:1871
return ret
Definition: mutex.c:146
INT WINAPI GetTimeFormatA(LCID lcid, DWORD dwFlags, const SYSTEMTIME *lpTime, LPCSTR lpFormat, LPSTR lpTimeStr, INT cchOut)
Definition: lcformat.c:1052
INT WINAPI GetDateFormatA(LCID lcid, DWORD dwFlags, const SYSTEMTIME *lpTime, LPCSTR lpFormat, LPSTR lpDateStr, INT cchOut)
Definition: lcformat.c:944
__u16 time
Definition: mkdosfs.c:8
#define ERROR_FILE_NOT_FOUND
Definition: disk.h:79
#define LOCALE_USER_DEFAULT
LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST pidl)
Definition: pidl.c:977
@ STRRET_CSTR
Definition: shtypes.idl:87
const ITEMIDLIST_RELATIVE UNALIGNED * PCUIDLIST_RELATIVE
Definition: shtypes.idl:57
STRRET str
Definition: shtypes.idl:108
char cStr[MAX_PATH]
Definition: shtypes.idl:98
UINT uType
Definition: shtypes.idl:93
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
Definition: winerror.h:210
#define TIME_NOSECONDS
Definition: winnls.h:296
#define DATE_SHORTDATE
Definition: winnls.h:209

◆ GetDisplayNameOf()

STDMETHODIMP CFontExt::GetDisplayNameOf ( PCUITEMID_CHILD  pidl,
DWORD  dwFlags,
LPSTRRET  strRet 
)
override

Definition at line 579 of file CFontExt.cpp.

580{
581 if (!pidl || !strRet)
582 return E_INVALIDARG;
583
584 // Validate that this pidl is the last one
585 PCUIDLIST_RELATIVE nextPidl = ILGetNext(pidl);
586 if (nextPidl && nextPidl->mkid.cb != 0)
587 {
588 ERR("ERROR, unhandled PIDL!\n");
589 return E_FAIL;
590 }
591
592 const FontPidlEntry* fontEntry = _FontFromIL(pidl);
593 if (!fontEntry)
594 return E_FAIL;
595
597 {
598 CStringW fileName = fontEntry->FileName();
599 if (!(dwFlags & SHGDN_INFOLDER))
600 {
601 CStringW fullPath = g_FontCache->GetFontFilePath(fileName);
602 if (!fullPath.IsEmpty())
603 return SHSetStrRet(strRet, fullPath);
604 }
605 return SHSetStrRet(strRet, fileName);
606 }
607
608 return SHSetStrRet(strRet, fontEntry->Name());
609}
bool IsEmpty() const noexcept
Definition: atlsimpstr.h:394
CStringW GetFontFilePath(const PCWSTR Path) const
Definition: CFontCache.cpp:236
LPWSTR FileName()
Definition: fontpidl.hpp:19

Referenced by GetDetailsOf().

◆ GetUIObjectOf()

STDMETHODIMP CFontExt::GetUIObjectOf ( HWND  hwndOwner,
UINT  cidl,
PCUITEMID_CHILD_ARRAY  apidl,
REFIID  riid,
UINT prgfInOut,
LPVOID ppvOut 
)
override

Definition at line 523 of file CFontExt.cpp.

524{
525 if (riid == IID_IContextMenu ||
526 riid == IID_IContextMenu2 ||
527 riid == IID_IContextMenu3)
528 {
529 if (cidl <= 0)
530 return E_FAIL;
531
532 return CDefFolderMenu_Create2(NULL, hwndOwner, cidl, apidl, this, MenuCallback,
533 0, NULL, (IContextMenu**)ppvOut);
534 }
535 else if (riid == IID_IExtractIconA || riid == IID_IExtractIconW)
536 {
537 if (cidl == 1)
538 {
539 const FontPidlEntry* fontEntry = _FontFromIL(*apidl);
540 if (fontEntry)
541 {
543 CStringW strFileName = g_FontCache->GetFontFilePath(fontEntry->FileName());
544 return SHCreateFileExtractIconW(strFileName, dwAttributes, riid, ppvOut);
545 }
546 }
547 else
548 {
549 ERR("IID_IExtractIcon with cidl != 1 UNIMPLEMENTED\n");
550 }
551 }
552 else if (riid == IID_IDataObject)
553 {
554 if (cidl >= 1)
555 {
556 return _CDataObject_CreateInstance(m_Folder, cidl, apidl, riid, ppvOut);
557 }
558 else
559 {
560 CComPtr<IDataObject> pDataObj;
561 HRESULT hr = OleGetClipboard(&pDataObj);
563 return E_FAIL;
564 *ppvOut = pDataObj.Detach();
565 return S_OK;
566 }
567 }
568 else if (riid == IID_IDropTarget)
569 {
570 *ppvOut = static_cast<IDropTarget*>(this);
571 AddRef();
572 return S_OK;
573 }
574
575 //ERR("%s(riid=%S) UNIMPLEMENTED\n", __FUNCTION__, g2s(riid));
576 return E_NOTIMPL;
577}
HRESULT _CDataObject_CreateInstance(PCIDLIST_ABSOLUTE folder, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, REFIID riid, LPVOID *ppvOut)
Definition: CDataObject.cpp:36
HRESULT WINAPI CDefFolderMenu_Create2(PCIDLIST_ABSOLUTE pidlFolder, HWND hwnd, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, IShellFolder *psf, LPFNDFMCALLBACK lpfn, UINT nKeys, const HKEY *ahkeyClsKeys, IContextMenu **ppcm)
EXTERN_C HRESULT WINAPI SHCreateFileExtractIconW(_In_ LPCWSTR pszFile, _In_ DWORD dwFileAttributes, _In_ REFIID riid, _Outptr_ void **ppv)
T * Detach()
Definition: atlcomcli.h:186
static HRESULT CALLBACK MenuCallback(IShellFolder *psf, HWND hwnd, IDataObject *pdtobj, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: CFontExt.cpp:450
#define FILE_ATTRIBUTE_NORMAL
Definition: compat.h:137
HRESULT WINAPI OleGetClipboard(IDataObject **obj)
Definition: clipboard.c:2249
const GUID IID_IDataObject
DWORD dwAttributes
Definition: vdmdbg.h:34

◆ Initialize()

STDMETHODIMP CFontExt::Initialize ( LPCITEMIDLIST  pidl)
override

Definition at line 630 of file CFontExt.cpp.

631{
632 WCHAR PidlPath[MAX_PATH + 1] = {0}, FontsDir[MAX_PATH + 1];
633 if (!SHGetPathFromIDListW(pidl, PidlPath))
634 {
635 ERR("Unable to extract path from pidl\n");
636 return E_FAIL;
637 }
638
641 {
642 ERR("Unable to get fonts path (0x%x)\n", hr);
643 return hr;
644 }
645
646 if (StrCmpIW(PidlPath, FontsDir))
647 {
648 ERR("CFontExt View initializing on unexpected folder: '%S'\n", PidlPath);
649 return E_FAIL;
650 }
651
652 m_Folder.Attach(ILCreateFromPathW(FontsDir));
653 StringCchCatW(FontsDir, _countof(FontsDir), L"\\");
654 g_FontCache->SetFontDir(FontsDir);
655
656 return S_OK;
657}
void SetFontDir(const LPCWSTR Path)
Definition: CFontCache.cpp:121
HRESULT WINAPI SHGetFolderPathW(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwFlags, LPWSTR pszPath)
Definition: shellpath.c:2716
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
Definition: pidl.c:1496
LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR path)
Definition: pidl.c:1108
#define CSIDL_FONTS
Definition: shlobj.h:2200
STRSAFEAPI StringCchCatW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
Definition: strsafe.h:325

◆ MapColumnToSCID()

STDMETHODIMP CFontExt::MapColumnToSCID ( UINT  iColumn,
SHCOLUMNID pscid 
)
override

Implements IShellFolder2.

Definition at line 246 of file CFontExt.cpp.

247{
248 //ERR("%s() UNIMPLEMENTED\n", __FUNCTION__);
249 return E_NOTIMPL;
250}

◆ MenuCallback()

HRESULT CALLBACK CFontExt::MenuCallback ( IShellFolder psf,
HWND  hwnd,
IDataObject pdtobj,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)
staticprivate

Definition at line 450 of file CFontExt.cpp.

453{
454 CFontExt* pThis = static_cast<CFontExt*>(psf);
455 if (!pThis)
456 return E_FAIL;
457
458 switch (uMsg)
459 {
461 {
462 QCMINFO* pqcminfo = (QCMINFO*)lParam;
463 // Insert [Preview] menu item
466 pqcminfo->idCmdFirst++, strPreview); // Command 0
467 // Make it default
468 ::SetMenuDefaultItem(pqcminfo->hmenu, pqcminfo->idCmdFirst - 1, FALSE);
469 return S_OK;
470 }
471 case DFM_GETVERBA:
472 case DFM_GETVERBW:
473 {
474 // Replace default "open" command action
475 UINT idCmd = LOWORD(wParam), cchMax = HIWORD(wParam);
476 if (idCmd == 0)
477 {
478 if (uMsg == DFM_GETVERBA)
479 lstrcpynA((PSTR)lParam, "open", cchMax);
480 else
481 lstrcpynW((PWSTR)lParam, L"open", cchMax);
482 return S_OK;
483 }
484 break;
485 }
487 return E_NOTIMPL;
489 {
490 if (wParam == 0)
491 return pThis->PreviewItems(pdtobj);
492 if (wParam == DFM_CMD_COPY)
493 return S_FALSE;
494 if (wParam == DFM_CMD_DELETE)
495 return pThis->DeleteItems(pdtobj);
496 if (wParam == DFM_CMD_PASTE)
497 return S_FALSE;
499 return S_FALSE;
500 if (wParam == DFM_CMD_MOVE)
501 {
502 ERR("DFM_CMD_MOVE not supported\n");
503 return E_NOTIMPL;
504 }
505 ERR("wParam: %p\n", wParam);
506 return E_FAIL;
507 }
508 case DFM_GETDEFSTATICID: // Required for Windows 7 to pick a default
509 return S_FALSE;
511 {
512 HMENU hMenu = (HMENU)wParam;
513 // Delete default [Open] menu item
515 // Disable [Paste link] menu item
517 break;
518 }
519 }
520 return E_NOTIMPL;
521}
UINT cchMax
HRESULT DeleteItems(IDataObject *pDataObj)
Definition: CFontExt.cpp:119
HRESULT PreviewItems(IDataObject *pDataObj)
Definition: CFontExt.cpp:126
WPARAM wParam
Definition: combotst.c:138
#define FALSE
Definition: types.h:117
#define IDS_FONT_PREVIEW
Definition: resource.h:20
#define DFM_GETDEFSTATICID
Definition: precomp.h:47
#define DFM_INVOKECOMMANDEX
Definition: precomp.h:46
#define DFM_MERGECONTEXTMENU
Definition: precomp.h:44
#define DFM_INVOKECOMMAND
Definition: precomp.h:45
#define lstrcpynA
Definition: compat.h:751
#define lstrcpynW
Definition: compat.h:738
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:60
unsigned int UINT
Definition: ndis.h:50
#define LOWORD(l)
Definition: pedump.c:82
#define DFM_GETVERBW
Definition: shlobj.h:2610
#define DFM_CMD_DELETE
Definition: shlobj.h:2616
#define DFM_WM_INITMENUPOPUP
Definition: shlobj.h:2605
#define DFM_CMD_COPY
Definition: shlobj.h:2618
#define DFM_GETVERBA
Definition: shlobj.h:2611
#define DFM_CMD_PASTE
Definition: shlobj.h:2622
#define DFM_CMD_MOVE
Definition: shlobj.h:2617
#define DFM_CMD_PROPERTIES
Definition: shlobj.h:2620
#define FCIDM_SHVIEW_OPEN
Definition: shresdef.h:896
#define FCIDM_SHVIEW_INSERTLINK
Definition: shresdef.h:875
HMENU hmenu
Definition: shlobj.h:1397
UINT idCmdFirst
Definition: shlobj.h:1399
uint16_t * PWSTR
Definition: typedefs.h:56
char * PSTR
Definition: typedefs.h:51
#define HIWORD(l)
Definition: typedefs.h:247
#define S_FALSE
Definition: winerror.h:3451
#define MF_BYCOMMAND
Definition: winuser.h:202
BOOL WINAPI SetMenuDefaultItem(_In_ HMENU, _In_ UINT, _In_ UINT)
BOOL WINAPI InsertMenuW(_In_ HMENU, _In_ UINT, _In_ UINT, _In_ UINT_PTR, _In_opt_ LPCWSTR)
#define MF_STRING
Definition: winuser.h:138
BOOL WINAPI DeleteMenu(_In_ HMENU, _In_ UINT, _In_ UINT)
#define MF_BYPOSITION
Definition: winuser.h:203
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
BOOL WINAPI EnableMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
#define MF_GRAYED
Definition: winuser.h:129

Referenced by GetUIObjectOf().

◆ ParseDisplayName()

STDMETHODIMP CFontExt::ParseDisplayName ( HWND  hwndOwner,
LPBC  pbc,
LPOLESTR  lpszDisplayName,
DWORD pchEaten,
PIDLIST_RELATIVE ppidl,
DWORD pdwAttributes 
)
override

Definition at line 253 of file CFontExt.cpp.

254{
255 if (!lpszDisplayName || !lpszDisplayName[0] || !ppidl)
256 return E_INVALIDARG;
257
258 *ppidl = NULL;
259 if (pchEaten)
260 *pchEaten = 0;
261
262 if (lpszDisplayName[0] == L':' && lpszDisplayName[1] == L':')
263 return E_INVALIDARG;
264
265 if (PathIsRelativeW(lpszDisplayName)) // Not full path?
266 return E_INVALIDARG;
267
268 // Load font cache
269 if (g_FontCache->Size() == 0)
270 g_FontCache->Read();
271
272 for (SIZE_T iFont = 0; iFont < g_FontCache->Size(); ++iFont)
273 {
274 CStringW fileName = g_FontCache->File(iFont);
275 if (fileName.IsEmpty())
276 continue;
277
278 CStringW filePath = g_FontCache->GetFontFilePath(fileName);
279 if (filePath.CompareNoCase(lpszDisplayName) != 0)
280 continue;
281
283 if (fontName.IsEmpty())
284 continue;
285
286 // Create a PIDL
287 *ppidl = _ILCreate(fontName, fileName);
288 if (!*ppidl)
289 return E_OUTOFMEMORY;
290
291 if (pchEaten)
292 *pchEaten = wcslen(lpszDisplayName);
293
294 if (pdwAttributes)
295 *pdwAttributes &= (SFGAO_CANDELETE | SFGAO_HASPROPSHEET | SFGAO_CANCOPY |
296 SFGAO_FILESYSTEM);
297
298 return S_OK;
299 }
300
301 return HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND); // Not found
302}
int CompareNoCase(_In_z_ PCXSTR psz) const
Definition: cstringt.h:743
CStringW File(size_t Index)
Definition: CFontCache.cpp:146
CStringW Name(size_t Index)
Definition: CFontCache.cpp:135
size_t Size()
Definition: CFontCache.cpp:127
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
BOOL WINAPI PathIsRelativeW(const WCHAR *path)
Definition: path.c:1030
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
Definition: wcs.c:2983
PITEMID_CHILD _ILCreate(LPCWSTR lpName, LPCWSTR lpFileName)
Definition: fontpidl.cpp:16
GLenum const GLvoid * fontName
Definition: glext.h:11715
ULONG_PTR SIZE_T
Definition: typedefs.h:80

◆ PreviewItems()

HRESULT CFontExt::PreviewItems ( IDataObject pDataObj)
private

Definition at line 126 of file CFontExt.cpp.

127{
130 return S_OK; // Override default action
131}
HRESULT DoPreviewFontFiles(HWND hwnd, IDataObject *pDataObj)
Definition: fontext.cpp:439

Referenced by MenuCallback().

◆ SetNameOf()

STDMETHODIMP CFontExt::SetNameOf ( HWND  hwndOwner,
PCUITEMID_CHILD  pidl,
LPCOLESTR  lpName,
DWORD  dwFlags,
PITEMID_CHILD pPidlOut 
)
override

Implements IShellFolder.

Definition at line 611 of file CFontExt.cpp.

612{
613 ERR("%s() UNIMPLEMENTED\n", __FUNCTION__);
614 return E_NOTIMPL;
615}

◆ SetViewWindow()

void CFontExt::SetViewWindow ( HWND  hwndView)

Definition at line 114 of file CFontExt.cpp.

115{
116 m_hwndView = hwndView;
117}

Referenced by CFontFolderViewCB::MessageSFVCB().

Member Data Documentation

◆ m_bDragAccepted

BOOL CFontExt::m_bDragAccepted = FALSE
private

Definition at line 19 of file CFontExt.hpp.

Referenced by DragEnter(), and DragOver().

◆ m_Folder

CComHeapPtr<ITEMIDLIST> CFontExt::m_Folder
private

Definition at line 18 of file CFontExt.hpp.

Referenced by CreateViewObject(), GetCurFolder(), GetUIObjectOf(), and Initialize().

◆ m_hwndView

HWND CFontExt::m_hwndView = nullptr
private

Definition at line 20 of file CFontExt.hpp.

Referenced by DeleteItems(), Drop(), PreviewItems(), and SetViewWindow().


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