ReactOS 0.4.17-dev-1190-g4c812f4
internettoolbar.cpp
Go to the documentation of this file.
1/*
2 * ReactOS Explorer
3 *
4 * Copyright 2009 Andrew Hill <ash77 at domain reactos.org>
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20
21/*
22Implements a class that knows how to hold and manage the menu band, brand band,
23toolbar, and address band for an explorer window
24*/
25
26#include "precomp.h"
27
28#if 1
29
30interface IAugmentedShellFolder : public IShellFolder
31{
36};
37
38#endif
39
40// navigation controls and menubar just send a message to parent window
41/*
42TODO:
43****Implement BandProxy methods
44****Add QueryStatus handler for built-in bands
45****Enable/Disable up, search, and folders commands appropriately
46 **Why are explorer toolbar separators a nonstandard width?
47 **Remove "(Empty)" item from Favorites menu. Probably something missing in CMenuCallback::CallbackSM
48 **Chevron menu on menuband doesn't work
49 **Fix CInternetToolbar::QueryBand to be generic
50
51****Fix context menu to strip divider when menu shown for menu band
52****Fix context menu to have items checked appropriately
53****Implement -1 command id update
54****When bands are rearranged, resize the internet toolbar and fix height of brand band
55****Right clicking on the browse back and forward toolbar buttons displays the same as pulldown menus
56 Implement show/hide of bands
57 Why is the background color of my toolbars different from explorer?
58 Internet Toolbar command handler should get the target for the command and call Exec on the target.
59 For commands built in to the Internet Toolbar, its Exec handles the command
60 When window width is changed, brand band flashes badly
61 Add all bands with correct ids (system bands now add with correct ids)
62 Implement IBandSite
63 Implement remaining IExplorerToolbar methods
64 Fix toolbar buttons to enable/disable correctly
65 After toolbar is customized, it may be necessary to patch the widths of separators
66 Add theme support
67 Check sizes and spacing of toolbars against Explorer
68 Implement resizing of the dock bar
69 Add missing icons for toolbar items
70 Draw History item in forward/back dropdown menus with icon
71 Fix toolbar customize dialog to not include separators as possible selections
72 Implement save/restore of toolbar state
73 Refactor drop down menu code to use a common function since code is so similar
74*/
75
77
79{
80 static const UINT SIG = ('R' << 0) | ('O' << 8) | ('S' << 16) | (('i' ^ 't' ^ 'b') << 24);
82 UINT Signature; // Note: Windows has something else here (12 bytes)
86 UINT Throbber : 1; // toastytech.com/files/throboff.html
87 UINT Menubar : 1; // ..\Explorer\Advanced\AlwaysShowMenus for NT6?
88 // Note: Windows 8/10 stores the Ribbon state in ..\Explorer\Ribbon
89};
90
91static HRESULT SHELL_LoadShellLink(PCIDLIST_ABSOLUTE pidl, IShellLink **ppsl, DWORD stgm = STGM_READ)
92{
94 if (!SHGetPathFromIDListW(pidl, buf))
95 return E_FAIL;
97 HRESULT hr = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARG(IPersistFile, &ppf));
98 if (SUCCEEDED(hr))
99 hr = ppf->Load(buf, stgm);
100 return SUCCEEDED(hr) ? ppf->QueryInterface(IID_PPV_ARG(IShellLink, ppsl)) : hr;
101}
102
104{
106 HRESULT hr = SHELL_GetAbsolutePidl(psf, pidlChild, &pidl);
107 if (FAILED(hr))
108 return hr;
109 // TODO: Use BHID_LinkTargetItem instead when it's implemented
110 if (SHELL_GetAttributesOf(psf, pidlChild, SFGAO_LINK) & SFGAO_LINK)
111 {
112 PIDLIST_ABSOLUTE pidlTarget;
114 if (SUCCEEDED(SHELL_LoadShellLink(pidl, &psl)) && SUCCEEDED(psl->GetIDList(&pidlTarget)))
115 pidl.Attach(pidlTarget);
116 }
117 *ppidl = pidl.Detach();
118 return S_OK;
119}
120
121static HRESULT SHELL_BrowseObject(IShellBrowser *psb, IShellFolder *psf, LPCITEMIDLIST pidlChild, UINT BrowseFlags)
122{
124 HRESULT hr = SHELL_GetAbsolutePidlTryLinkTarget(psf, pidlChild, &pidl);
125 if (FAILED(hr))
126 return hr;
127 if (SHELL_GetAttributesOf(pidl, SFGAO_BROWSABLE | SFGAO_FOLDER) & (SFGAO_BROWSABLE | SFGAO_FOLDER))
128 return psb->BrowseObject(pidl, SBSP_ABSOLUTE | (BrowseFlags & ~SBSP_RELATIVE));
130}
131
133{
136 if (SUCCEEDED(hr))
137 hr = SHELL_BrowseObject(psb, psf, pidlChild, SBSP_SAMEBROWSER);
138 if (FAILED(hr))
139 hr = SHInvokeDefaultCommand(hWnd, psf, pidlChild);
140 return hr;
141}
142
144{
145 CComPtr<IWinEventHandler> menuWinEventHandler;
146 HRESULT hResult = punk->QueryInterface(IID_PPV_ARG(IWinEventHandler, &menuWinEventHandler));
147 if (FAILED_UNEXPECTEDLY(hResult))
148 return hResult;
149 hResult = menuWinEventHandler->IsWindowOwner(hWnd);
150 if (FAILED_UNEXPECTEDLY(hResult))
151 return hResult;
152 if (hResult == S_OK)
153 return menuWinEventHandler->OnWinEvent(hWnd, uMsg, wParam, lParam, theResult);
154 return S_FALSE;
155}
156
158{
159 CComPtr<IDockingWindow> dockingWindow;
160 HRESULT hResult = punk->QueryInterface(IID_PPV_ARG(IDockingWindow, &dockingWindow));
161 if (FAILED_UNEXPECTEDLY(hResult))
162 return hResult;
163 hResult = dockingWindow->ShowDW(fShow);
164 if (FAILED_UNEXPECTEDLY(hResult))
165 return hResult;
166 return S_OK;
167}
168
170{
171 CComPtr<IDockingWindow> dockingWindow;
172 HRESULT hResult = punk->QueryInterface(IID_PPV_ARG(IDockingWindow, &dockingWindow));
173 if (FAILED_UNEXPECTEDLY(hResult))
174 return hResult;
175 hResult = dockingWindow->CloseDW(dwReserved);
176 if (FAILED_UNEXPECTEDLY(hResult))
177 return hResult;
178 return S_OK;
179}
180
181class CInternetToolbar;
182
184 public CComObjectRootEx<CComMultiThreadModelNoCS>,
185 public IDockingWindowSite,
186 public IInputObjectSite,
187 public IOleCommandTarget,
188 public IServiceProvider
189{
190public:
191 enum {
196 ITF_FIXEDSIZE = 16
197 };
198private:
199 CComPtr<IUnknown> fContainedBand; // the band inside us
200 CInternetToolbar *fToolbar; // our browser
204public:
206private:
208 // fields of DESKBANDINFO must be preserved between calls to GetBandInfo
210public:
211 CDockSite();
212 ~CDockSite();
213 HRESULT Initialize(IUnknown *containedBand, CInternetToolbar *browser, HWND hwnd, int bandID, int flags);
215 IUnknown* GetContainedBand() const { return fContainedBand.p; } // Not ref. counted
216private:
217
218 // *** IOleWindow methods ***
219 STDMETHOD(GetWindow)(HWND *lphwnd) override;
220 STDMETHOD(ContextSensitiveHelp)(BOOL fEnterMode) override;
221
222 // *** IDockingWindowSite methods ***
223 STDMETHOD(GetBorderDW)(IUnknown* punkObj, LPRECT prcBorder) override;
224 STDMETHOD(RequestBorderSpaceDW)(IUnknown* punkObj, LPCBORDERWIDTHS pbw) override;
225 STDMETHOD(SetBorderSpaceDW)(IUnknown* punkObj, LPCBORDERWIDTHS pbw) override;
226
227 // *** IInputObjectSite specific methods ***
228 STDMETHOD(OnFocusChangeIS)(IUnknown *punkObj, BOOL fSetFocus) override;
229
230 // *** IOleCommandTarget specific methods ***
231 STDMETHOD(QueryStatus)(const GUID *pguidCmdGroup, ULONG cCmds,
232 OLECMD prgCmds[ ], OLECMDTEXT *pCmdText) override;
233 STDMETHOD(Exec)(const GUID *pguidCmdGroup, DWORD nCmdID,
234 DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut) override;
235
236 // *** IServiceProvider methods ***
237 STDMETHOD(QueryService)(REFGUID guidService, REFIID riid, void **ppvObject) override;
238
241 COM_INTERFACE_ENTRY_IID(IID_IDockingWindowSite, IDockingWindowSite)
242 COM_INTERFACE_ENTRY_IID(IID_IInputObjectSite, IInputObjectSite)
243 COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
244 COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
246};
247
249{
250 fToolbar = NULL;
253 fBandID = 0;
254 fFlags = 0;
255 fInitialized = false;
256 memset(&fDeskBandInfo, 0, sizeof(fDeskBandInfo));
257}
258
260{
261}
262
263HRESULT CDockSite::Initialize(IUnknown *containedBand, CInternetToolbar *browser, HWND hwnd, int bandID, int flags)
264{
265 TCHAR textBuffer[40];
267 HRESULT hResult;
268
269 fContainedBand = containedBand;
270 fToolbar = browser;
272 fBandID = bandID;
273 fFlags = flags;
274 hResult = IUnknown_SetSite(containedBand, static_cast<IOleWindow *>(this));
275 if (FAILED_UNEXPECTEDLY(hResult))
276 return hResult;
277 hResult = IUnknown_GetWindow(containedBand, &fChildWindow);
278 if (FAILED_UNEXPECTEDLY(hResult))
279 return hResult;
280
281 memset(&bandInfo, 0, sizeof(bandInfo));
282 bandInfo.cbSize = sizeof(bandInfo);
283 bandInfo.lpText = textBuffer;
284 bandInfo.cch = sizeof(textBuffer) / sizeof(TCHAR);
285 hResult = GetRBBandInfo(bandInfo);
286
289 fInitialized = true;
290 return S_OK;
291}
292
294{
295 CComPtr<IDeskBand> deskBand;
296 HRESULT hResult;
297
298 hResult = fContainedBand->QueryInterface(IID_PPV_ARG(IDeskBand, &deskBand));
299 if (FAILED_UNEXPECTEDLY(hResult))
300 return hResult;
301
302 fDeskBandInfo.dwMask = DBIM_BKCOLOR | DBIM_MODEFLAGS | DBIM_TITLE | DBIM_ACTUAL |
303 DBIM_INTEGRAL | DBIM_MAXSIZE | DBIM_MINSIZE;
304 hResult = deskBand->GetBandInfo(fBandID, 0, &fDeskBandInfo);
305 // result of call is ignored
306
309
310 bandInfo.fStyle = RBBS_FIXEDBMP;
311 if (fDeskBandInfo.dwModeFlags & DBIMF_VARIABLEHEIGHT)
313 if (fDeskBandInfo.dwModeFlags & DBIMF_USECHEVRON)
314 bandInfo.fStyle |= RBBS_USECHEVRON;
315 if (fDeskBandInfo.dwModeFlags & DBIMF_BREAK)
316 bandInfo.fStyle |= RBBS_BREAK;
317 if (fDeskBandInfo.dwModeFlags & DBIMF_TOPALIGN)
318 bandInfo.fStyle |= RBBS_TOPALIGN;
320 bandInfo.fStyle |= RBBS_NOGRIPPER;
321 if (fFlags & ITF_NOTITLE)
322 bandInfo.fStyle |= RBBS_HIDETITLE;
325 if (fFlags & ITF_FIXEDSIZE)
326 bandInfo.fStyle |= RBBS_FIXEDSIZE;
327
328 if (fDeskBandInfo.dwModeFlags & DBIMF_BKCOLOR)
329 {
330 bandInfo.fMask |= RBBIM_COLORS;
331 bandInfo.clrFore = CLR_DEFAULT;
333 }
335 bandInfo.hwndChild = fChildWindow;
336 bandInfo.cxMinChild = fDeskBandInfo.ptMinSize.x;
337 bandInfo.cyMinChild = fDeskBandInfo.ptMinSize.y;
338 bandInfo.wID = fBandID;
340 bandInfo.cyMaxChild = fDeskBandInfo.ptMaxSize.y;
341 bandInfo.cyIntegral = fDeskBandInfo.ptIntegral.y;
343 bandInfo.lParam = reinterpret_cast<LPARAM>(static_cast<CDockSite*>(this));
344 return S_OK;
345}
346
348{
349 if (lphwnd == NULL)
350 return E_POINTER;
351 *lphwnd = fRebarWindow;
352 return S_OK;
353}
354
356{
357 return E_NOTIMPL;
358}
359
361{
362 return E_NOTIMPL;
363}
364
366{
367 return E_NOTIMPL;
368}
369
371{
372 return E_NOTIMPL;
373}
374
376{
377 return E_NOTIMPL;
378}
379
381 OLECMD prgCmds[ ], OLECMDTEXT *pCmdText)
382{
383 return E_NOTIMPL;
384}
385
386HRESULT STDMETHODCALLTYPE CDockSite::Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt,
387 VARIANT *pvaIn, VARIANT *pvaOut)
388{
389 TCHAR textBuffer[40];
391 int index;
392 HRESULT hResult;
393
394 if (IsEqualIID(*pguidCmdGroup, CGID_DeskBand))
395 {
396 switch (nCmdID)
397 {
399 if (fInitialized == false)
400 return S_OK;
401 if (V_VT(pvaIn) != VT_I4)
402 return E_INVALIDARG;
403 if (V_I4(pvaIn) != fBandID)
404 return E_FAIL;
405 // deskband information changed
406 // call GetBandInfo and refresh information in rebar
407 memset(&bandInfo, 0, sizeof(bandInfo));
408 bandInfo.cbSize = sizeof(bandInfo);
409 bandInfo.lpText = textBuffer;
410 bandInfo.cch = sizeof(textBuffer) / sizeof(TCHAR);
411 hResult = GetRBBandInfo(bandInfo);
412 if (FAILED_UNEXPECTEDLY(hResult))
413 return hResult;
416 return S_OK;
417 }
418 }
419 return E_FAIL;
420}
421
423{
424 if (IsEqualIID(guidService, SID_SMenuBandParent))
425 return this->QueryInterface(riid, ppvObject);
426
427 return fToolbar->QueryService(guidService, riid, ppvObject);
428}
429
431{
432}
433
435{
436}
437
439{
440 HRESULT hr;
441 CComPtr<IShellFolder> psfDesktop;
442
443 *ppsfResult = NULL;
444
445 hr = SHGetDesktopFolder(&psfDesktop);
446 if (FAILED(hr))
447 return hr;
448
449 hr = psfDesktop->BindToObject(pidl, NULL, IID_PPV_ARG(IShellFolder, ppsfResult));
450
451 return hr;
452}
453
454static HRESULT GetFavoritesFolder(IShellFolder ** ppsfFavorites, LPITEMIDLIST * ppidl)
455{
456 HRESULT hr;
457 LPITEMIDLIST pidlUserFavorites;
458 LPITEMIDLIST pidlCommonFavorites;
459 CComPtr<IShellFolder> psfUserFavorites;
460 CComPtr<IShellFolder> psfCommonFavorites;
462
463 if (ppsfFavorites)
464 *ppsfFavorites = NULL;
465
466 if (ppidl)
467 *ppidl = NULL;
468
469 hr = SHGetSpecialFolderLocation(NULL, CSIDL_FAVORITES, &pidlUserFavorites);
470 if (FAILED(hr))
471 {
472 WARN("Failed to get the USER favorites folder. Trying to run with just the COMMON one.\n");
473
476 return hr;
477
478 TRACE("COMMON favorites obtained.\n");
479 *ppidl = pidlCommonFavorites;
480 hr = BindToDesktop(pidlCommonFavorites, ppsfFavorites);
481 return hr;
482 }
483
486 {
487 WARN("Failed to get the COMMON favorites folder. Will use only the USER contents.\n");
488 *ppidl = pidlCommonFavorites;
489 hr = BindToDesktop(pidlUserFavorites, ppsfFavorites);
490 return hr;
491 }
492
493 TRACE("Both COMMON and USER favorites folders obtained, merging them...\n");
494
495 hr = BindToDesktop(pidlUserFavorites, &psfUserFavorites);
497 return hr;
498
499 hr = BindToDesktop(pidlCommonFavorites, &psfCommonFavorites);
501 return hr;
502
503 hr = CMergedFolder_CreateInstance(IID_PPV_ARG(IAugmentedShellFolder, &pasf));
505 {
506 *ppsfFavorites = psfUserFavorites.Detach();
507 *ppidl = pidlUserFavorites;
508 ILFree(pidlCommonFavorites);
509 return hr;
510 }
511
512 hr = pasf->AddNameSpace(NULL, psfUserFavorites, pidlUserFavorites, 0xFF00);
514 return hr;
515
516 hr = pasf->AddNameSpace(NULL, psfCommonFavorites, pidlCommonFavorites, 0);
518 return hr;
519
520 hr = pasf->QueryInterface(IID_PPV_ARG(IShellFolder, ppsfFavorites));
521 pasf.Release();
522
523 // TODO: obtain the folder's PIDL
524
525 ILFree(pidlCommonFavorites);
526 ILFree(pidlUserFavorites);
527
528 return hr;
529}
530
532{
533 CComPtr<IShellMenu> parentMenu;
534 CComPtr<IShellMenu> newMenu;
535 CComPtr<IShellFolder> favoritesFolder;
536 LPITEMIDLIST favoritesPIDL;
537 HWND ownerWindow;
538 HMENU parentHMenu;
539 HMENU favoritesHMenu;
540 HKEY orderRegKey;
541 DWORD disposition;
542 HRESULT hResult;
543 static const TCHAR szFavoritesKey[] =
544 _T("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MenuOrder\\Favorites");
545
546 if (!IsEqualIID(riid, IID_IShellMenu))
547 return E_FAIL;
548 if (psmd->uId != FCIDM_MENU_FAVORITES)
549 return E_FAIL;
550
551 // create favorites menu
552 hResult = psmd->punk->QueryInterface(IID_PPV_ARG(IShellMenu, &parentMenu));
553 if (FAILED_UNEXPECTEDLY(hResult))
554 return hResult;
555 hResult = parentMenu->GetMenu(&parentHMenu, &ownerWindow, NULL);
556 if (FAILED_UNEXPECTEDLY(hResult))
557 return hResult;
558 favoritesHMenu = GetSubMenu(parentHMenu, 3);
559 if (favoritesHMenu == NULL)
560 return E_FAIL;
561
562 if (fFavoritesMenu.p == NULL)
563 {
564 hResult = CMenuBand_CreateInstance(IID_PPV_ARG(IShellMenu, &newMenu));
565 if (FAILED_UNEXPECTEDLY(hResult))
566 return hResult;
567 hResult = newMenu->Initialize(this, FCIDM_MENU_FAVORITES, -1, SMINIT_VERTICAL | SMINIT_CACHED);
568 if (FAILED_UNEXPECTEDLY(hResult))
569 return hResult;
570
571 RegCreateKeyEx(HKEY_CURRENT_USER, szFavoritesKey,
572 0, NULL, 0, KEY_READ | KEY_WRITE, NULL, &orderRegKey, &disposition);
573
574 hResult = GetFavoritesFolder(&favoritesFolder, &favoritesPIDL);
575 if (FAILED_UNEXPECTEDLY(hResult))
576 return hResult;
577
578 hResult = newMenu->SetShellFolder(favoritesFolder, favoritesPIDL, orderRegKey, SMSET_BOTTOM | SMSET_USEBKICONEXTRACTION | SMSET_HASEXPANDABLEFOLDERS);
579 if (favoritesPIDL)
580 ILFree(favoritesPIDL);
581
582 if (FAILED(hResult))
583 return hResult;
584
585 fFavoritesMenu = newMenu;
586 }
587
588 hResult = fFavoritesMenu->SetMenu(favoritesHMenu, ownerWindow, SMSET_TOP | SMSET_DONTOWN);
589 if (FAILED_UNEXPECTEDLY(hResult))
590 return hResult;
591
592 return fFavoritesMenu->QueryInterface(riid, ppvObject);
593}
594
596{
597 switch (uMsg)
598 {
599 case SMC_INITMENU:
600 break;
601 case SMC_CREATE:
602 break;
603 case SMC_EXITMENU:
604 break;
605 case SMC_GETINFO:
606 {
607 SMINFO *infoPtr = reinterpret_cast<SMINFO *>(lParam);
608 if ((infoPtr->dwMask & SMIM_FLAGS) != 0)
609 {
610 if (psmd->uId == FCIDM_MENU_FAVORITES)
611 {
612 infoPtr->dwFlags |= SMIF_DROPCASCADE;
613 }
614 else
615 {
616 infoPtr->dwFlags |= SMIF_TRACKPOPUP;
617 }
618 }
619 if ((infoPtr->dwMask & SMIM_ICON) != 0)
620 infoPtr->iIcon = -1;
621 return S_OK;
622 }
623 case SMC_GETSFINFO:
624 break;
625 case SMC_GETOBJECT:
626 return GetObject(psmd, *reinterpret_cast<IID *>(wParam), reinterpret_cast<void **>(lParam));
627 case SMC_GETSFOBJECT:
628 break;
629 case SMC_EXEC:
630 PostMessageW(psmd->hwnd, WM_COMMAND, psmd->uId, 0);
631 break;
632 case SMC_SFEXEC:
633 BrowseInplaceOrExecute(psmd->hwnd, psmd->psf, psmd->pidlItem, pSite);
634 break;
635 case SMC_SFSELECTITEM:
636 break;
637 case 13:
638 // return tooltip
639 break;
640 case SMC_REFRESH:
641 break;
642 case SMC_DEMOTE:
643 break;
644 case SMC_PROMOTE:
645 break;
646 case 0x13:
647 break;
648 case SMC_DEFAULTICON:
649 break;
650 case SMC_NEWITEM:
651 break;
652 case SMC_CHEVRONEXPAND:
653 break;
654 case SMC_DISPLAYCHEVRONTIP:
655 break;
656 case SMC_SETSFOBJECT:
657 break;
658 case SMC_SHCHANGENOTIFY:
659 break;
660 case SMC_CHEVRONGETTIP:
661 break;
662 case SMC_SFDDRESTRICTED:
663 break;
664 case 0x35:
665 break;
666 case 49:
667 break;
668 case 0x10000000:
669 break;
670 }
671 return S_FALSE;
672}
673
675{
681 fAdviseCookie = 0;
682 pSettings = NULL;
684}
685
687{
688 fMenuCallback->SetSite(NULL);
689}
690
691void CInternetToolbar::AddDockItem(IUnknown *newItem, int bandID, int flags)
692{
693 CComPtr<CDockSite> newSite;
694
695 newSite = new CComObject<CDockSite>;
696 newSite->Initialize(newItem, this, fMainReBar, bandID, flags);
697}
698
700{
701 REBARBANDINFOW rbbi;
702 rbbi.cbSize = sizeof(rbbi);
703 rbbi.fMask = RBBIM_ID | RBBIM_LPARAM;
704 rbbi.cch = 0;
707 *pBandId = rbbi.wID;
708 if (!rbbi.lParam)
709 return E_UNEXPECTED;
710 *ppUnkBand = ((CDockSite*)(rbbi.lParam))->GetContainedBand(); // Not ref. counted
711 return *ppUnkBand ? S_OK : S_FALSE;
712}
713
715{
716 IUnknown *pUnk; // Not ref. counted
717 int temp = (UINT) SendMessageW(fMainReBar, RB_IDTOINDEX, BandID, 0);
718 if (EnumBands(temp, &temp, &pUnk) == S_OK)
719 return pUnk->QueryInterface(riid, ppv);
720 *ppv = NULL;
721 return E_NOINTERFACE;
722}
723
725{
726 CComPtr<IDockingWindowSite> dockingWindowSite;
727 RECT availableBorderSpace;
728
729 HRESULT hResult = fSite->QueryInterface(IID_PPV_ARG(IDockingWindowSite, &dockingWindowSite));
730 if (FAILED_UNEXPECTEDLY(hResult))
731 return hResult;
732 hResult = dockingWindowSite->GetBorderDW(static_cast<IDockingWindow *>(this), &availableBorderSpace);
733 if (FAILED_UNEXPECTEDLY(hResult))
734 return hResult;
735
736 if (maxHeight && availableBorderSpace.bottom - availableBorderSpace.top > maxHeight)
737 {
738 availableBorderSpace.bottom = availableBorderSpace.top + maxHeight;
739 }
740
741 return ResizeBorderDW(&availableBorderSpace, fSite, FALSE);
742}
743
745{
746 CComPtr<IShellMenu> menubar;
748 VARIANT menuOut;
749 HWND ownerWindow;
750 HRESULT hResult;
751
752 if (!pMenuBar)
753 return E_POINTER;
754
755 *pMenuBar = NULL;
756
757 hResult = CMenuBand_CreateInstance(IID_PPV_ARG(IShellMenu, &menubar));
758 if (FAILED_UNEXPECTEDLY(hResult))
759 return hResult;
760
761 fMenuCallback->SetSite(static_cast<IObjectWithSite*>(this));
762 hResult = fMenuCallback->QueryInterface(IID_PPV_ARG(IShellMenuCallback, &callback));
763 if (FAILED_UNEXPECTEDLY(hResult))
764 return hResult;
765
766 hResult = menubar->Initialize(callback, -1, ANCESTORDEFAULT, SMINIT_HORIZONTAL | SMINIT_TOPLEVEL);
767 if (FAILED_UNEXPECTEDLY(hResult))
768 return hResult;
769
770 // Set Menu
771 {
772 hResult = IUnknown_Exec(fSite, CGID_Explorer, 0x35, 0, NULL, &menuOut);
773 if (FAILED_UNEXPECTEDLY(hResult))
774 return hResult;
775
776 if (V_VT(&menuOut) != VT_INT_PTR || V_INTREF(&menuOut) == NULL)
777 return E_FAIL;
778
779 hResult = IUnknown_GetWindow(fSite, &ownerWindow);
780 if (FAILED_UNEXPECTEDLY(hResult))
781 return hResult;
782
783 HMENU hMenuBar = (HMENU) V_INTREF(&menuOut);
784
785 // FIXME: Figure out the proper way to do this.
786 HMENU hMenuFavs = GetSubMenu(hMenuBar, 3);
787 if (hMenuFavs)
788 {
790 }
791
792 hResult = menubar->SetMenu(hMenuBar, ownerWindow, SMSET_DONTOWN);
793 if (FAILED_UNEXPECTEDLY(hResult))
794 return hResult;
795 }
796
797 hResult = IUnknown_Exec(menubar, CGID_MenuBand, 3, 1, NULL, NULL);
798 if (FAILED_UNEXPECTEDLY(hResult))
799 return hResult;
800
801 *pMenuBar = menubar.Detach();
802
803 return S_OK;
804}
805
807{
808 if (locked != !!pSettings->fLocked)
809 {
810 pSettings->fLocked = (BOOL)locked;
811 pSettings->Save();
813 }
814 return S_OK;
815}
816
818{
819 REBARBANDINFOW rebarBandInfo;
820 int bandCount;
821 CDockSite *dockSite;
822
823 rebarBandInfo.cbSize = sizeof(rebarBandInfo);
824 rebarBandInfo.fMask = RBBIM_STYLE | RBBIM_LPARAM;
825 bandCount = (int)SendMessage(fMainReBar, RB_GETBANDCOUNT, 0, 0);
826 for (INT x = 0; x < bandCount; x++)
827 {
828 SendMessage(fMainReBar, RB_GETBANDINFOW, x, (LPARAM)&rebarBandInfo);
829 dockSite = reinterpret_cast<CDockSite *>(rebarBandInfo.lParam);
830 if (dockSite != NULL)
831 {
832 rebarBandInfo.fStyle &= ~(RBBS_NOGRIPPER | RBBS_GRIPPERALWAYS);
833 if ((dockSite->fFlags & CDockSite::ITF_NOGRIPPER) || pSettings->fLocked)
834 rebarBandInfo.fStyle |= RBBS_NOGRIPPER;
836 rebarBandInfo.fStyle |= RBBS_GRIPPERALWAYS;
837 SendMessage(fMainReBar, RB_SETBANDINFOW, x, (LPARAM)&rebarBandInfo);
838 }
839 }
841}
842
843HRESULT CInternetToolbar::SetState(const GUID *pguidCmdGroup, long commandID, OLECMD* pcmd)
844{
845 long state = 0;
846 if (pcmd->cmdf & OLECMDF_ENABLED)
848 if (pcmd->cmdf & OLECMDF_LATCHED)
850 return SetState(pguidCmdGroup, commandID, state);
851}
852
854{
855 HRESULT hResult;
856
857 hResult = S_OK;
858 switch (commandID)
859 {
860 case -1:
861 // loop through buttons
862 //for buttons in CLSID_CommonButtons
863 // if up, QueryStatus for up state and update it
864 //
865 //for buttons in fCommandCategory, update with QueryStatus of fCommandTarget
866
867 OLECMD commandList[4];
868 commandList[0].cmdID = 0x1c;
869 commandList[1].cmdID = 0x1d;
870 commandList[2].cmdID = 0x1e;
871 commandList[3].cmdID = 0x23;
872 IUnknown_QueryStatus(fSite, CGID_Explorer, 4, commandList, NULL);
873 SetState(&CLSID_CommonButtons, gSearchCommandID, &commandList[0]);
874 SetState(&CLSID_CommonButtons, gFoldersCommandID, &commandList[3]);
875 //SetState(&CLSID_CommonButtons, gFavoritesCommandID, &commandList[2]);
876 //SetState(&CLSID_CommonButtons, gHistoryCommandID, &commandList[1]);
877
878 break;
879 case 1:
880 // forward
881 hResult = SetState(&CLSID_CommonButtons, IDM_GOTO_FORWARD, newValue ? TBSTATE_ENABLED : 0);
882 break;
883 case 2:
884 // back
885 hResult = SetState(&CLSID_CommonButtons, IDM_GOTO_BACK, newValue ? TBSTATE_ENABLED : 0);
886 break;
887 case 3:
888 // up
889 hResult = SetState(&CLSID_CommonButtons, IDM_GOTO_UPONELEVEL, newValue ? TBSTATE_ENABLED : 0);
890 break;
891 }
892 return hResult;
893}
894
896{
897 CComPtr<IServiceProvider> serviceProvider;
898 HRESULT hResult;
899
900 hResult = fSite->QueryInterface(IID_PPV_ARG(IServiceProvider, &serviceProvider));
901 if (FAILED_UNEXPECTEDLY(hResult))
902 return hResult;
903 hResult = serviceProvider->QueryService(SID_IBandProxy, IID_PPV_ARG(IBandProxy, &fBandProxy));
904 if (FAILED_UNEXPECTEDLY(hResult))
905 {
906 hResult = CBandProxy_CreateInstance(IID_PPV_ARG(IBandProxy, &fBandProxy));
907 if (FAILED_UNEXPECTEDLY(hResult))
908 return hResult;
909 hResult = fBandProxy->SetSite(fSite);
910 if (FAILED_UNEXPECTEDLY(hResult))
911 return hResult;
912 }
913 return S_OK;
914}
915
917{
918 return E_NOTIMPL;
919}
920
922{
924
925 if (fMenuBar)
927 if (hr != S_FALSE)
928 return hr;
929
930 if (fControlsBar)
932 if (hr != S_FALSE)
933 return hr;
934
935 if (fNavigationBar)
937 if (hr != S_FALSE)
938 return hr;
939
940 return S_FALSE;
941}
942
944{
946
947 if (fMenuBar)
949 if (hr == S_OK)
950 return hr;
951
952 if (fControlsBar)
954 if (hr == S_OK)
955 return hr;
956
957 if (fNavigationBar)
959 if (hr == S_OK)
960 return hr;
961
962 return S_FALSE;
963}
964
966{
967 if (lphwnd == NULL)
968 return E_POINTER;
969 *lphwnd = m_hWnd;
970 return S_OK;
971}
972
974{
975 return E_NOTIMPL;
976}
977
979{
980 HRESULT hResult;
981
982 // show the bar here
983 if (fShow)
984 {
985 hResult = ReserveBorderSpace();
986 if (FAILED_UNEXPECTEDLY(hResult))
987 return hResult;
988 }
989
990 // TODO: Why should showing the IDockingWindow change all bands? Related to CORE-17236 and CORE-19659.
991 int id;
992 IUnknown *pUnk;
993 for (UINT i = 0; SUCCEEDED(EnumBands(i, &id, &pUnk)); ++i)
994 {
995 if (!pUnk)
996 continue;
997 BOOL visible = fShow && IsBandVisible(id) != S_FALSE;
998 hResult = IUnknown_ShowDW(pUnk, visible);
999 FAILED_UNEXPECTEDLY(hResult);
1000 }
1001 return S_OK;
1002}
1003
1005{
1006 HRESULT hResult;
1007
1008 if (fMenuBar)
1009 {
1011 if (FAILED_UNEXPECTEDLY(hResult))
1012 return hResult;
1013 ReleaseCComPtrExpectZero(fMenuBar);
1014 }
1015 if (fControlsBar)
1016 {
1018 if (FAILED_UNEXPECTEDLY(hResult))
1019 return hResult;
1020 ReleaseCComPtrExpectZero(fControlsBar);
1021 }
1022 if (fNavigationBar)
1023 {
1025 if (FAILED_UNEXPECTEDLY(hResult))
1026 return hResult;
1027 ReleaseCComPtrExpectZero(fNavigationBar);
1028 }
1029 if (fLogoBar)
1030 {
1032 if (FAILED_UNEXPECTEDLY(hResult))
1033 return hResult;
1034 ReleaseCComPtrExpectZero(fLogoBar);
1035 }
1036
1037 SetSite(NULL);
1038 return S_OK;
1039}
1040
1042 IUnknown *punkToolbarSite, BOOL fReserved)
1043{
1044 RECT neededBorderSpace;
1045 RECT availableBorderSpace = *prcBorder;
1046
1047 SendMessage(fMainReBar, RB_SIZETORECT, RBSTR_CHANGERECT, reinterpret_cast<LPARAM>(&availableBorderSpace));
1048
1049 // RBSTR_CHANGERECT does not seem to set the proper size in the rect.
1050 // Let's make sure we fetch the actual size properly.
1051 ::GetWindowRect(fMainReBar, &availableBorderSpace);
1052 neededBorderSpace.left = 0;
1053 neededBorderSpace.top = availableBorderSpace.bottom - availableBorderSpace.top;
1054 if (!pSettings->fLocked)
1055 neededBorderSpace.top += 3;
1056 neededBorderSpace.right = 0;
1057 neededBorderSpace.bottom = 0;
1058
1059 CComPtr<IDockingWindowSite> dockingWindowSite;
1060
1061 HRESULT hResult = fSite->QueryInterface(IID_PPV_ARG(IDockingWindowSite, &dockingWindowSite));
1062 if (FAILED_UNEXPECTEDLY(hResult))
1063 return hResult;
1064
1065 hResult = dockingWindowSite->RequestBorderSpaceDW(static_cast<IDockingWindow *>(this), &neededBorderSpace);
1066 if (FAILED_UNEXPECTEDLY(hResult))
1067 return hResult;
1068
1069 hResult = dockingWindowSite->SetBorderSpaceDW(static_cast<IDockingWindow *>(this), &neededBorderSpace);
1070 if (FAILED_UNEXPECTEDLY(hResult))
1071 return hResult;
1072
1073 return S_OK;
1074}
1075
1077{
1078 if (pClassID == NULL)
1079 return E_POINTER;
1080 *pClassID = CLSID_InternetToolbar;
1081 return S_OK;
1082}
1083
1085{
1086 if (fIgnoreChanges)
1087 return S_OK;
1088 IUnknown_Exec(fSite, CGID_ShellBrowser, IDM_NOTIFYITBARDIRTY, 0, NULL, NULL);
1089 return S_OK;
1090}
1091
1093{
1094 return E_NOTIMPL;
1095}
1096
1098{
1100 HRESULT hr = InitNew();
1102 if (SUCCEEDED(hr))
1103 {
1104 hr = S_FALSE;
1105 ULONG cb = sizeof(state);
1106 if (pStm->Read(&state, cb, &cb) == S_OK && state.Signature == state.SIG)
1107 {
1111 //SetBandVisibility(ITBBID_?, state.Linksbar);
1112 //SetBandVisibility(ITBBID_?, state.Throbber);
1113 hr = S_OK;
1114 }
1115 }
1117 return hr;
1118}
1119
1121{
1122 ITBARSTATE state = { sizeof(state), state.SIG };
1124 state.StdToolbar = IsBandVisible(ITBBID_TOOLSBAND) == S_OK;
1125 state.Addressbar = IsBandVisible(ITBBID_ADDRESSBAND) == S_OK;
1126 state.Linksbar = FALSE;
1127 return pStm->Write(&state, sizeof(state), NULL);
1128}
1129
1131{
1132 return E_NOTIMPL;
1133}
1134
1136{
1137 CComPtr<IShellMenu> menuBar;
1138 CComPtr<IUnknown> logoBar;
1139 CComPtr<IUnknown> toolsBar;
1140 CComPtr<IUnknown> navigationBar;
1141 HRESULT hResult;
1142
1143 /* Create and attach the menubar to the rebar */
1144 hResult = CreateMenuBar(&menuBar);
1145 if (FAILED_UNEXPECTEDLY(hResult))
1146 return hResult;
1148
1149 hResult = IUnknown_GetWindow(menuBar, &fMenuBandWindow);
1150 fMenuBar.Attach(menuBar.Detach()); // transfer the ref count
1151
1152 // FIXME: The ROS Rebar does not properly support fixed-size items such as the brandband,
1153 // and it will put them in their own row, sized to take up the whole row.
1154#if 0
1155 /* Create and attach the brand/logo to the rebar */
1156 hResult = CBrandBand_CreateInstance(IID_PPV_ARG(IUnknown, &logoBar));
1157 if (FAILED_UNEXPECTEDLY(hResult))
1158 return hResult;
1160 fLogoBar.Attach(logoBar.Detach()); // transfer the ref count
1161#endif
1162
1163 /* Create and attach the standard toolbar to the rebar */
1164 hResult = CToolsBand_CreateInstance(IID_PPV_ARG(IUnknown, &toolsBar));
1165 if (FAILED_UNEXPECTEDLY(hResult))
1166 return hResult;
1168 fControlsBar.Attach(toolsBar.Detach()); // transfer the ref count
1170 if (FAILED_UNEXPECTEDLY(hResult))
1171 return hResult;
1172
1173 /* Create and attach the address/navigation toolbar to the rebar */
1174 hResult = CAddressBand_CreateInstance(IID_PPV_ARG(IUnknown, &navigationBar));
1175 if (FAILED_UNEXPECTEDLY(hResult))
1176 return hResult;
1178 fNavigationBar.Attach(navigationBar.Detach());
1180
1181 return S_OK;
1182}
1183
1185{
1186 int index = (int)SendMessage(fMainReBar, RB_IDTOINDEX, BandID, 0);
1187
1190
1191 return (bandInfo.fStyle & RBBS_HIDDEN) ? S_FALSE : S_OK;
1192}
1193
1195{
1196 int index = (int)SendMessage(fMainReBar, RB_IDTOINDEX, BandID, 0);
1199 return E_FAIL;
1200
1201 if (Show < 0)
1202 bandInfo.fStyle ^= RBBS_HIDDEN; // Toggle
1203 else if (Show)
1204 bandInfo.fStyle &= ~RBBS_HIDDEN;
1205 else
1206 bandInfo.fStyle |= RBBS_HIDDEN;
1207
1208 bandInfo.fMask &= ~RBBIM_CHILD;
1209 ::ShowWindow(bandInfo.hwndChild, (bandInfo.fStyle & RBBS_HIDDEN) ? SW_HIDE : SW_SHOW); // CORE-17236
1211
1213 SetDirty();
1214 return S_OK;
1215}
1216
1218{
1219 return SetBandVisibility(BandID, -1);
1220}
1221
1223 ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText)
1224{
1225 if (IsEqualIID(*pguidCmdGroup, CGID_PrivCITCommands))
1226 {
1227 while (cCmds != 0)
1228 {
1229 switch (prgCmds->cmdID)
1230 {
1231 case ITID_TEXTLABELS: // Text Labels state
1232 prgCmds->cmdf = OLECMDF_SUPPORTED;
1233 break;
1234 case ITID_TOOLBARBANDSHOWN: // toolbar visibility
1237 prgCmds->cmdf |= OLECMDF_LATCHED;
1238 break;
1239 case ITID_ADDRESSBANDSHOWN: // address bar visibility
1242 prgCmds->cmdf |= OLECMDF_LATCHED;
1243 break;
1244 case ITID_LINKSBANDSHOWN: // links bar visibility
1245 prgCmds->cmdf = 0;
1246 break;
1247 case ITID_MENUBANDSHOWN: // Menubar band visibility
1248 prgCmds->cmdf = OLECMDF_SUPPORTED;
1250 prgCmds->cmdf |= OLECMDF_LATCHED;
1251 break;
1252 case ITID_AUTOHIDEENABLED: // Auto hide enabled/disabled
1253 prgCmds->cmdf = 0;
1254 break;
1255 case ITID_CUSTOMIZEENABLED: // customize enabled
1256 prgCmds->cmdf = OLECMDF_SUPPORTED;
1257 break;
1258 case ITID_TOOLBARLOCKED: // lock toolbars
1260 if (pSettings->fLocked)
1261 prgCmds->cmdf |= OLECMDF_LATCHED;
1262 break;
1263 default:
1264 prgCmds->cmdf = 0;
1265 break;
1266 }
1267 prgCmds++;
1268 cCmds--;
1269 }
1270 return S_OK;
1271 }
1272 return E_FAIL;
1273}
1274
1276 DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
1277{
1278 if (IsEqualIID(*pguidCmdGroup, CGID_PrivCITCommands))
1279 {
1280 switch (nCmdID)
1281 {
1282 case 1:
1283 // what do I do here?
1284 return S_OK;
1285 case ITID_TEXTLABELS:
1286 // toggle text labels
1287 return S_OK;
1290 case ITID_MENUBANDSHOWN:
1295 // toggle links band visibility
1296 return S_OK;
1298 // run customize
1299 return S_OK;
1300 case ITID_TOOLBARLOCKED:
1302 }
1303 }
1304 return E_FAIL;
1305}
1306
1308{
1309 return E_NOTIMPL;
1310}
1311
1313{
1314 return E_NOTIMPL;
1315}
1316
1318 LCID lcid, DISPID *rgDispId)
1319{
1320 return E_NOTIMPL;
1321}
1322
1324 WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
1325{
1326 HRESULT hResult;
1327
1328 switch(dispIdMember)
1329 {
1331 hResult = S_OK;
1332 break;
1334 hResult = S_OK;
1335 break;
1337 if (pDispParams->cArgs != 2)
1338 return E_INVALIDARG;
1339 if (V_VT(&pDispParams->rgvarg[0]) != VT_BOOL || V_VT(&pDispParams->rgvarg[1]) != VT_I4)
1340 return E_INVALIDARG;
1341 return CommandStateChanged(V_BOOL(&pDispParams->rgvarg[0]) != VARIANT_FALSE,
1342 V_I4(&pDispParams->rgvarg[1]));
1344 hResult = S_OK;
1345 break;
1347 hResult = S_OK;
1348 break;
1350 hResult = S_OK;
1351 break;
1352 }
1353 return S_OK;
1354}
1355
1357{
1358 HRESULT hResult;
1359
1360 TRACE("SetCommandTarget %p category %s param %d\n", theTarget, wine_dbgstr_guid(category), param14);
1361
1362 fCommandTarget.Release();
1364 if (FAILED_UNEXPECTEDLY(hResult))
1365 return hResult;
1367 return S_OK;
1368}
1369
1371{
1372 return E_NOTIMPL;
1373}
1374
1376{
1377 return E_NOTIMPL;
1378}
1379
1381 HINSTANCE param10, LPCTSTR param14, long *param18)
1382{
1383 long result;
1384
1386 reinterpret_cast<WPARAM>(param10), reinterpret_cast<LPARAM>(param14));
1387 *param18 = result;
1388 if (result == -1)
1389 return E_FAIL;
1390 return S_OK;
1391}
1392
1393HRESULT STDMETHODCALLTYPE CInternetToolbar::GetButton(const GUID *pguidCmdGroup, long param10, long param14)
1394{
1395 return E_NOTIMPL;
1396}
1397
1398HRESULT STDMETHODCALLTYPE CInternetToolbar::GetState(const GUID *pguidCmdGroup, long commandID, long *theState)
1399{
1400 if (theState == NULL)
1401 return E_POINTER;
1402 // map the command id
1403 *theState = (long)::SendMessage(fToolbarWindow, TB_GETSTATE, commandID, 0);
1404 return S_OK;
1405}
1406
1407HRESULT STDMETHODCALLTYPE CInternetToolbar::SetState(const GUID *pguidCmdGroup, long commandID, long theState)
1408{
1409 // map the command id
1410 ::SendMessage(fToolbarWindow, TB_SETSTATE, commandID, MAKELONG(theState, 0));
1411 return S_OK;
1412}
1413
1414HRESULT STDMETHODCALLTYPE CInternetToolbar::AddBitmap(const GUID *pguidCmdGroup, long param10, long buttonCount,
1415 TBADDBITMAP *lParam, long *newIndex, COLORREF param20)
1416{
1417 return E_NOTIMPL;
1418}
1419
1421{
1422 if (paramC == NULL)
1423 return E_POINTER;
1424 *paramC = MAKELONG(24, 24);
1425 return S_OK;
1426}
1427
1430{
1431 if (fToolbarWindow)
1432 {
1434 if (result)
1435 *result = res;
1436 return S_OK;
1437 }
1438 return E_NOTIMPL;
1439}
1440
1442 HIMAGELIST param14, HIMAGELIST param18)
1443{
1444 return E_NOTIMPL;
1445}
1446
1447HRESULT STDMETHODCALLTYPE CInternetToolbar::ModifyButton(const GUID *pguidCmdGroup, long param10, long param14)
1448{
1449 return E_NOTIMPL;
1450}
1451
1453{
1454 return E_NOTIMPL;
1455}
1456
1458{
1459 CComPtr<IBrowserService> browserService;
1460 HWND ownerWindow;
1461 HWND dockContainer;
1462 HRESULT hResult;
1463
1464 if (pUnkSite == NULL)
1465 {
1466 hResult = AtlUnadvise(fSite, DIID_DWebBrowserEvents, fAdviseCookie);
1468 DestroyWindow();
1469 fSite.Release();
1470 }
1471 else
1472 {
1473 // get window handle of owner
1474 hResult = IUnknown_GetWindow(pUnkSite, &ownerWindow);
1475 if (FAILED_UNEXPECTEDLY(hResult))
1476 return hResult;
1477 if (ownerWindow == NULL)
1478 return E_FAIL;
1479
1480 // Get settings from owner window
1482
1483 // create dock container
1484 fSite = pUnkSite;
1485 dockContainer = SHCreateWorkerWindowW(0, ownerWindow, 0,
1487 if (dockContainer == NULL)
1488 return E_FAIL;
1489 SubclassWindow(dockContainer);
1490
1491 // create rebar in dock container
1497 0, 0, 700, 60, dockContainer, NULL, _AtlBaseModule.GetModuleInstance(), NULL);
1498 if (fMainReBar == NULL)
1499 return E_FAIL;
1500
1501 // take advice to watch events
1502 hResult = IUnknown_QueryService(pUnkSite, SID_SShellBrowser, IID_PPV_ARG(IBrowserService, &browserService));
1503 hResult = AtlAdvise(browserService, static_cast<IDispatch *>(this), DIID_DWebBrowserEvents, &fAdviseCookie);
1504 }
1505 return S_OK;
1506}
1507
1509{
1510 if (ppvSite == NULL)
1511 return E_POINTER;
1512 if (fSite.p != NULL)
1513 return fSite->QueryInterface(riid, ppvSite);
1514 *ppvSite = NULL;
1515 return S_OK;
1516}
1517
1519{
1520 HRESULT hResult;
1521
1522 if (IsEqualIID(guidService, IID_IBandSite))
1523 return this->QueryInterface(riid, ppvObject);
1524 if (IsEqualIID(guidService, SID_IBandProxy))
1525 {
1526 if (fBandProxy.p == NULL)
1527 {
1528 hResult = CreateAndInitBandProxy();
1529 if (FAILED_UNEXPECTEDLY(hResult))
1530 return hResult;
1531 }
1532 return fBandProxy->QueryInterface(riid, ppvObject);
1533 }
1534 return IUnknown_QueryService(fSite, guidService, riid, ppvObject);
1535}
1536
1538 HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult)
1539{
1540 HRESULT hResult;
1541
1542 if (fMenuBar)
1543 {
1544 hResult = IUnknown_RelayWinEvent(fMenuBar, hWnd, uMsg, wParam, lParam, theResult);
1545 if (hResult != S_FALSE)
1546 return hResult;
1547 }
1548
1549 if (fNavigationBar)
1550 {
1551 hResult = IUnknown_RelayWinEvent(fNavigationBar, hWnd, uMsg, wParam, lParam, theResult);
1552 if (hResult != S_FALSE)
1553 return hResult;
1554 }
1555
1556 if (fLogoBar)
1557 {
1558 hResult = IUnknown_RelayWinEvent(fLogoBar, hWnd, uMsg, wParam, lParam, theResult);
1559 if (hResult != S_FALSE)
1560 return hResult;
1561 }
1562
1563 return S_FALSE;
1564}
1565
1567{
1569 return E_NOTIMPL;
1570}
1571
1573{
1575 return E_NOTIMPL;
1576}
1577
1579{
1580 if (uBand == ~0ul)
1581 return ::SendMessage(fMainReBar, RB_GETBANDCOUNT, 0, 0);
1582 int id;
1583 IUnknown *pUnkUnused;
1584 HRESULT hr = EnumBands(uBand, &id, &pUnkUnused);
1585 if (SUCCEEDED(hr))
1586 *pdwBandID = id;
1587 return hr;
1588}
1589
1591 IDeskBand **ppstb, DWORD *pdwState, LPWSTR pszName, int cchName)
1592{
1593 if (ppstb == NULL)
1594 return E_POINTER;
1595 if (dwBandID == ITBBID_MENUBAND && fMenuBar.p != NULL)
1596 return fMenuBar->QueryInterface(IID_PPV_ARG(IDeskBand, ppstb));
1597 //if (dwBandID == ITBBID_BRANDBAND && fLogoBar.p != NULL)
1598 // return fLogoBar->QueryInterface(IID_PPV_ARG(IDeskBand, ppstb));
1599 *ppstb = NULL;
1600 return E_FAIL;
1601}
1602
1604{
1606 return E_NOTIMPL;
1607}
1608
1610{
1612 return E_NOTIMPL;
1613}
1614
1616{
1618 return E_NOTIMPL;
1619}
1620
1622{
1624 return E_NOTIMPL;
1625}
1626
1628{
1630 return E_NOTIMPL;
1631}
1632
1633LRESULT CInternetToolbar::OnTravelBack(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
1634{
1635 CComPtr<IWebBrowser> webBrowser;
1636 HRESULT hResult;
1637
1638 hResult = IUnknown_QueryService(fSite, SID_SShellBrowser, IID_PPV_ARG(IWebBrowser, &webBrowser));
1639 if (FAILED_UNEXPECTEDLY(hResult))
1640 return 0;
1641 hResult = webBrowser->GoBack();
1642 return 1;
1643}
1644
1645LRESULT CInternetToolbar::OnTravelForward(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
1646{
1647 CComPtr<IWebBrowser> webBrowser;
1648 HRESULT hResult;
1649
1650 hResult = IUnknown_QueryService(fSite, SID_SShellBrowser, IID_PPV_ARG(IWebBrowser, &webBrowser));
1651 if (FAILED_UNEXPECTEDLY(hResult))
1652 return 0;
1653 hResult = webBrowser->GoForward();
1654 return 1;
1655}
1656
1657LRESULT CInternetToolbar::OnUpLevel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
1658{
1659 IUnknown_Exec(fSite, CGID_ShellBrowser, IDM_GOTO_UPONELEVEL, 0, NULL, NULL);
1660 return 1;
1661}
1662
1663LRESULT CInternetToolbar::OnSearch(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
1664{
1665 IUnknown_Exec(fSite, CGID_Explorer, 0x1c, 1, NULL, NULL);
1666 return 1;
1667}
1668
1669LRESULT CInternetToolbar::OnFolders(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
1670{
1671 IUnknown_Exec(fSite, CGID_Explorer, 0x23, 0, NULL, NULL);
1672 return 1;
1673}
1674
1676{
1677 HRESULT hResult;
1678
1679 if (fCommandTarget.p != NULL)
1680 {
1681 hResult = fCommandTarget->Exec(&fCommandCategory, wID, 0, NULL, NULL);
1682 if (FAILED(hResult))
1683 {
1684 ::SendMessageW(::GetParent(m_hWnd), WM_COMMAND, wID, 0);
1685 }
1686 }
1687 return 1;
1688}
1689
1691{
1692 CComPtr<IBrowserService> browserService;
1693 CComPtr<IOleCommandTarget> commandTarget;
1694 CComPtr<ITravelLog> travelLog;
1695 NMTOOLBARW *notifyInfo;
1696 RECT bounds;
1697 HMENU newMenu;
1699 int selectedItem;
1700 VARIANT parmIn;
1701 OLECMD commandInfo;
1702 HRESULT hResult;
1703 wchar_t templateString[200];
1704
1705 notifyInfo = (NMTOOLBARW *)pNMHDR;
1706 if (notifyInfo->hdr.hwndFrom != fToolbarWindow)
1707 {
1708 // not from the toolbar, keep looking for a message handler
1709 bHandled = FALSE;
1710 return 0;
1711 }
1712 SendMessage(fToolbarWindow, TB_GETRECT, notifyInfo->iItem, reinterpret_cast<LPARAM>(&bounds));
1713 ::MapWindowPoints(fToolbarWindow, NULL, reinterpret_cast<POINT *>(&bounds), 2);
1714 switch (notifyInfo->iItem)
1715 {
1716 case IDM_GOTO_BACK:
1717 newMenu = CreatePopupMenu();
1719 hResult = browserService->GetTravelLog(&travelLog);
1720 hResult = travelLog->InsertMenuEntries(browserService, newMenu, 0, 1, 9, TLMENUF_BACK);
1721 commandInfo.cmdID = 0x1d;
1722 hResult = IUnknown_QueryStatus(browserService, CGID_Explorer, 1, &commandInfo, NULL);
1723 if ((commandInfo.cmdf & (OLECMDF_ENABLED | OLECMDF_LATCHED)) == OLECMDF_ENABLED &&
1724 travelLog->CountEntries(browserService) > 1)
1725 {
1726 AppendMenuW(newMenu, MF_SEPARATOR, -1, L"");
1727
1728 if (LoadStringW(_AtlBaseModule.GetResourceInstance(),
1729 IDS_HISTORYTEXT, templateString, sizeof(templateString) / sizeof(wchar_t)) == 0)
1730 StringCbCopyW(templateString, sizeof(templateString), L"&History\tCtrl+H");
1731
1732 AppendMenuW(newMenu, MF_STRING /* | MF_OWNERDRAW */, IDM_EXPLORERBAR_HISTORY, templateString);
1733 }
1734 params.cbSize = sizeof(params);
1735 params.rcExclude = bounds;
1736 selectedItem = TrackPopupMenuEx(newMenu, TPM_LEFTALIGN | TPM_TOPALIGN | TPM_RETURNCMD,
1737 bounds.left, bounds.bottom, m_hWnd, &params);
1738 if (selectedItem == IDM_EXPLORERBAR_HISTORY)
1739 {
1740 V_VT(&parmIn) = VT_I4;
1741 V_I4(&parmIn) = 1;
1742 Exec(&CGID_Explorer, 0x1d, 2, &parmIn, NULL);
1743 }
1744 else if (selectedItem != 0)
1745 hResult = travelLog->Travel(browserService, -selectedItem);
1746 DestroyMenu(newMenu);
1747 break;
1748 case IDM_GOTO_FORWARD:
1749 newMenu = CreatePopupMenu();
1751 hResult = browserService->GetTravelLog(&travelLog);
1752 hResult = travelLog->InsertMenuEntries(browserService, newMenu, 0, 1, 9, TLMENUF_FORE);
1753 commandInfo.cmdID = 0x1d;
1754 hResult = IUnknown_QueryStatus(browserService, CGID_Explorer, 1, &commandInfo, NULL);
1755 if ((commandInfo.cmdf & (OLECMDF_ENABLED | OLECMDF_LATCHED)) == OLECMDF_ENABLED &&
1756 travelLog->CountEntries(browserService) > 1)
1757 {
1758 AppendMenuW(newMenu, MF_SEPARATOR, -1, L"");
1759
1760 if (LoadStringW(_AtlBaseModule.GetResourceInstance(),
1761 IDS_HISTORYTEXT, templateString, sizeof(templateString) / sizeof(wchar_t)) == 0)
1762 StringCbCopyW(templateString, sizeof(templateString), L"&History\tCtrl+H");
1763
1764 AppendMenuW(newMenu, MF_STRING /* | MF_OWNERDRAW */, IDM_EXPLORERBAR_HISTORY, templateString);
1765 }
1766 params.cbSize = sizeof(params);
1767 params.rcExclude = bounds;
1768 selectedItem = TrackPopupMenuEx(newMenu, TPM_LEFTALIGN | TPM_TOPALIGN | TPM_RETURNCMD,
1769 bounds.left, bounds.bottom, m_hWnd, &params);
1770 if (selectedItem == IDM_EXPLORERBAR_HISTORY)
1771 {
1772 V_VT(&parmIn) = VT_I4;
1773 V_I4(&parmIn) = 1;
1774 Exec(&CGID_Explorer, 0x1d, 2, &parmIn, NULL);
1775 }
1776 else if (selectedItem != 0)
1777 hResult = travelLog->Travel(browserService, selectedItem);
1778 DestroyMenu(newMenu);
1779 break;
1780 case gViewsCommandID:
1781 VARIANT inValue;
1782 CComVariant outValue;
1783 HRESULT hResult;
1784
1785 V_VT(&inValue) = VT_INT_PTR;
1786 V_INTREF(&inValue) = reinterpret_cast<INT *>(&bounds);
1787
1788 if (fCommandTarget.p != NULL)
1789 hResult = fCommandTarget->Exec(&fCommandCategory, FCIDM_SHVIEW_AUTOARRANGE, 1, &inValue, &outValue);
1790 // pvaOut is VT_I4 with value 0x403
1791 break;
1792 }
1793 return TBDDRET_DEFAULT;
1794}
1795
1797{
1798 return 1;
1799}
1800
1802{
1803 return 1;
1804}
1805
1807{
1808 HMENU contextMenuBar;
1809 HMENU contextMenu;
1810 POINT clickLocation;
1811 int command;
1812 RBHITTESTINFO hitTestInfo;
1813 REBARBANDINFOW rebarBandInfo;
1814 int bandID;
1815 CComPtr<IAddressBand> pAddress;
1816
1817 clickLocation.x = LOWORD(lParam);
1818 clickLocation.y = HIWORD(lParam);
1819 hitTestInfo.pt = clickLocation;
1820 ScreenToClient(&hitTestInfo.pt);
1821 SendMessage(fMainReBar, RB_HITTEST, 0, (LPARAM)&hitTestInfo);
1822 if (hitTestInfo.iBand == -1)
1823 return 0;
1824
1825 rebarBandInfo.cbSize = sizeof(rebarBandInfo);
1826 rebarBandInfo.fMask = RBBIM_ID;
1827 SendMessage(fMainReBar, RB_GETBANDINFOW, hitTestInfo.iBand, (LPARAM)&rebarBandInfo);
1828 bandID = rebarBandInfo.wID;
1829 contextMenuBar = LoadMenu(_AtlBaseModule.GetResourceInstance(), MAKEINTRESOURCE(IDM_CABINET_CONTEXTMENU));
1830 contextMenu = GetSubMenu(contextMenuBar, 0);
1831 switch (bandID)
1832 {
1833 case ITBBID_MENUBAND: // menu band
1837 break;
1838 case ITBBID_BRANDBAND: // brand band
1842 break;
1843 case ITBBID_TOOLSBAND: // tools band
1846 break;
1847 case ITBBID_ADDRESSBAND: // navigation band
1850 QIBand(ITBBID_ADDRESSBAND, IID_PPV_ARG(IAddressBand, &pAddress));
1852 break;
1853 default:
1854 break;
1855 }
1856
1858
1865
1866 // TODO: use GetSystemMetrics(SM_MENUDROPALIGNMENT) to determine menu alignment
1868 clickLocation.x, clickLocation.y, 0, m_hWnd, NULL);
1869 switch (command)
1870 {
1871 case IDM_TOOLBARS_STANDARDBUTTONS: // standard buttons
1873 break;
1874 case IDM_TOOLBARS_ADDRESSBAR: // address bar
1876 break;
1877 case IDM_TOOLBARS_LINKSBAR: // links
1878 break;
1879 case IDM_TOOLBARS_LOCKTOOLBARS: // lock the toolbars
1881 break;
1882 case IDM_TOOLBARS_CUSTOMIZE: // customize
1884 break;
1887 break;
1888 }
1889
1890 DestroyMenu(contextMenuBar);
1891 return 1;
1892}
1893
1895{
1896 if (wParam != SIZE_MINIMIZED)
1897 {
1900 }
1901 return 1;
1902}
1903
1905{
1906 if ((short)lParam != HTCLIENT || (HWND)wParam != m_hWnd)
1907 {
1908 bHandled = FALSE;
1909 return 0;
1910 }
1912 return 1;
1913}
1914
1915LRESULT CInternetToolbar::OnTipText(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled)
1916{
1917 CComPtr<IBrowserService> browserService;
1918 CComPtr<ITravelLog> travelLog;
1919 TOOLTIPTEXTW *pTTTW;
1920 UINT nID;
1921 HRESULT hResult;
1922 wchar_t tempString[300];
1923
1924 pTTTW = reinterpret_cast<TOOLTIPTEXTW *>(pNMHDR);
1925 if ((pTTTW->uFlags & TTF_IDISHWND) != 0)
1926 nID = ::GetDlgCtrlID((HWND)pNMHDR->idFrom);
1927 else
1928 nID = (UINT)pNMHDR->idFrom;
1929
1930 if (nID != 0)
1931 {
1932 if (nID == (UINT)IDM_GOTO_BACK || nID == (UINT)IDM_GOTO_FORWARD)
1933 {
1934 // TODO: Should this call QueryService?
1935 hResult = fSite->QueryInterface(IID_PPV_ARG(IBrowserService, &browserService));
1936 hResult = browserService->GetTravelLog(&travelLog);
1937 hResult = travelLog->GetToolTipText(browserService,
1938 (nID == (UINT)IDM_GOTO_BACK) ? TLOG_BACK : TLOG_FORE,
1939 0, tempString, 299);
1940 if (FAILED_UNEXPECTEDLY(hResult))
1941 {
1942 bHandled = FALSE;
1943 return 0;
1944 }
1945 }
1946 else
1947 tempString[0] = 0;
1948 wcsncpy (pTTTW->szText, tempString, sizeof(pTTTW->szText) / sizeof(wchar_t));
1949 ::SetWindowPos(pNMHDR->hwndFrom, HWND_TOP, 0, 0, 0, 0,
1951 return 0;
1952 }
1953 return 0;
1954}
1955
1957{
1958 LRESULT theResult;
1959 HRESULT hResult;
1960
1961 hResult = OnWinEvent((HWND) lParam, uMsg, wParam, lParam, &theResult);
1962
1963 bHandled = hResult == S_OK;
1964
1965 return FAILED_UNEXPECTEDLY(hResult) ? 0 : theResult;
1966}
1968{
1969 NMHDR *notifyHeader;
1970 LRESULT theResult;
1971 HRESULT hResult;
1972
1973 notifyHeader = reinterpret_cast<NMHDR *>(lParam);
1974
1975 hResult = OnWinEvent(notifyHeader->hwndFrom, uMsg, wParam, lParam, &theResult);
1976
1977 bHandled = hResult == S_OK;
1978
1979 return FAILED_UNEXPECTEDLY(hResult) ? 0 : theResult;
1980}
1981
1983{
1984 bHandled = FALSE;
1985 if (pSettings->fLocked)
1986 return 0;
1987
1988 if (wParam & MK_CONTROL)
1989 return 0;
1990
1991 fSizing = TRUE;
1992
1993 DWORD msgp = GetMessagePos();
1994
1997
1998 RECT rc;
1999 GetWindowRect(&rc);
2000
2001 fStartHeight = rc.bottom - rc.top;
2002
2003 SetCapture();
2004
2005 bHandled = TRUE;
2006 return 0;
2007}
2008
2010{
2011 bHandled = FALSE;
2012 if (!fSizing)
2013 return 0;
2014
2015 DWORD msgp = GetMessagePos();
2016
2017 POINT pt;
2018 pt.x = GET_X_LPARAM(msgp);
2019 pt.y = GET_Y_LPARAM(msgp);
2020
2022
2023 bHandled = TRUE;
2024 return 0;
2025}
2026
2028{
2029 bHandled = FALSE;
2030 if (!fSizing)
2031 return 0;
2032
2033 OnMouseMove(uMsg, wParam, lParam, bHandled);
2034
2035 fSizing = FALSE;
2036
2038
2039 return 0;
2040}
2041
2043{
2044 HRESULT hr;
2045 HWND hwndMenu;
2046
2047 hr = IUnknown_GetWindow(fMenuBar, &hwndMenu);
2049 return 0;
2050
2051 CComPtr<IWinEventHandler> menuWinEventHandler;
2052 hr = fMenuBar->QueryInterface(IID_PPV_ARG(IWinEventHandler, &menuWinEventHandler));
2054 return 0;
2055
2056 LRESULT lres;
2057 hr = menuWinEventHandler->OnWinEvent(hwndMenu, uMsg, wParam, lParam, &lres);
2059 return 0;
2060
2061 return lres;
2062}
2063
2065{
2066 /* Refresh toolbar locked state */
2068
2069 return 0;
2070}
2071
2073{
2075 LPCWSTR subkey = NULL;
2076 switch (StreamFor)
2077 {
2078 case ITBARSTREAM_SHELLBROWSER: subkey = L"ShellBrowser"; break;
2079 case ITBARSTREAM_WEBBROWSER: subkey = L"WebBrowser"; break;
2080 case ITBARSTREAM_EXPLORER: subkey = L"Explorer"; break;
2081 default: return E_INVALIDARG;
2082 }
2083 wsprintfW(path, L"Software\\Microsoft\\Internet Explorer\\Toolbar\\%s", subkey);
2084 *ppS = SHOpenRegStream2W(HKEY_CURRENT_USER, path, L"RosITBarLayout", Stgm); // ROS prefix until we figure out the correct format
2085 return *ppS ? S_OK : E_FAIL;
2086}
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
#define IID_PPV_ARG(Itype, ppType)
static int state
Definition: maze.c:121
HWND hWnd
Definition: settings.c:17
#define index(s, c)
Definition: various.h:29
#define WARN(fmt,...)
Definition: precomp.h:61
#define PURE
Definition: basetyps.h:64
#define STDMETHOD(m)
Definition: basetyps.h:62
#define STDMETHODCALLTYPE
Definition: bdasup.h:9
#define UNIMPLEMENTED
Definition: ntoskrnl.c:15
HRESULT CAddressBand_CreateInstance(REFIID riid, void **ppv)
Definition: browseui.cpp:24
HRESULT CBrandBand_CreateInstance(REFIID riid, void **ppv)
Definition: browseui.cpp:51
HRESULT CBandProxy_CreateInstance(REFIID riid, void **ppv)
Definition: browseui.cpp:42
HRESULT CToolsBand_CreateInstance(REFIID riid, void **ppv)
Definition: toolsband.cpp:419
void Release()
Definition: atlcomcli.h:170
void Attach(T *lp)
Definition: atlcomcli.h:179
T * Detach()
Definition: atlcomcli.h:186
static BOOL IsGoButtonVisible(IUnknown *pUnkBand)
Definition: addressband.cpp:60
CInternetToolbar * fToolbar
CComPtr< IUnknown > fContainedBand
STDMETHOD() QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT *pCmdText) override
STDMETHOD() GetBorderDW(IUnknown *punkObj, LPRECT prcBorder) override
HRESULT GetRBBandInfo(REBARBANDINFOW &bandInfo)
STDMETHOD() ContextSensitiveHelp(BOOL fEnterMode) override
STDMETHOD() OnFocusChangeIS(IUnknown *punkObj, BOOL fSetFocus) override
STDMETHOD() GetWindow(HWND *lphwnd) override
STDMETHOD() SetBorderSpaceDW(IUnknown *punkObj, LPCBORDERWIDTHS pbw) override
IUnknown * GetContainedBand() const
HRESULT Initialize(IUnknown *containedBand, CInternetToolbar *browser, HWND hwnd, int bandID, int flags)
DESKBANDINFO fDeskBandInfo
STDMETHOD() Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut) override
STDMETHOD() RequestBorderSpaceDW(IUnknown *punkObj, LPCBORDERWIDTHS pbw) override
STDMETHOD() QueryService(REFGUID guidService, REFIID riid, void **ppvObject) override
T * Detach()
Definition: atlalloc.h:168
void Attach(T *lp)
Definition: atlalloc.h:162
HRESULT CommandStateChanged(bool newValue, int commandID)
STDMETHOD() SetImageList(const GUID *pguidCmdGroup, HIMAGELIST param10, HIMAGELIST param14, HIMAGELIST param18) override
HRESULT SetState(const GUID *pguidCmdGroup, long commandID, OLECMD *pcmd)
LRESULT OnSetCursor(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
HRESULT IsBandVisible(int BandID)
CComPtr< IUnknown > fNavigationBar
STDMETHOD() ContextSensitiveHelp(BOOL fEnterMode) override
CComPtr< IUnknown > fLogoBar
STDMETHOD() SetCommandTarget(IUnknown *theTarget, GUID *category, long param14) override
LRESULT OnTipText(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled)
STDMETHOD() IsWindowOwner(HWND hWnd) override
HRESULT ReserveBorderSpace(LONG maxHeight=-1)
STDMETHOD() InitNew() override
STDMETHOD() AddBitmap(const GUID *pguidCmdGroup, long param10, long buttonCount, TBADDBITMAP *lParam, long *newIndex, COLORREF param20) override
HRESULT LockUnlockToolbars(bool locked)
LRESULT OnQueryDelete(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled)
CComPtr< IUnknown > fControlsBar
LRESULT OnSettingsChange(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
STDMETHOD() GetSizeMax(ULARGE_INTEGER *pcbSize) override
STDMETHOD() RemoveBand(DWORD dwBandID) override
STDMETHOD() ResizeBorderDW(LPCRECT prcBorder, IUnknown *punkToolbarSite, BOOL fReserved) override
ShellSettings * pSettings
STDMETHOD() GetWindow(HWND *lphwnd) override
STDMETHOD() GetSite(REFIID riid, void **ppvSite) override
STDMETHOD() SetBandState(DWORD dwBandID, DWORD dwMask, DWORD dwState) override
HRESULT CreateMenuBar(IShellMenu **menuBar)
STDMETHOD() GetBandSiteInfo(BANDSITEINFO *pbsinfo) override
LRESULT OnForwardToCommandTarget(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
STDMETHOD() HasFocusIO() override
void AddDockItem(IUnknown *newItem, int bandID, int flags)
STDMETHOD() GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) override
LRESULT OnLDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
STDMETHOD() Save(IStream *pStm, BOOL fClearDirty) override
STDMETHOD() QueryService(REFGUID guidService, REFIID riid, void **ppvObject) override
STDMETHOD() GetBitmapSize(long *paramC) override
CComPtr< IBandProxy > fBandProxy
STDMETHOD() SetSite(IUnknown *pUnkSite) override
HRESULT EnumBands(UINT Index, int *pBandId, IUnknown **ppUnkBand)
STDMETHOD() ShowDW(BOOL fShow) override
STDMETHOD() AddButtons(const GUID *pguidCmdGroup, long buttonCount, TBBUTTON *buttons) override
STDMETHOD() Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) override
LRESULT OnMouseMove(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
STDMETHOD() QueryBand(DWORD dwBandID, IDeskBand **ppstb, DWORD *pdwState, LPWSTR pszName, int cchName) override
HRESULT CreateAndInitBandProxy()
STDMETHOD() GetBandObject(DWORD dwBandID, REFIID riid, void **ppv) override
HRESULT ToggleBandVisibility(int BandID)
HRESULT QIBand(int BandID, REFIID riid, void **ppv)
virtual ~CInternetToolbar()
STDMETHOD() QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT *pCmdText) override
STDMETHOD() CloseDW(DWORD dwReserved) override
STDMETHOD() GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) override
STDMETHOD() UIActivateIO(BOOL fActivate, LPMSG lpMsg) override
LRESULT OnTravelBack(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
CComPtr< CMenuCallback > fMenuCallback
STDMETHOD() TranslateAcceleratorIO(LPMSG lpMsg) override
STDMETHOD() GetClassID(CLSID *pClassID) override
STDMETHOD() ModifyButton(const GUID *pguidCmdGroup, long param10, long param14) override
STDMETHOD() GetState(const GUID *pguidCmdGroup, long commandID, long *theState) override
static HRESULT GetStream(UINT StreamFor, DWORD Stgm, IStream **ppS)
HRESULT SetBandVisibility(int BandID, int Show)
STDMETHOD() SendToolbarMsg(const GUID *pguidCmdGroup, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *result) override
LRESULT OnNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
STDMETHOD() OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult) override
void RefreshLockedToolbarState()
LRESULT OnUpLevel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
LRESULT OnWinIniChange(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
STDMETHOD() Unknown1() override
STDMETHOD() Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut) override
STDMETHOD() OnChange(LONG lEvent, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2) override
LRESULT OnLUp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
STDMETHOD() GetTypeInfoCount(UINT *pctinfo) override
STDMETHOD() AddBand(IUnknown *punk) override
STDMETHOD() SetBandSiteInfo(const BANDSITEINFO *pbsinfo) override
STDMETHOD() AddString(const GUID *pguidCmdGroup, HINSTANCE param10, LPCTSTR param14, long *param18) override
LRESULT OnQueryInsert(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled)
LRESULT OnFolders(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
LRESULT OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
CComPtr< IShellMenu > fMenuBar
CComPtr< IOleCommandTarget > fCommandTarget
LRESULT OnMenuDropDown(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled)
STDMETHOD() GetButton(const GUID *pguidCmdGroup, long param10, long param14) override
STDMETHOD() Load(IStream *pStm) override
CComPtr< IUnknown > fSite
STDMETHOD() IsDirty() override
LRESULT OnTravelForward(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
LRESULT OnSearch(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
virtual HRESULT STDMETHODCALLTYPE CallbackSM(LPSMDATA psmd, UINT uMsg, WPARAM wParam, LPARAM lParam)
virtual ~CMenuCallback()
HRESULT STDMETHODCALLTYPE GetObject(LPSMDATA psmd, REFIID riid, void **ppvObject)
IUnknown * pSite
CComPtr< IShellMenu > fFavoritesMenu
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define E_INVALIDARG
Definition: ddrawi.h:101
#define E_NOTIMPL
Definition: ddrawi.h:99
#define E_FAIL
Definition: ddrawi.h:102
HRESULT hr
Definition: delayimp.cpp:582
_Check_return_ _In_ PQUERY_INTERFACE QueryInterface
Definition: dispmprt.h:1318
#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:42
HRESULT WINAPI AtlUnadvise(IUnknown *pUnkCP, const IID *iid, DWORD dw)
Definition: atl.c:70
#define IDM_TOOLBARS_LOCKTOOLBARS
Definition: resource.h:34
#define IDM_GOTO_UPONELEVEL
Definition: resource.h:48
#define IDM_TOOLBARS_TEXTLABELS
Definition: resource.h:36
#define IDM_TOOLBARS_STANDARDBUTTONS
Definition: resource.h:31
#define IDM_NOTIFYITBARDIRTY
Definition: resource.h:79
#define IDM_GOTO_FORWARD
Definition: resource.h:47
#define IDS_HISTORYTEXT
Definition: resource.h:131
#define IDM_EXPLORERBAR_HISTORY
Definition: resource.h:43
#define IDM_CABINET_CONTEXTMENU
Definition: resource.h:91
#define IDM_TOOLBARS_GOBUTTON
Definition: resource.h:37
#define IDM_FAVORITES_EMPTY
Definition: resource.h:53
#define IDM_TOOLBARS_CUSTOMIZE
Definition: resource.h:35
#define IDM_GOTO_BACK
Definition: resource.h:46
#define IDM_TOOLBARS_ADDRESSBAR
Definition: resource.h:32
#define IDM_TOOLBARS_LINKSBAR
Definition: resource.h:33
#define BWM_GETSETTINGSPTR
Definition: settings.h:11
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
Definition: combase.c:1685
#define ERROR_NO_MORE_ITEMS
Definition: compat.h:105
#define MAX_PATH
Definition: compat.h:34
@ VT_I4
Definition: compat.h:2298
@ VT_INT_PTR
Definition: compat.h:2327
@ VT_BOOL
Definition: compat.h:2306
LCID lcid
Definition: locale.c:5660
static MonoProfilerRuntimeShutdownBeginCallback cb
Definition: metahost.c:118
HRESULT WINAPI IUnknown_QueryService(IUnknown *obj, REFGUID sid, REFIID iid, void **out)
Definition: main.c:181
IStream *WINAPI SHOpenRegStream2W(HKEY hKey, const WCHAR *subkey, const WCHAR *value, DWORD mode)
Definition: main.c:1266
HRESULT WINAPI IUnknown_SetSite(IUnknown *obj, IUnknown *site)
Definition: main.c:222
HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, INT nFolder, LPITEMIDLIST *ppidl)
Definition: shellpath.c:4574
HRESULT WINAPI IUnknown_TranslateAcceleratorIO(IUnknown *lpUnknown, LPMSG lpMsg)
Definition: ordinal.c:3692
HRESULT WINAPI IUnknown_QueryStatus(IUnknown *lpUnknown, REFGUID pguidCmdGroup, ULONG cCmds, OLECMD *prgCmds, OLECMDTEXT *pCmdText)
Definition: ordinal.c:723
DWORD WINAPI SHCheckMenuItem(HMENU hMenu, UINT uID, BOOL bCheck)
Definition: ordinal.c:1395
HRESULT WINAPI IUnknown_HasFocusIO(IUnknown *lpUnknown)
Definition: ordinal.c:3724
UINT WINAPI SHEnableMenuItem(HMENU hMenu, UINT wItemID, BOOL bEnable)
Definition: ordinal.c:1376
HRESULT WINAPI IUnknown_Exec(IUnknown *lpUnknown, REFGUID pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
Definition: ordinal.c:762
HRESULT WINAPI SHInvokeDefaultCommand(HWND hWnd, IShellFolder *lpFolder, LPCITEMIDLIST lpApidl)
Definition: ordinal.c:2608
HWND WINAPI SHCreateWorkerWindowW(WNDPROC wndProc, HWND hWndParent, DWORD dwExStyle, DWORD dwStyle, HMENU hMenu, LONG_PTR wnd_extra)
Definition: ordinal.c:2552
HRESULT WINAPI IUnknown_GetWindow(IUnknown *lpUnknown, HWND *lphWnd)
Definition: ordinal.c:988
#define FAILED_UNEXPECTEDLY
Definition: utils.cpp:33
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
Definition: dplayx.c:41
#define pt(x, y)
Definition: drawing.c:79
#define L(x)
Definition: resources.c:13
#define DISPID_NAVIGATECOMPLETE2
Definition: exdispid.h:45
#define DISPID_BEFORENAVIGATE
Definition: exdispid.h:22
#define DISPID_COMMANDSTATECHANGE
Definition: exdispid.h:27
#define DISPID_DOWNLOADCOMPLETE
Definition: exdispid.h:26
#define DISPID_DOWNLOADBEGIN
Definition: exdispid.h:28
#define DISPID_DOCUMENTCOMPLETE
Definition: exdispid.h:52
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLuint res
Definition: glext.h:9613
GLuint index
Definition: glext.h:6031
GLbitfield flags
Definition: glext.h:7161
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
GLuint64EXT * result
Definition: glext.h:11304
GLenum const GLfloat * params
Definition: glext.h:5645
GLuint id
Definition: glext.h:5910
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
unsigned int UINT
Definition: sysinfo.c:13
char TCHAR
Definition: tchar.h:1402
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
struct IOleCommandTarget::_tagOLECMDTEXT OLECMDTEXT
struct IOleCommandTarget::_tagOLECMD OLECMD
HRESULT Write([in, size_is(cb)] const void *pv, [in] ULONG cb, [out] ULONG *pcbWritten)
HRESULT Read([out, size_is(cb), length_is(*pcbRead)] void *pv, [in] ULONG cb, [out] ULONG *pcbRead)
HRESULT BrowseObject([in] PCUIDLIST_RELATIVE pidl, [in] UINT wFlags)
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
nsresult QueryInterface(nsIIDRef riid, void **result)
STDMETHOD() EnumNameSpace(ULONG, PULONG) PURE
static HRESULT SHELL_BrowseObject(IShellBrowser *psb, IShellFolder *psf, LPCITEMIDLIST pidlChild, UINT BrowseFlags)
static HRESULT SHELL_LoadShellLink(PCIDLIST_ABSOLUTE pidl, IShellLink **ppsl, DWORD stgm=STGM_READ)
STDMETHOD() GetNameSpaceID(LPCITEMIDLIST, LPGUID) PURE
static HRESULT BindToDesktop(LPCITEMIDLIST pidl, IShellFolder **ppsfResult)
HRESULT WINAPI SHBindToFolder(LPCITEMIDLIST path, IShellFolder **newFolder)
HRESULT IUnknown_RelayWinEvent(IUnknown *punk, HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult)
HRESULT IUnknown_CloseDW(IUnknown *punk, DWORD dwReserved)
static HRESULT GetFavoritesFolder(IShellFolder **ppsfFavorites, LPITEMIDLIST *ppidl)
static HRESULT SHELL_GetAbsolutePidlTryLinkTarget(IShellFolder *psf, LPCITEMIDLIST pidlChild, PIDLIST_ABSOLUTE *ppidl)
static HRESULT BrowseInplaceOrExecute(HWND hWnd, IShellFolder *psf, LPCITEMIDLIST pidlChild, IUnknown *pSite)
STDMETHOD() QueryNameSpace(ULONG, LPGUID, IShellFolder **) PURE
HRESULT IUnknown_ShowDW(IUnknown *punk, BOOL fShow)
static const int gFoldersCommandID
#define ITBARSTREAM_EXPLORER
#define ITBARSTREAM_SHELLBROWSER
static const int gViewsCommandID
static const int gSearchCommandID
#define ITBARSTREAM_WEBBROWSER
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
static const struct bandInfoStruct bandInfo[9]
Definition: layer3.c:95
#define BEGIN_COM_MAP(x)
Definition: atlcom.h:581
#define COM_INTERFACE_ENTRY_IID(iid, x)
Definition: atlcom.h:601
#define END_COM_MAP()
Definition: atlcom.h:592
if(dx< 0)
Definition: linetemp.h:194
LONG_PTR LPARAM
Definition: minwindef.h:175
LONG_PTR LRESULT
Definition: minwindef.h:176
UINT_PTR WPARAM
Definition: minwindef.h:174
static char * textBuffer
Definition: combo.c:58
static IPrintDialogCallback callback
Definition: printdlg.c:325
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:60
static VARIANTARG static DISPID
Definition: ordinal.c:49
LPCSTR LPCTSTR
Definition: ms-dtyp.idl:130
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
Definition: mswsock.h:95
#define KEY_READ
Definition: nt_native.h:1026
#define BOOL
Definition: nt_native.h:43
#define KEY_WRITE
Definition: nt_native.h:1034
#define MAKEINTRESOURCE(i)
Definition: ntverrsrc.c:25
#define STGM_READ
Definition: objbase.h:936
#define V_BOOL(A)
Definition: oleauto.h:224
#define V_VT(A)
Definition: oleauto.h:211
#define V_I4(A)
Definition: oleauto.h:247
#define V_INTREF(A)
Definition: oleauto.h:252
const GUID IID_IOleWindow
#define LOWORD(l)
Definition: pedump.c:82
#define WS_CHILD
Definition: pedump.c:617
short WCHAR
Definition: pedump.c:58
#define WS_BORDER
Definition: pedump.c:625
#define WS_VISIBLE
Definition: pedump.c:620
long LONG
Definition: pedump.c:60
#define WS_CLIPSIBLINGS
Definition: pedump.c:618
#define WS_CLIPCHILDREN
Definition: pedump.c:619
void WINAPI ILFree(LPITEMIDLIST pidl)
Definition: pidl.c:1051
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
Definition: pidl.c:1496
#define RBBS_TOPALIGN
Definition: commctrl.h:1500
#define RBSTR_CHANGERECT
Definition: commctrl.h:1596
#define RB_SETBANDINFOW
Definition: commctrl.h:1584
#define RBBS_BREAK
Definition: commctrl.h:1489
struct tagREBARBANDINFOW REBARBANDINFOW
#define RBS_REGISTERDROP
Definition: commctrl.h:1474
#define REBARCLASSNAMEW
Definition: commctrl.h:1463
#define RBBIM_CHILDSIZE
Definition: commctrl.h:1507
#define RB_INSERTBANDW
Definition: commctrl.h:1583
#define RBBS_FIXEDBMP
Definition: commctrl.h:1494
#define TB_SETSTATE
Definition: commctrl.h:1054
#define TBDDRET_DEFAULT
Definition: commctrl.h:1424
#define RBS_BANDBORDERS
Definition: commctrl.h:1472
#define RBBIM_CHILD
Definition: commctrl.h:1506
#define TB_ADDSTRINGW
Definition: commctrl.h:1132
#define RBS_AUTOSIZE
Definition: commctrl.h:1475
#define RBBS_FIXEDSIZE
Definition: commctrl.h:1490
#define RBBS_NOGRIPPER
Definition: commctrl.h:1497
#define RB_GETBANDINFOW
Definition: commctrl.h:1609
#define TOOLTIPTEXTW
Definition: commctrl.h:1889
#define TB_GETRECT
Definition: commctrl.h:1153
#define TTF_IDISHWND
Definition: commctrl.h:1764
#define CCS_NODIVIDER
Definition: commctrl.h:2253
#define CCS_TOP
Definition: commctrl.h:2247
#define TB_CUSTOMIZE
Definition: commctrl.h:1130
#define CLR_DEFAULT
Definition: commctrl.h:320
#define RB_IDTOINDEX
Definition: commctrl.h:1588
#define RBBS_HIDDEN
Definition: commctrl.h:1492
#define TBSTATE_ENABLED
Definition: commctrl.h:974
#define RBBIM_ID
Definition: commctrl.h:1510
#define RBBIM_LPARAM
Definition: commctrl.h:1512
#define RB_SIZETORECT
Definition: commctrl.h:1598
#define RBS_VARHEIGHT
Definition: commctrl.h:1471
#define CCS_NOPARENTALIGN
Definition: commctrl.h:2251
#define TB_GETSTATE
Definition: commctrl.h:1055
#define RBBS_HIDETITLE
Definition: commctrl.h:1499
#define RBBIM_STYLE
Definition: commctrl.h:1502
#define RB_HITTEST
Definition: commctrl.h:1581
#define RBBIM_TEXT
Definition: commctrl.h:1504
#define RBBIM_COLORS
Definition: commctrl.h:1503
#define RBBS_USECHEVRON
Definition: commctrl.h:1498
#define RBS_DBLCLKTOGGLE
Definition: commctrl.h:1477
#define RB_GETBANDCOUNT
Definition: commctrl.h:1585
#define TBSTATE_CHECKED
Definition: commctrl.h:972
#define RBBS_GRIPPERALWAYS
Definition: commctrl.h:1496
#define RBBS_VARIABLEHEIGHT
Definition: commctrl.h:1495
#define RBBIM_IDEALSIZE
Definition: commctrl.h:1511
GUID * LPGUID
Definition: guiddef.h:81
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
#define REFIID
Definition: guiddef.h:118
_In_opt_ IUnknown * punk
Definition: shlwapi.h:158
HWND WINAPI SetCapture(_In_ HWND hWnd)
#define CreateWindowEx
Definition: winuser.h:5921
HMENU WINAPI CreatePopupMenu(void)
Definition: menu.c:838
#define SW_HIDE
Definition: winuser.h:779
#define SWP_NOACTIVATE
Definition: winuser.h:1253
#define MF_BYCOMMAND
Definition: winuser.h:202
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI ReleaseCapture(void)
Definition: message.c:2890
DWORD WINAPI GetMessagePos(void)
Definition: message.c:1351
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WS_EX_RIGHTSCROLLBAR
Definition: winuser.h:401
#define TPM_RIGHTBUTTON
Definition: winuser.h:2416
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
#define SWP_NOMOVE
Definition: winuser.h:1255
#define WM_COMMAND
Definition: winuser.h:1768
#define MF_STRING
Definition: winuser.h:138
#define WS_EX_TOOLWINDOW
Definition: winuser.h:404
BOOL WINAPI DeleteMenu(_In_ HMENU, _In_ UINT, _In_ UINT)
HCURSOR WINAPI SetCursor(_In_opt_ HCURSOR)
#define SWP_NOSIZE
Definition: winuser.h:1256
#define SIZE_MINIMIZED
Definition: winuser.h:2542
BOOL WINAPI TrackPopupMenuEx(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _In_ HWND, _In_opt_ LPTPMPARAMS)
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
#define TPM_TOPALIGN
Definition: winuser.h:2419
#define IDC_SIZENS
Definition: winuser.h:703
#define HWND_TOP
Definition: winuser.h:1218
HMENU WINAPI GetSubMenu(_In_ HMENU, _In_ int)
#define MK_CONTROL
Definition: winuser.h:2406
#define MF_SEPARATOR
Definition: winuser.h:137
#define TPM_LEFTALIGN
Definition: winuser.h:2413
#define HTCLIENT
Definition: winuser.h:2511
#define SendMessage
Definition: winuser.h:6009
#define LoadCursor
Definition: winuser.h:5978
#define LoadMenu
Definition: winuser.h:5983
#define WS_EX_LTRREADING
Definition: winuser.h:393
HWND WINAPI GetParent(_In_ HWND)
BOOL WINAPI DestroyMenu(_In_ HMENU)
#define SWP_NOOWNERZORDER
Definition: winuser.h:1260
int WINAPI GetDlgCtrlID(_In_ HWND)
#define SW_SHOW
Definition: winuser.h:786
BOOL WINAPI TrackPopupMenu(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _Reserved_ int, _In_ HWND, _Reserved_ LPCRECT)
#define TPM_RETURNCMD
Definition: winuser.h:2423
#define SWP_NOZORDER
Definition: winuser.h:1258
BOOL WINAPI DestroyWindow(_In_ HWND)
#define WS_EX_LEFT
Definition: winuser.h:391
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI AppendMenuW(_In_ HMENU, _In_ UINT, _In_ UINT_PTR, _In_opt_ LPCWSTR)
BOOL WINAPI ScreenToClient(_In_ HWND, _Inout_ LPPOINT)
#define long
Definition: qsort.c:33
static calc_node_t temp
Definition: rpn_ieee.c:38
DWORD LCID
Definition: nls.h:13
wcsncpy
static __inline const char * wine_dbgstr_guid(const GUID *id)
Definition: debug.h:181
#define LoadStringW
Definition: utils.h:64
#define memset(x, y, z)
Definition: compat.h:39
#define UINT
Definition: utils.c:29
#define CMergedFolder_CreateInstance
Definition: shellmenu.h:92
#define CMenuBand_CreateInstance
Definition: shellmenu.h:80
static SFGAOF SHELL_GetAttributesOf(IShellFolder *psf, LPCITEMIDLIST pidlChild, SFGAOF query)
Definition: shellutils.h:780
#define SID_SShellBrowser
Definition: shlguid.h:128
#define CGID_MenuBand
#define SID_IShellBrowser
#define CSIDL_FAVORITES
Definition: shlobj.h:2226
#define CSIDL_COMMON_FAVORITES
Definition: shlobj.h:2250
#define FCIDM_MENU_FAVORITES
Definition: shlobj.h:675
#define TLOG_FORE
Definition: shlobj.h:2785
#define TLMENUF_BACK
Definition: shlobj.h:2789
#define TLMENUF_FORE
Definition: shlobj.h:2790
#define TLOG_BACK
Definition: shlobj.h:2784
@ SMIM_ICON
Definition: shobjidl.idl:2844
@ SMIM_FLAGS
Definition: shobjidl.idl:2843
@ SMIF_DROPCASCADE
Definition: shobjidl.idl:2860
@ SMIF_TRACKPOPUP
Definition: shobjidl.idl:2863
@ DBID_BANDINFOCHANGED
Definition: shobjidl.idl:2593
#define FCIDM_SHVIEW_AUTOARRANGE
Definition: shresdef.h:885
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
Definition: shtypes.idl:42
HWND buttons[5]
Definition: sndrec32.cpp:40
#define TRACE(s)
Definition: solgame.cpp:4
STRSAFEAPI StringCbCopyW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
Definition: strsafe.h:166
static const UINT SIG
long y
Definition: dcommon.idl:24
long x
Definition: dcommon.idl:24
Definition: dcommon.idl:28
long bottom
Definition: dcommon.idl:29
long right
Definition: dcommon.idl:29
long left
Definition: dcommon.idl:29
long top
Definition: dcommon.idl:29
void Save()
Definition: settings.cpp:12
BOOL fLocked
Definition: settings.h:15
BOOL fShowGoButton
Definition: settings.h:16
Definition: scsiwmi.h:51
LONG y
Definition: windef.h:130
LONG x
Definition: windef.h:129
Definition: style.c:91
COLORREF crBkgnd
Definition: shobjidl.idl:2565
WCHAR wszTitle[256]
Definition: shobjidl.idl:2563
UINT_PTR idFrom
Definition: winuser.h:3266
HWND hwndFrom
Definition: winuser.h:3265
IUnknown * punk
Definition: shobjidl.idl:2812
PUITEMID_CHILD pidlItem
Definition: shobjidl.idl:2814
IShellFolder * psf
Definition: shobjidl.idl:2815
DWORD dwMask
Definition: shobjidl.idl:2825
DWORD dwFlags
Definition: shobjidl.idl:2827
HANDLE lEvent
Definition: tftpd.cpp:56
uint32_t * PULONG
Definition: typedefs.h:59
const uint16_t * LPCWSTR
Definition: typedefs.h:57
uint16_t * LPWSTR
Definition: typedefs.h:56
int32_t INT
Definition: typedefs.h:58
#define MAKELONG(a, b)
Definition: typedefs.h:249
uint32_t ULONG
Definition: typedefs.h:59
#define HIWORD(l)
Definition: typedefs.h:247
#define ITID_LINKSBANDSHOWN
Definition: undocshell.h:980
#define ITID_TOOLBARBANDSHOWN
Definition: undocshell.h:978
#define ITBBID_ADDRESSBAND
Definition: undocshell.h:972
#define SMC_EXEC
Definition: undocshell.h:872
#define ITBBID_TOOLSBAND
Definition: undocshell.h:971
#define ITBBID_BRANDBAND
Definition: undocshell.h:970
#define ITID_AUTOHIDEENABLED
Definition: undocshell.h:982
#define ITID_TEXTLABELS
Definition: undocshell.h:977
#define ITID_MENUBANDSHOWN
Definition: undocshell.h:981
#define ITID_CUSTOMIZEENABLED
Definition: undocshell.h:983
#define ITID_ADDRESSBANDSHOWN
Definition: undocshell.h:979
#define ITID_TOOLBARLOCKED
Definition: undocshell.h:984
#define ITBBID_MENUBAND
Definition: undocshell.h:969
#define _T(x)
Definition: vfdio.h:22
_In_ WDFCOLLECTION _In_ ULONG Index
_In_ PSID _Out_writes_to_opt_ cchName LPSTR _Inout_ LPDWORD cchName
Definition: winbase.h:2497
WINBASEAPI _In_ DWORD _Out_ _In_ WORD wFlags
Definition: wincon_undoc.h:337
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
DWORD COLORREF
Definition: windef.h:100
#define WINAPI
Definition: msvc.h:6
#define SubclassWindow(hwnd, lpfn)
Definition: windowsx.h:542
#define GET_Y_LPARAM(lp)
Definition: windowsx.h:300
#define GET_X_LPARAM(lp)
Definition: windowsx.h:299
#define S_FALSE
Definition: winerror.h:3451
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
Definition: winerror.h:210
#define E_NOINTERFACE
Definition: winerror.h:3479
#define E_UNEXPECTED
Definition: winerror.h:3528
#define ERROR_DIR_NOT_ROOT
Definition: winerror.h:338
#define E_POINTER
Definition: winerror.h:3480
#define GetObject
Definition: wingdi.h:4914
#define HKEY_CURRENT_USER
Definition: winreg.h:11
#define RegCreateKeyEx
Definition: winreg.h:532
static void Initialize()
Definition: xlate.c:212