home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / winui / shell / bandobjs / deskband.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-12-11  |  3.1 KB  |  110 lines

  1. /**************************************************************************
  2.    THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  3.    ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  4.    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  5.    PARTICULAR PURPOSE.
  6.  
  7.    Copyright 1997 - 1998 Microsoft Corporation.  All Rights Reserved.
  8. **************************************************************************/
  9.  
  10. /**************************************************************************
  11.  
  12.    File:          DeskBand.h
  13.    
  14.    Description:   CDeskBand definitions.
  15.  
  16. **************************************************************************/
  17.  
  18. #include <windows.h>
  19. #include <shlobj.h>
  20.  
  21. #include "Globals.h"
  22.  
  23. #ifndef DESKBAND_H
  24. #define DESKBAND_H
  25.  
  26. #define DB_CLASS_NAME (TEXT("DeskBandSampleClass"))
  27.  
  28. #define MIN_SIZE_X   10
  29. #define MIN_SIZE_Y   10
  30.  
  31. #define IDM_COMMAND  0
  32.  
  33. /**************************************************************************
  34.  
  35.    CDeskBand class definition
  36.  
  37. **************************************************************************/
  38.  
  39. class CDeskBand : public IDeskBand, 
  40.                   public IInputObject, 
  41.                   public IObjectWithSite,
  42.                   public IPersistStream,
  43.                   public IContextMenu
  44. {
  45. protected:
  46.    DWORD m_ObjRefCount;
  47.  
  48. public:
  49.    CDeskBand();
  50.    ~CDeskBand();
  51.  
  52.    //IUnknown methods
  53.    STDMETHODIMP QueryInterface(REFIID, LPVOID*);
  54.    STDMETHODIMP_(DWORD) AddRef();
  55.    STDMETHODIMP_(DWORD) Release();
  56.  
  57.    //IOleWindow methods
  58.    STDMETHOD (GetWindow) (HWND*);
  59.    STDMETHOD (ContextSensitiveHelp) (BOOL);
  60.  
  61.    //IDockingWindow methods
  62.    STDMETHOD (ShowDW) (BOOL fShow);
  63.    STDMETHOD (CloseDW) (DWORD dwReserved);
  64.    STDMETHOD (ResizeBorderDW) (LPCRECT prcBorder, IUnknown* punkToolbarSite, BOOL fReserved);
  65.  
  66.    //IDeskBand methods
  67.    STDMETHOD (GetBandInfo) (DWORD, DWORD, DESKBANDINFO*);
  68.  
  69.    //IInputObject methods
  70.    STDMETHOD (UIActivateIO) (BOOL, LPMSG);
  71.    STDMETHOD (HasFocusIO) (void);
  72.    STDMETHOD (TranslateAcceleratorIO) (LPMSG);
  73.  
  74.    //IObjectWithSite methods
  75.    STDMETHOD (SetSite) (IUnknown*);
  76.    STDMETHOD (GetSite) (REFIID, LPVOID*);
  77.  
  78.    //IPersistStream methods
  79.    STDMETHOD (GetClassID) (LPCLSID);
  80.    STDMETHOD (IsDirty) (void);
  81.    STDMETHOD (Load) (LPSTREAM);
  82.    STDMETHOD (Save) (LPSTREAM, BOOL);
  83.    STDMETHOD (GetSizeMax) (ULARGE_INTEGER*);
  84.  
  85.    //IContextMenu methods
  86.    STDMETHOD (QueryContextMenu)(HMENU, UINT, UINT, UINT, UINT);
  87.    STDMETHOD (InvokeCommand)(LPCMINVOKECOMMANDINFO);
  88.    STDMETHOD (GetCommandString)(UINT, UINT, LPUINT, LPSTR, UINT);
  89.  
  90. private:
  91.     BOOL m_bFocus;
  92.     HWND m_hwndParent;
  93.     HWND m_hWnd;
  94.     DWORD m_dwViewMode;
  95.    DWORD m_dwBandID;
  96.    IInputObjectSite *m_pSite;
  97.  
  98. private:
  99.     void FocusChange(BOOL);
  100.    LRESULT OnKillFocus(void);
  101.     LRESULT OnSetFocus(void);
  102.     static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam);
  103.     LRESULT OnPaint(void);
  104.     LRESULT OnCommand(WPARAM wParam, LPARAM lParam);
  105.    BOOL RegisterAndCreateWindow(void);
  106. };
  107.  
  108. #endif   //DESKBAND_H
  109.  
  110.