10#include <commoncontrols.h>
13#define TIMER_ID_REFRESH 9999
25 CComPtr<IShellLink> pShellLink;
31 CComPtr<IPersistFile> pPersistFile;
58 if (m_hToolbarImageList)
61 m_hToolbarImageList =
NULL;
85 return reinterpret_cast<CItemData*
>(tvItem.
lParam);
88CNSCBand::CItemData* CNSCBand::_GetItemData(
_In_ UINT ItemSpec)
98 CComPtr<IShellFolder> pFolder;
123 return _GetNameOfItem(pSF, pidl, SHGDN_NORMAL | SHGDN_INFOLDER,
Name);
129 CComPtr<IFolderView> pfv;
130 CComPtr<IShellFolder> psf;
140 CComPtr<IShellBrowser> psb;
145 CComPtr<IBrowserService> pbs;
150 CComPtr<IShellView> psv;
172 CComPtr<IOleWindow> pBrowserOleWnd;
179 hr = pBrowserOleWnd->GetWindow(&browserWnd);
183 CMINVOKECOMMANDINFO cmi = {
sizeof(cmi) };
185 cmi.hwnd = browserWnd;
188 cmi.fMask |= CMIC_MASK_SHIFT_DOWN;
190 cmi.fMask |= CMIC_MASK_CONTROL_DOWN;
192 return menu->InvokeCommand(&cmi);
195void CNSCBand::_RegisterChangeNotify()
197#define TARGET_EVENTS ( \
198 SHCNE_DRIVEADD | SHCNE_MKDIR | SHCNE_CREATE | SHCNE_DRIVEREMOVED | SHCNE_RMDIR | \
199 SHCNE_DELETE | SHCNE_RENAMEFOLDER | SHCNE_RENAMEITEM | SHCNE_UPDATEDIR | \
200 SHCNE_UPDATEITEM | SHCNE_ASSOCCHANGED \
215void CNSCBand::_UnregisterChangeNotify()
221void CNSCBand::_DestroyTreeView()
223 TRACE(
"Cleaning up treeview...\n");
227 m_hwndTreeView.DestroyWindow();
230 TRACE(
"Cleanup ok\n");
233void CNSCBand::_DestroyToolbar()
235 m_hwndToolbar.DestroyWindow();
240 RefreshFlags(&m_dwTVStyle, &m_dwTVExStyle, &m_dwEnumFlags);
247 m_hwndTreeView.Attach(hwndTV);
271CNSCBand::_IsTreeItemInEnum(
275 CItemData* pItemData = _GetItemData(
hItem);
281 CComHeapPtr<ITEMIDLIST_RELATIVE> pidlTemp;
282 while (pEnum->Next(1, &pidlTemp,
NULL) ==
S_OK)
284 if (
ILIsEqual(pidlTemp, pItemData->relativePidl))
294CNSCBand::_TreeItemHasThisChild(
301 CItemData* pItemData = _GetItemData(
hItem);
302 if (
ILIsEqual(pItemData->relativePidl, pidlChild))
310CNSCBand::_GetItemEnum(
311 _Out_ CComPtr<IEnumIDList>& pEnum,
315 CComPtr<IShellFolder> psfDesktop;
320 CComPtr<IShellFolder> pFolder;
326 *ppFolder = psfDesktop;
331 CItemData* pItemData = _GetItemData(
hItem);
340 return (*ppFolder)->EnumObjects(
NULL, _GetEnumFlags(), &pEnum);
345 CComPtr<IEnumIDList> pEnum;
350 CComHeapPtr<ITEMIDLIST_RELATIVE> pidlTemp;
351 hr = pEnum->Next(1, &pidlTemp,
NULL);
357 CComPtr<IEnumIDList> pEnum;
358 HRESULT hrEnum = _GetItemEnum(pEnum, hTarget);
371 hrEnum = _GetItemEnum(pEnum, hTarget);
373 CItemData* pItemData = ((hTarget ==
TVI_ROOT) ?
NULL : _GetItemData(hTarget));
378 CComHeapPtr<ITEMIDLIST_RELATIVE> pidlTemp;
379 while (pEnum->Next(1, &pidlTemp,
NULL) ==
S_OK)
381 if (!_TreeItemHasThisChild(hTarget, pidlTemp))
385 CComHeapPtr<ITEMIDLIST> pidlAbsolute(
ILCombine(pItemData->absolutePidl, pidlTemp));
386 _InsertItem(hTarget, pidlAbsolute, pidlTemp,
TRUE);
390 CComHeapPtr<ITEMIDLIST> pidlAbsolute(
ILCombine(m_pidlRoot, pidlTemp));
391 _InsertItem(hTarget, pidlAbsolute, pidlTemp,
TRUE);
405 item.cChildren = _ItemHasAnyChild(
hItem);
409 _RefreshRecurse(
hItem);
413void CNSCBand::_Refresh()
416 _RefreshRecurse(_WantsRootItem() ? m_hRoot :
TVI_ROOT);
431CNSCBand::OnChangeNotify(
463CNSCBand::_InsertItem(
471 SFGAOF attrs = SFGAO_STREAM | SFGAO_HASSUBFOLDER;
472 HRESULT hr = psfParent->GetAttributesOf(1, &pEltRelative, &attrs);
483 CItemData* pChildInfo =
new CItemData;
486 ERR(
"Failed to allocate CItemData\n");
489 pChildInfo->absolutePidl.Attach(
ILClone(pElt));
490 pChildInfo->relativePidl.Attach(
ILClone(pEltRelative));
495 tvInsert.item.cchTextMax =
MAX_PATH;
496 tvInsert.item.pszText = wszDisplayName;
497 tvInsert.item.iImage = iIcon;
498 tvInsert.item.iSelectedImage = iSelIcon >= 0 ? iSelIcon : iIcon;
499 tvInsert.item.lParam = (
LPARAM)pChildInfo;
501 if (!(attrs & SFGAO_STREAM) && (attrs & SFGAO_HASSUBFOLDER))
502 tvInsert.item.cChildren = 1;
514CNSCBand::_InsertItem(
520 CComPtr<IShellFolder> psfFolder;
525 return _InsertItem(hParent, psfFolder, pElt, pEltRelative, bSort);
530 ULONG fetched = 1, uItemCount = 0;
532 CComPtr<IEnumIDList> pEnum;
533 CComPtr<IShellFolder> pFolder;
542 while (
SUCCEEDED(pEnum->Next(1, &pidlSub, &fetched)) && pidlSub && fetched)
547 if (_InsertItem(
hItem, pFolder, pidlSubComplete, pidlSub,
FALSE))
560 return (uItemCount > 0);
578 _UnregisterChangeNotify();
596 m_hwndToolbar.GetWindowRect(&rcTB);
600 m_hwndTreeView.MoveWindow(0, cyTB,
cx,
cy - cyTB);
619HRESULT CNSCBand::_AddFavorite()
621 CComHeapPtr<ITEMIDLIST> pidlCurrent;
622 _GetCurrentLocation(&pidlCurrent);
631 hr =
pParent->GetDisplayNameOf(pidlLast, SHGDN_FORPARSING, &strret);
635 CComHeapPtr<WCHAR> pszURL;
667 CItemData *pItemData;
671 if (pnmtv->itemNew.hItem == m_hRoot)
676 pnmtv->itemNew.state &= ~TVIS_EXPANDED;
685 pItemData = _GetItemData(pnmtv->itemNew.hItem);
687 if (pItemData && !pItemData->expanded)
689 if (_InsertSubitems(pnmtv->itemNew.hItem, pItemData->absolutePidl))
691 pItemData->expanded =
TRUE;
714 CItemData* pItemData = _GetItemData(
hItem);
728 CItemData* pItemData = _GetItemData(
hItem);
730 OnSelectionChanged(pItemData->absolutePidl);
735 CItemData* pItemData = _GetItemData(pnmtv->itemNew.hItem);
740 CComPtr<IShellFolder> pSrcFolder;
746 SFGAOF attrs = SFGAO_CANCOPY | SFGAO_CANMOVE | SFGAO_CANLINK;
750 if (attrs & SFGAO_CANCOPY)
751 dwEffect |= DROPEFFECT_COPY;
752 if (attrs & SFGAO_CANMOVE)
753 dwEffect |= DROPEFFECT_MOVE;
754 if (attrs & SFGAO_CANLINK)
755 dwEffect |= DROPEFFECT_LINK;
757 CComPtr<IDataObject> pObj;
768 DWORD dwAttr = SFGAO_CANRENAME;
775 m_OriginalRename =
NULL;
776 CItemData *
info = _GetItemData(dispInfo->item.hItem);
777 if (!
info || !hWndEdit)
784 hr =
pParent->GetAttributesOf(1, &pChild, &dwAttr);
794 m_oldSelected =
NULL;
802 CComPtr<IShellBrowser> pBrowserService;
808 if (_IsCurrentLocation(pidlGoto) ==
S_OK)
810 if (IgnoreSelfNavigation)
813 CComPtr<IShellView> psv;
814 if (
SUCCEEDED(
hr = pBrowserService->QueryActiveShellView(&psv)))
819 hr = pBrowserService->BrowseObject(pidlGoto, SBSP_SAMEBROWSER | SBSP_ABSOLUTE);
828 CItemData *
info = _GetItemData(dispInfo->item.hItem);
835 ++m_mtxBlockNavigate;
837 --m_mtxBlockNavigate;
840 if (!dispInfo->item.pszText)
843 if (m_OriginalRename)
845 BOOL same = !
lstrcmpW(m_OriginalRename, dispInfo->item.pszText);
847 m_OriginalRename =
NULL;
854 BOOL RenamedCurrent = _IsCurrentLocation(
info->absolutePidl) ==
S_OK;
860 CComHeapPtr<ITEMIDLIST> pidlNew;
861 hr =
pParent->SetNameOf(m_hWnd, pidlChild, dispInfo->item.pszText, SHGDN_INFOLDER, &pidlNew);
864 CComPtr<IPersistFolder2> pPersist;
869 CComHeapPtr<ITEMIDLIST> pidlParent;
870 hr = pPersist->GetCurFolder(&pidlParent);
874 CComHeapPtr<ITEMIDLIST> pidlNewAbs(
ILCombine(pidlParent, pidlNew));
884 tvi.
hItem = dispInfo->item.hItem;
886 AllowTreeSetNewName = !m_hwndTreeView.SetItem(&tvi);
889 _UpdateBrowser(pidlNewAbs,
TRUE);
897 return AllowTreeSetNewName;
906 switch (pnmhdr->
code)
912 if (pnmhdr->
hwndFrom == m_hwndTreeView)
920 if (pnmhdr->
hwndFrom == m_hwndTreeView)
980 if (hwndTarget && (hwndTarget == m_hwndToolbar || hwndTarget == m_hWnd))
982 FIXME(
"Show 'Close Toolbar' menu\n");
1006 ERR(
"No node data, something has gone wrong\n");
1010 CComPtr<IShellFolder> pFolder;
1016 CComPtr<IContextMenu> contextMenu;
1023 UINT cmf = CMF_EXPLORE;
1025 hr = pFolder->GetAttributesOf(1, &pidlChild, &
attr);
1027 cmf |= CMF_CANRENAME;
1040 uCommand -= idCmdFirst;
1043 if ((cmf & CMF_CANRENAME) &&
SHELL_IsVerb(contextMenu, uCommand,
L"rename"))
1045 m_hwndTreeView.SetFocus();
1047 m_oldSelected =
hItem;
1051 hr = _ExecuteCommand(contextMenu, uCommand);
1100 TRACE(
"CloseDW called\n");
1124 m_dwBandID = dwBandID;
1126 if (pdbi->
dwMask & DBIM_MINSIZE)
1132 if (pdbi->
dwMask & DBIM_MAXSIZE)
1135 if (pdbi->
dwMask & DBIM_INTEGRAL)
1138 if (pdbi->
dwMask & DBIM_ACTUAL)
1144 if (pdbi->
dwMask & DBIM_TITLE)
1149 if (pdbi->
dwMask & DBIM_MODEFLAGS)
1150 pdbi->
dwModeFlags = DBIMF_NORMAL | DBIMF_VARIABLEHEIGHT;
1152 if (pdbi->
dwMask & DBIM_BKCOLOR)
1153 pdbi->
dwMask &= ~DBIM_BKCOLOR;
1164 if (pUnkSite == m_pSite)
1167 TRACE(
"SetSite called\n");
1175 if (pUnkSite != m_pSite)
1198 _RegisterChangeNotify();
1213STDMETHODIMP CNSCBand::QueryStatus(
const GUID *pguidCmdGroup,
ULONG cCmds, OLECMD prgCmds [], OLECMDTEXT *pCmdText)
1246 LPCMINVOKECOMMANDINFO lpici)
1269 m_hwndTreeView.SetFocus();
1293 if (_GetAttributesOfItem(_GetItemData(
hItem), SFGAO_CANRENAME))
1295 m_hwndTreeView.SetFocus();
1296 m_hwndTreeView.EditLabel(
hItem);
1305 if (pItem && _GetAttributesOfItem(pItem, SFGAO_HASPROPSHEET))
1309 sei.
lpIDList = pItem->absolutePidl;
1320 if (lpMsg->
hwnd == m_hWnd ||
1404 *pulAttrib |= SFGAO_LINK;
1409 *pulAttrib |= SFGAO_FOLDER;
1434 *pdwStyle = _GetTVStyle();
1435 *pdwExStyle = _GetTVExStyle();
1436 *dwEnum = _GetEnumFlags();
1450 ERR(
"Entering drag\n");
1451 m_pCurObject = pObj;
1453 return DragOver(glfKeyState,
pt, pdwEffect);
1471 m_childTargetNode =
NULL;
1472 m_pDropTarget =
NULL;
1473 *pdwEffect = DROPEFFECT_NONE;
1477 ++m_mtxBlockNavigate;
1479 --m_mtxBlockNavigate;
1482 if (m_pDropTarget &&
info.hItem != m_childTargetNode)
1483 m_pDropTarget =
NULL;
1485 if (
info.hItem != m_childTargetNode)
1487 CItemData *pItemData = _GetItemData(
info.hItem);
1491 CComPtr<IShellFolder> pFolder;
1494 pFolder = m_pDesktop;
1502 ERR(
"Can't bind to folder object\n");
1503 *pdwEffect = DROPEFFECT_NONE;
1512 ERR(
"Can't get drop target for folder object\n");
1513 *pdwEffect = DROPEFFECT_NONE;
1517 hr = m_pDropTarget->DragEnter(m_pCurObject, glfKeyState,
pt, pdwEffect);
1518 m_childTargetNode =
info.hItem;
1522 hr = m_pDropTarget->DragOver(glfKeyState,
pt, pdwEffect);
1529 ++m_mtxBlockNavigate;
1531 --m_mtxBlockNavigate;
1532 m_childTargetNode =
NULL;
1534 m_pCurObject =
NULL;
1542 m_pDropTarget->Drop(pObj, glfKeyState,
pt, pdwEffect);
BOOL _ILIsDesktop(LPCITEMIDLIST pidl)
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
static HRESULT SHDOCVW_GetCurrentLocationFromView(_In_ IShellView &View, _In_ PIDLIST_ABSOLUTE *ppidl)
HRESULT SHDOCVW_GetPathOfShortcut(_In_opt_ HWND hWnd, _In_ LPCWSTR pszLnkFile, _Out_ LPWSTR pszPath)
#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
BOOL WINAPI ImageList_Destroy(HIMAGELIST himl)
#define FAILED_UNEXPECTEDLY(hr)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
HRESULT WINAPI RegisterDragDrop(HWND hwnd, LPDROPTARGET pDropTarget)
HRESULT WINAPI DoDragDrop(IDataObject *pDataObject, IDropSource *pDropSource, DWORD dwOKEffect, DWORD *pdwEffect)
HRESULT WINAPI RevokeDragDrop(HWND hwnd)
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)
void WINAPI SHFree(LPVOID pv)
HRESULT WINAPI SHGetFolderLocation(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwReserved, LPITEMIDLIST *ppidl)
HRESULT WINAPI IUnknown_QueryService(IUnknown *, REFGUID, REFIID, LPVOID *)
BOOL WINAPI SHIsChildOrSelf(HWND hParent, HWND hChild)
HRESULT WINAPI IUnknown_GetWindow(IUnknown *lpUnknown, HWND *lphWnd)
HRESULT WINAPI IUnknown_OnFocusChangeIS(LPUNKNOWN lpUnknown, LPUNKNOWN pFocusObject, BOOL bFocus)
HRESULT WINAPI IUnknown_SetSite(IUnknown *obj, IUnknown *site)
LPWSTR WINAPI PathFindExtensionW(LPCWSTR lpszPath)
BOOL WINAPI PathIsRootW(LPCWSTR lpszPath)
BOOL WINAPI PathIsDirectoryW(LPCWSTR lpszPath)
HRESULT WINAPI SHStrDupW(LPCWSTR src, LPWSTR *dest)
HRESULT WINAPI StrRetToBufW(LPSTRRET src, const ITEMIDLIST *pidl, LPWSTR dest, UINT len)
HRESULT WINAPI StrRetToStrW(LPSTRRET lpStrRet, const ITEMIDLIST *pidl, LPWSTR *ppszName)
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)
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
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
void WINAPI ILFree(LPITEMIDLIST pidl)
LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
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_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)
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
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
DWORD WINAPI GetLastError(void)
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
#define DRAGDROP_S_USEDEFAULTCURSORS
#define DRAGDROP_S_CANCEL
HMENU WINAPI CreatePopupMenu(void)
BOOL WINAPI TranslateMessage(_In_ const MSG *)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
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)
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)