]> git.kernelconcepts.de Git - karo-tx-redboot.git/blobdiff - tools/src/tools/configtool/standalone/win32/BCMenu.h
Initial revision
[karo-tx-redboot.git] / tools / src / tools / configtool / standalone / win32 / BCMenu.h
diff --git a/tools/src/tools/configtool/standalone/win32/BCMenu.h b/tools/src/tools/configtool/standalone/win32/BCMenu.h
new file mode 100644 (file)
index 0000000..6d78d5a
--- /dev/null
@@ -0,0 +1,285 @@
+//####COPYRIGHTBEGIN####
+//                                                                          
+// ----------------------------------------------------------------------------
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.
+//
+// This program is part of the eCos host tools.
+//
+// This program is free software; you can redistribute it and/or modify it 
+// under the terms of the GNU General Public License as published by the Free 
+// Software Foundation; either version 2 of the License, or (at your option) 
+// any later version.
+// 
+// This program is distributed in the hope that it will be useful, but WITHOUT 
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
+// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for 
+// more details.
+// 
+// You should have received a copy of the GNU General Public License along with
+// this program; if not, write to the Free Software Foundation, Inc., 
+// 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// ----------------------------------------------------------------------------
+//                                                                          
+//####COPYRIGHTEND####
+
+//#####DESCRIPTIONBEGIN####                                             
+//*************************************************************************
+// BCMenu.h : header file
+// Version : 2.63
+// Date : December 2, 1999
+// Author : Brent Corkum
+// Email :  corkum@rocscience.com
+// Latest Version : http://www.rocscience.com/~corkum/BCMenu.html
+// 
+// Bug Fixes and portions of code supplied by:
+//
+// Ben Ashley,Girish Bharadwaj,Jean-Edouard Lachand-Robert,
+// Robert Edward Caldecott,Kenny Goers,Leonardo Zide,
+// Stefan Kuhr,Reiner Jung,Martin Vladic,Kim Yoo Chul,
+// Oz Solomonovich
+//
+// You are free to use/modify this code but leave this header intact.
+// This class is public domain so you are free to use it any of
+// your applications (Freeware,Shareware,Commercial). All I ask is
+// that you let me know so that if you have a real winner I can
+// brag to my buddies that some of my code is in your app. I also
+// wouldn't mind if you sent me a copy of your application since I
+// like to play with new stuff.
+//*************************************************************************
+//####DESCRIPTIONEND####
+
+#ifndef BCMenu_H
+#define BCMenu_H
+
+#include <afxtempl.h>
+
+// BCMenuData class. Fill this class structure to define a single menu item:
+
+class BCMenuData
+{
+wchar_t *m_szMenuText;
+public:
+BCMenuData () {menuIconNormal=-1;xoffset=-1;bitmap=NULL;pContext=NULL;
+               nFlags=0;nID=0;syncflag=0;m_szMenuText=NULL;};
+void SetAnsiString(LPCSTR szAnsiString);
+void SetWideString(const wchar_t *szWideString);
+const wchar_t *GetWideString(void) {return m_szMenuText;};
+~BCMenuData ();
+CString GetString(void);//returns the menu text in ANSI or UNICODE
+int xoffset;
+int menuIconNormal;
+UINT nFlags,nID,syncflag;
+CImageList *bitmap;
+void *pContext; // used to attach user data
+};
+
+//struct CMenuItemInfo : public MENUITEMINFO {
+struct CMenuItemInfo : public 
+//MENUITEMINFO 
+#ifndef UNICODE   //SK: this fixes warning C4097: typedef-name 'MENUITEMINFO' used as synonym for class-name 'tagMENUITEMINFOA'
+tagMENUITEMINFOA
+#else
+tagMENUITEMINFOW
+#endif
+    {
+       CMenuItemInfo()
+       { memset(this, 0, sizeof(MENUITEMINFO));
+         cbSize = sizeof(MENUITEMINFO);
+       }
+};
+
+
+
+
+typedef enum {Normal,TextOnly} HIGHLIGHTSTYLE;
+
+#ifndef UNICODE
+#define AppendMenu AppendMenuA
+#define InsertMenu InsertMenuA
+#define InsertODMenu InsertODMenuA
+#define AppendODMenu AppendODMenuA
+#define AppendODPopupMenu AppendODPopupMenuA
+#define ModifyODMenu ModifyODMenuA
+#else
+#define AppendMenu AppendMenuW
+#define InsertMenu InsertMenuW
+#define InsertODMenu InsertODMenuW
+#define AppendODMenu AppendODMenuW
+#define ModifyODMenu ModifyODMenuW
+#define AppendODPopupMenu AppendODPopupMenuW
+#endif
+
+
+class BCMenu : public CMenu  // Derived from CMenu
+{
+// Construction
+public:
+BCMenu(); 
+
+// Attributes
+protected:
+CTypedPtrArray<CPtrArray, BCMenuData*> m_MenuList;  // Stores list of menu items 
+
+// When loading an owner-drawn menu using a Resource, BCMenu must keep track of
+// the popup menu's that it creates. Warning, this list *MUST* be destroyed
+// last item first :)
+CTypedPtrArray<CPtrArray, HMENU>  m_SubMenus;  // Stores list of sub-menus 
+
+// Stores a list of all BCMenu's ever created 
+static CTypedPtrArray<CPtrArray, HMENU>  m_AllSubMenus;
+
+// Operations
+public: 
+// Overrides
+// ClassWizard generated virtual function overrides
+//{{AFX_VIRTUAL(CCustomMenu)
+//}}AFX_VIRTUAL 
+// Implementation
+public:
+  static BOOL IsNewShell(void);
+  void SetBitmapBackground(COLORREF color);
+  void SetDisableOldStyle(void);
+  void UnSetDisableOldStyle(void);
+  BOOL GetDisableOldStyle(void);
+  void UnSetBitmapBackground(void);
+  BOOL AddBitmapToImageList(CImageList *list,UINT nResourceID);
+  BOOL LoadFromToolBar(UINT nID,UINT nToolBar,int& xoffset);
+  void InsertSpaces(void);
+  static LRESULT FindKeyboardShortcut(UINT nChar,UINT nFlags,CMenu *pMenu);
+  static void UpdateMenu(CMenu *pmenu);
+  static BOOL IsMenu(CMenu *submenu);
+  static BOOL IsMenu(HMENU submenu);
+  void DrawCheckMark(CDC *pDC,int x,int y,COLORREF color);
+  void DrawRadioDot(CDC *pDC,int x,int y,COLORREF color);
+  BCMenuData *BCMenu::FindMenuItem(UINT nID);
+  BCMenu *FindMenuOption(int nId,int& nLoc);
+  BCMenuData *FindMenuOption(wchar_t *lpstrText);
+  BOOL GetMenuText(UINT id,CString &string,UINT nFlags = MF_BYPOSITION );
+  CImageList *checkmaps;
+  BOOL checkmapsshare;
+  int m_selectcheck;
+  int m_unselectcheck;
+  BOOL m_bDynIcons;
+
+  void LoadCheckmarkBitmap(int unselect,int select);
+  void DitherBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, 
+                 int nHeight, HBITMAP hbm, int nXSrc, int nYSrc);
+  void DitherBlt2(CDC *drawdc, int nXDest, int nYDest, int nWidth, 
+                  int nHeight, CBitmap &bmp, int nXSrc, int nYSrc);
+  static HBITMAP LoadSysColorBitmap(int nResourceId);
+  BOOL GetBitmapFromImageList(CDC* pDC,CImageList *imglist,int nIndex,CBitmap &bmp);
+  BOOL ImageListDuplicate(CImageList *il,int xoffset,CImageList *newlist);
+
+virtual ~BCMenu();  // Virtual Destructor 
+// Drawing: 
+virtual void DrawItem( LPDRAWITEMSTRUCT);  // Draw an item
+virtual void MeasureItem( LPMEASUREITEMSTRUCT );  // Measure an item
+
+// Customizing:
+
+void SetIconSize (int, int);  // Set icon size
+
+BOOL AppendODMenuA(LPCSTR lpstrText, 
+UINT nFlags = MF_OWNERDRAW,
+UINT nID = 0,
+int nIconNormal = -1);  
+
+BOOL AppendODMenuW(wchar_t *lpstrText, 
+UINT nFlags = MF_OWNERDRAW,
+UINT nID = 0,
+int nIconNormal = -1);  
+
+BOOL AppendODMenuA(LPCSTR lpstrText, 
+UINT nFlags,
+UINT nID,
+CImageList *il,
+int xoffset);
+
+BOOL AppendODMenuW(wchar_t *lpstrText, 
+UINT nFlags,
+UINT nID,
+CImageList *il,
+int xoffset);
+
+BOOL InsertODMenuA(UINT nPosition,
+LPCSTR lpstrText, 
+UINT nFlags = MF_OWNERDRAW,
+UINT nID = 0,
+int nIconNormal = -1); 
+
+BOOL InsertODMenuW(UINT nPosition,
+wchar_t *lpstrText, 
+UINT nFlags = MF_OWNERDRAW,
+UINT nID = 0,
+int nIconNormal = -1);  
+
+BOOL InsertODMenuA(UINT nPosition,
+LPCSTR lpstrText, 
+UINT nFlags,
+UINT nID,
+CImageList *il,
+int xoffset);
+
+BOOL InsertODMenuW(UINT nPosition,
+wchar_t *lpstrText, 
+UINT nFlags,
+UINT nID,
+CImageList *il,
+int xoffset);
+
+
+BOOL ModifyODMenuA(const char *lpstrText,UINT nID=0,int nIconNormal=-1);
+BOOL ModifyODMenuA(const char *lpstrText,UINT nID,CImageList *il,int xoffset);
+BOOL ModifyODMenuA(const char *lpstrText,UINT nID,CBitmap *bmp);
+BOOL ModifyODMenuA(const char *lpstrText,const char *OptionText,int nIconNormal);
+BOOL ModifyODMenuW(wchar_t *lpstrText,UINT nID=0,int nIconNormal=-1);
+BOOL ModifyODMenuW(wchar_t *lpstrText,UINT nID,CImageList *il,int xoffset);
+BOOL ModifyODMenuW(wchar_t *lpstrText,UINT nID,CBitmap *bmp);
+BOOL ModifyODMenuW(wchar_t *lpstrText,wchar_t *OptionText,int nIconNormal);
+BCMenuData *NewODMenu(UINT pos,UINT nFlags,UINT nID,CString string);
+void SynchronizeMenu(void);
+void BCMenu::InitializeMenuList(int value);
+void BCMenu::DeleteMenuList(void);
+BCMenuData *BCMenu::FindMenuList(UINT nID);
+virtual BOOL LoadMenu(LPCTSTR lpszResourceName);  // Load a menu
+virtual BOOL LoadMenu(int nResource);  // ... 
+void AddFromToolBar(CToolBar* pToolBar, int nResourceID);
+BOOL Draw3DCheckmark(CDC *dc, const CRect& rc,BOOL bSelected,
+                     HBITMAP hbmCheck);
+BOOL LoadToolbar(UINT nToolBar);
+BOOL LoadToolbars(const UINT *arID,int n);
+
+// new overrides for dynamic menu's
+BOOL   RemoveMenu(UINT uiId,UINT nFlags);
+BOOL   DeleteMenu(UINT uiId,UINT nFlags);
+BOOL  AppendMenuA(UINT nFlags,UINT nIDNewItem=0,const char *lpszNewItem=NULL,int nIconNormal=-1);
+BOOL  AppendMenuA(UINT nFlags,UINT nIDNewItem,const char *lpszNewItem,CImageList *il,int xoffset);
+BOOL  AppendMenuA(UINT nFlags,UINT nIDNewItem,const char *lpszNewItem,CBitmap *bmp);
+BOOL  AppendMenuW(UINT nFlags,UINT nIDNewItem=0,wchar_t *lpszNewItem=NULL,int nIconNormal=-1);
+BOOL  AppendMenuW(UINT nFlags,UINT nIDNewItem,wchar_t *lpszNewItem,CImageList *il,int xoffset);
+BOOL  AppendMenuW(UINT nFlags,UINT nIDNewItem,wchar_t *lpszNewItem,CBitmap *bmp);
+BOOL  InsertMenuA(UINT nPosition,UINT nFlags,UINT nIDNewItem=0,const char *lpszNewItem=NULL,int nIconNormal=-1);
+BOOL  InsertMenuA(UINT nPosition,UINT nFlags,UINT nIDNewItem,const char *lpszNewItem,CImageList *il,int xoffset);
+BOOL  InsertMenuA(UINT nPosition,UINT nFlags,UINT nIDNewItem,const char *lpszNewItem,CBitmap *bmp);
+BOOL  InsertMenuW(UINT nPosition,UINT nFlags,UINT nIDNewItem=0,wchar_t *lpszNewItem=NULL,int nIconNormal=-1);
+BOOL  InsertMenuW(UINT nPosition,UINT nFlags,UINT nIDNewItem,wchar_t *lpszNewItem,CImageList *il,int xoffset);
+BOOL  InsertMenuW(UINT nPosition,UINT nFlags,UINT nIDNewItem,wchar_t *lpszNewItem,CBitmap *bmp);
+BCMenu* AppendODPopupMenuA(LPCSTR lpstrText);
+BCMenu* AppendODPopupMenuW(wchar_t *lpstrText);
+
+// Destoying:
+
+virtual BOOL DestroyMenu();
+
+// Generated message map functions
+protected:
+int m_iconX,m_iconY;
+COLORREF m_bitmapBackground;
+BOOL m_bitmapBackgroundFlag;
+BOOL disable_old_style;
+}; 
+
+#endif
+
+//*************************************************************************