ReactOS  0.4.15-dev-5487-ge7bbbf0
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 /*
22 Implements a class that knows how to hold and manage the menu band, brand band,
23 toolbar, and address band for an explorer window
24 */
25 
26 #include "precomp.h"
27 
28 #if 1
29 
30 interface IAugmentedShellFolder : public IShellFolder
31 {
36 };
37 
38 #endif
39 
40 // navigation controls and menubar just send a message to parent window
41 /*
42 TODO:
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  CComPtr<IWinEventHandler> menuWinEventHandler;
81  HRESULT hResult = punk->QueryInterface(IID_PPV_ARG(IWinEventHandler, &menuWinEventHandler));
82  if (FAILED_UNEXPECTEDLY(hResult))
83  return hResult;
84  hResult = menuWinEventHandler->IsWindowOwner(hWnd);
85  if (FAILED_UNEXPECTEDLY(hResult))
86  return hResult;
87  if (hResult == S_OK)
88  return menuWinEventHandler->OnWinEvent(hWnd, uMsg, wParam, lParam, theResult);
89  return S_FALSE;
90 }
91 
93 {
94  CComPtr<IDockingWindow> dockingWindow;
95  HRESULT hResult = punk->QueryInterface(IID_PPV_ARG(IDockingWindow, &dockingWindow));
96  if (FAILED_UNEXPECTEDLY(hResult))
97  return hResult;
98  hResult = dockingWindow->ShowDW(fShow);
99  if (FAILED_UNEXPECTEDLY(hResult))
100  return hResult;
101  return S_OK;
102 }
103 
105 {
106  CComPtr<IDockingWindow> dockingWindow;
107  HRESULT hResult = punk->QueryInterface(IID_PPV_ARG(IDockingWindow, &dockingWindow));
108  if (FAILED_UNEXPECTEDLY(hResult))
109  return hResult;
110  hResult = dockingWindow->CloseDW(dwReserved);
111  if (FAILED_UNEXPECTEDLY(hResult))
112  return hResult;
113  return S_OK;
114 }
115 
116 class CInternetToolbar;
117 
118 class CDockSite :
119  public CComObjectRootEx<CComMultiThreadModelNoCS>,
120  public IDockingWindowSite,
121  public IInputObjectSite,
122  public IOleCommandTarget,
123  public IServiceProvider
124 {
125 public:
126  enum {
132  };
133 private:
134  CComPtr<IUnknown> fContainedBand; // the band inside us
135  CInternetToolbar *fToolbar; // our browser
138  int fBandID;
139 public:
140  int fFlags;
141 private:
143  // fields of DESKBANDINFO must be preserved between calls to GetBandInfo
145 public:
146  CDockSite();
147  ~CDockSite();
148  HRESULT Initialize(IUnknown *containedBand, CInternetToolbar *browser, HWND hwnd, int bandID, int flags);
150 private:
151 
152  // *** IOleWindow methods ***
153  virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd);
155 
156  // *** IDockingWindow methods ***
157  virtual HRESULT STDMETHODCALLTYPE GetBorderDW(IUnknown* punkObj, LPRECT prcBorder);
158  virtual HRESULT STDMETHODCALLTYPE RequestBorderSpaceDW(IUnknown* punkObj, LPCBORDERWIDTHS pbw);
159  virtual HRESULT STDMETHODCALLTYPE SetBorderSpaceDW(IUnknown* punkObj, LPCBORDERWIDTHS pbw);
160 
161  // *** IInputObjectSite specific methods ***
162  virtual HRESULT STDMETHODCALLTYPE OnFocusChangeIS(IUnknown *punkObj, BOOL fSetFocus);
163 
164  // *** IOleCommandTarget specific methods ***
165  virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds,
166  OLECMD prgCmds[ ], OLECMDTEXT *pCmdText);
167  virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID,
168  DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
169 
170  // *** IServiceProvider methods ***
171  virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void **ppvObject);
172 
175  COM_INTERFACE_ENTRY_IID(IID_IDockingWindowSite, IDockingWindowSite)
176  COM_INTERFACE_ENTRY_IID(IID_IInputObjectSite, IInputObjectSite)
177  COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
178  COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
179 END_COM_MAP()
180 };
181 
183 {
184  fToolbar = NULL;
185  fRebarWindow = NULL;
186  fChildWindow = NULL;
187  fBandID = 0;
188  fFlags = 0;
189  fInitialized = false;
190  memset(&fDeskBandInfo, 0, sizeof(fDeskBandInfo));
191 }
192 
194 {
195 }
196 
197 HRESULT CDockSite::Initialize(IUnknown *containedBand, CInternetToolbar *browser, HWND hwnd, int bandID, int flags)
198 {
199  TCHAR textBuffer[40];
201  HRESULT hResult;
202 
203  fContainedBand = containedBand;
204  fToolbar = browser;
205  fRebarWindow = hwnd;
206  fBandID = bandID;
207  fFlags = flags;
208  hResult = IUnknown_SetSite(containedBand, static_cast<IOleWindow *>(this));
209  if (FAILED_UNEXPECTEDLY(hResult))
210  return hResult;
211  hResult = IUnknown_GetWindow(containedBand, &fChildWindow);
212  if (FAILED_UNEXPECTEDLY(hResult))
213  return hResult;
214 
215  memset(&bandInfo, 0, sizeof(bandInfo));
216  bandInfo.cbSize = sizeof(bandInfo);
217  bandInfo.lpText = textBuffer;
218  bandInfo.cch = sizeof(textBuffer) / sizeof(TCHAR);
219  hResult = GetRBBandInfo(bandInfo);
220 
223  fInitialized = true;
224  return S_OK;
225 }
226 
228 {
229  CComPtr<IDeskBand> deskBand;
230  HRESULT hResult;
231 
232  hResult = fContainedBand->QueryInterface(IID_PPV_ARG(IDeskBand, &deskBand));
233  if (FAILED_UNEXPECTEDLY(hResult))
234  return hResult;
235 
236  fDeskBandInfo.dwMask = DBIM_BKCOLOR | DBIM_MODEFLAGS | DBIM_TITLE | DBIM_ACTUAL |
237  DBIM_INTEGRAL | DBIM_MAXSIZE | DBIM_MINSIZE;
238  hResult = deskBand->GetBandInfo(fBandID, 0, &fDeskBandInfo);
239  // result of call is ignored
240 
243 
244  bandInfo.fStyle = RBBS_FIXEDBMP;
245  if (fDeskBandInfo.dwModeFlags & DBIMF_VARIABLEHEIGHT)
246  bandInfo.fStyle |= RBBS_VARIABLEHEIGHT;
247  if (fDeskBandInfo.dwModeFlags & DBIMF_USECHEVRON)
248  bandInfo.fStyle |= RBBS_USECHEVRON;
249  if (fDeskBandInfo.dwModeFlags & DBIMF_BREAK)
250  bandInfo.fStyle |= RBBS_BREAK;
251  if (fDeskBandInfo.dwModeFlags & DBIMF_TOPALIGN)
252  bandInfo.fStyle |= RBBS_TOPALIGN;
254  bandInfo.fStyle |= RBBS_NOGRIPPER;
255  if (fFlags & ITF_NOTITLE)
256  bandInfo.fStyle |= RBBS_HIDETITLE;
258  bandInfo.fStyle |= RBBS_GRIPPERALWAYS;
259  if (fFlags & ITF_FIXEDSIZE)
260  bandInfo.fStyle |= RBBS_FIXEDSIZE;
261 
262  if (fDeskBandInfo.dwModeFlags & DBIMF_BKCOLOR)
263  {
264  bandInfo.fMask |= RBBIM_COLORS;
265  bandInfo.clrFore = CLR_DEFAULT;
266  bandInfo.clrBack = fDeskBandInfo.crBkgnd;
267  }
268  wcsncpy(bandInfo.lpText, fDeskBandInfo.wszTitle, bandInfo.cch);
269  bandInfo.hwndChild = fChildWindow;
270  bandInfo.cxMinChild = fDeskBandInfo.ptMinSize.x;
271  bandInfo.cyMinChild = fDeskBandInfo.ptMinSize.y;
272  bandInfo.wID = fBandID;
273  bandInfo.cyChild = fDeskBandInfo.ptActual.y;
274  bandInfo.cyMaxChild = fDeskBandInfo.ptMaxSize.y;
275  bandInfo.cyIntegral = fDeskBandInfo.ptIntegral.y;
276  bandInfo.cxIdeal = fDeskBandInfo.ptActual.x;
277  bandInfo.lParam = reinterpret_cast<LPARAM>(this);
278  return S_OK;
279 }
280 
282 {
283  if (lphwnd == NULL)
284  return E_POINTER;
285  *lphwnd = fRebarWindow;
286  return S_OK;
287 }
288 
290 {
291  return E_NOTIMPL;
292 }
293 
295 {
296  return E_NOTIMPL;
297 }
298 
300 {
301  return E_NOTIMPL;
302 }
303 
305 {
306  return E_NOTIMPL;
307 }
308 
310 {
311  return E_NOTIMPL;
312 }
313 
315  OLECMD prgCmds[ ], OLECMDTEXT *pCmdText)
316 {
317  return E_NOTIMPL;
318 }
319 
320 HRESULT STDMETHODCALLTYPE CDockSite::Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt,
321  VARIANT *pvaIn, VARIANT *pvaOut)
322 {
323  TCHAR textBuffer[40];
325  int index;
326  HRESULT hResult;
327 
328  if (IsEqualIID(*pguidCmdGroup, CGID_DeskBand))
329  {
330  switch (nCmdID)
331  {
333  if (fInitialized == false)
334  return S_OK;
335  if (V_VT(pvaIn) != VT_I4)
336  return E_INVALIDARG;
337  if (V_I4(pvaIn) != fBandID)
338  return E_FAIL;
339  // deskband information changed
340  // call GetBandInfo and refresh information in rebar
341  memset(&bandInfo, 0, sizeof(bandInfo));
342  bandInfo.cbSize = sizeof(bandInfo);
343  bandInfo.lpText = textBuffer;
344  bandInfo.cch = sizeof(textBuffer) / sizeof(TCHAR);
345  hResult = GetRBBandInfo(bandInfo);
346  if (FAILED_UNEXPECTEDLY(hResult))
347  return hResult;
350  return S_OK;
351  }
352  }
353  return E_FAIL;
354 }
355 
357 {
358  if (IsEqualIID(guidService, SID_SMenuBandParent))
359  return this->QueryInterface(riid, ppvObject);
360 
361  return fToolbar->QueryService(guidService, riid, ppvObject);
362 }
363 
365 {
366 }
367 
369 {
370 }
371 
372 static HRESULT BindToDesktop(LPCITEMIDLIST pidl, IShellFolder ** ppsfResult)
373 {
374  HRESULT hr;
375  CComPtr<IShellFolder> psfDesktop;
376 
377  *ppsfResult = NULL;
378 
379  hr = SHGetDesktopFolder(&psfDesktop);
380  if (FAILED(hr))
381  return hr;
382 
383  hr = psfDesktop->BindToObject(pidl, NULL, IID_PPV_ARG(IShellFolder, ppsfResult));
384 
385  return hr;
386 }
387 
388 static HRESULT GetFavoritesFolder(IShellFolder ** ppsfFavorites, LPITEMIDLIST * ppidl)
389 {
390  HRESULT hr;
391  LPITEMIDLIST pidlUserFavorites;
392  LPITEMIDLIST pidlCommonFavorites;
393  CComPtr<IShellFolder> psfUserFavorites;
394  CComPtr<IShellFolder> psfCommonFavorites;
396 
397  if (ppsfFavorites)
398  *ppsfFavorites = NULL;
399 
400  if (ppidl)
401  *ppidl = NULL;
402 
403  hr = SHGetSpecialFolderLocation(NULL, CSIDL_FAVORITES, &pidlUserFavorites);
404  if (FAILED(hr))
405  {
406  WARN("Failed to get the USER favorites folder. Trying to run with just the COMMON one.\n");
407 
408  hr = SHGetSpecialFolderLocation(NULL, CSIDL_COMMON_FAVORITES, &pidlCommonFavorites);
409  if (FAILED_UNEXPECTEDLY(hr))
410  return hr;
411 
412  TRACE("COMMON favorites obtained.\n");
413  *ppidl = pidlCommonFavorites;
414  hr = BindToDesktop(pidlCommonFavorites, ppsfFavorites);
415  return hr;
416  }
417 
418  hr = SHGetSpecialFolderLocation(NULL, CSIDL_COMMON_FAVORITES, &pidlCommonFavorites);
419  if (FAILED_UNEXPECTEDLY(hr))
420  {
421  WARN("Failed to get the COMMON favorites folder. Will use only the USER contents.\n");
422  *ppidl = pidlCommonFavorites;
423  hr = BindToDesktop(pidlUserFavorites, ppsfFavorites);
424  return hr;
425  }
426 
427  TRACE("Both COMMON and USER favorites folders obtained, merging them...\n");
428 
429  hr = BindToDesktop(pidlUserFavorites, &psfUserFavorites);
430  if (FAILED_UNEXPECTEDLY(hr))
431  return hr;
432 
433  hr = BindToDesktop(pidlCommonFavorites, &psfCommonFavorites);
434  if (FAILED_UNEXPECTEDLY(hr))
435  return hr;
436 
437  hr = CMergedFolder_CreateInstance(IID_PPV_ARG(IAugmentedShellFolder, &pasf));
438  if (FAILED_UNEXPECTEDLY(hr))
439  {
440  *ppsfFavorites = psfUserFavorites.Detach();
441  *ppidl = pidlUserFavorites;
442  ILFree(pidlCommonFavorites);
443  return hr;
444  }
445 
446  hr = pasf->AddNameSpace(NULL, psfUserFavorites, pidlUserFavorites, 0xFF00);
447  if (FAILED_UNEXPECTEDLY(hr))
448  return hr;
449 
450  hr = pasf->AddNameSpace(NULL, psfCommonFavorites, pidlCommonFavorites, 0);
451  if (FAILED_UNEXPECTEDLY(hr))
452  return hr;
453 
454  hr = pasf->QueryInterface(IID_PPV_ARG(IShellFolder, ppsfFavorites));
455  pasf.Release();
456 
457  // TODO: obtain the folder's PIDL
458 
459  ILFree(pidlCommonFavorites);
460  ILFree(pidlUserFavorites);
461 
462  return hr;
463 }
464 
466 {
467  CComPtr<IShellMenu> parentMenu;
468  CComPtr<IShellMenu> newMenu;
469  CComPtr<IShellFolder> favoritesFolder;
470  LPITEMIDLIST favoritesPIDL;
471  HWND ownerWindow;
472  HMENU parentHMenu;
473  HMENU favoritesHMenu;
474  HKEY orderRegKey;
475  DWORD disposition;
476  HRESULT hResult;
477  static const TCHAR szFavoritesKey[] =
478  _T("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MenuOrder\\Favorites");
479 
480  if (!IsEqualIID(riid, IID_IShellMenu))
481  return E_FAIL;
482  if (psmd->uId != FCIDM_MENU_FAVORITES)
483  return E_FAIL;
484 
485  // create favorites menu
486  hResult = psmd->punk->QueryInterface(IID_PPV_ARG(IShellMenu, &parentMenu));
487  if (FAILED_UNEXPECTEDLY(hResult))
488  return hResult;
489  hResult = parentMenu->GetMenu(&parentHMenu, &ownerWindow, NULL);
490  if (FAILED_UNEXPECTEDLY(hResult))
491  return hResult;
492  favoritesHMenu = GetSubMenu(parentHMenu, 3);
493  if (favoritesHMenu == NULL)
494  return E_FAIL;
495 
496  if (fFavoritesMenu.p == NULL)
497  {
498  hResult = CMenuBand_CreateInstance(IID_PPV_ARG(IShellMenu, &newMenu));
499  if (FAILED_UNEXPECTEDLY(hResult))
500  return hResult;
501  hResult = newMenu->Initialize(this, FCIDM_MENU_FAVORITES, -1, SMINIT_VERTICAL | SMINIT_CACHED);
502  if (FAILED_UNEXPECTEDLY(hResult))
503  return hResult;
504 
505  RegCreateKeyEx(HKEY_CURRENT_USER, szFavoritesKey,
506  0, NULL, 0, KEY_READ | KEY_WRITE, NULL, &orderRegKey, &disposition);
507 
508  hResult = GetFavoritesFolder(&favoritesFolder, &favoritesPIDL);
509  if (FAILED_UNEXPECTEDLY(hResult))
510  return hResult;
511 
512  hResult = newMenu->SetShellFolder(favoritesFolder, favoritesPIDL, orderRegKey, SMSET_BOTTOM | SMINIT_CACHED | SMINV_ID);
513  if (favoritesPIDL)
514  ILFree(favoritesPIDL);
515 
516  if (FAILED(hResult))
517  return hResult;
518 
519  fFavoritesMenu = newMenu;
520  }
521 
522  hResult = fFavoritesMenu->SetMenu(favoritesHMenu, ownerWindow, SMSET_TOP | SMSET_DONTOWN);
523  if (FAILED_UNEXPECTEDLY(hResult))
524  return hResult;
525 
526  return fFavoritesMenu->QueryInterface(riid, ppvObject);
527 }
528 
530 {
531  switch (uMsg)
532  {
533  case SMC_INITMENU:
534  break;
535  case SMC_CREATE:
536  break;
537  case SMC_EXITMENU:
538  break;
539  case SMC_GETINFO:
540  {
541  SMINFO *infoPtr = reinterpret_cast<SMINFO *>(lParam);
542  if ((infoPtr->dwMask & SMIM_FLAGS) != 0)
543  {
544  if (psmd->uId == FCIDM_MENU_FAVORITES)
545  {
546  infoPtr->dwFlags |= SMIF_DROPCASCADE;
547  }
548  else
549  {
550  infoPtr->dwFlags |= SMIF_TRACKPOPUP;
551  }
552  }
553  if ((infoPtr->dwMask & SMIM_ICON) != 0)
554  infoPtr->iIcon = -1;
555  return S_OK;
556  }
557  case SMC_GETSFINFO:
558  break;
559  case SMC_GETOBJECT:
560  return GetObject(psmd, *reinterpret_cast<IID *>(wParam), reinterpret_cast<void **>(lParam));
561  case SMC_GETSFOBJECT:
562  break;
563  case SMC_EXEC:
564  PostMessageW(psmd->hwnd, WM_COMMAND, psmd->uId, 0);
565  break;
566  case SMC_SFEXEC:
567  SHInvokeDefaultCommand(psmd->hwnd, psmd->psf, psmd->pidlItem);
568  break;
569  case SMC_SFSELECTITEM:
570  break;
571  case 13:
572  // return tooltip
573  break;
574  case SMC_REFRESH:
575  break;
576  case SMC_DEMOTE:
577  break;
578  case SMC_PROMOTE:
579  break;
580  case 0x13:
581  break;
582  case SMC_DEFAULTICON:
583  break;
584  case SMC_NEWITEM:
585  break;
586  case SMC_CHEVRONEXPAND:
587  break;
588  case SMC_DISPLAYCHEVRONTIP:
589  break;
590  case SMC_SETSFOBJECT:
591  break;
592  case SMC_SHCHANGENOTIFY:
593  break;
594  case SMC_CHEVRONGETTIP:
595  break;
596  case SMC_SFDDRESTRICTED:
597  break;
598  case 0x35:
599  break;
600  case 49:
601  break;
602  case 0x10000000:
603  break;
604  }
605  return S_FALSE;
606 }
607 
609 {
610  fMainReBar = NULL;
611  fLocked = false;
616  fAdviseCookie = 0;
617 }
618 
620 {
621 }
622 
623 void CInternetToolbar::AddDockItem(IUnknown *newItem, int bandID, int flags)
624 {
625  CComPtr<CDockSite> newSite;
626 
627  newSite = new CComObject<CDockSite>;
628  newSite->Initialize(newItem, this, fMainReBar, bandID, flags);
629 }
630 
632 {
633  CComPtr<IDockingWindowSite> dockingWindowSite;
634  RECT availableBorderSpace;
635 
636  HRESULT hResult = fSite->QueryInterface(IID_PPV_ARG(IDockingWindowSite, &dockingWindowSite));
637  if (FAILED_UNEXPECTEDLY(hResult))
638  return hResult;
639  hResult = dockingWindowSite->GetBorderDW(static_cast<IDockingWindow *>(this), &availableBorderSpace);
640  if (FAILED_UNEXPECTEDLY(hResult))
641  return hResult;
642 
643  if (maxHeight && availableBorderSpace.bottom - availableBorderSpace.top > maxHeight)
644  {
645  availableBorderSpace.bottom = availableBorderSpace.top + maxHeight;
646  }
647 
648  return ResizeBorderDW(&availableBorderSpace, fSite, FALSE);
649 }
650 
652 {
653  CComPtr<IShellMenu> menubar;
655  VARIANT menuOut;
656  HWND ownerWindow;
657  HRESULT hResult;
658 
659  if (!pMenuBar)
660  return E_POINTER;
661 
662  *pMenuBar = NULL;
663 
664  hResult = CMenuBand_CreateInstance(IID_PPV_ARG(IShellMenu, &menubar));
665  if (FAILED_UNEXPECTEDLY(hResult))
666  return hResult;
667 
668  hResult = fMenuCallback->QueryInterface(IID_PPV_ARG(IShellMenuCallback, &callback));
669  if (FAILED_UNEXPECTEDLY(hResult))
670  return hResult;
671 
672  hResult = menubar->Initialize(callback, -1, ANCESTORDEFAULT, SMINIT_HORIZONTAL | SMINIT_TOPLEVEL);
673  if (FAILED_UNEXPECTEDLY(hResult))
674  return hResult;
675 
676  // Set Menu
677  {
678  hResult = IUnknown_Exec(fSite, CGID_Explorer, 0x35, 0, NULL, &menuOut);
679  if (FAILED_UNEXPECTEDLY(hResult))
680  return hResult;
681 
682  if (V_VT(&menuOut) != VT_INT_PTR || V_INTREF(&menuOut) == NULL)
683  return E_FAIL;
684 
685  hResult = IUnknown_GetWindow(fSite, &ownerWindow);
686  if (FAILED_UNEXPECTEDLY(hResult))
687  return hResult;
688 
689  HMENU hMenuBar = (HMENU) V_INTREF(&menuOut);
690 
691  // FIXME: Figure out the proper way to do this.
692  HMENU hMenuFavs = GetSubMenu(hMenuBar, 3);
693  if (hMenuFavs)
694  {
696  }
697 
698  hResult = menubar->SetMenu(hMenuBar, ownerWindow, SMSET_DONTOWN);
699  if (FAILED_UNEXPECTEDLY(hResult))
700  return hResult;
701  }
702 
703  hResult = IUnknown_Exec(menubar, CGID_MenuBand, 3, 1, NULL, NULL);
704  if (FAILED_UNEXPECTEDLY(hResult))
705  return hResult;
706 
707  *pMenuBar = menubar.Detach();
708 
709  return S_OK;
710 }
711 
713 {
714  REBARBANDINFOW rebarBandInfo;
715  int bandCount;
716  CDockSite *dockSite;
717  HRESULT hResult;
718 
719  if (locked != fLocked)
720  {
721  fLocked = locked;
722  rebarBandInfo.cbSize = sizeof(rebarBandInfo);
723  rebarBandInfo.fMask = RBBIM_STYLE | RBBIM_LPARAM;
724  bandCount = (int)SendMessage(fMainReBar, RB_GETBANDCOUNT, 0, 0);
725  for (INT x = 0; x < bandCount; x++)
726  {
727  SendMessage(fMainReBar, RB_GETBANDINFOW, x, (LPARAM)&rebarBandInfo);
728  dockSite = reinterpret_cast<CDockSite *>(rebarBandInfo.lParam);
729  if (dockSite != NULL)
730  {
731  rebarBandInfo.fStyle &= ~(RBBS_NOGRIPPER | RBBS_GRIPPERALWAYS);
732  if (dockSite->fFlags & CDockSite::ITF_NOGRIPPER || fLocked)
733  rebarBandInfo.fStyle |= RBBS_NOGRIPPER;
734  if (dockSite->fFlags & CDockSite::ITF_GRIPPERALWAYS && !fLocked)
735  rebarBandInfo.fStyle |= RBBS_GRIPPERALWAYS;
736  SendMessage(fMainReBar, RB_SETBANDINFOW, x, (LPARAM)&rebarBandInfo);
737  }
738  }
739  hResult = ReserveBorderSpace(0);
740 
741  // TODO: refresh view menu?
742  }
743  return S_OK;
744 }
745 
746 HRESULT CInternetToolbar::SetState(const GUID *pguidCmdGroup, long commandID, OLECMD* pcmd)
747 {
748  long state = 0;
749  if (pcmd->cmdf & OLECMDF_ENABLED)
751  if (pcmd->cmdf & OLECMDF_LATCHED)
753  return SetState(pguidCmdGroup, commandID, state);
754 }
755 
756 HRESULT CInternetToolbar::CommandStateChanged(bool newValue, int commandID)
757 {
758  HRESULT hResult;
759 
760  hResult = S_OK;
761  switch (commandID)
762  {
763  case -1:
764  // loop through buttons
765  //for buttons in CLSID_CommonButtons
766  // if up, QueryStatus for up state and update it
767  //
768  //for buttons in fCommandCategory, update with QueryStatus of fCommandTarget
769 
770  OLECMD commandList[4];
771  commandList[0].cmdID = 0x1c;
772  commandList[1].cmdID = 0x1d;
773  commandList[2].cmdID = 0x1e;
774  commandList[3].cmdID = 0x23;
775  IUnknown_QueryStatus(fSite, CGID_Explorer, 4, commandList, NULL);
776  SetState(&CLSID_CommonButtons, gSearchCommandID, &commandList[0]);
777  SetState(&CLSID_CommonButtons, gFoldersCommandID, &commandList[3]);
778  //SetState(&CLSID_CommonButtons, gFavoritesCommandID, &commandList[2]);
779  //SetState(&CLSID_CommonButtons, gHistoryCommandID, &commandList[1]);
780 
781  break;
782  case 1:
783  // forward
784  hResult = SetState(&CLSID_CommonButtons, IDM_GOTO_FORWARD, newValue ? TBSTATE_ENABLED : 0);
785  break;
786  case 2:
787  // back
788  hResult = SetState(&CLSID_CommonButtons, IDM_GOTO_BACK, newValue ? TBSTATE_ENABLED : 0);
789  break;
790  case 3:
791  // up
792  hResult = SetState(&CLSID_CommonButtons, IDM_GOTO_UPONELEVEL, newValue ? TBSTATE_ENABLED : 0);
793  break;
794  }
795  return hResult;
796 }
797 
799 {
800  CComPtr<IServiceProvider> serviceProvider;
801  HRESULT hResult;
802 
803  hResult = fSite->QueryInterface(IID_PPV_ARG(IServiceProvider, &serviceProvider));
804  if (FAILED_UNEXPECTEDLY(hResult))
805  return hResult;
806  hResult = serviceProvider->QueryService(SID_IBandProxy, IID_PPV_ARG(IBandProxy, &fBandProxy));
807  if (FAILED_UNEXPECTEDLY(hResult))
808  {
809  hResult = CBandProxy_CreateInstance(IID_PPV_ARG(IBandProxy, &fBandProxy));
810  if (FAILED_UNEXPECTEDLY(hResult))
811  return hResult;
812  hResult = fBandProxy->SetSite(fSite);
813  if (FAILED_UNEXPECTEDLY(hResult))
814  return hResult;
815  }
816  return S_OK;
817 }
818 
820 {
821  return E_NOTIMPL;
822 }
823 
825 {
826  HRESULT hr = S_FALSE;
827 
828  if (fMenuBar)
830  if (hr != S_FALSE)
831  return hr;
832 
833  if (fControlsBar)
835  if (hr != S_FALSE)
836  return hr;
837 
838  if (fNavigationBar)
840  if (hr != S_FALSE)
841  return hr;
842 
843  return S_FALSE;
844 }
845 
847 {
848  HRESULT hr = S_FALSE;
849 
850  if (fMenuBar)
852  if (hr == S_OK)
853  return hr;
854 
855  if (fControlsBar)
857  if (hr == S_OK)
858  return hr;
859 
860  if (fNavigationBar)
862  if (hr == S_OK)
863  return hr;
864 
865  return S_FALSE;
866 }
867 
869 {
870  if (lphwnd == NULL)
871  return E_POINTER;
872  *lphwnd = m_hWnd;
873  return S_OK;
874 }
875 
877 {
878  return E_NOTIMPL;
879 }
880 
882 {
883  HRESULT hResult;
884 
885  // show the bar here
886  if (fShow)
887  {
888  hResult = ReserveBorderSpace();
889  if (FAILED_UNEXPECTEDLY(hResult))
890  return hResult;
891  }
892 
893  if (fMenuBar)
894  {
895  hResult = IUnknown_ShowDW(fMenuBar, fShow);
896  if (FAILED_UNEXPECTEDLY(hResult))
897  return hResult;
898  }
899 
900  if (fControlsBar)
901  {
902  hResult = IUnknown_ShowDW(fControlsBar, fShow);
903  if (FAILED_UNEXPECTEDLY(hResult))
904  return hResult;
905  }
906  if (fNavigationBar)
907  {
908  hResult = IUnknown_ShowDW(fNavigationBar, fShow);
909  if (FAILED_UNEXPECTEDLY(hResult))
910  return hResult;
911  }
912  if (fLogoBar)
913  {
914  hResult = IUnknown_ShowDW(fLogoBar, fShow);
915  if (FAILED_UNEXPECTEDLY(hResult))
916  return hResult;
917  }
918  return S_OK;
919 }
920 
922 {
923  HRESULT hResult;
924 
925  if (fMenuBar)
926  {
928  if (FAILED_UNEXPECTEDLY(hResult))
929  return hResult;
930  ReleaseCComPtrExpectZero(fMenuBar);
931  }
932  if (fControlsBar)
933  {
935  if (FAILED_UNEXPECTEDLY(hResult))
936  return hResult;
937  ReleaseCComPtrExpectZero(fControlsBar);
938  }
939  if (fNavigationBar)
940  {
942  if (FAILED_UNEXPECTEDLY(hResult))
943  return hResult;
944  ReleaseCComPtrExpectZero(fNavigationBar);
945  }
946  if (fLogoBar)
947  {
949  if (FAILED_UNEXPECTEDLY(hResult))
950  return hResult;
951  ReleaseCComPtrExpectZero(fLogoBar);
952  }
953 
954  SetSite(NULL);
955  return S_OK;
956 }
957 
959  IUnknown *punkToolbarSite, BOOL fReserved)
960 {
961  RECT neededBorderSpace;
962  RECT availableBorderSpace = *prcBorder;
963 
964  SendMessage(fMainReBar, RB_SIZETORECT, RBSTR_CHANGERECT, reinterpret_cast<LPARAM>(&availableBorderSpace));
965 
966  // RBSTR_CHANGERECT does not seem to set the proper size in the rect.
967  // Let's make sure we fetch the actual size properly.
968  ::GetWindowRect(fMainReBar, &availableBorderSpace);
969  neededBorderSpace.left = 0;
970  neededBorderSpace.top = availableBorderSpace.bottom - availableBorderSpace.top;
971  if (!fLocked)
972  neededBorderSpace.top += 3;
973  neededBorderSpace.right = 0;
974  neededBorderSpace.bottom = 0;
975 
976  CComPtr<IDockingWindowSite> dockingWindowSite;
977 
978  HRESULT hResult = fSite->QueryInterface(IID_PPV_ARG(IDockingWindowSite, &dockingWindowSite));
979  if (FAILED_UNEXPECTEDLY(hResult))
980  return hResult;
981 
982  hResult = dockingWindowSite->RequestBorderSpaceDW(static_cast<IDockingWindow *>(this), &neededBorderSpace);
983  if (FAILED_UNEXPECTEDLY(hResult))
984  return hResult;
985 
986  hResult = dockingWindowSite->SetBorderSpaceDW(static_cast<IDockingWindow *>(this), &neededBorderSpace);
987  if (FAILED_UNEXPECTEDLY(hResult))
988  return hResult;
989 
990  return S_OK;
991 }
992 
994 {
995  if (pClassID == NULL)
996  return E_POINTER;
997  *pClassID = CLSID_InternetToolbar;
998  return S_OK;
999 }
1000 
1002 {
1003  return E_NOTIMPL;
1004 }
1005 
1007 {
1008  return E_NOTIMPL;
1009 }
1010 
1012 {
1013  return E_NOTIMPL;
1014 }
1015 
1017 {
1018  return E_NOTIMPL;
1019 }
1020 
1022 {
1023  CComPtr<IShellMenu> menuBar;
1024  CComPtr<IUnknown> logoBar;
1025  CComPtr<IUnknown> toolsBar;
1026  CComPtr<IUnknown> navigationBar;
1027  HRESULT hResult;
1028 
1029  /* Create and attach the menubar to the rebar */
1030  hResult = CreateMenuBar(&menuBar);
1031  if (FAILED_UNEXPECTEDLY(hResult))
1032  return hResult;
1034 
1035  hResult = IUnknown_GetWindow(menuBar, &fMenuBandWindow);
1036  fMenuBar.Attach(menuBar.Detach()); // transfer the ref count
1037 
1038  // FIXME: The ROS Rebar does not properly support fixed-size items such as the brandband,
1039  // and it will put them in their own row, sized to take up the whole row.
1040 #if 0
1041  /* Create and attach the brand/logo to the rebar */
1042  hResult = CBrandBand_CreateInstance(IID_PPV_ARG(IUnknown, &logoBar));
1043  if (FAILED_UNEXPECTEDLY(hResult))
1044  return hResult;
1046  fLogoBar.Attach(logoBar.Detach()); // transfer the ref count
1047 #endif
1048 
1049  /* Create and attach the standard toolbar to the rebar */
1050  hResult = CToolsBand_CreateInstance(IID_PPV_ARG(IUnknown, &toolsBar));
1051  if (FAILED_UNEXPECTEDLY(hResult))
1052  return hResult;
1054  fControlsBar.Attach(toolsBar.Detach()); // transfer the ref count
1056  if (FAILED_UNEXPECTEDLY(hResult))
1057  return hResult;
1058 
1059  /* Create and attach the address/navigation toolbar to the rebar */
1060  hResult = CAddressBand_CreateInstance(IID_PPV_ARG(IUnknown, &navigationBar));
1061  if (FAILED_UNEXPECTEDLY(hResult))
1062  return hResult;
1064  fNavigationBar.Attach(navigationBar.Detach());
1066 
1067  return S_OK;
1068 }
1069 
1071 {
1072  int index = (int)SendMessage(fMainReBar, RB_IDTOINDEX, BandID, 0);
1073 
1076 
1077  return (bandInfo.fStyle & RBBS_HIDDEN) ? S_FALSE : S_OK;
1078 }
1079 
1081 {
1082  int index = (int)SendMessage(fMainReBar, RB_IDTOINDEX, BandID, 0);
1083 
1086 
1087  if (bandInfo.fStyle & RBBS_HIDDEN)
1088  bandInfo.fStyle &= ~RBBS_HIDDEN;
1089  else
1090  bandInfo.fStyle |= RBBS_HIDDEN;
1091 
1093 
1094  ReserveBorderSpace(0);
1095  return S_OK;
1096 }
1097 
1099  ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText)
1100 {
1101  if (IsEqualIID(*pguidCmdGroup, CGID_PrivCITCommands))
1102  {
1103  while (cCmds != 0)
1104  {
1105  switch (prgCmds->cmdID)
1106  {
1107  case ITID_TEXTLABELS: // Text Labels state
1108  prgCmds->cmdf = OLECMDF_SUPPORTED;
1109  break;
1110  case ITID_TOOLBARBANDSHOWN: // toolbar visibility
1111  prgCmds->cmdf = OLECMDF_SUPPORTED | OLECMDF_ENABLED;
1113  prgCmds->cmdf |= OLECMDF_LATCHED;
1114  break;
1115  case ITID_ADDRESSBANDSHOWN: // address bar visibility
1116  prgCmds->cmdf = OLECMDF_SUPPORTED | OLECMDF_ENABLED;
1118  prgCmds->cmdf |= OLECMDF_LATCHED;
1119  break;
1120  case ITID_LINKSBANDSHOWN: // links bar visibility
1121  prgCmds->cmdf = 0;
1122  break;
1123  case ITID_MENUBANDSHOWN: // Menubar band visibility
1124  prgCmds->cmdf = OLECMDF_SUPPORTED;
1125  if (fMenuBar)
1126  prgCmds->cmdf |= OLECMDF_LATCHED;
1127  break;
1128  case ITID_AUTOHIDEENABLED: // Auto hide enabled/disabled
1129  prgCmds->cmdf = 0;
1130  break;
1131  case ITID_CUSTOMIZEENABLED: // customize enabled
1132  prgCmds->cmdf = OLECMDF_SUPPORTED;
1133  break;
1134  case ITID_TOOLBARLOCKED: // lock toolbars
1135  prgCmds->cmdf = OLECMDF_SUPPORTED | OLECMDF_ENABLED;
1136  if (fLocked)
1137  prgCmds->cmdf |= OLECMDF_LATCHED;
1138  break;
1139  default:
1140  prgCmds->cmdf = 0;
1141  break;
1142  }
1143  prgCmds++;
1144  cCmds--;
1145  }
1146  return S_OK;
1147  }
1148  return E_FAIL;
1149 }
1150 
1152  DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
1153 {
1154  if (IsEqualIID(*pguidCmdGroup, CGID_PrivCITCommands))
1155  {
1156  switch (nCmdID)
1157  {
1158  case 1:
1159  // what do I do here?
1160  return S_OK;
1161  case ITID_TEXTLABELS:
1162  // toggle text labels
1163  return S_OK;
1164  case ITID_TOOLBARBANDSHOWN:
1166  case ITID_ADDRESSBANDSHOWN:
1168  case ITID_LINKSBANDSHOWN:
1169  // toggle links band visibility
1170  return S_OK;
1171  case ITID_CUSTOMIZEENABLED:
1172  // run customize
1173  return S_OK;
1174  case ITID_TOOLBARLOCKED:
1175  return LockUnlockToolbars(!fLocked);
1176  }
1177  }
1178  return E_FAIL;
1179 }
1180 
1182 {
1183  return E_NOTIMPL;
1184 }
1185 
1187 {
1188  return E_NOTIMPL;
1189 }
1190 
1192  LCID lcid, DISPID *rgDispId)
1193 {
1194  return E_NOTIMPL;
1195 }
1196 
1198  WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
1199 {
1200  HRESULT hResult;
1201 
1202  switch(dispIdMember)
1203  {
1204  case DISPID_BEFORENAVIGATE:
1205  hResult = S_OK;
1206  break;
1208  hResult = S_OK;
1209  break;
1211  if (pDispParams->cArgs != 2)
1212  return E_INVALIDARG;
1213  if (V_VT(&pDispParams->rgvarg[0]) != VT_BOOL || V_VT(&pDispParams->rgvarg[1]) != VT_I4)
1214  return E_INVALIDARG;
1215  return CommandStateChanged(V_BOOL(&pDispParams->rgvarg[0]) != VARIANT_FALSE,
1216  V_I4(&pDispParams->rgvarg[1]));
1217  case DISPID_DOWNLOADBEGIN:
1218  hResult = S_OK;
1219  break;
1221  hResult = S_OK;
1222  break;
1224  hResult = S_OK;
1225  break;
1226  }
1227  return S_OK;
1228 }
1229 
1231 {
1232  HRESULT hResult;
1233 
1234  TRACE("SetCommandTarget %p category %s param %d\n", theTarget, wine_dbgstr_guid(category), param14);
1235 
1236  fCommandTarget.Release();
1238  if (FAILED_UNEXPECTEDLY(hResult))
1239  return hResult;
1241  return S_OK;
1242 }
1243 
1245 {
1246  return E_NOTIMPL;
1247 }
1248 
1250 {
1251  return E_NOTIMPL;
1252 }
1253 
1255  HINSTANCE param10, LPCTSTR param14, long *param18)
1256 {
1257  long result;
1258 
1260  reinterpret_cast<WPARAM>(param10), reinterpret_cast<LPARAM>(param14));
1261  *param18 = result;
1262  if (result == -1)
1263  return E_FAIL;
1264  return S_OK;
1265 }
1266 
1267 HRESULT STDMETHODCALLTYPE CInternetToolbar::GetButton(const GUID *pguidCmdGroup, long param10, long param14)
1268 {
1269  return E_NOTIMPL;
1270 }
1271 
1272 HRESULT STDMETHODCALLTYPE CInternetToolbar::GetState(const GUID *pguidCmdGroup, long commandID, long *theState)
1273 {
1274  if (theState == NULL)
1275  return E_POINTER;
1276  // map the command id
1277  *theState = (long)::SendMessage(fToolbarWindow, TB_GETSTATE, commandID, 0);
1278  return S_OK;
1279 }
1280 
1281 HRESULT STDMETHODCALLTYPE CInternetToolbar::SetState(const GUID *pguidCmdGroup, long commandID, long theState)
1282 {
1283  // map the command id
1284  ::SendMessage(fToolbarWindow, TB_SETSTATE, commandID, MAKELONG(theState, 0));
1285  return S_OK;
1286 }
1287 
1288 HRESULT STDMETHODCALLTYPE CInternetToolbar::AddBitmap(const GUID *pguidCmdGroup, long param10, long buttonCount,
1289  TBADDBITMAP *lParam, long *newIndex, COLORREF param20)
1290 {
1291  return E_NOTIMPL;
1292 }
1293 
1295 {
1296  if (paramC == NULL)
1297  return E_POINTER;
1298  *paramC = MAKELONG(24, 24);
1299  return S_OK;
1300 }
1301 
1304 {
1305  return E_NOTIMPL;
1306 }
1307 
1309  HIMAGELIST param14, HIMAGELIST param18)
1310 {
1311  return E_NOTIMPL;
1312 }
1313 
1314 HRESULT STDMETHODCALLTYPE CInternetToolbar::ModifyButton(const GUID *pguidCmdGroup, long param10, long param14)
1315 {
1316  return E_NOTIMPL;
1317 }
1318 
1320 {
1321  return E_NOTIMPL;
1322 }
1323 
1325 {
1326  CComPtr<IBrowserService> browserService;
1327  HWND ownerWindow;
1328  HWND dockContainer;
1329  HRESULT hResult;
1330 
1331  if (pUnkSite == NULL)
1332  {
1333  hResult = AtlUnadvise(fSite, DIID_DWebBrowserEvents, fAdviseCookie);
1335  DestroyWindow();
1336  fSite.Release();
1337  }
1338  else
1339  {
1340  // get window handle of owner
1341  hResult = IUnknown_GetWindow(pUnkSite, &ownerWindow);
1342  if (FAILED_UNEXPECTEDLY(hResult))
1343  return hResult;
1344  if (ownerWindow == NULL)
1345  return E_FAIL;
1346 
1347  // create dock container
1348  fSite = pUnkSite;
1349  dockContainer = SHCreateWorkerWindowW(0, ownerWindow, 0,
1351  if (dockContainer == NULL)
1352  return E_FAIL;
1353  SubclassWindow(dockContainer);
1354 
1355  // create rebar in dock container
1361  0, 0, 700, 60, dockContainer, NULL, _AtlBaseModule.GetModuleInstance(), NULL);
1362  if (fMainReBar == NULL)
1363  return E_FAIL;
1364 
1365  // take advice to watch events
1366  hResult = IUnknown_QueryService(pUnkSite, SID_SShellBrowser, IID_PPV_ARG(IBrowserService, &browserService));
1367  hResult = AtlAdvise(browserService, static_cast<IDispatch *>(this), DIID_DWebBrowserEvents, &fAdviseCookie);
1368  }
1369  return S_OK;
1370 }
1371 
1373 {
1374  if (ppvSite == NULL)
1375  return E_POINTER;
1376  if (fSite.p != NULL)
1377  return fSite->QueryInterface(riid, ppvSite);
1378  *ppvSite = NULL;
1379  return S_OK;
1380 }
1381 
1383 {
1384  HRESULT hResult;
1385 
1386  if (IsEqualIID(guidService, IID_IBandSite))
1387  return this->QueryInterface(riid, ppvObject);
1388  if (IsEqualIID(guidService, SID_IBandProxy))
1389  {
1390  if (fBandProxy.p == NULL)
1391  {
1392  hResult = CreateAndInitBandProxy();
1393  if (FAILED_UNEXPECTEDLY(hResult))
1394  return hResult;
1395  }
1396  return fBandProxy->QueryInterface(riid, ppvObject);
1397  }
1398  return IUnknown_QueryService(fSite, guidService, riid, ppvObject);
1399 }
1400 
1402  HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult)
1403 {
1404  HRESULT hResult;
1405 
1406  if (fMenuBar)
1407  {
1408  hResult = IUnknown_RelayWinEvent(fMenuBar, hWnd, uMsg, wParam, lParam, theResult);
1409  if (hResult != S_FALSE)
1410  return hResult;
1411  }
1412 
1413  if (fNavigationBar)
1414  {
1415  hResult = IUnknown_RelayWinEvent(fNavigationBar, hWnd, uMsg, wParam, lParam, theResult);
1416  if (hResult != S_FALSE)
1417  return hResult;
1418  }
1419 
1420  if (fLogoBar)
1421  {
1422  hResult = IUnknown_RelayWinEvent(fLogoBar, hWnd, uMsg, wParam, lParam, theResult);
1423  if (hResult != S_FALSE)
1424  return hResult;
1425  }
1426 
1427  return S_FALSE;
1428 }
1429 
1431 {
1432  UNIMPLEMENTED;
1433  return E_NOTIMPL;
1434 }
1435 
1437 {
1438  UNIMPLEMENTED;
1439  return E_NOTIMPL;
1440 }
1441 
1443 {
1444  UNIMPLEMENTED;
1445  return E_NOTIMPL;
1446 }
1447 
1449  IDeskBand **ppstb, DWORD *pdwState, LPWSTR pszName, int cchName)
1450 {
1451  if (ppstb == NULL)
1452  return E_POINTER;
1453  if (dwBandID == ITBBID_MENUBAND && fMenuBar.p != NULL)
1454  return fMenuBar->QueryInterface(IID_PPV_ARG(IDeskBand, ppstb));
1455  //if (dwBandID == ITBBID_BRANDBAND && fLogoBar.p != NULL)
1456  // return fLogoBar->QueryInterface(IID_PPV_ARG(IDeskBand, ppstb));
1457  *ppstb = NULL;
1458  return E_FAIL;
1459 }
1460 
1462 {
1463  UNIMPLEMENTED;
1464  return E_NOTIMPL;
1465 }
1466 
1468 {
1469  UNIMPLEMENTED;
1470  return E_NOTIMPL;
1471 }
1472 
1474 {
1475  UNIMPLEMENTED;
1476  return E_NOTIMPL;
1477 }
1478 
1480 {
1481  UNIMPLEMENTED;
1482  return E_NOTIMPL;
1483 }
1484 
1486 {
1487  UNIMPLEMENTED;
1488  return E_NOTIMPL;
1489 }
1490 
1491 LRESULT CInternetToolbar::OnTravelBack(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
1492 {
1493  CComPtr<IWebBrowser> webBrowser;
1494  HRESULT hResult;
1495 
1496  hResult = IUnknown_QueryService(fSite, SID_SShellBrowser, IID_PPV_ARG(IWebBrowser, &webBrowser));
1497  if (FAILED_UNEXPECTEDLY(hResult))
1498  return 0;
1499  hResult = webBrowser->GoBack();
1500  return 1;
1501 }
1502 
1503 LRESULT CInternetToolbar::OnTravelForward(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
1504 {
1505  CComPtr<IWebBrowser> webBrowser;
1506  HRESULT hResult;
1507 
1508  hResult = IUnknown_QueryService(fSite, SID_SShellBrowser, IID_PPV_ARG(IWebBrowser, &webBrowser));
1509  if (FAILED_UNEXPECTEDLY(hResult))
1510  return 0;
1511  hResult = webBrowser->GoForward();
1512  return 1;
1513 }
1514 
1515 LRESULT CInternetToolbar::OnUpLevel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
1516 {
1517  IUnknown_Exec(fSite, CGID_ShellBrowser, IDM_GOTO_UPONELEVEL, 0, NULL, NULL);
1518  return 1;
1519 }
1520 
1521 LRESULT CInternetToolbar::OnSearch(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
1522 {
1523  IUnknown_Exec(fSite, CGID_Explorer, 0x1c, 1, NULL, NULL);
1524  return 1;
1525 }
1526 
1527 LRESULT CInternetToolbar::OnFolders(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
1528 {
1529  IUnknown_Exec(fSite, CGID_Explorer, 0x23, 0, NULL, NULL);
1530  return 1;
1531 }
1532 
1534 {
1535  HRESULT hResult;
1536 
1537  if (fCommandTarget.p != NULL)
1538  {
1539  hResult = fCommandTarget->Exec(&fCommandCategory, wID, 0, NULL, NULL);
1540  if (FAILED(hResult))
1541  {
1542  ::SendMessageW(::GetParent(m_hWnd), WM_COMMAND, wID, 0);
1543  }
1544  }
1545  return 1;
1546 }
1547 
1549 {
1550  CComPtr<IBrowserService> browserService;
1551  CComPtr<IOleCommandTarget> commandTarget;
1552  CComPtr<ITravelLog> travelLog;
1553  NMTOOLBARW *notifyInfo;
1554  RECT bounds;
1555  HMENU newMenu;
1556  TPMPARAMS params;
1557  int selectedItem;
1558  VARIANT parmIn;
1559  OLECMD commandInfo;
1560  HRESULT hResult;
1561  wchar_t templateString[200];
1562 
1563  notifyInfo = (NMTOOLBARW *)pNMHDR;
1564  if (notifyInfo->hdr.hwndFrom != fToolbarWindow)
1565  {
1566  // not from the toolbar, keep looking for a message handler
1567  bHandled = FALSE;
1568  return 0;
1569  }
1570  SendMessage(fToolbarWindow, TB_GETRECT, notifyInfo->iItem, reinterpret_cast<LPARAM>(&bounds));
1571  ::MapWindowPoints(fToolbarWindow, NULL, reinterpret_cast<POINT *>(&bounds), 2);
1572  switch (notifyInfo->iItem)
1573  {
1574  case IDM_GOTO_BACK:
1575  newMenu = CreatePopupMenu();
1577  hResult = browserService->GetTravelLog(&travelLog);
1578  hResult = travelLog->InsertMenuEntries(browserService, newMenu, 0, 1, 9, TLMENUF_BACK);
1579  commandInfo.cmdID = 0x1d;
1580  hResult = IUnknown_QueryStatus(browserService, CGID_Explorer, 1, &commandInfo, NULL);
1581  if ((commandInfo.cmdf & (OLECMDF_ENABLED | OLECMDF_LATCHED)) == OLECMDF_ENABLED &&
1582  travelLog->CountEntries(browserService) > 1)
1583  {
1584  AppendMenuW(newMenu, MF_SEPARATOR, -1, L"");
1585 
1586  if (LoadStringW(_AtlBaseModule.GetResourceInstance(),
1587  IDS_HISTORYTEXT, templateString, sizeof(templateString) / sizeof(wchar_t)) == 0)
1588  StringCbCopyW(templateString, sizeof(templateString), L"&History\tCtrl+H");
1589 
1590  AppendMenuW(newMenu, MF_STRING /* | MF_OWNERDRAW */, IDM_EXPLORERBAR_HISTORY, templateString);
1591  }
1592  params.cbSize = sizeof(params);
1593  params.rcExclude = bounds;
1594  selectedItem = TrackPopupMenuEx(newMenu, TPM_LEFTALIGN | TPM_TOPALIGN | TPM_RETURNCMD,
1595  bounds.left, bounds.bottom, m_hWnd, &params);
1596  if (selectedItem == IDM_EXPLORERBAR_HISTORY)
1597  {
1598  V_VT(&parmIn) = VT_I4;
1599  V_I4(&parmIn) = 1;
1600  Exec(&CGID_Explorer, 0x1d, 2, &parmIn, NULL);
1601  }
1602  else if (selectedItem != 0)
1603  hResult = travelLog->Travel(browserService, -selectedItem);
1604  DestroyMenu(newMenu);
1605  break;
1606  case IDM_GOTO_FORWARD:
1607  newMenu = CreatePopupMenu();
1609  hResult = browserService->GetTravelLog(&travelLog);
1610  hResult = travelLog->InsertMenuEntries(browserService, newMenu, 0, 1, 9, TLMENUF_FORE);
1611  commandInfo.cmdID = 0x1d;
1612  hResult = IUnknown_QueryStatus(browserService, CGID_Explorer, 1, &commandInfo, NULL);
1613  if ((commandInfo.cmdf & (OLECMDF_ENABLED | OLECMDF_LATCHED)) == OLECMDF_ENABLED &&
1614  travelLog->CountEntries(browserService) > 1)
1615  {
1616  AppendMenuW(newMenu, MF_SEPARATOR, -1, L"");
1617 
1618  if (LoadStringW(_AtlBaseModule.GetResourceInstance(),
1619  IDS_HISTORYTEXT, templateString, sizeof(templateString) / sizeof(wchar_t)) == 0)
1620  StringCbCopyW(templateString, sizeof(templateString), L"&History\tCtrl+H");
1621 
1622  AppendMenuW(newMenu, MF_STRING /* | MF_OWNERDRAW */, IDM_EXPLORERBAR_HISTORY, templateString);
1623  }
1624  params.cbSize = sizeof(params);
1625  params.rcExclude = bounds;
1626  selectedItem = TrackPopupMenuEx(newMenu, TPM_LEFTALIGN | TPM_TOPALIGN | TPM_RETURNCMD,
1627  bounds.left, bounds.bottom, m_hWnd, &params);
1628  if (selectedItem == IDM_EXPLORERBAR_HISTORY)
1629  {
1630  V_VT(&parmIn) = VT_I4;
1631  V_I4(&parmIn) = 1;
1632  Exec(&CGID_Explorer, 0x1d, 2, &parmIn, NULL);
1633  }
1634  else if (selectedItem != 0)
1635  hResult = travelLog->Travel(browserService, selectedItem);
1636  DestroyMenu(newMenu);
1637  break;
1638  case gViewsCommandID:
1639  VARIANT inValue;
1640  CComVariant outValue;
1641  HRESULT hResult;
1642 
1643  V_VT(&inValue) = VT_INT_PTR;
1644  V_INTREF(&inValue) = reinterpret_cast<INT *>(&bounds);
1645 
1646  if (fCommandTarget.p != NULL)
1647  hResult = fCommandTarget->Exec(&fCommandCategory, FCIDM_SHVIEW_AUTOARRANGE, 1, &inValue, &outValue);
1648  // pvaOut is VT_I4 with value 0x403
1649  break;
1650  }
1651  return TBDDRET_DEFAULT;
1652 }
1653 
1655 {
1656  return 1;
1657 }
1658 
1660 {
1661  return 1;
1662 }
1663 
1665 {
1666  HMENU contextMenuBar;
1667  HMENU contextMenu;
1668  POINT clickLocation;
1669  int command;
1670  RBHITTESTINFO hitTestInfo;
1671  REBARBANDINFOW rebarBandInfo;
1672  int bandID;
1673  BOOL goButtonChecked;
1674 
1675  clickLocation.x = LOWORD(lParam);
1676  clickLocation.y = HIWORD(lParam);
1677  hitTestInfo.pt = clickLocation;
1678  ScreenToClient(&hitTestInfo.pt);
1679  SendMessage(fMainReBar, RB_HITTEST, 0, (LPARAM)&hitTestInfo);
1680  if (hitTestInfo.iBand == -1)
1681  return 0;
1682  rebarBandInfo.cbSize = sizeof(rebarBandInfo);
1683  rebarBandInfo.fMask = RBBIM_ID;
1684  SendMessage(fMainReBar, RB_GETBANDINFOW, hitTestInfo.iBand, (LPARAM)&rebarBandInfo);
1685  bandID = rebarBandInfo.wID;
1686  contextMenuBar = LoadMenu(_AtlBaseModule.GetResourceInstance(), MAKEINTRESOURCE(IDM_CABINET_CONTEXTMENU));
1687  contextMenu = GetSubMenu(contextMenuBar, 0);
1688  switch (bandID)
1689  {
1690  case ITBBID_MENUBAND: // menu band
1694  break;
1695  case ITBBID_BRANDBAND: // brand band
1699  break;
1700  case ITBBID_TOOLSBAND: // tools band
1703  break;
1704  case ITBBID_ADDRESSBAND: // navigation band
1707  break;
1708  default:
1709  break;
1710  }
1711 
1713 
1719  goButtonChecked = SHRegGetBoolUSValueW(L"Software\\Microsoft\\Internet Explorer\\Main", L"ShowGoButton", FALSE, TRUE);
1720  SHCheckMenuItem(contextMenu, IDM_TOOLBARS_GOBUTTON, goButtonChecked);
1721 
1722  // TODO: use GetSystemMetrics(SM_MENUDROPALIGNMENT) to determine menu alignment
1724  clickLocation.x, clickLocation.y, 0, m_hWnd, NULL);
1725  switch (command)
1726  {
1727  case IDM_TOOLBARS_STANDARDBUTTONS: // standard buttons
1729  break;
1730  case IDM_TOOLBARS_ADDRESSBAR: // address bar
1732  break;
1733  case IDM_TOOLBARS_LINKSBAR: // links
1734  break;
1735  case IDM_TOOLBARS_LOCKTOOLBARS: // lock the toolbars
1737  break;
1738  case IDM_TOOLBARS_CUSTOMIZE: // customize
1740  break;
1741  case IDM_TOOLBARS_GOBUTTON:
1743  break;
1744  }
1745 
1746  DestroyMenu(contextMenuBar);
1747  return 1;
1748 }
1749 
1751 {
1752  if (wParam != SIZE_MINIMIZED)
1753  {
1756  }
1757  return 1;
1758 }
1759 
1761 {
1762  if ((short)lParam != HTCLIENT || (HWND)wParam != m_hWnd)
1763  {
1764  bHandled = FALSE;
1765  return 0;
1766  }
1768  return 1;
1769 }
1770 
1771 LRESULT CInternetToolbar::OnTipText(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled)
1772 {
1773  CComPtr<IBrowserService> browserService;
1774  CComPtr<ITravelLog> travelLog;
1775  TOOLTIPTEXTW *pTTTW;
1776  UINT nID;
1777  HRESULT hResult;
1778  wchar_t tempString[300];
1779 
1780  pTTTW = reinterpret_cast<TOOLTIPTEXTW *>(pNMHDR);
1781  if ((pTTTW->uFlags & TTF_IDISHWND) != 0)
1782  nID = ::GetDlgCtrlID((HWND)pNMHDR->idFrom);
1783  else
1784  nID = (UINT)pNMHDR->idFrom;
1785 
1786  if (nID != 0)
1787  {
1788  if (nID == (UINT)IDM_GOTO_BACK || nID == (UINT)IDM_GOTO_FORWARD)
1789  {
1790  // TODO: Should this call QueryService?
1791  hResult = fSite->QueryInterface(IID_PPV_ARG(IBrowserService, &browserService));
1792  hResult = browserService->GetTravelLog(&travelLog);
1793  hResult = travelLog->GetToolTipText(browserService,
1794  (nID == (UINT)IDM_GOTO_BACK) ? TLOG_BACK : TLOG_FORE,
1795  0, tempString, 299);
1796  if (FAILED_UNEXPECTEDLY(hResult))
1797  {
1798  bHandled = FALSE;
1799  return 0;
1800  }
1801  }
1802  else
1803  tempString[0] = 0;
1804  wcsncpy (pTTTW->szText, tempString, sizeof(pTTTW->szText) / sizeof(wchar_t));
1805  ::SetWindowPos(pNMHDR->hwndFrom, HWND_TOP, 0, 0, 0, 0,
1807  return 0;
1808  }
1809  return 0;
1810 }
1811 
1813 {
1814  LRESULT theResult;
1815  HRESULT hResult;
1816 
1817  hResult = OnWinEvent((HWND) lParam, uMsg, wParam, lParam, &theResult);
1818 
1819  bHandled = hResult == S_OK;
1820 
1821  return FAILED_UNEXPECTEDLY(hResult) ? 0 : theResult;
1822 }
1824 {
1825  NMHDR *notifyHeader;
1826  LRESULT theResult;
1827  HRESULT hResult;
1828 
1829  notifyHeader = reinterpret_cast<NMHDR *>(lParam);
1830 
1831  hResult = OnWinEvent(notifyHeader->hwndFrom, uMsg, wParam, lParam, &theResult);
1832 
1833  bHandled = hResult == S_OK;
1834 
1835  return FAILED_UNEXPECTEDLY(hResult) ? 0 : theResult;
1836 }
1837 
1839 {
1840  bHandled = FALSE;
1841  if (fLocked)
1842  return 0;
1843 
1844  if (wParam & MK_CONTROL)
1845  return 0;
1846 
1847  fSizing = TRUE;
1848 
1849  DWORD msgp = GetMessagePos();
1850 
1851  fStartPosition.x = GET_X_LPARAM(msgp);
1852  fStartPosition.y = GET_Y_LPARAM(msgp);
1853 
1854  RECT rc;
1855  GetWindowRect(&rc);
1856 
1857  fStartHeight = rc.bottom - rc.top;
1858 
1859  SetCapture();
1860 
1861  bHandled = TRUE;
1862  return 0;
1863 }
1864 
1866 {
1867  bHandled = FALSE;
1868  if (!fSizing)
1869  return 0;
1870 
1871  DWORD msgp = GetMessagePos();
1872 
1873  POINT pt;
1874  pt.x = GET_X_LPARAM(msgp);
1875  pt.y = GET_Y_LPARAM(msgp);
1876 
1878 
1879  bHandled = TRUE;
1880  return 0;
1881 }
1882 
1884 {
1885  bHandled = FALSE;
1886  if (!fSizing)
1887  return 0;
1888 
1889  OnMouseMove(uMsg, wParam, lParam, bHandled);
1890 
1891  fSizing = FALSE;
1892 
1893  ReleaseCapture();
1894 
1895  return 0;
1896 }
1897 
1899 {
1900  HRESULT hr;
1901  HWND hwndMenu;
1902 
1903  hr = IUnknown_GetWindow(fMenuBar, &hwndMenu);
1904  if (FAILED_UNEXPECTEDLY(hr))
1905  return 0;
1906 
1907  CComPtr<IWinEventHandler> menuWinEventHandler;
1908  hr = fMenuBar->QueryInterface(IID_PPV_ARG(IWinEventHandler, &menuWinEventHandler));
1909  if (FAILED_UNEXPECTEDLY(hr))
1910  return 0;
1911 
1912  LRESULT lres;
1913  hr = menuWinEventHandler->OnWinEvent(hwndMenu, uMsg, wParam, lParam, &lres);
1914  if (FAILED_UNEXPECTEDLY(hr))
1915  return 0;
1916 
1917  return lres;
1918 }
DBIM_BKCOLOR struct tagDESKBANDINFO DESKBANDINFO
#define WS_CLIPSIBLINGS
Definition: pedump.c:618
#define DISPID_COMMANDSTATECHANGE
Definition: webchild.h:40
#define IDM_TOOLBARS_ADDRESSBAR
Definition: resource.h:31
virtual HRESULT STDMETHODCALLTYPE EnumNameSpace(ULONG, PULONG)=0
virtual HRESULT STDMETHODCALLTYPE QueryBand(DWORD dwBandID, IDeskBand **ppstb, DWORD *pdwState, LPWSTR pszName, int cchName)
#define MAKEINTRESOURCE
Definition: winuser.h:591
PUITEMID_CHILD pidlItem
Definition: shobjidl.idl:2631
virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
virtual HRESULT STDMETHODCALLTYPE SetBandSiteInfo(const BANDSITEINFO *pbsinfo)
#define IDM_TOOLBARS_LINKSBAR
Definition: resource.h:32
virtual HRESULT STDMETHODCALLTYPE AddString(const GUID *pguidCmdGroup, HINSTANCE param10, LPCTSTR param14, long *param18)
virtual HRESULT STDMETHODCALLTYPE IsWindowOwner(HWND hWnd)
#define RB_SIZETORECT
Definition: commctrl.h:1598
#define REFIID
Definition: guiddef.h:118
const CHAR * LPCTSTR
Definition: xmlstorage.h:193
#define IDM_GOTO_UPONELEVEL
Definition: resource.h:47
#define TLOG_BACK
Definition: shlobj.h:2589
virtual HRESULT STDMETHODCALLTYPE AddButtons(const GUID *pguidCmdGroup, long buttonCount, TBBUTTON *buttons)
void WINAPI ILFree(LPITEMIDLIST pidl)
Definition: pidl.c:925
Definition: compat.h:2298
LRESULT OnQueryInsert(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled)
virtual HRESULT STDMETHODCALLTYPE CloseDW(DWORD dwReserved)
DESKBANDINFO fDeskBandInfo
#define RBBIM_CHILD
Definition: commctrl.h:1506
#define IDM_GOTO_FORWARD
Definition: resource.h:46
HRESULT CBandProxy_CreateInstance(REFIID riid, void **ppv)
Definition: browseui.cpp:42
#define RBS_VARHEIGHT
Definition: commctrl.h:1471
#define MF_BYCOMMAND
Definition: winuser.h:202
long y
Definition: polytest.cpp:48
#define IDS_HISTORYTEXT
Definition: resource.h:129
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
#define FCIDM_SHVIEW_AUTOARRANGE
Definition: shresdef.h:816
HRESULT hr
Definition: shlfolder.c:183
GLuint64EXT * result
Definition: glext.h:11304
Definition: scsiwmi.h:51
long x
Definition: polytest.cpp:48
HRESULT WINAPI AtlAdvise(IUnknown *pUnkCP, IUnknown *pUnk, const IID *iid, DWORD *pdw)
Definition: atl.c:45
virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd)
#define WS_EX_LTRREADING
Definition: winuser.h:393
#define KEY_READ
Definition: nt_native.h:1023
#define TRUE
Definition: types.h:120
#define CSIDL_COMMON_FAVORITES
Definition: shlobj.h:2055
#define pt(x, y)
Definition: drawing.c:79
#define TPM_LEFTALIGN
Definition: winuser.h:2367
REFIID riid
Definition: precomp.h:44
#define TB_ADDSTRINGW
Definition: commctrl.h:1132
#define TB_SETSTATE
Definition: commctrl.h:1054
#define ITID_LINKSBANDSHOWN
Definition: undocshell.h:673
#define IDM_FAVORITES_EMPTY
Definition: resource.h:52
LRESULT OnWinIniChange(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
HRESULT IsBandVisible(int BandID)
virtual HRESULT STDMETHODCALLTYPE ResizeBorderDW(LPCRECT prcBorder, IUnknown *punkToolbarSite, BOOL fReserved)
#define TPM_RETURNCMD
Definition: winuser.h:2377
LRESULT OnQueryDelete(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled)
#define HKEY_CURRENT_USER
Definition: winreg.h:11
virtual HRESULT STDMETHODCALLTYPE CallbackSM(LPSMDATA psmd, UINT uMsg, WPARAM wParam, LPARAM lParam)
HRESULT WINAPI SHInvokeDefaultCommand(HWND hWnd, IShellFolder *lpFolder, LPCITEMIDLIST lpApidl)
Definition: ordinal.c:2974
#define WARN(fmt,...)
Definition: debug.h:112
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT *pCmdText)
BOOL WINAPI TrackPopupMenuEx(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _In_ HWND, _In_opt_ LPTPMPARAMS)
BOOL WINAPI SHRegGetBoolUSValueW(LPCWSTR pszSubKey, LPCWSTR pszValue, BOOL fIgnoreHKCU, BOOL fDefault)
Definition: reg.c:770
static const int gSearchCommandID
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
Definition: shtypes.idl:42
virtual HRESULT STDMETHODCALLTYPE SetCommandTarget(IUnknown *theTarget, GUID *category, long param14)
#define MF_STRING
Definition: winuser.h:138
#define RBBS_BREAK
Definition: commctrl.h:1489
HWND hWnd
Definition: settings.c:17
REFIID LPVOID * ppv
Definition: atlbase.h:39
LONG top
Definition: windef.h:307
#define DISPID_DOCUMENTCOMPLETE
Definition: webchild.h:61
#define IDM_CABINET_CONTEXTMENU
Definition: resource.h:87
#define GET_X_LPARAM(lp)
Definition: windowsx.h:299
IUnknown * punk
Definition: shobjidl.idl:2629
#define RBBIM_ID
Definition: commctrl.h:1510
const char * wine_dbgstr_guid(const GUID *guid)
#define DISPID_DOWNLOADCOMPLETE
Definition: webchild.h:39
virtual HRESULT STDMETHODCALLTYPE InitNew()
#define HWND_TOP
Definition: winuser.h:1197
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
#define RBBS_TOPALIGN
Definition: commctrl.h:1500
#define TB_CUSTOMIZE
Definition: commctrl.h:1130
#define RB_GETBANDINFOW
Definition: commctrl.h:1609
#define TB_GETRECT
Definition: commctrl.h:1153
#define TBDDRET_DEFAULT
Definition: commctrl.h:1424
virtual HRESULT STDMETHODCALLTYPE AddBitmap(const GUID *pguidCmdGroup, long param10, long buttonCount, TBADDBITMAP *lParam, long *newIndex, COLORREF param20)
DWORD LCID
Definition: nls.h:13
UINT_PTR WPARAM
Definition: windef.h:207
virtual HRESULT STDMETHODCALLTYPE SendToolbarMsg(const GUID *pguidCmdGroup, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *result)
#define WS_CHILD
Definition: pedump.c:617
DWORD WINAPI GetMessagePos(void)
Definition: message.c:1351
HRESULT WINAPI SHBindToFolder(LPCITEMIDLIST path, IShellFolder **newFolder)
#define ITID_TEXTLABELS
Definition: undocshell.h:670
LONG left
Definition: windef.h:306
#define SWP_NOZORDER
Definition: winuser.h:1237
if(dx==0 &&dy==0)
Definition: linetemp.h:174
#define WS_CLIPCHILDREN
Definition: pedump.c:619
static LPOLESTR
Definition: stg_prop.c:27
LONG right
Definition: windef.h:308
#define IDM_TOOLBARS_TEXTLABELS
Definition: resource.h:35
#define IID_PPV_ARG(Itype, ppType)
#define E_FAIL
Definition: ddrawi.h:102
HRESULT WINAPI IUnknown_GetWindow(IUnknown *lpUnknown, HWND *lphWnd)
Definition: ordinal.c:1329
BOOL WINAPI DestroyWindow(_In_ HWND)
#define RBBIM_LPARAM
Definition: commctrl.h:1512
#define WS_EX_TOOLWINDOW
Definition: winuser.h:404
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
LRESULT OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
int32_t INT
Definition: typedefs.h:58
virtual HRESULT STDMETHODCALLTYPE Unknown1()
HRESULT WINAPI IUnknown_QueryService(IUnknown *, REFGUID, REFIID, LPVOID *)
Definition: ordinal.c:1494
WPARAM wParam
Definition: combotst.c:138
CComPtr< IUnknown > fLogoBar
#define IDC_SIZENS
Definition: winuser.h:690
#define V_I4(A)
Definition: oleauto.h:247
#define RBS_BANDBORDERS
Definition: commctrl.h:1472
BOOL WINAPI AppendMenuW(_In_ HMENU, _In_ UINT, _In_ UINT_PTR, _In_opt_ LPCWSTR)
#define ITBBID_MENUBAND
Definition: undocshell.h:662
#define IDM_GOTO_BACK
Definition: resource.h:45
virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID)
virtual HRESULT STDMETHODCALLTYPE Load(IStream *pStm)
#define REBARCLASSNAMEW
Definition: commctrl.h:1463
CComPtr< CMenuCallback > fMenuCallback
int WINAPI GetDlgCtrlID(_In_ HWND)
HRESULT IUnknown_RelayWinEvent(IUnknown *punk, HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult)
virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER *pcbSize)
_In_ PSID _Out_writes_to_opt_ cchName LPSTR _Inout_ LPDWORD cchName
Definition: winbase.h:2753
CComPtr< IUnknown > fContainedBand
#define RBBIM_STYLE
Definition: commctrl.h:1502
#define CCS_NODIVIDER
Definition: commctrl.h:2248
virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
#define TPM_RIGHTBUTTON
Definition: winuser.h:2370
HRESULT LockUnlockToolbars(bool locked)
virtual HRESULT STDMETHODCALLTYPE GetState(const GUID *pguidCmdGroup, long commandID, long *theState)
#define L(x)
Definition: ntvdm.h:50
#define FALSE
Definition: types.h:117
#define CSIDL_FAVORITES
Definition: shlobj.h:2031
GLenum const GLfloat * params
Definition: glext.h:5645
CComPtr< IUnknown > fControlsBar
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
Definition: mswsock.h:90
LRESULT OnLDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
unsigned int BOOL
Definition: ntddk_ex.h:94
#define RB_GETBANDCOUNT
Definition: commctrl.h:1585
long LONG
Definition: pedump.c:60
virtual HRESULT STDMETHODCALLTYPE UIActivateIO(BOOL fActivate, LPMSG lpMsg)
#define SubclassWindow(hwnd, lpfn)
Definition: windowsx.h:542
static const struct bandInfoStruct bandInfo[9]
Definition: layer3.c:95
UINT_PTR idFrom
Definition: winuser.h:3148
HRESULT ReserveBorderSpace(LONG maxHeight=-1)
#define TPM_TOPALIGN
Definition: winuser.h:2373
HRESULT WINAPI IUnknown_SetSite(IUnknown *obj, IUnknown *site)
Definition: ordinal.c:1404
static HRESULT BindToDesktop(LPCITEMIDLIST pidl, IShellFolder **ppsfResult)
#define TTF_IDISHWND
Definition: commctrl.h:1764
#define ITID_TOOLBARLOCKED
Definition: undocshell.h:677
HRESULT STDMETHODCALLTYPE GetObject(LPSMDATA psmd, REFIID riid, void **ppvObject)
#define CreateWindowEx
Definition: winuser.h:5745
#define S_FALSE
Definition: winerror.h:2357
HRESULT SetState(const GUID *pguidCmdGroup, long commandID, OLECMD *pcmd)
#define E_INVALIDARG
Definition: ddrawi.h:101
#define DISPID_NAVIGATECOMPLETE2
Definition: webchild.h:54
virtual HRESULT STDMETHODCALLTYPE OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult)
static const int gFoldersCommandID
#define MAKELONG(a, b)
Definition: typedefs.h:249
#define IDM_TOOLBARS_GOBUTTON
Definition: resource.h:36
#define MF_SEPARATOR
Definition: winuser.h:137
LONG_PTR LPARAM
Definition: windef.h:208
#define CCS_TOP
Definition: commctrl.h:2242
#define CCS_NOPARENTALIGN
Definition: commctrl.h:2246
static HRESULT GetFavoritesFolder(IShellFolder **ppsfFavorites, LPITEMIDLIST *ppidl)
virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorIO(LPMSG lpMsg)
#define SMC_EXEC
Definition: undocshell.h:644
#define RB_INSERTBANDW
Definition: commctrl.h:1583
#define CMergedFolder_CreateInstance
Definition: shellmenu.h:93
GLuint index
Definition: glext.h:6031
#define RBBS_HIDETITLE
#define WS_EX_LEFT
Definition: winuser.h:391
#define CGID_MenuBand
#define RBBS_VARIABLEHEIGHT
Definition: commctrl.h:1495
virtual ~CMenuCallback()
#define TLOG_FORE
Definition: shlobj.h:2590
HRESULT IUnknown_CloseDW(IUnknown *punk, DWORD dwReserved)
#define V_INTREF(A)
Definition: oleauto.h:252
virtual HRESULT STDMETHODCALLTYPE Save(IStream *pStm, BOOL fClearDirty)
virtual HRESULT STDMETHODCALLTYPE GetBitmapSize(long *paramC)
#define RBBIM_COLORS
Definition: commctrl.h:1503
HRESULT CBrandBand_CreateInstance(REFIID riid, void **ppv)
Definition: browseui.cpp:51
IShellFolder * psf
Definition: shobjidl.idl:2632
#define KEY_WRITE
Definition: nt_native.h:1031
#define TLMENUF_BACK
Definition: shlobj.h:2594
#define RBS_AUTOSIZE
Definition: commctrl.h:1475
#define BEGIN_COM_MAP(x)
Definition: atlcom.h:542
char TCHAR
Definition: xmlstorage.h:189
#define ITBBID_TOOLSBAND
Definition: undocshell.h:664
#define _T(x)
Definition: vfdio.h:22
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT WINAPI AtlUnadvise(IUnknown *pUnkCP, const IID *iid, DWORD dw)
Definition: atl.c:73
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
#define RBBIM_TEXT
Definition: commctrl.h:1504
LRESULT OnTipText(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled)
virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void **ppvObject)
HRESULT IUnknown_ShowDW(IUnknown *punk, BOOL fShow)
LRESULT OnFolders(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, INT nFolder, LPITEMIDLIST *ppidl)
Definition: shellpath.c:3194
LONG HRESULT
Definition: typedefs.h:79
BOOL WINAPI DeleteMenu(_In_ HMENU, _In_ UINT, _In_ UINT)
#define ITBBID_BRANDBAND
Definition: undocshell.h:663
#define SWP_NOACTIVATE
Definition: winuser.h:1232
DWORD COLORREF
Definition: windef.h:300
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT *pCmdText)
#define FAILED_UNEXPECTEDLY(hr)
Definition: shellutils.h:82
#define WINAPI
Definition: msvc.h:6
virtual HRESULT STDMETHODCALLTYPE EnumBands(UINT uBand, DWORD *pdwBandID)
#define STDMETHODCALLTYPE
Definition: bdasup.h:9
#define V_BOOL(A)
Definition: oleauto.h:224
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
LRESULT OnForwardToCommandTarget(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
CComPtr< IUnknown > fSite
#define ITBBID_ADDRESSBAND
Definition: undocshell.h:665
virtual HRESULT STDMETHODCALLTYPE AddBand(IUnknown *punk)
#define SIZE_MINIMIZED
Definition: winuser.h:2496
#define RBBS_FIXEDSIZE
Definition: commctrl.h:1490
#define RBBIM_CHILDSIZE
Definition: commctrl.h:1507
#define RB_SETBANDINFOW
Definition: commctrl.h:1584
virtual HRESULT STDMETHODCALLTYPE RemoveBand(DWORD dwBandID)
GLbitfield flags
Definition: glext.h:7161
HRESULT Initialize(IUnknown *containedBand, CInternetToolbar *browser, HWND hwnd, int bandID, int flags)
virtual HRESULT STDMETHODCALLTYPE OnChange(LONG lEvent, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
HRESULT CAddressBand_CreateInstance(REFIID riid, void **ppv)
Definition: browseui.cpp:24
#define DISPID_BEFORENAVIGATE
Definition: webchild.h:35
#define ITID_MENUBANDSHOWN
Definition: undocshell.h:674
#define index(s, c)
Definition: various.h:29
HRESULT WINAPI IUnknown_HasFocusIO(IUnknown *lpUnknown)
Definition: ordinal.c:4182
LRESULT OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
#define DISPID_DOWNLOADBEGIN
Definition: webchild.h:41
#define V_VT(A)
Definition: oleauto.h:211
static int state
Definition: maze.c:121
CComPtr< IUnknown > fNavigationBar
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode)
static const int gViewsCommandID
HANDLE lEvent
Definition: tftpd.cpp:56
LRESULT OnUpLevel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
CComPtr< IOleCommandTarget > fCommandTarget
virtual HRESULT STDMETHODCALLTYPE RequestBorderSpaceDW(IUnknown *punkObj, LPCBORDERWIDTHS pbw)
#define RBBS_USECHEVRON
Definition: commctrl.h:1498
REFIID LPVOID * ppvObject
Definition: precomp.h:44
#define RB_HITTEST
Definition: commctrl.h:1581
HMENU WINAPI GetSubMenu(_In_ HMENU, _In_ int)
#define WM_COMMAND
Definition: winuser.h:1730
#define RBBS_FIXEDBMP
Definition: commctrl.h:1494
HWND hwndFrom
Definition: winuser.h:3147
DWORD WINAPI SHCheckMenuItem(HMENU hMenu, UINT uID, BOOL bCheck)
Definition: ordinal.c:1793
LRESULT OnSetCursor(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
CInternetToolbar * fToolbar
virtual HRESULT STDMETHODCALLTYPE ModifyButton(const GUID *pguidCmdGroup, long param10, long param14)
#define LoadCursor
Definition: winuser.h:5802
BOOL WINAPI DestroyMenu(_In_ HMENU)
virtual HRESULT STDMETHODCALLTYPE GetButton(const GUID *pguidCmdGroup, long param10, long param14)
#define RBSTR_CHANGERECT
Definition: commctrl.h:1596
#define IDM_TOOLBARS_LOCKTOOLBARS
Definition: resource.h:33
#define ITID_ADDRESSBANDSHOWN
Definition: undocshell.h:672
#define TOOLTIPTEXTW
Definition: commctrl.h:1884
#define SWP_NOSIZE
Definition: winuser.h:1235
_In_ DWORD _Out_ _In_ WORD wFlags
Definition: wincon.h:531
#define WS_EX_RIGHTSCROLLBAR
Definition: winuser.h:401
HWND WINAPI GetParent(_In_ HWND)
struct stdole::EXCEPINFO EXCEPINFO
LRESULT OnMenuDropDown(UINT idControl, NMHDR *pNMHDR, BOOL &bHandled)
HWND WINAPI SetCapture(_In_ HWND hWnd)
static VARIANTARG static DISPID
Definition: ordinal.c:49
#define S_OK
Definition: intsafe.h:52
virtual HRESULT STDMETHODCALLTYPE ShowDW(BOOL fShow)
#define WS_BORDER
Definition: pedump.c:625
#define TB_GETSTATE
Definition: commctrl.h:1055
void AddDockItem(IUnknown *newItem, int bandID, int flags)
#define IDM_TOOLBARS_STANDARDBUTTONS
Definition: resource.h:30
virtual HRESULT STDMETHODCALLTYPE OnFocusChangeIS(IUnknown *punkObj, BOOL fSetFocus)
_CRTIMP wchar_t *__cdecl wcsncpy(wchar_t *_Dest, const wchar_t *_Source, size_t _Count)
#define TBSTATE_CHECKED
Definition: commctrl.h:972
LRESULT OnTravelBack(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
#define RBBS_HIDDEN
Definition: commctrl.h:1492
#define LoadMenu
Definition: winuser.h:5807
virtual ~CInternetToolbar()
CComPtr< IBandProxy > fBandProxy
HWND buttons[5]
Definition: sndrec32.cpp:40
HRESULT WINAPI IUnknown_TranslateAcceleratorIO(IUnknown *lpUnknown, LPMSG lpMsg)
Definition: ordinal.c:4150
HCURSOR WINAPI SetCursor(_In_opt_ HCURSOR)
virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void **ppvObject)
#define CMenuBand_CreateInstance
Definition: shellmenu.h:81
virtual HRESULT STDMETHODCALLTYPE IsDirty()
#define IDM_TOOLBARS_CUSTOMIZE
Definition: resource.h:34
virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd)
#define COM_INTERFACE_ENTRY_IID(iid, x)
Definition: atlcom.h:562
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define long
Definition: qsort.c:33
virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown *pUnkSite)
CComPtr< IShellMenu > fMenuBar
void Release()
Definition: atlcomcli.h:147
#define E_NOTIMPL
Definition: ddrawi.h:99
CComPtr< IShellMenu > fFavoritesMenu
HRESULT ToggleBandVisibility(int BandID)
#define RB_IDTOINDEX
Definition: commctrl.h:1588
HRESULT GetRBBandInfo(REBARBANDINFOW &bandInfo)
unsigned int * PULONG
Definition: retypes.h:1
UINT WINAPI SHEnableMenuItem(HMENU hMenu, UINT wItemID, BOOL bEnable)
Definition: ordinal.c:1774
#define IDM_EXPLORERBAR_HISTORY
Definition: resource.h:42
unsigned int UINT
Definition: ndis.h:50
#define NULL
Definition: types.h:112
LRESULT OnNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
#define MK_CONTROL
Definition: winuser.h:2360
static char * textBuffer
Definition: combo.c:52
#define ITID_AUTOHIDEENABLED
Definition: undocshell.h:675
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
#define FCIDM_MENU_FAVORITES
Definition: shlobj.h:566
#define GET_Y_LPARAM(lp)
Definition: windowsx.h:300
#define RBBS_GRIPPERALWAYS
Definition: commctrl.h:1496
#define CLR_DEFAULT
Definition: commctrl.h:320
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
HMENU WINAPI CreatePopupMenu(void)
Definition: menu.c:846
int command(const char *fmt,...)
Definition: ftp.c:266
virtual HRESULT STDMETHODCALLTYPE SetBandState(DWORD dwBandID, DWORD dwMask, DWORD dwState)
BOOL WINAPI ReleaseCapture(void)
Definition: message.c:2890
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define SendMessage
Definition: winuser.h:5833
#define TBSTATE_ENABLED
Definition: commctrl.h:974
struct stdole::DISPPARAMS DISPPARAMS
#define RBBS_NOGRIPPER
Definition: commctrl.h:1497
HRESULT CreateMenuBar(IShellMenu **menuBar)
const GUID IID_IOleWindow
LRESULT OnMouseMove(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
#define HIWORD(l)
Definition: typedefs.h:247
unsigned int ULONG
Definition: retypes.h:1
#define ITID_TOOLBARBANDSHOWN
Definition: undocshell.h:671
virtual HRESULT STDMETHODCALLTYPE GetBandSiteInfo(BANDSITEINFO *pbsinfo)
#define UNIMPLEMENTED
Definition: debug.h:115
LONG bottom
Definition: windef.h:309
#define RBS_DBLCLKTOGGLE
Definition: commctrl.h:1477
HRESULT CreateAndInitBandProxy()
HRESULT WINAPI IUnknown_QueryStatus(IUnknown *lpUnknown, REFGUID pguidCmdGroup, ULONG cCmds, OLECMD *prgCmds, OLECMDTEXT *pCmdText)
Definition: ordinal.c:1041
#define SWP_NOMOVE
Definition: winuser.h:1234
virtual HRESULT STDMETHODCALLTYPE Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT *pctinfo)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
#define ITID_CUSTOMIZEENABLED
Definition: undocshell.h:676
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
HWND WINAPI SHCreateWorkerWindowW(WNDPROC wndProc, HWND hWndParent, DWORD dwExStyle, DWORD dwStyle, HMENU hMenu, LONG_PTR wnd_extra)
Definition: ordinal.c:2918
#define TLMENUF_FORE
Definition: shlobj.h:2595
static IPrintDialogCallback callback
Definition: printdlg.c:326
#define END_COM_MAP()
Definition: atlcom.h:553
#define HTCLIENT
Definition: winuser.h:2465
HRESULT CommandStateChanged(bool newValue, int commandID)
T * Detach()
Definition: atlcomcli.h:163
#define SID_SShellBrowser
Definition: shlguid.h:128
WCHAR * LPWSTR
Definition: xmlstorage.h:184
virtual HRESULT STDMETHODCALLTYPE GetBandObject(DWORD dwBandID, REFIID riid, void **ppv)
BOOL WINAPI ScreenToClient(_In_ HWND, _Inout_ LPPOINT)
LONG_PTR LRESULT
Definition: windef.h:209
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4022
virtual HRESULT STDMETHODCALLTYPE GetBorderDW(IUnknown *punkObj, LPRECT prcBorder)
#define E_POINTER
Definition: winerror.h:2365
STRSAFEAPI StringCbCopyW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
Definition: strsafe.h:166
Arabic default style
Definition: afstyles.h:93
LRESULT OnSearch(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
struct tagREBARBANDINFOW REBARBANDINFOW
#define WS_VISIBLE
Definition: pedump.c:620
#define memset(x, y, z)
Definition: compat.h:39
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode)
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:60
SMDM_TOOLBAR struct tagSMINFO SMINFO
virtual HRESULT STDMETHODCALLTYPE GetNameSpaceID(LPCITEMIDLIST, LPGUID)=0
virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
LPARAM lParam
Definition: combotst.c:139
BOOL WINAPI TrackPopupMenu(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _Reserved_ int, _In_ HWND, _Reserved_ LPCRECT)
#define LOWORD(l)
Definition: pedump.c:82
virtual HRESULT STDMETHODCALLTYPE HasFocusIO()
LRESULT OnTravelForward(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
#define RegCreateKeyEx
Definition: winreg.h:501
#define RBBIM_IDEALSIZE
Definition: commctrl.h:1511
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
virtual HRESULT STDMETHODCALLTYPE SetBorderSpaceDW(IUnknown *punkObj, LPCBORDERWIDTHS pbw)
void Attach(T *lp)
Definition: atlcomcli.h:156
virtual HRESULT STDMETHODCALLTYPE SetImageList(const GUID *pguidCmdGroup, HIMAGELIST param10, HIMAGELIST param14, HIMAGELIST param18)
virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
#define RBS_REGISTERDROP
Definition: commctrl.h:1474
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31
#define SWP_NOOWNERZORDER
Definition: winuser.h:1239
HRESULT CToolsBand_CreateInstance(REFIID riid, void **ppv)
Definition: toolsband.cpp:419
LRESULT OnLUp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
virtual HRESULT STDMETHODCALLTYPE QueryNameSpace(ULONG, LPGUID, IShellFolder **)=0
virtual HRESULT STDMETHODCALLTYPE GetSite(REFIID riid, void **ppvSite)
HRESULT WINAPI IUnknown_Exec(IUnknown *lpUnknown, REFGUID pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
Definition: ordinal.c:1080