10#include <commoncontrols.h>
13#define TIMER_ID_REFRESH 9999
25 CComPtr<IShellLink> pShellLink;
31 CComPtr<IPersistFile> pPersistFile;
51 tvi.iSelectedImage = tvi.iSelectedImage >= 0 ? tvi.iSelectedImage : tvi.iImage;
52 return tvi.iImage >= 0;
65 if (m_hToolbarImageList)
68 m_hToolbarImageList =
NULL;
92 return reinterpret_cast<CItemData*
>(tvItem.
lParam);
95CNSCBand::CItemData* CNSCBand::_GetItemData(
_In_ UINT ItemSpec)
105 CComPtr<IShellFolder> pFolder;
130 return _GetNameOfItem(pSF, pidl, SHGDN_NORMAL | SHGDN_INFOLDER,
Name);
136 CComPtr<IFolderView> pfv;
137 CComPtr<IShellFolder> psf;
147 CComPtr<IShellBrowser> psb;
152 CComPtr<IBrowserService> pbs;
157 CComPtr<IShellView> psv;
179 CComPtr<IOleWindow> pBrowserOleWnd;
186 hr = pBrowserOleWnd->GetWindow(&browserWnd);
190 CMINVOKECOMMANDINFO cmi = {
sizeof(cmi) };
192 cmi.hwnd = browserWnd;
195 cmi.fMask |= CMIC_MASK_SHIFT_DOWN;
197 cmi.fMask |= CMIC_MASK_CONTROL_DOWN;
199 return menu->InvokeCommand(&cmi);
202void CNSCBand::_RegisterChangeNotify()
204#define TARGET_EVENTS ( \
205 SHCNE_DRIVEADD | SHCNE_MKDIR | SHCNE_CREATE | SHCNE_DRIVEREMOVED | SHCNE_RMDIR | \
206 SHCNE_DELETE | SHCNE_RENAMEFOLDER | SHCNE_RENAMEITEM | SHCNE_UPDATEDIR | \
207 SHCNE_UPDATEITEM | SHCNE_ASSOCCHANGED \
222void CNSCBand::_UnregisterChangeNotify()
228void CNSCBand::_DestroyTreeView()
230 TRACE(
"Cleaning up treeview...\n");
234 m_hwndTreeView.DestroyWindow();
237 TRACE(
"Cleanup ok\n");
240void CNSCBand::_DestroyToolbar()
242 m_hwndToolbar.DestroyWindow();
247 RefreshFlags(&m_dwTVStyle, &m_dwTVExStyle, &m_dwEnumFlags);
254 m_hwndTreeView.Attach(hwndTV);
278CNSCBand::_IsTreeItemInEnum(
282 CItemData* pItemData = _GetItemData(
hItem);
288 CComHeapPtr<ITEMIDLIST_RELATIVE> pidlTemp;
289 while (pEnum->Next(1, &pidlTemp,
NULL) ==
S_OK)
291 if (
ILIsEqual(pidlTemp, pItemData->GetLeaf()))
301CNSCBand::_TreeItemHasThisChild(
308 CItemData* pItemData = _GetItemData(
hItem);
309 if (
ILIsEqual(pItemData->GetLeaf(), pidlChild))
340CNSCBand::_UpdateItem(
347 CComPtr<IShellFolder> pSF;
349 CComHeapPtr<ITEMIDLIST> absolutePidl, childPidl, tempPidl;
350 if (
FAILED(
hr = SHILClone(pidl, &absolutePidl)))
352 if (UIF & (UIF_TEXT | UIF_IMAGE | UIF_GETREAL))
356 if (UIF & UIF_GETREAL)
361 if (
FAILED(
hr = SHILCombine(absolutePidl, childPidl, &tempPidl)))
363 absolutePidl = tempPidl;
364 pidlItem = childPidl;
378 pData->Attach(absolutePidl.Detach());
384CNSCBand::_GetItemEnum(
385 _Out_ CComPtr<IEnumIDList>& pEnum,
389 CComPtr<IShellFolder> psfDesktop;
394 CComPtr<IShellFolder> pFolder;
400 *ppFolder = psfDesktop;
405 CItemData* pItemData = _GetItemData(
hItem);
414 return (*ppFolder)->EnumObjects(
NULL, _GetEnumFlags(), &pEnum);
419 CComPtr<IEnumIDList> pEnum;
424 CComHeapPtr<ITEMIDLIST_RELATIVE> pidlTemp;
425 hr = pEnum->Next(1, &pidlTemp,
NULL);
431 CComPtr<IEnumIDList> pEnum;
432 HRESULT hrEnum = _GetItemEnum(pEnum, hTarget);
445 hrEnum = _GetItemEnum(pEnum, hTarget);
447 CItemData* pItemData = ((hTarget ==
TVI_ROOT) ?
NULL : _GetItemData(hTarget));
452 CComHeapPtr<ITEMIDLIST_RELATIVE> pidlTemp;
453 while (pEnum->Next(1, &pidlTemp,
NULL) ==
S_OK)
455 if (!_TreeItemHasThisChild(hTarget, pidlTemp))
459 CComHeapPtr<ITEMIDLIST> pidlAbsolute(
ILCombine(pItemData->absolutePidl, pidlTemp));
460 _InsertItem(hTarget, pidlAbsolute, pidlTemp,
TRUE);
464 CComHeapPtr<ITEMIDLIST> pidlAbsolute(
ILCombine(m_pidlRoot, pidlTemp));
465 _InsertItem(hTarget, pidlAbsolute, pidlTemp,
TRUE);
479 item.cChildren = _ItemHasAnyChild(
hItem);
483 _RefreshRecurse(
hItem);
487void CNSCBand::_Refresh()
490 _RefreshRecurse(_WantsRootItem() ? m_hRoot :
TVI_ROOT);
505CNSCBand::OnChangeNotify(
557CNSCBand::_InsertItem(
565 SFGAOF attrs = SFGAO_STREAM | SFGAO_HASSUBFOLDER;
566 HRESULT hr = psfParent->GetAttributesOf(1, &pEltRelative, &attrs);
577 CItemData* pChildInfo =
new CItemData;
580 ERR(
"Failed to allocate CItemData\n");
583 pChildInfo->expanded =
FALSE;
584 if (
FAILED(pChildInfo->Set(pElt)))
593 tvInsert.item.cchTextMax =
MAX_PATH;
594 tvInsert.item.pszText = wszDisplayName;
595 tvInsert.item.iImage = iIcon;
596 tvInsert.item.iSelectedImage = iSelIcon >= 0 ? iSelIcon : iIcon;
597 tvInsert.item.lParam = (
LPARAM)pChildInfo;
599 if (!(attrs & SFGAO_STREAM) && (attrs & SFGAO_HASSUBFOLDER))
600 tvInsert.item.cChildren = 1;
612CNSCBand::_InsertItem(
618 CComPtr<IShellFolder> psfFolder;
623 return _InsertItem(hParent, psfFolder, pElt, pEltRelative, bSort);
628 ULONG fetched = 1, uItemCount = 0;
630 CComPtr<IEnumIDList> pEnum;
631 CComPtr<IShellFolder> pFolder;
640 while (
SUCCEEDED(pEnum->Next(1, &pidlSub, &fetched)) && pidlSub && fetched)
645 if (_InsertItem(
hItem, pFolder, pidlSubComplete, pidlSub,
FALSE))
658 return (uItemCount > 0);
676 _UnregisterChangeNotify();
694 m_hwndToolbar.GetWindowRect(&rcTB);
698 m_hwndTreeView.MoveWindow(0, cyTB,
cx,
cy - cyTB);
717HRESULT CNSCBand::_AddFavorite()
719 CComHeapPtr<ITEMIDLIST> pidlCurrent;
720 _GetCurrentLocation(&pidlCurrent);
729 hr =
pParent->GetDisplayNameOf(pidlLast, SHGDN_FORPARSING, &strret);
733 CComHeapPtr<WCHAR> pszURL;
765 CItemData *pItemData;
769 if (pnmtv->itemNew.hItem == m_hRoot)
774 pnmtv->itemNew.state &= ~TVIS_EXPANDED;
783 pItemData = _GetItemData(pnmtv->itemNew.hItem);
785 if (pItemData && !pItemData->expanded)
787 if (_InsertSubitems(pnmtv->itemNew.hItem, pItemData->absolutePidl))
789 pItemData->expanded =
TRUE;
812 CItemData* pItemData = _GetItemData(
hItem);
826 CItemData* pItemData = _GetItemData(
hItem);
828 OnSelectionChanged(pItemData->absolutePidl);
833 CItemData* pItemData = _GetItemData(pnmtv->itemNew.hItem);
838 CComPtr<IShellFolder> pSrcFolder;
844 SFGAOF attrs = SFGAO_CANCOPY | SFGAO_CANMOVE | SFGAO_CANLINK;
848 if (attrs & SFGAO_CANCOPY)
849 dwEffect |= DROPEFFECT_COPY;
850 if (attrs & SFGAO_CANMOVE)
851 dwEffect |= DROPEFFECT_MOVE;
852 if (attrs & SFGAO_CANLINK)
853 dwEffect |= DROPEFFECT_LINK;
855 CComPtr<IDataObject> pObj;
866 DWORD dwAttr = SFGAO_CANRENAME;
873 m_OriginalRename =
NULL;
874 CItemData *
info = _GetItemData(dispInfo->item.hItem);
875 if (!
info || !hWndEdit)
882 hr =
pParent->GetAttributesOf(1, &pChild, &dwAttr);
892 m_oldSelected =
NULL;
900 CComPtr<IShellBrowser> pBrowserService;
906 if (_IsCurrentLocation(pidlGoto) ==
S_OK)
908 if (IgnoreSelfNavigation)
911 CComPtr<IShellView> psv;
912 if (
SUCCEEDED(
hr = pBrowserService->QueryActiveShellView(&psv)))
917 hr = pBrowserService->BrowseObject(pidlGoto, SBSP_SAMEBROWSER | SBSP_ABSOLUTE | SBSP);
926 CItemData *
info = _GetItemData(dispInfo->item.hItem);
933 ++m_mtxBlockNavigate;
935 --m_mtxBlockNavigate;
938 if (!dispInfo->item.pszText)
941 if (m_OriginalRename)
943 BOOL same = !
lstrcmpW(m_OriginalRename, dispInfo->item.pszText);
945 m_OriginalRename =
NULL;
952 BOOL RenamedCurrent = _IsCurrentLocation(
info->absolutePidl) ==
S_OK;
958 CComHeapPtr<ITEMIDLIST> pidlNew;
959 hr =
pParent->SetNameOf(m_hWnd, pidlChild, dispInfo->item.pszText, SHGDN_INFOLDER, &pidlNew);
962 CComPtr<IPersistFolder2> pPersist;
967 CComHeapPtr<ITEMIDLIST> pidlParent;
968 hr = pPersist->GetCurFolder(&pidlParent);
972 CComHeapPtr<ITEMIDLIST> pidlNewAbs(
ILCombine(pidlParent, pidlNew));
976 AllowTreeSetNewName =
FAILED(_UpdateItem(dispInfo->item.hItem,
info, pidlNewAbs));
979 _UpdateBrowser(pidlNewAbs,
TRUE, SBSP_ACTIVATE_NOFOCUS);
986 return AllowTreeSetNewName;
994 switch (pnmhdr->
code)
1000 if (pnmhdr->
hwndFrom == m_hwndTreeView)
1008 if (pnmhdr->
hwndFrom == m_hwndTreeView)
1081 if (hwndTarget && (hwndTarget == m_hwndToolbar || hwndTarget == m_hWnd))
1083 FIXME(
"Show 'Close Toolbar' menu\n");
1107 ERR(
"No node data, something has gone wrong\n");
1111 CComPtr<IShellFolder> pFolder;
1117 CComPtr<IContextMenu> contextMenu;
1124 UINT cmf = CMF_EXPLORE;
1126 hr = pFolder->GetAttributesOf(1, &pidlChild, &
attr);
1128 cmf |= CMF_CANRENAME;
1140 HWND hWndMenuOwner = hWndWorker ? hWndWorker : m_hWnd;
1146 uCommand -= idCmdFirst;
1149 if ((cmf & CMF_CANRENAME) &&
SHELL_IsVerb(contextMenu, uCommand,
L"rename"))
1151 m_hwndTreeView.SetFocus();
1153 m_oldSelected =
hItem;
1157 hr = _ExecuteCommand(contextMenu, uCommand);
1208 TRACE(
"CloseDW called\n");
1232 m_dwBandID = dwBandID;
1234 if (pdbi->
dwMask & DBIM_MINSIZE)
1240 if (pdbi->
dwMask & DBIM_MAXSIZE)
1243 if (pdbi->
dwMask & DBIM_INTEGRAL)
1246 if (pdbi->
dwMask & DBIM_ACTUAL)
1252 if (pdbi->
dwMask & DBIM_TITLE)
1257 if (pdbi->
dwMask & DBIM_MODEFLAGS)
1258 pdbi->
dwModeFlags = DBIMF_NORMAL | DBIMF_VARIABLEHEIGHT;
1260 if (pdbi->
dwMask & DBIM_BKCOLOR)
1261 pdbi->
dwMask &= ~DBIM_BKCOLOR;
1272 if (pUnkSite == m_pSite)
1275 TRACE(
"SetSite called\n");
1283 if (pUnkSite != m_pSite)
1306 _RegisterChangeNotify();
1321STDMETHODIMP CNSCBand::QueryStatus(
const GUID *pguidCmdGroup,
ULONG cCmds, OLECMD prgCmds [], OLECMDTEXT *pCmdText)
1354 LPCMINVOKECOMMANDINFO lpici)
1377 m_hwndTreeView.SetFocus();
1401 if (_GetAttributesOfItem(_GetItemData(
hItem), SFGAO_CANRENAME))
1403 m_hwndTreeView.SetFocus();
1404 m_hwndTreeView.EditLabel(
hItem);
1413 if (pItem && _GetAttributesOfItem(pItem, SFGAO_HASPROPSHEET))
1417 sei.
lpIDList = pItem->absolutePidl;
1428 if (lpMsg->
hwnd == m_hWnd ||
1488 return _UpdateBrowser(pidl,
TRUE);
1511 *pulAttrib |= SFGAO_LINK;
1516 *pulAttrib |= SFGAO_FOLDER;
1541 *pdwStyle = _GetTVStyle();
1542 *pdwExStyle = _GetTVExStyle();
1543 *dwEnum = _GetEnumFlags();
1557 ERR(
"Entering drag\n");
1558 m_pCurObject = pObj;
1560 return DragOver(glfKeyState,
pt, pdwEffect);
1578 m_childTargetNode =
NULL;
1579 m_pDropTarget =
NULL;
1580 *pdwEffect = DROPEFFECT_NONE;
1584 ++m_mtxBlockNavigate;
1586 --m_mtxBlockNavigate;
1589 if (m_pDropTarget &&
info.hItem != m_childTargetNode)
1590 m_pDropTarget =
NULL;
1592 if (
info.hItem != m_childTargetNode)
1594 CItemData *pItemData = _GetItemData(
info.hItem);
1598 CComPtr<IShellFolder> pFolder;
1601 pFolder = m_pDesktop;
1609 ERR(
"Can't bind to folder object\n");
1610 *pdwEffect = DROPEFFECT_NONE;
1619 ERR(
"Can't get drop target for folder object\n");
1620 *pdwEffect = DROPEFFECT_NONE;
1624 hr = m_pDropTarget->DragEnter(m_pCurObject, glfKeyState,
pt, pdwEffect);
1625 m_childTargetNode =
info.hItem;
1629 hr = m_pDropTarget->DragOver(glfKeyState,
pt, pdwEffect);
1636 ++m_mtxBlockNavigate;
1638 --m_mtxBlockNavigate;
1639 m_childTargetNode =
NULL;
1641 m_pCurObject =
NULL;
1649 m_pDropTarget->Drop(pObj, glfKeyState,
pt, pdwEffect);
BOOL _ILIsDesktop(LPCITEMIDLIST pidl)
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
static bool GetImageListIndex(_In_ IShellFolder *pSF, _In_ LPCITEMIDLIST pidlItem, _Out_ TVITEMW &tvi)
static HRESULT SHDOCVW_GetCurrentLocationFromView(_In_ IShellView &View, _In_ PIDLIST_ABSOLUTE *ppidl)
HRESULT SHDOCVW_GetPathOfShortcut(_In_opt_ HWND hWnd, _In_ LPCWSTR pszLnkFile, _Out_ LPWSTR pszPath)
static LRESULT CALLBACK MenuMessageForwarderWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
#define WM_USER_SHELLEVENT
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
BOOL Query(LPCTSTR *ServiceArgs, DWORD ArgCount, BOOL bExtended)
#define UlongToHandle(ul)
EXTERN_C HANDLE WINAPI SHChangeNotification_Lock(HANDLE hTicket, DWORD dwOwnerPID, LPITEMIDLIST **lppidls, LPLONG lpwEventId)
EXTERN_C ULONG WINAPI SHChangeNotifyRegister(HWND hwnd, INT fSources, LONG wEventMask, UINT uMsg, INT cItems, SHChangeNotifyEntry *lpItems)
EXTERN_C void WINAPI SHChangeNotify(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID dwItem2)
EXTERN_C BOOL WINAPI SHChangeNotification_Unlock(HANDLE hLock)
EXTERN_C BOOL WINAPI SHChangeNotifyDeregister(ULONG hNotify)
virtual _Must_inspect_result_ NTSTATUS QueryInterface(__in FxQueryInterfaceParams *Params)
BOOL WINAPI InitCommonControlsEx(const INITCOMMONCONTROLSEX *lpInitCtrls)
static BOOL OnEndLabelEdit(NMLVDISPINFO *pnmv)
static BOOL OnBeginLabelEdit(NMLVDISPINFO *pnmv)
static HINSTANCE instance
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
BOOL WINAPI ImageList_Destroy(HIMAGELIST himl)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
LPWSTR WINAPI PathFindExtensionW(const WCHAR *path)
BOOL WINAPI PathIsRootW(const WCHAR *path)
HRESULT WINAPI RegisterDragDrop(HWND hwnd, LPDROPTARGET pDropTarget)
HRESULT WINAPI DoDragDrop(IDataObject *pDataObject, IDropSource *pDropSource, DWORD dwOKEffect, DWORD *pdwEffect)
HRESULT WINAPI RevokeDragDrop(HWND hwnd)
HRESULT WINAPI IUnknown_QueryService(IUnknown *obj, REFGUID sid, REFIID iid, void **out)
HRESULT WINAPI SHStrDupW(const WCHAR *src, WCHAR **dest)
HRESULT WINAPI IUnknown_SetSite(IUnknown *obj, IUnknown *site)
EXTERN_C HRESULT WINAPI SHGetRealIDL(_In_ IShellFolder *psf, _In_ PCUITEMID_CHILD pidlSimple, _Outptr_ PITEMID_CHILD *ppidlReal)
void WINAPI SHFree(LPVOID pv)
HRESULT WINAPI SHGetFolderLocation(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwReserved, LPITEMIDLIST *ppidl)
BOOL WINAPI SHIsChildOrSelf(HWND hParent, HWND hChild)
HWND WINAPI SHCreateWorkerWindowW(WNDPROC wndProc, HWND hWndParent, DWORD dwExStyle, DWORD dwStyle, HMENU hMenu, LONG_PTR wnd_extra)
HRESULT WINAPI IUnknown_GetWindow(IUnknown *lpUnknown, HWND *lphWnd)
HRESULT WINAPI IUnknown_OnFocusChangeIS(LPUNKNOWN lpUnknown, LPUNKNOWN pFocusObject, BOOL bFocus)
BOOL WINAPI PathIsDirectoryW(LPCWSTR lpszPath)
HRESULT WINAPI StrRetToBufW(LPSTRRET src, const ITEMIDLIST *pidl, LPWSTR dest, UINT len)
HRESULT WINAPI StrRetToStrW(LPSTRRET lpStrRet, const ITEMIDLIST *pidl, LPWSTR *ppszName)
#define FAILED_UNEXPECTEDLY
static IShellFolder IShellItem **static IBindCtx LPITEMIDLIST SFGAOF
int WINAPI SHMapPIDLToSystemImageListIndex(IShellFolder *sh, LPCITEMIDLIST pidl, int *pIndex)
HRESULT GetDisplayNameOf([in] PCUITEMID_CHILD pidl, [in] SHGDNF uFlags, [out] STRRET *lpName)
HRESULT GetAttributesOf([in] UINT cidl, [in, size_is(cidl)] PCUITEMID_CHILD_ARRAY apidl, [in, out] SFGAOF *rgfInOut)
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
PSDBQUERYRESULT_VISTA PVOID * ppData
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
unsigned __int3264 UINT_PTR
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
const GUID IID_IDataObject
void WINAPI ILFree(LPITEMIDLIST pidl)
LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
BOOL WINAPI ILRemoveLastID(LPITEMIDLIST pidl)
HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast)
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR path)
BOOL WINAPI ILIsEqual(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
static const WCHAR szName[]
_Out_opt_ int _Out_opt_ int * cy
#define TreeView_DeleteAllItems(hwnd)
#define TreeView_SelectItem(hwnd, hitem)
#define ICC_TREEVIEW_CLASSES
#define TreeView_GetChild(hwnd, hitem)
#define TreeView_GetEditControl(hwnd)
#define TVIS_EXPANDEDONCE
#define TreeView_GetItemState(hwndTV, hti, mask)
#define TVHT_ONITEMBUTTON
#define TreeView_GetParent(hwnd, hitem)
#define TreeView_GetSelection(hwnd)
#define TreeView_GetItem(hwnd, pitem)
#define TreeView_GetItemRect(hwnd, hitem, prc, code)
#define TreeView_GetRoot(hwnd)
#define TreeView_GetNextSibling(hwnd, hitem)
#define TVN_ITEMEXPANDING
#define TVN_BEGINLABELEDITW
#define TreeView_EditLabel(hwnd, hitem)
#define TreeView_SetImageList(hwnd, himl, iImage)
#define TreeView_HitTest(hwnd, lpht)
#define TreeView_InsertItem(hwnd, lpis)
#define TVIF_SELECTEDIMAGE
#define TVN_ENDLABELEDITW
#define TreeView_SetItem(hwnd, pitem)
#define TreeView_DeleteItem(hwnd, hitem)
HRESULT WINAPI SHForwardContextMenuMsg(IUnknown *pUnk, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *pResult, BOOL useIContextMenu2)
static void SHDOCVW_LockModule(void)
static void SHDOCVW_UnlockModule(void)
#define SEE_MASK_INVOKEIDLIST
HRESULT WINAPI SHGetImageList(int iImageList, REFIID riid, void **ppv)
BOOL WINAPI DECLSPEC_HOTPATCH ShellExecuteExW(LPSHELLEXECUTEINFOW sei)
#define SID_SShellBrowser
#define SHCNE_DRIVEREMOVED
#define SHCNE_RENAMEFOLDER
#define SHCNRF_NewDelivery
#define SHCNRF_ShellLevel
#define SHCNE_ASSOCCHANGED
#define FCIDM_SHVIEWFIRST
ITEMIDLIST UNALIGNED * LPITEMIDLIST
const ITEMID_CHILD UNALIGNED * PCUITEMID_CHILD
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
EXTERN_C VOID SHELL_RemoveVerb(IContextMenu *pcm, UINT idCmdFirst, HMENU hMenu, LPCWSTR Verb)
EXTERN_C BOOL SHELL_IsVerb(IContextMenu *pcm, UINT_PTR idCmd, LPCWSTR Verb)
EXTERN_C BOOL SHELL_IsEqualAbsoluteID(PCIDLIST_ABSOLUTE a, PCIDLIST_ABSOLUTE b)
EXTERN_C HRESULT SHELL_GetIDListFromObject(IUnknown *punk, PIDLIST_ABSOLUTE *ppidl)
EXTERN_C HRESULT WINAPI AddUrlToFavorites(_In_ HWND hwnd, _In_ LPCWSTR pszUrlW, _In_opt_ LPCWSTR pszTitleW, _In_ BOOL fDisplayUI)
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
DWORD WINAPI GetLastError(void)
#define DRAGDROP_S_USEDEFAULTCURSORS
#define DRAGDROP_S_CANCEL
HMENU WINAPI CreatePopupMenu(void)
#define GetWindowLongPtrW
BOOL WINAPI TranslateMessage(_In_ const MSG *)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HWND WINAPI SetParent(_In_ HWND, _In_opt_ HWND)
BOOL WINAPI GetCursorPos(_Out_ LPPOINT)
BOOL WINAPI MessageBeep(_In_ UINT uType)
BOOL WINAPI ClientToScreen(_In_ HWND, _Inout_ LPPOINT)
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI IsChild(_In_ HWND, _In_ HWND)
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
#define MAKEINTRESOURCEA(i)
BOOL WINAPI DestroyMenu(_In_ HMENU)
BOOL WINAPI TrackPopupMenu(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _Reserved_ int, _In_ HWND, _Reserved_ LPCRECT)
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
#define SetWindowLongPtrW
BOOL WINAPI DestroyWindow(_In_ HWND)
SHORT WINAPI GetKeyState(_In_ int)
BOOL WINAPI ScreenToClient(_In_ HWND, _Inout_ LPPOINT)
_Must_inspect_result_ _In_ ULONG Flags
#define IID_PPV_ARG(Itype, ppType)
#define IID_NULL_PPV_ARG(Itype, ppType)