mnstatic.h
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 4k
Category:

Windows Kernel

Development Platform:

Visual C++

  1. #ifndef MENUST
  2. #define MENUST
  3. #include "mnbase.h"
  4. #include "cwndproc.h"
  5. #include "droptgt.h"
  6. class CMenuBand;
  7. class CMenuStaticToolbar : public CMenuToolbarBase,
  8.                            public CDelegateDropTarget,
  9.                            public CNotifySubclassWndProc
  10. {
  11. public:
  12.     // *** IUnknown (override) ***
  13.     virtual STDMETHODIMP_(ULONG) AddRef(void) { return CMenuToolbarBase::AddRef(); };
  14.     virtual STDMETHODIMP_(ULONG) Release(void) { return CMenuToolbarBase::Release(); };
  15.     virtual STDMETHODIMP QueryInterface(REFIID riid, void** ppvObj);
  16.     // *** CDelegateDropTarget Methods ***
  17.     virtual HRESULT GetWindowsDDT (HWND * phwndLock, HWND * phwndScroll);
  18.     virtual HRESULT HitTestDDT (UINT nEvent, LPPOINT ppt, DWORD * pdwId, DWORD *pdwEffect);
  19.     virtual HRESULT GetObjectDDT (DWORD dwId, REFIID riid, LPVOID * ppvObj);
  20.     virtual HRESULT OnDropDDT (IDropTarget *pdt, IDataObject *pdtobj, 
  21.                             DWORD * pgrfKeyState, POINTL pt, DWORD *pdwEffect);
  22.     //*** IWinEventHandler (override) ***
  23.     virtual STDMETHODIMP IsWindowOwner(HWND hwnd);
  24.     virtual STDMETHODIMP OnWinEvent(HWND hwnd, UINT dwMsg, WPARAM wParam, LPARAM lParam, LRESULT *plres);
  25.     // Other public methods
  26.     virtual void GetSize(SIZE* psize);
  27.     virtual void v_SendMenuNotification(UINT idCmd, BOOL fClear);
  28.     virtual BOOL v_TrackingSubContextMenu();
  29.     virtual BOOL v_UpdateIconSize(UINT uIconSize, BOOL fUpdateButtons);
  30.     virtual void v_Show(BOOL fShow, BOOL fForceUpdate);
  31.     virtual void v_UpdateButtons(BOOL fNegotiateSize);
  32.     virtual STDMETHODIMP OnChange(LONG lEvent, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2);
  33.     virtual void CreateToolbar(HWND hwndParent);
  34.     virtual void v_Close(); // override
  35.     virtual void    v_OnEmptyToolbar();        // override
  36.     virtual void v_OnDeleteButton(LPVOID pData);
  37.     virtual HRESULT v_InvalidateItem(LPSMDATA psmd, DWORD dwFlags);
  38.     virtual HRESULT GetMenu(HMENU* phmenu, HWND* phwnd, DWORD* pdwFlags);
  39.     virtual HRESULT SetMenu(HMENU hmenu, HWND hwnd, DWORD dwFlags);
  40.     CMenuStaticToolbar(CMenuBand* pmb, HMENU hmenu, HWND hwnd, UINT idCmd, DWORD dwFlags);
  41. protected:
  42.     class CMenuStaticData
  43.     {
  44.     public:
  45.         ~CMenuStaticData();
  46.         void SetSubMenu(IUnknown* punk);
  47.         HRESULT GetSubMenu(const GUID* pguidService, REFIID riid, void** ppvObj);
  48.         IUnknown*   _punkSubMenu;
  49.         DWORD       _dwFlags;
  50.     };
  51.     HWND    _hwndMenuOwner;
  52.     HWND    _hwndDD;
  53.     HMENU   _hmenu;
  54.     UINT    _idCmd;
  55.     int     _iDragOverButton;
  56.     IContextMenu* _pcm;
  57.     BITBOOL _fHasTopSep: 1;
  58.     BITBOOL _fHasBottomSep: 1;
  59.     BITBOOL _fTopSepRemoved: 1;
  60.     BITBOOL _fBottomSepRemoved: 1;
  61.     BITBOOL _fDirty: 1;
  62.     LRESULT _OnAccelerator(NMCHAR* pnmChar);
  63.     LRESULT (*_lpfnWndProc)(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
  64.     CMenuStaticData* _IDToData(int idCmd);
  65.     HRESULT CallCB(UINT idCmd, DWORD dwMsg, WPARAM wParam, LPARAM lParam);
  66. protected:
  67.     virtual ~CMenuStaticToolbar();
  68.     // Window Proc and message handlers
  69.     virtual LRESULT _DefWindowProc(HWND hwnd, UINT uMessage, WPARAM wParam, LPARAM lParam);
  70.     virtual LRESULT _OnNotify(LPNMHDR pnm);
  71.     virtual int  v_GetDragOverButton()
  72.         { return _iDragOverButton; };
  73.     virtual HRESULT v_GetInfoTip(int iCmd, LPTSTR psz, UINT cch);
  74.     virtual HRESULT v_CallCBItem(int idtCmd, UINT uMsg, WPARAM wParam, LPARAM lParam);
  75.     virtual HRESULT v_GetState(int idtCmd, LPSMDATA psmd);
  76.     virtual HRESULT v_ExecItem(int iCmd);
  77.     virtual DWORD v_GetFlags(int iCmd);
  78.     virtual void v_Refresh();
  79.     virtual HRESULT v_GetSubMenu(int iCmd, const GUID* pguidService, REFIID riid, void** ppvObj);
  80.     virtual HRESULT v_CreateTrackPopup(int idCmd, REFIID riid, void** ppvObj);
  81.     LRESULT _OnGetObject(NMOBJECTNOTIFY*);
  82.     LRESULT _OnContextMenu(WPARAM wParam, LPARAM lParam);
  83.     void _FillToolbar();
  84.     void _OnGetDispInfo(LPNMHDR pnm, BOOL fUnicode);
  85.     void _Insert(int iIndex, MENUITEMINFO* pmii);
  86.     void _CheckSeparators();
  87. };
  88. #endif // MENUST