ReactOS 0.4.16-dev-983-g23ad936
addresseditbox.cpp
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS Explorer
3 * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
4 * PURPOSE: The combo box of the address band
5 * COPYRIGHT: Copyright 2009 Andrew Hill <ash77 at domain reactos.org>
6 * Copyright 2023-2025 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
7 */
8
9#include "precomp.h"
10
11/*
12TODO:
13 Add drag and drop of icon in edit box
14 Handle change notifies to update appropriately
15*/
16
18 fCombobox(WC_COMBOBOXEXW, this),
19 fEditWindow(WC_EDITW, this),
20 fSite(NULL)
21{
22}
23
25{
26}
27
29{
30 if (!pOwner)
31 {
32 CComPtr<IBrowserService> browserService;
34 if (SUCCEEDED(hResult))
35 AtlUnadvise(browserService, DIID_DWebBrowserEvents, fAdviseCookie);
36 fSite = NULL;
37 }
38 // connect to browser connection point
39 return 0;
40}
41
43{
44 return E_NOTIMPL;
45}
46
48{
49 return E_NOTIMPL;
50}
51
52HRESULT STDMETHODCALLTYPE CAddressEditBox::Init(HWND comboboxEx, HWND editControl, long param14, IUnknown *param18)
53{
54 CComPtr<IBrowserService> browserService;
55
56 fCombobox.SubclassWindow(comboboxEx);
57 fEditWindow.SubclassWindow(editControl);
58 fSite = param18;
59 hComboBoxEx = comboboxEx;
60
62
63 // take advice to watch events
64 HRESULT hResult = IUnknown_QueryService(param18, SID_SShellBrowser, IID_PPV_ARG(IBrowserService, &browserService));
65 if (SUCCEEDED(hResult))
66 {
67 hResult = AtlAdvise(browserService, static_cast<IDispatch *>(this), DIID_DWebBrowserEvents, &fAdviseCookie);
68 }
69
70 return hResult;
71}
72
74{
75 m_pidlLastParsed.Free();
76 m_pidlLastParsed.Attach(ILCreateFromPathW(pszPath));
78}
79
81{
82 pszText.Free();
84 if (!pszText.Allocate(cchMax))
85 return FALSE;
86 return fCombobox.GetWindowText(pszText, cchMax);
87}
88
90{
91 /* Get the current pidl of the browser */
92 CComHeapPtr<ITEMIDLIST> absolutePIDL;
93 HRESULT hr = GetAbsolutePidl(&absolutePIDL);
95 return hr;
96
97 /* Fill the combobox */
98 ATLASSERT(absolutePIDL != NULL);
99 PopulateComboBox(absolutePIDL);
100
101 /* Get pShellFolder and pidlChild */
102 CComPtr<IShellFolder> pShellFolder;
103 PCITEMID_CHILD pidlChild;
104 hr = SHBindToParent(absolutePIDL, IID_PPV_ARG(IShellFolder, &pShellFolder), &pidlChild);
106 return hr;
107
108 /* Get ready to set the displayed item */
110 item.iItem = -1; /* -1 to specify the displayed item */
111 item.iImage = SHMapPIDLToSystemImageListIndex(pShellFolder, pidlChild, &item.iSelectedImage);
112
113 /* Set the path if filesystem; otherwise use the name */
114 WCHAR szPathOrName[MAX_PATH];
115 SHGDNF flags = SHGDN_FORADDRESSBAR;
117 flags |= SHGDN_FORPARSING;
118
119 if (SUCCEEDED(IEGetNameAndFlags(absolutePIDL, flags, szPathOrName, _countof(szPathOrName), NULL)))
120 item.pszText = szPathOrName;
121
122 /* Ownership of absolutePIDL will be moved to fCombobox. See CBEN_DELETEITEM */
123 item.lParam = reinterpret_cast<LPARAM>(absolutePIDL.Detach());
124
125 fCombobox.SendMessage(CBEM_SETITEM, 0, reinterpret_cast<LPARAM>(&item)); /* Set it! */
126 return S_OK;
127}
128
130{
132 HRESULT hr = IUnknown_QueryService(fSite, SID_STopLevelBrowser, IID_PPV_ARG(IBrowserService, &isb));
134 return hr;
135
136 hr = isb->GetPidl(pAbsolutePIDL);
138 return hr;
139
140 return S_OK;
141}
142
143/* Execute command line from address bar */
145{
146 /* Get command line */
147 CComHeapPtr<WCHAR> pszCmdLine;
148 if (!GetComboBoxText(pszCmdLine))
149 return FALSE;
150
151 /* Split 1st parameter from trailing arguments */
152 PWCHAR args = PathGetArgsW(pszCmdLine);
153 PathRemoveArgsW(pszCmdLine);
154
155 PathUnquoteSpacesW(pszCmdLine); /* Unquote the 1st parameter */
156
157 /* Get ready for execution */
158 SHELLEXECUTEINFOW info = { sizeof(info), SEE_MASK_FLAG_NO_UI, m_hWnd };
159 info.lpFile = pszCmdLine;
160 info.lpParameters = args;
161 info.nShow = SW_SHOWNORMAL;
162
163 /* Set current directory */
164 WCHAR dir[MAX_PATH] = L"";
166 if (SUCCEEDED(GetAbsolutePidl(&pidl)))
167 {
169 info.lpDirectory = dir;
170 }
171
172 if (!::ShellExecuteExW(&info)) /* Execute! */
173 return FALSE;
174
176 return TRUE;
177}
178
180{
181 ULONG eaten, attributes;
184 CComPtr<IShellFolder> psfCurrent;
185 HRESULT hr;
186
188
192 return hr;
193
194 HWND topLevelWindow;
195 hr = IUnknown_GetWindow(pbs, &topLevelWindow);
197 return hr;
198
199 /* Get the path to browse and expand it if needed */
202 return E_FAIL;
203
204 INT addressLength = (wcschr(input, L'%') ? ::SHExpandEnvironmentStringsW(input, NULL, 0) : 0);
205 if (addressLength <= 0 ||
206 !address.Allocate(addressLength + 1) ||
208 {
209 address.Free();
210 address.Attach(input.Detach());
211 }
212
213 /* Try to parse a relative path and if it fails, try to browse an absolute path */
214 CComPtr<IShellFolder> psfDesktop;
215 hr = SHGetDesktopFolder(&psfDesktop);
217 return hr;
218
219 hr = pbs->GetPidl(&pidlCurrent);
221 goto parseabsolute;
222
223 hr = psfDesktop->BindToObject(pidlCurrent, NULL, IID_PPV_ARG(IShellFolder, &psfCurrent));
225 goto parseabsolute;
226
227 hr = psfCurrent->ParseDisplayName(topLevelWindow, NULL, address, &eaten, &pidlRelative, &attributes);
228 if (SUCCEEDED(hr))
229 {
230 m_pidlLastParsed.Attach(ILCombine(pidlCurrent, pidlRelative));
231 return hr;
232 }
233
234parseabsolute:
235 /* We couldn't parse a relative path, attempt to parse an absolute path */
236 hr = psfDesktop->ParseDisplayName(topLevelWindow, NULL, address, &eaten, &m_pidlLastParsed, &attributes);
237 return hr;
238}
239
241{
244 return E_FAIL;
245
247
248 return hRet;
249}
250
252{
253 HRESULT hr;
254
255 /*
256 * Parse the path if it wasn't parsed
257 */
258 if (!m_pidlLastParsed)
259 {
260 hr = ParseNow(0);
261
262 /* If the destination path doesn't exist then display an error message */
264 {
265 if (ExecuteCommandLine())
266 return S_OK;
267
269 }
270
271 if (!m_pidlLastParsed)
272 return E_FAIL;
273 }
274
275 /*
276 * Get the IShellBrowser and IBrowserService interfaces of the shell browser
277 */
280 if (FAILED(hr))
281 return hr;
282
283 /*
284 * Get the current pidl of the shellbrowser and check if it is the same with the parsed one
285 */
286 PIDLIST_ABSOLUTE pidl;
287 hr = GetAbsolutePidl(&pidl);
288 if (FAILED(hr))
289 return hr;
290
292 hr = SHGetDesktopFolder(&psf);
293 if (FAILED(hr))
294 return hr;
295
296 hr = psf->CompareIDs(0, pidl, m_pidlLastParsed);
297
298 SHFree(pidl);
299
300 if (hr == S_OK)
301 {
302 m_pidlLastParsed.Free();
303 return S_OK;
304 }
305
306 /*
307 * Attempt to browse to the parsed pidl
308 */
309 hr = pisb->BrowseObject(m_pidlLastParsed, 0);
310 if (SUCCEEDED(hr))
311 return hr;
312
313 /*
314 * Browsing to the pidl failed so it's not a folder. So invoke its defaule command.
315 */
316 HWND topLevelWindow;
317 hr = IUnknown_GetWindow(pisb, &topLevelWindow);
318 if (FAILED(hr))
319 return hr;
320
321 LPCITEMIDLIST pidlChild;
324 if (FAILED(hr))
325 return hr;
326
327 hr = SHInvokeDefaultCommand(topLevelWindow, sf, pidlChild);
328 if (FAILED(hr))
329 return hr;
330
331 return hr;
332}
333
335{
336 return E_NOTIMPL;
337}
338
340 HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult)
341{
342 LPNMHDR hdr;
343
344 if (theResult)
345 *theResult = 0;
346
347 switch (uMsg)
348 {
349 case WM_COMMAND:
350 {
352 {
354 PIDLIST_ABSOLUTE pidl =
356 m_pidlLastParsed.Free();
357 if (pidl)
358 m_pidlLastParsed.Attach(ILClone(pidl));
359
360 Execute(0);
361 }
362 break;
363 }
364 case WM_NOTIFY:
365 {
366 hdr = (LPNMHDR) lParam;
367 if (hdr->code == CBEN_ENDEDIT)
368 {
369 NMCBEENDEDITW *endEdit = (NMCBEENDEDITW*) lParam;
370 if (endEdit->iWhy == CBENF_RETURN)
371 {
372 Execute(0);
373 }
374 else if (endEdit->iWhy == CBENF_ESCAPE)
375 {
376 /* Reset the contents of the combo box */
378 }
379 }
380 else if (hdr->code == CBEN_DELETEITEM)
381 {
383 LPITEMIDLIST itemPidl = (LPITEMIDLIST)pCBEx->ceItem.lParam;
384 if (itemPidl)
385 {
386 ILFree(itemPidl);
387 }
388 }
389 break;
390 }
391 }
392 return S_OK;
393}
394
396{
397 if (fCombobox.m_hWnd == hWnd)
398 return S_OK;
399 if (fEditWindow.m_hWnd == hWnd)
400 return S_OK;
401 return S_FALSE;
402}
403
405 const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText)
406{
407 return E_NOTIMPL;
408}
409
411 DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
412{
413 return E_NOTIMPL;
414}
415
417{
418 return E_NOTIMPL;
419}
420
422{
423 return E_NOTIMPL;
424}
425
427 REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
428{
429 return E_NOTIMPL;
430}
431
433 WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
434{
435 if (pDispParams == NULL)
436 return E_INVALIDARG;
437
438 switch (dispIdMember)
439 {
442 m_pidlLastParsed.Free();
444 break;
445 }
446 return S_OK;
447}
448
450{
451 if (pClassID == NULL)
452 return E_POINTER;
453 *pClassID = CLSID_AddressEditBox;
454 return S_OK;
455}
456
458{
459 return E_NOTIMPL;
460}
461
463{
464 return E_NOTIMPL;
465}
466
468{
469 return E_NOTIMPL;
470}
471
473{
474 return E_NOTIMPL;
475}
476
478{
479 HRESULT hr;
480 LPITEMIDLIST pidl;
481 int indent = 0;
482 int index;
483
485 for (int i = 0; i < index; i++)
488
489 /* Calculate the indent level. No need to clone the pidl */
490 pidl = pidlCurrent;
491 do
492 {
493 if(!pidl->mkid.cb)
494 break;
495 pidl = ILGetNext(pidl);
496 indent++;
497 } while (pidl);
498 index = indent;
499
500 /* Add every id from the pidl in the combo box */
501 pidl = ILClone(pidlCurrent);
502 do
503 {
504 AddComboBoxItem(pidl, 0, index);
505 ILRemoveLastID(pidl);
506 index--;
507 } while (index >= 0);
508 ILFree(pidl);
509
510 /* Add the items of the desktop */
511 FillOneLevel(0, 1, indent);
512
513 /* Add the items of My Computer */
516 return;
517
519 {
520 if (ILIsEqual(i, pidl))
521 {
523 break;
524 }
525 index++;
526 }
527 ILFree(pidl);
528}
529
531{
532 HRESULT hr;
533 WCHAR buf[4096];
534
535 LPCITEMIDLIST pidlChild;
537 hr = SHBindToParent(pidl, IID_PPV_ARG(IShellFolder, &sf), &pidlChild);
539 return;
540
541 STRRET strret;
542 hr = sf->GetDisplayNameOf(pidlChild, SHGDN_FORADDRESSBAR, &strret);
544 return;
545
546 hr = StrRetToBufW(&strret, pidlChild, buf, 4095);
548 return;
549
550 COMBOBOXEXITEMW item = {0};
552 item.iImage = SHMapPIDLToSystemImageListIndex(sf, pidlChild, &item.iSelectedImage);
553 item.pszText = buf;
554 item.lParam = (LPARAM)(ILClone(pidl));
555 item.iIndent = indent;
556 item.iItem = index;
558}
559
560void CAddressEditBox::FillOneLevel(int index, int levelIndent, int indent)
561{
562 HRESULT hr;
563 ULONG numObj;
564 int count;
565 LPITEMIDLIST pidl, pidl2, pidl3, pidl4;
566
567 count = index + 1;
568 pidl = GetItemData(index);
569 pidl2 = GetItemData(count);
570 if(pidl)
571 {
572 CComPtr<IShellFolder> psfDesktop;
573 CComPtr<IShellFolder> psfItem;
574
575 hr = SHGetDesktopFolder(&psfDesktop);
577 return;
578
579 if (!pidl->mkid.cb)
580 {
581 psfItem = psfDesktop;
582 }
583 else
584 {
585 hr = psfDesktop->BindToObject(pidl, NULL, IID_PPV_ARG(IShellFolder, &psfItem));
587 return;
588 }
589
590 CComPtr<IEnumIDList> pEnumIDList;
591 hr = psfItem->EnumObjects(0, SHCONTF_FOLDERS | SHCONTF_INCLUDEHIDDEN, &pEnumIDList);
593 return;
594
595 do
596 {
597 hr = pEnumIDList->Next(1, &pidl3, &numObj);
598 if(hr != S_OK || !numObj)
599 break;
600
601 pidl4 = ILCombine(pidl, pidl3);
602 if (pidl2 && ILIsEqual(pidl4, pidl2))
603 count += (indent - levelIndent);
604 else
605 AddComboBoxItem(pidl4, count, levelIndent);
606 count++;
607 ILFree(pidl3);
608 ILFree(pidl4);
609 } while (true);
610 }
611}
612
614{
616
617 memset(&item, 0, sizeof(COMBOBOXEXITEMW));
618 item.mask = CBEIF_LPARAM;
619 item.iItem = index;
621 return (LPITEMIDLIST)item.lParam;
622}
623
625{
627 return NO_ERROR;
628}
#define ATLASSERT(x)
Definition: CComVariant.cpp:10
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
UINT cchMax
unsigned int dir
Definition: maze.c:112
HWND hWnd
Definition: settings.c:17
#define index(s, c)
Definition: various.h:29
#define STDMETHODCALLTYPE
Definition: bdasup.h:9
HRESULT IEGetNameAndFlags(LPITEMIDLIST pidl, SHGDNF uFlags, LPWSTR pszBuf, UINT cchBuf, SFGAOF *rgfInOut)
BOOL SubclassWindow(HWND hWnd)
Definition: atlwin.h:1796
int GetWindowTextLength() const
Definition: atlwin.h:860
int GetWindowText(_Out_writes_to_(nMaxCount, return+1) LPTSTR lpszStringBuf, _In_ int nMaxCount) const
Definition: atlwin.h:828
LRESULT SendMessage(UINT message, WPARAM wParam=0, LPARAM lParam=0)
Definition: atlwin.h:1116
HWND m_hWnd
Definition: atlwin.h:273
STDMETHOD() GetClassID(CLSID *pClassID) override
HRESULT RefreshAddress()
STDMETHOD() GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) override
void FillOneLevel(int index, int levelIndent, int indent)
CContainedWindow fEditWindow
HRESULT GetAbsolutePidl(PIDLIST_ABSOLUTE *pAbsolutePIDL)
STDMETHOD() ParseNow(long paramC) override
CContainedWindow fCombobox
CComPtr< IUnknown > fSite
CComHeapPtr< ITEMIDLIST_ABSOLUTE > m_pidlLastParsed
HRESULT STDMETHODCALLTYPE ShowFileNotFoundError(HRESULT hRet)
STDMETHOD() SetCurrentDir(PCWSTR pszPath) override
STDMETHOD() Init(HWND comboboxEx, HWND editControl, long param14, IUnknown *param18) override
STDMETHOD() QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT *pCmdText) override
LPITEMIDLIST GetItemData(int index)
STDMETHOD() GetTypeInfoCount(UINT *pctinfo) override
STDMETHOD() Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) override
LRESULT OnSettingChange(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
STDMETHOD() IsWindowOwner(HWND hWnd) override
void AddComboBoxItem(LPITEMIDLIST pidl, int index, int indent)
STDMETHOD() Save(long paramC) override
STDMETHOD() SetOwner(IUnknown *) override
STDMETHOD() Execute(long paramC) override
STDMETHOD() IsDirty() override
void PopulateComboBox(LPITEMIDLIST pidl)
STDMETHOD() OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult) override
STDMETHOD() Load(IStream *pStm) override
STDMETHOD() Refresh(long param8) override
BOOL GetComboBoxText(CComHeapPtr< WCHAR > &pszText)
STDMETHOD() GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) override
STDMETHOD() GetSizeMax(ULARGE_INTEGER *pcbSize) override
STDMETHOD() FileSysChange(long param8, long paramC) override
STDMETHOD() Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut) override
void Free()
Definition: atlalloc.h:153
T * Detach()
Definition: atlalloc.h:168
bool Allocate(_In_ size_t nElements=1)
Definition: atlalloc.h:143
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define NO_ERROR
Definition: dderror.h:5
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_INVALIDARG
Definition: ddrawi.h:101
#define E_NOTIMPL
Definition: ddrawi.h:99
#define E_FAIL
Definition: ddrawi.h:102
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
HRESULT WINAPI AtlAdvise(IUnknown *pUnkCP, IUnknown *pUnk, const IID *iid, DWORD *pdw)
Definition: atl.c:45
HRESULT WINAPI AtlUnadvise(IUnknown *pUnkCP, const IID *iid, DWORD dw)
Definition: atl.c:73
#define IDS_PARSE_ADDR_ERR_TITLE
Definition: resource.h:183
#define IDS_PARSE_ADDR_ERR_TEXT
Definition: resource.h:184
CabinetStateSettings gCabinetState
Definition: settings.cpp:10
static const WCHAR indent[]
Definition: object.c:1156
#define wcschr
Definition: compat.h:17
#define MAX_PATH
Definition: compat.h:34
#define FAILED_UNEXPECTEDLY(hr)
Definition: precomp.h:121
#define ShellMessageBoxW
Definition: precomp.h:63
void WINAPI SHFree(LPVOID pv)
Definition: shellole.c:326
HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, INT nFolder, LPITEMIDLIST *ppidl)
Definition: shellpath.c:3408
HRESULT WINAPI IUnknown_QueryService(IUnknown *, REFGUID, REFIID, LPVOID *)
Definition: ordinal.c:1501
HRESULT WINAPI SHInvokeDefaultCommand(HWND hWnd, IShellFolder *lpFolder, LPCITEMIDLIST lpApidl)
Definition: ordinal.c:3060
HRESULT WINAPI IUnknown_GetWindow(IUnknown *lpUnknown, HWND *lphWnd)
Definition: ordinal.c:1336
void WINAPI PathRemoveArgsW(LPWSTR lpszPath)
Definition: path.c:779
VOID WINAPI PathUnquoteSpacesW(LPWSTR lpszPath)
Definition: path.c:1040
BOOL WINAPI PathIsDirectoryW(LPCWSTR lpszPath)
Definition: path.c:1729
LPWSTR WINAPI PathGetArgsW(LPCWSTR lpszPath)
Definition: path.c:506
HRESULT WINAPI StrRetToBufW(LPSTRRET src, const ITEMIDLIST *pidl, LPWSTR dest, UINT len)
Definition: string.c:1530
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
unsigned short WORD
Definition: ntddk_ex.h:93
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLuint address
Definition: glext.h:9393
GLuint index
Definition: glext.h:6031
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
GLbitfield flags
Definition: glext.h:7161
GLenum GLenum GLenum input
Definition: glext.h:9031
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
int WINAPI SHMapPIDLToSystemImageListIndex(IShellFolder *sh, LPCITEMIDLIST pidl, int *pIndex)
Definition: iconcache.cpp:772
REFIID riid
Definition: atlbase.h:39
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
char hdr[14]
Definition: iptest.cpp:33
if(dx< 0)
Definition: linetemp.h:194
#define ERROR_FILE_NOT_FOUND
Definition: disk.h:79
static LPOLESTR
Definition: stg_prop.c:27
static VARIANTARG static DISPID
Definition: ordinal.c:52
static ATOM item
Definition: dde.c:856
unsigned int UINT
Definition: ndis.h:50
#define UNICODE_NULL
#define L(x)
Definition: ntvdm.h:50
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
Definition: pidl.c:237
void WINAPI ILFree(LPITEMIDLIST pidl)
Definition: pidl.c:1044
LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
Definition: pidl.c:816
BOOL WINAPI ILRemoveLastID(LPITEMIDLIST pidl)
Definition: pidl.c:221
HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast)
Definition: pidl.c:1462
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
Definition: pidl.c:1454
LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST pidl)
Definition: pidl.c:970
LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR path)
Definition: pidl.c:1101
BOOL WINAPI ILIsEqual(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
Definition: pidl.c:582
#define INT
Definition: polytest.cpp:20
#define CBEM_SETITEM
Definition: commctrl.h:3851
#define CBEN_ENDEDIT
Definition: commctrl.h:3890
#define CBEIF_IMAGE
Definition: commctrl.h:3792
#define CBENF_RETURN
Definition: commctrl.h:3893
#define WC_EDITW
Definition: commctrl.h:4692
#define CBEM_GETITEMW
Definition: commctrl.h:3848
#define CBEIF_SELECTEDIMAGE
Definition: commctrl.h:3793
#define WC_COMBOBOXEXW
Definition: commctrl.h:3786
#define CBEIF_TEXT
Definition: commctrl.h:3791
#define CBENF_ESCAPE
Definition: commctrl.h:3894
#define CBEM_DELETEITEM
Definition: commctrl.h:3836
#define CBEN_DELETEITEM
Definition: commctrl.h:3878
#define CBEIF_INDENT
Definition: commctrl.h:3795
#define CBEM_INSERTITEMW
Definition: commctrl.h:3846
#define CBEIF_LPARAM
Definition: commctrl.h:3796
#define PNMCOMBOBOXEX
Definition: commctrl.h:3873
#define REFIID
Definition: guiddef.h:118
#define WM_NOTIFY
Definition: richedit.h:61
DWORD LCID
Definition: nls.h:13
#define memset(x, y, z)
Definition: compat.h:39
#define SEE_MASK_FLAG_NO_UI
Definition: shellapi.h:36
BOOL WINAPI DECLSPEC_HOTPATCH ShellExecuteExW(LPSHELLEXECUTEINFOW sei)
Definition: shlexec.cpp:2452
HRESULT hr
Definition: shlfolder.c:183
#define SID_SShellBrowser
Definition: shlguid.h:128
#define CSIDL_DRIVES
Definition: shlobj.h:2197
HRESULT WINAPI SHAutoComplete(HWND hwndEdit, DWORD dwFlags)
Definition: autocomp.cpp:191
#define SHACF_FILESYSTEM
Definition: shlwapi.h:1957
#define SHACF_USETAB
Definition: shlwapi.h:1961
#define SHACF_URLALL
Definition: shlwapi.h:1960
DWORD WINAPI SHExpandEnvironmentStringsW(LPCWSTR, LPWSTR, DWORD)
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
ITEMIDLIST_ABSOLUTE * PIDLIST_ABSOLUTE
Definition: shtypes.idl:60
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
Definition: shtypes.idl:42
#define _countof(array)
Definition: sndvol32.h:70
Definition: match.c:390
const uint16_t * PCWSTR
Definition: typedefs.h:57
int32_t INT
Definition: typedefs.h:58
uint16_t * PWCHAR
Definition: typedefs.h:56
uint32_t ULONG
Definition: typedefs.h:59
#define HIWORD(l)
Definition: typedefs.h:247
#define DISPID_NAVIGATECOMPLETE2
Definition: webchild.h:54
#define DISPID_DOCUMENTCOMPLETE
Definition: webchild.h:61
_In_ DWORD _Out_ _In_ WORD wFlags
Definition: wincon.h:531
LONG_PTR LPARAM
Definition: windef.h:208
LONG_PTR LRESULT
Definition: windef.h:209
UINT_PTR WPARAM
Definition: windef.h:207
#define S_FALSE
Definition: winerror.h:2357
#define HRESULT_FROM_WIN32(x)
Definition: winerror.h:92
#define E_POINTER
Definition: winerror.h:2365
#define ERROR_INVALID_DRIVE
Definition: winerror.h:118
#define SW_SHOWNORMAL
Definition: winuser.h:781
#define WM_COMMAND
Definition: winuser.h:1751
#define CB_RESETCONTENT
Definition: winuser.h:1970
#define CB_GETCOUNT
Definition: winuser.h:1953
#define CBN_SELCHANGE
Definition: winuser.h:1990
#define MB_ICONERROR
Definition: winuser.h:798
struct tagNMHDR * LPNMHDR
#define CB_GETITEMDATA
Definition: winuser.h:1961
#define MB_OK
Definition: winuser.h:801
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
#define CB_GETCURSEL
Definition: winuser.h:1954
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define IID_PPV_ARG(Itype, ppType)
__wchar_t WCHAR
Definition: xmlstorage.h:180