ReactOS 0.4.15-dev-7994-gb388cb6
addresseditbox.cpp
Go to the documentation of this file.
1/*
2 * ReactOS Explorer
3 *
4 * Copyright 2009 Andrew Hill <ash77 at domain reactos.org>
5 * Copyright 2023 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 */
21
22/*
23This class handles the combo box of the address band.
24*/
25
26#include "precomp.h"
27
28/*
29TODO:
30 Add drag and drop of icon in edit box
31 Handle change notifies to update appropriately
32*/
33
35 fCombobox(WC_COMBOBOXEXW, this),
36 fEditWindow(WC_EDITW, this),
37 fSite(NULL),
38 pidlLastParsed(NULL)
39{
40}
41
43{
46}
47
49{
50 if (!pOwner)
51 {
52 CComPtr<IBrowserService> browserService;
54 if (SUCCEEDED(hResult))
55 AtlUnadvise(browserService, DIID_DWebBrowserEvents, fAdviseCookie);
56 fSite = NULL;
57 }
58 // connect to browser connection point
59 return 0;
60}
61
63{
64 return E_NOTIMPL;
65}
66
68{
69 return E_NOTIMPL;
70}
71
72HRESULT STDMETHODCALLTYPE CAddressEditBox::Init(HWND comboboxEx, HWND editControl, long param14, IUnknown *param18)
73{
74 CComPtr<IBrowserService> browserService;
75
76 fCombobox.SubclassWindow(comboboxEx);
77 fEditWindow.SubclassWindow(editControl);
78 fSite = param18;
79 hComboBoxEx = comboboxEx;
80
82
83 // take advice to watch events
84 HRESULT hResult = IUnknown_QueryService(param18, SID_SShellBrowser, IID_PPV_ARG(IBrowserService, &browserService));
85 if (SUCCEEDED(hResult))
86 {
87 hResult = AtlAdvise(browserService, static_cast<IDispatch *>(this), DIID_DWebBrowserEvents, &fAdviseCookie);
88 }
89
90 return hResult;
91}
92
94{
95 return E_NOTIMPL;
96}
97
99{
100 pszText.Free();
102 if (!pszText.Allocate(cchMax))
103 return FALSE;
104 return fCombobox.GetWindowText(pszText, cchMax);
105}
106
108{
109 /* Get the current pidl of the browser */
110 CComHeapPtr<ITEMIDLIST> absolutePIDL;
111 HRESULT hr = GetAbsolutePidl(&absolutePIDL);
113 return hr;
114
115 /* Fill the combobox */
116 ATLASSERT(absolutePIDL != NULL);
117 PopulateComboBox(absolutePIDL);
118
119 /* Get pShellFolder and pidlChild */
120 CComPtr<IShellFolder> pShellFolder;
121 PCITEMID_CHILD pidlChild;
122 hr = SHBindToParent(absolutePIDL, IID_PPV_ARG(IShellFolder, &pShellFolder), &pidlChild);
124 return hr;
125
126 /* Get ready to set the displayed item */
128 item.iItem = -1; /* -1 to specify the displayed item */
129 item.iImage = SHMapPIDLToSystemImageListIndex(pShellFolder, pidlChild, &item.iSelectedImage);
130
131 /* Set the path if filesystem; otherwise use the name */
132 WCHAR szPathOrName[MAX_PATH];
133 SHGDNF flags = SHGDN_FORADDRESSBAR;
135 flags |= SHGDN_FORPARSING;
136
137 if (SUCCEEDED(IEGetNameAndFlags(absolutePIDL, flags, szPathOrName, _countof(szPathOrName), NULL)))
138 item.pszText = szPathOrName;
139
140 /* Ownership of absolutePIDL will be moved to fCombobox. See CBEN_DELETEITEM */
141 item.lParam = reinterpret_cast<LPARAM>(absolutePIDL.Detach());
142
143 fCombobox.SendMessage(CBEM_SETITEM, 0, reinterpret_cast<LPARAM>(&item)); /* Set it! */
144 return S_OK;
145}
146
148{
150 HRESULT hr = IUnknown_QueryService(fSite, SID_STopLevelBrowser, IID_PPV_ARG(IBrowserService, &isb));
152 return hr;
153
154 hr = isb->GetPidl(pAbsolutePIDL);
156 return hr;
157
158 return S_OK;
159}
160
161/* Execute command line from address bar */
163{
164 /* Get command line */
165 CComHeapPtr<WCHAR> pszCmdLine;
166 if (!GetComboBoxText(pszCmdLine))
167 return FALSE;
168
169 /* Split 1st parameter from trailing arguments */
170 PWCHAR args = PathGetArgsW(pszCmdLine);
171 PathRemoveArgsW(pszCmdLine);
172
173 PathUnquoteSpacesW(pszCmdLine); /* Unquote the 1st parameter */
174
175 /* Get ready for execution */
176 SHELLEXECUTEINFOW info = { sizeof(info), SEE_MASK_FLAG_NO_UI, m_hWnd };
177 info.lpFile = pszCmdLine;
178 info.lpParameters = args;
179 info.nShow = SW_SHOWNORMAL;
180
181 /* Set current directory */
182 WCHAR dir[MAX_PATH] = L"";
184 if (SUCCEEDED(GetAbsolutePidl(&pidl)))
185 {
187 info.lpDirectory = dir;
188 }
189
190 if (!::ShellExecuteExW(&info)) /* Execute! */
191 return FALSE;
192
194 return TRUE;
195}
196
198{
199 ULONG eaten;
200 ULONG attributes;
201 HRESULT hr;
202 HWND topLevelWindow;
203 PIDLIST_ABSOLUTE pidlCurrent= NULL;
204 PIDLIST_RELATIVE pidlRelative = NULL;
205 CComPtr<IShellFolder> psfCurrent;
206
210 return hr;
211
212 hr = IUnknown_GetWindow(pbs, &topLevelWindow);
214 return hr;
215
216 /* Get the path to browse and expand it if needed */
219 return E_FAIL;
220
221 INT addressLength = (wcschr(input, L'%') ? ::SHExpandEnvironmentStringsW(input, NULL, 0) : 0);
222 if (addressLength <= 0 ||
223 !address.Allocate(addressLength + 1) ||
225 {
226 address.Free();
227 address.Attach(input.Detach());
228 }
229
230 /* Try to parse a relative path and if it fails, try to browse an absolute path */
231 CComPtr<IShellFolder> psfDesktop;
232 hr = SHGetDesktopFolder(&psfDesktop);
234 goto cleanup;
235
236 hr = pbs->GetPidl(&pidlCurrent);
238 goto parseabsolute;
239
240 hr = psfDesktop->BindToObject(pidlCurrent, NULL, IID_PPV_ARG(IShellFolder, &psfCurrent));
242 goto parseabsolute;
243
244 hr = psfCurrent->ParseDisplayName(topLevelWindow, NULL, address, &eaten, &pidlRelative, &attributes);
245 if (SUCCEEDED(hr))
246 {
247 pidlLastParsed = ILCombine(pidlCurrent, pidlRelative);
248 ILFree(pidlRelative);
249 goto cleanup;
250 }
251
252parseabsolute:
253 /* We couldn't parse a relative path, attempt to parse an absolute path */
254 hr = psfDesktop->ParseDisplayName(topLevelWindow, NULL, address, &eaten, &pidlLastParsed, &attributes);
255
256cleanup:
257 if (pidlCurrent)
258 ILFree(pidlCurrent);
259 return hr;
260}
261
263{
266 return E_FAIL;
267
269
270 return hRet;
271}
272
274{
275 HRESULT hr;
276
277 /*
278 * Parse the path if it wasn't parsed
279 */
280 if (!pidlLastParsed)
281 {
282 hr = ParseNow(0);
283
284 /* If the destination path doesn't exist then display an error message */
286 {
287 if (ExecuteCommandLine())
288 return S_OK;
289
291 }
292
293 if (!pidlLastParsed)
294 return E_FAIL;
295 }
296
297 /*
298 * Get the IShellBrowser and IBrowserService interfaces of the shell browser
299 */
302 if (FAILED(hr))
303 return hr;
304
305 /*
306 * Get the current pidl of the shellbrowser and check if it is the same with the parsed one
307 */
308 PIDLIST_ABSOLUTE pidl;
309 hr = GetAbsolutePidl(&pidl);
310 if (FAILED(hr))
311 return hr;
312
314 hr = SHGetDesktopFolder(&psf);
315 if (FAILED(hr))
316 return hr;
317
318 hr = psf->CompareIDs(0, pidl, pidlLastParsed);
319
320 SHFree(pidl);
321
322 if (hr == 0)
323 {
324 if (pidlLastParsed)
325 {
328 }
329 return S_OK;
330 }
331
332 /*
333 * Attempt to browse to the parsed pidl
334 */
335 hr = pisb->BrowseObject(pidlLastParsed, 0);
336 if (SUCCEEDED(hr))
337 return hr;
338
339 /*
340 * Browsing to the pidl failed so it's not a folder. So invoke its defaule command.
341 */
342 HWND topLevelWindow;
343 hr = IUnknown_GetWindow(pisb, &topLevelWindow);
344 if (FAILED(hr))
345 return hr;
346
347 LPCITEMIDLIST pidlChild;
350 if (FAILED(hr))
351 return hr;
352
353 hr = SHInvokeDefaultCommand(topLevelWindow, sf, pidlChild);
354 if (FAILED(hr))
355 return hr;
356
357 return hr;
358}
359
361{
362 return E_NOTIMPL;
363}
364
366 HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult)
367{
368 LPNMHDR hdr;
369
370 if (theResult)
371 *theResult = 0;
372
373 switch (uMsg)
374 {
375 case WM_COMMAND:
376 {
378 {
379 UINT selectedIndex = SendMessageW((HWND)lParam, CB_GETCURSEL, 0, 0);
381 Execute(0);
382 }
383 break;
384 }
385 case WM_NOTIFY:
386 {
387 hdr = (LPNMHDR) lParam;
388 if (hdr->code == CBEN_ENDEDIT)
389 {
390 NMCBEENDEDITW *endEdit = (NMCBEENDEDITW*) lParam;
391 if (endEdit->iWhy == CBENF_RETURN)
392 {
393 Execute(0);
394 }
395 else if (endEdit->iWhy == CBENF_ESCAPE)
396 {
397 /* Reset the contents of the combo box */
399 }
400 }
401 else if (hdr->code == CBEN_DELETEITEM)
402 {
404 LPITEMIDLIST itemPidl = (LPITEMIDLIST)pCBEx->ceItem.lParam;
405 if (itemPidl)
406 {
407 ILFree(itemPidl);
408 }
409 }
410 break;
411 }
412 }
413 return S_OK;
414}
415
417{
418 if (fCombobox.m_hWnd == hWnd)
419 return S_OK;
420 if (fEditWindow.m_hWnd == hWnd)
421 return S_OK;
422 return S_FALSE;
423}
424
426 const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText)
427{
428 return E_NOTIMPL;
429}
430
432 DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
433{
434 return E_NOTIMPL;
435}
436
438{
439 return E_NOTIMPL;
440}
441
443{
444 return E_NOTIMPL;
445}
446
448 REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
449{
450 return E_NOTIMPL;
451}
452
454 WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
455{
456 if (pDispParams == NULL)
457 return E_INVALIDARG;
458
459 switch (dispIdMember)
460 {
463 if (pidlLastParsed)
464 {
467 }
468
470 break;
471 }
472 return S_OK;
473}
474
476{
477 if (pClassID == NULL)
478 return E_POINTER;
479 *pClassID = CLSID_AddressEditBox;
480 return S_OK;
481}
482
484{
485 return E_NOTIMPL;
486}
487
489{
490 return E_NOTIMPL;
491}
492
494{
495 return E_NOTIMPL;
496}
497
499{
500 return E_NOTIMPL;
501}
502
504{
505 HRESULT hr;
506 LPITEMIDLIST pidl;
507 int indent = 0;
508 int index;
509
511 for (int i = 0; i < index; i++)
514
515 /* Calculate the indent level. No need to clone the pidl */
516 pidl = pidlCurrent;
517 do
518 {
519 if(!pidl->mkid.cb)
520 break;
521 pidl = ILGetNext(pidl);
522 indent++;
523 } while (pidl);
524 index = indent;
525
526 /* Add every id from the pidl in the combo box */
527 pidl = ILClone(pidlCurrent);
528 do
529 {
530 AddComboBoxItem(pidl, 0, index);
531 ILRemoveLastID(pidl);
532 index--;
533 } while (index >= 0);
534 ILFree(pidl);
535
536 /* Add the items of the desktop */
537 FillOneLevel(0, 1, indent);
538
539 /* Add the items of My Computer */
542 return;
543
545 {
546 if (ILIsEqual(i, pidl))
547 {
549 break;
550 }
551 index++;
552 }
553 ILFree(pidl);
554}
555
557{
558 HRESULT hr;
559 WCHAR buf[4096];
560
561 LPCITEMIDLIST pidlChild;
563 hr = SHBindToParent(pidl, IID_PPV_ARG(IShellFolder, &sf), &pidlChild);
565 return;
566
567 STRRET strret;
568 hr = sf->GetDisplayNameOf(pidlChild, SHGDN_FORADDRESSBAR, &strret);
570 return;
571
572 hr = StrRetToBufW(&strret, pidlChild, buf, 4095);
574 return;
575
576 COMBOBOXEXITEMW item = {0};
578 item.iImage = SHMapPIDLToSystemImageListIndex(sf, pidlChild, &item.iSelectedImage);
579 item.pszText = buf;
580 item.lParam = (LPARAM)(ILClone(pidl));
581 item.iIndent = indent;
582 item.iItem = index;
584}
585
586void CAddressEditBox::FillOneLevel(int index, int levelIndent, int indent)
587{
588 HRESULT hr;
589 ULONG numObj;
590 int count;
591 LPITEMIDLIST pidl, pidl2, pidl3, pidl4;
592
593 count = index + 1;
594 pidl = GetItemData(index);
595 pidl2 = GetItemData(count);
596 if(pidl)
597 {
598 CComPtr<IShellFolder> psfDesktop;
599 CComPtr<IShellFolder> psfItem;
600
601 hr = SHGetDesktopFolder(&psfDesktop);
603 return;
604
605 if (!pidl->mkid.cb)
606 {
607 psfItem = psfDesktop;
608 }
609 else
610 {
611 hr = psfDesktop->BindToObject(pidl, NULL, IID_PPV_ARG(IShellFolder, &psfItem));
613 return;
614 }
615
616 CComPtr<IEnumIDList> pEnumIDList;
617 hr = psfItem->EnumObjects(0, SHCONTF_FOLDERS | SHCONTF_INCLUDEHIDDEN, &pEnumIDList);
619 return;
620
621 do
622 {
623 hr = pEnumIDList->Next(1, &pidl3, &numObj);
624 if(hr != S_OK || !numObj)
625 break;
626
627 pidl4 = ILCombine(pidl, pidl3);
628 if (pidl2 && ILIsEqual(pidl4, pidl2))
629 count += (indent - levelIndent);
630 else
631 AddComboBoxItem(pidl4, count, levelIndent);
632 count++;
633 ILFree(pidl3);
634 ILFree(pidl4);
635 } while (true);
636 }
637}
638
640{
642
643 memset(&item, 0, sizeof(COMBOBOXEXITEMW));
644 item.mask = CBEIF_LPARAM;
645 item.iItem = index;
647 return (LPITEMIDLIST)item.lParam;
648}
649
651{
653 return NO_ERROR;
654}
#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
STDMETHOD() SetCurrentDir(long paramC) override
HRESULT GetAbsolutePidl(PIDLIST_ABSOLUTE *pAbsolutePIDL)
STDMETHOD() ParseNow(long paramC) override
CContainedWindow fCombobox
CComPtr< IUnknown > fSite
HRESULT STDMETHODCALLTYPE ShowFileNotFoundError(HRESULT hRet)
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
LPITEMIDLIST pidlLastParsed
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_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:182
#define IDS_PARSE_ADDR_ERR_TEXT
Definition: resource.h:183
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
static void cleanup(void)
Definition: main.c:1335
#define ShellMessageBoxW
Definition: precomp.h:59
void WINAPI SHFree(LPVOID pv)
Definition: shellole.c:326
HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, INT nFolder, LPITEMIDLIST *ppidl)
Definition: shellpath.c:3225
HRESULT WINAPI IUnknown_QueryService(IUnknown *, REFGUID, REFIID, LPVOID *)
Definition: ordinal.c:1497
HRESULT WINAPI SHInvokeDefaultCommand(HWND hWnd, IShellFolder *lpFolder, LPCITEMIDLIST lpApidl)
Definition: ordinal.c:3056
HRESULT WINAPI IUnknown_GetWindow(IUnknown *lpUnknown, HWND *lphWnd)
Definition: ordinal.c:1332
void WINAPI PathRemoveArgsW(LPWSTR lpszPath)
Definition: path.c:779
VOID WINAPI PathUnquoteSpacesW(LPWSTR lpszPath)
Definition: path.c:1034
BOOL WINAPI PathIsDirectoryW(LPCWSTR lpszPath)
Definition: path.c:1723
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:766
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:938
LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
Definition: pidl.c:712
BOOL WINAPI ILRemoveLastID(LPITEMIDLIST pidl)
Definition: pidl.c:221
HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast)
Definition: pidl.c:1361
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
Definition: pidl.c:1353
LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST pidl)
Definition: pidl.c:864
BOOL WINAPI ILIsEqual(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
Definition: pidl.c:548
#define CBEM_SETITEM
Definition: commctrl.h:3846
#define CBEN_ENDEDIT
Definition: commctrl.h:3885
#define CBEIF_IMAGE
Definition: commctrl.h:3787
#define CBENF_RETURN
Definition: commctrl.h:3888
#define WC_EDITW
Definition: commctrl.h:4687
#define CBEM_GETITEMW
Definition: commctrl.h:3843
#define CBEIF_SELECTEDIMAGE
Definition: commctrl.h:3788
#define WC_COMBOBOXEXW
Definition: commctrl.h:3781
#define CBEIF_TEXT
Definition: commctrl.h:3786
#define CBENF_ESCAPE
Definition: commctrl.h:3889
#define CBEM_DELETEITEM
Definition: commctrl.h:3831
#define CBEN_DELETEITEM
Definition: commctrl.h:3873
#define CBEIF_INDENT
Definition: commctrl.h:3790
#define CBEM_INSERTITEMW
Definition: commctrl.h:3841
#define CBEIF_LPARAM
Definition: commctrl.h:3791
#define PNMCOMBOBOXEX
Definition: commctrl.h:3868
#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:2391
HRESULT hr
Definition: shlfolder.c:183
#define SID_SShellBrowser
Definition: shlguid.h:128
#define CSIDL_DRIVES
Definition: shlobj.h:2174
HRESULT WINAPI SHAutoComplete(HWND hwndEdit, DWORD dwFlags)
Definition: autocomp.cpp:191
#define SHACF_FILESYSTEM
Definition: shlwapi.h:1912
#define SHACF_USETAB
Definition: shlwapi.h:1916
#define SHACF_URLALL
Definition: shlwapi.h:1915
DWORD WINAPI SHExpandEnvironmentStringsW(LPCWSTR, LPWSTR, DWORD)
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
Definition: shtypes.idl:42
#define _countof(array)
Definition: sndvol32.h:68
Definition: match.c:390
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:770
#define WM_COMMAND
Definition: winuser.h:1740
#define CB_RESETCONTENT
Definition: winuser.h:1959
#define CB_GETCOUNT
Definition: winuser.h:1942
#define CBN_SELCHANGE
Definition: winuser.h:1979
#define MB_ICONERROR
Definition: winuser.h:787
struct tagNMHDR * LPNMHDR
#define CB_GETITEMDATA
Definition: winuser.h:1950
#define MB_OK
Definition: winuser.h:790
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
#define CB_GETCURSEL
Definition: winuser.h:1943
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define IID_PPV_ARG(Itype, ppType)
__wchar_t WCHAR
Definition: xmlstorage.h:180