home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / mfc / general / dynamenu / dmdoc.h < prev    next >
C/C++ Source or Header  |  1998-03-26  |  3KB  |  95 lines

  1. // dmdoc.h
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992-1998 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12. //
  13. // Purpose: interface of the CDynaMenuDoc class
  14. //
  15. // Functions:
  16. //   Most of this file was generated by AppWizard.  The functions
  17. //   which contain code specific to this sample are:
  18. //
  19. //      CDynaMenuDoc::CDynaMenuDoc()         -- document constructor
  20. //      CDynaMenuDoc::DoSelectColor()        -- handle text color commands
  21. //      CDynaMenuDoc::DoUpdateSelectColor()  -- update text color UI objects
  22. //      CDynaMenuDoc::GetMessageString()     -- get status msg for color cmds
  23. //      CDynaMenuDoc::OnCmdMsg()             -- perform command routing
  24. //      CDynaMenuDoc::OnColorOptions()       -- display color options dialog
  25. //
  26. //   These functions are implemented in dmdoc.cpp.
  27.  
  28. // This is the number of possible text colors.  It should match the
  29. // number of checkboxes which appear in the color options dialog.
  30. const int NUM_TEXTCOLOR = 4;
  31.  
  32. // This is the maximum length of a color name.
  33. const int MAX_COLORLEN = 20;
  34.  
  35. // This structure defines the relationship between a color name,
  36. // menu ID, and COLORREF value.  By defining this array, we don't
  37. // depend on the menu IDs being in any particular order, or being
  38. // sequential.
  39. struct DynaMenuDef {
  40.    UINT     m_nString;                  // color name (in string table)
  41.    UINT     m_nID;                      // menu ID
  42.    COLORREF m_crf;                      // color value
  43. };
  44.  
  45. /////////////////////////////////////////////////////////////////////////////
  46. // CDynaMenuDoc
  47.  
  48. class CDynaMenuDoc : public CDocument
  49. {
  50. protected: // create from serialization only
  51.     CDynaMenuDoc();
  52.     DECLARE_DYNCREATE(CDynaMenuDoc)
  53.  
  54. // Attributes
  55. public:
  56.     int  m_iColor;                      // current text color
  57.     BOOL m_abAllowColor[NUM_TEXTCOLOR]; // flags whether colors may be used
  58.  
  59. // This array defines the possible text colors.  There is a one-to-one
  60. // correspondence with m_abAllowColor. m_iColor is an index into both arrays.
  61.    static DynaMenuDef m_aColorDef[NUM_TEXTCOLOR];
  62.  
  63. // Operations
  64. public:
  65.     static BOOL GetMessageString(UINT nID, CString& strMessage);
  66.  
  67. // Implementation
  68. public:
  69.     virtual ~CDynaMenuDoc();
  70.     virtual void Serialize(CArchive& ar);   // overridden for document i/o
  71.  
  72.     virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
  73.                           AFX_CMDHANDLERINFO* pHandlerInfo);
  74.  
  75. #ifdef _DEBUG
  76.     virtual void AssertValid() const;
  77.     virtual void Dump(CDumpContext& dc) const;
  78. #endif
  79.  
  80. protected:
  81.     virtual BOOL OnNewDocument();
  82.  
  83.     void DoSelectColor(int iColor);
  84.     void DoUpdateSelectColor(int iColor, CCmdUI* pExtra);
  85.  
  86. // Generated message map functions
  87. protected:
  88.     //{{AFX_MSG(CDynaMenuDoc)
  89.     afx_msg void OnColorOptions();
  90.     //}}AFX_MSG
  91.     DECLARE_MESSAGE_MAP()
  92. };
  93.  
  94. /////////////////////////////////////////////////////////////////////////////
  95.