NGenericMenu.h
上传用户:whjcdz88
上传日期:2007-01-02
资源大小:350k
文件大小:4k
源码类别:

工具条

开发平台:

Visual C++

  1. // NGenericMenu.h: interface for the CNGenericMenu class.
  2. //
  3. /*
  4. Copyright (C) 1998 Tony Hoyle (tmh@netfusion.co.uk)
  5. This program is free software; you can redistribute it and/or modify it under the terms
  6. of the GNU General Public License as published by the Free Software Foundation; either
  7. version 2 of the License, or (at your option) any later version.
  8. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
  9. without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  10. See the GNU General Public License for more details.
  11. You should have received a copy of the GNU General Public License along with this program;
  12. if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  13. */
  14. //////////////////////////////////////////////////////////////////////
  15. #if !defined(AFX_NGENERICMENU_H__F5167101_A3AF_11D1_B0D4_00A0C94457BF__INCLUDED_)
  16. #define AFX_NGENERICMENU_H__F5167101_A3AF_11D1_B0D4_00A0C94457BF__INCLUDED_
  17. #if _MSC_VER >= 1000
  18. #pragma once
  19. #endif // _MSC_VER >= 1000
  20. #include "NGenericToolBar.h"
  21. #include "NGenericPopup.h"
  22. #ifndef NGTB_PROJECT
  23. #define NGTB_EXPORT __declspec(dllimport)
  24. #else
  25. #define NGTB_EXPORT __declspec(dllexport)
  26. #endif
  27. #undef AFX_DATA
  28. #define AFX_DATA NGTB_EXPORT
  29. #define AFX_IDW_MENU_BAR (AFX_IDW_RESIZE_BAR + 1)
  30. ///////////////////////////////////////////////////////////////////////////
  31. // Class styles to be used by client applications
  32. ///////////////////////////////////////////////////////////////////////////
  33. struct IconMap
  34. {
  35. int nID;
  36. int nIcon;
  37. };
  38. enum ENButtonState
  39. {
  40. Button_None, Button_Minimize, Button_Restore, Button_Close
  41. };
  42. class CNGenericMenu : public CNGenericToolBar  
  43. {
  44. DECLARE_DYNAMIC(CNGenericMenu)
  45. public:
  46. NGTB_EXPORT CNGenericMenu();
  47. NGTB_EXPORT virtual ~CNGenericMenu();
  48. NGTB_EXPORT BOOL Create(CFrameWnd* pParent);
  49. NGTB_EXPORT BOOL SetMenu(HMENU hMenu);
  50. NGTB_EXPORT BOOL SetMenu(UINT idMenu) { CMenu m; m.LoadMenu(idMenu); return SetMenu(m.Detach()); }
  51. NGTB_EXPORT BOOL DrawMenuBar();
  52. NGTB_EXPORT BOOL SetIconMap(int nIconMapSize, IconMap* pIconMap);
  53. protected:
  54. CFrameWnd* m_pParent;
  55. HMENU m_hMenu;
  56. CNGenericPopup m_popup;
  57. BOOL m_bItemDropped;
  58. int m_iItem;
  59. IconMap* m_pIconMap;
  60. int m_nIconMapSize;
  61. CFont menuFont;
  62. void ShowDropDown(BOOL bFromKey, int iItem);
  63. virtual BOOL TranslateMenuChar(UINT nChar);
  64. virtual BOOL KeyboardFilter(UINT nChar, UINT nRepCnt, UINT nFlags);
  65. virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
  66. virtual CSize CalcDynamicLayout(int nLength, DWORD dwMode);
  67. virtual void OnOverSysMenu();
  68. // Revised by Zhenxin Li.
  69. // Add for system buttons.
  70. void GetSysButtonRects(CRect& r1, CRect& r2, CRect& r3);
  71. ENButtonState UpdateSysButtons(UINT nFlags, CPoint point);
  72. void DrawButton(CDC* pDC, CRect rect, LPCTSTR szText, BOOL bPressed);
  73. protected:
  74. //{{AFX_MSG(CNGenericMenu)
  75. afx_msg void OnNcPaint();
  76. afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
  77. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  78. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  79. afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  80. afx_msg void OnPaint();
  81. afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp);
  82. //}}AFX_MSG
  83. afx_msg void OnDropDown(NMHDR * pNotifyStruct, LRESULT* result);
  84. afx_msg void OnHotChange(NMHDR * pNotifyStruct, LRESULT* result);
  85. afx_msg void OnMenuUpdate(CCmdUI* pCmd);
  86. afx_msg LRESULT OnDismiss(WPARAM wParam, LPARAM lParam);
  87. afx_msg void OnIdleUpdateCmdUI();
  88. DECLARE_MESSAGE_MAP()
  89. };
  90. class CNMDIGenericMenu : public CNGenericMenu  
  91. {
  92. DECLARE_DYNAMIC(CNMDIGenericMenu)
  93. public:
  94. NGTB_EXPORT void SubclassMDIClient(HWND hWndClient);
  95. };
  96. #undef AFX_DATA
  97. #define AFX_DATA
  98. #endif // !defined(AFX_NGENERICMENU_H__F5167101_A3AF_11D1_B0D4_00A0C94457BF__INCLUDED_)