home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / com / inole2 / chap07 / cosmo / cosmo.h < prev    next >
C/C++ Source or Header  |  1995-05-03  |  4KB  |  164 lines

  1. /*
  2.  * COSMO.H
  3.  * Cosmo Chapter 7
  4.  *
  5.  * Single include file that pulls in everything needed for other
  6.  * source files in the Cosmo application.
  7.  *
  8.  * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
  9.  *
  10.  * Kraig Brockschmidt, Microsoft
  11.  * Internet  :  kraigb@microsoft.com
  12.  * Compuserve:  >INTERNET:kraigb@microsoft.com
  13.  */
  14.  
  15.  
  16. #ifndef _COSMO_H_
  17. #define _COSMO_H_
  18.  
  19. #define INC_CLASSLIB
  20. //CHAPTER7MOD
  21. #define CHAPTER7
  22. //End CHAPTER7MOD
  23. #include <inole.h>
  24. #include "resource.h"
  25.  
  26.  
  27. //Get the editor window information.
  28. #include "polyline.h"
  29.  
  30.  
  31.  
  32. //COSMO.CPP:  Frame object that creates a main window
  33.  
  34. class CCosmoFrame : public CFrame
  35.     {
  36.     private:
  37.         HBITMAP         m_hBmpLines[5];     //Menu item bitmaps
  38.         UINT            m_uIDCurLine;       //Current line selection
  39.  
  40.         //CHAPTER7MOD
  41.         BOOL            m_fInitialized;     //Did CoInitalize work?
  42.         //EndCHAPTER7MOD
  43.  
  44.     protected:
  45.         //Overridable for creating a CClient for this frame
  46.         virtual PCClient  CreateCClient(void);
  47.  
  48.         virtual BOOL      RegisterAllClasses(void);
  49.         virtual BOOL      PreShowInit(void);
  50.         virtual UINT      CreateToolbar(void);
  51.  
  52.         virtual LRESULT   OnCommand(HWND, WPARAM, LPARAM);
  53.         virtual void      OnDocumentDataChange(PCDocument);
  54.         virtual void      OnDocumentActivate(PCDocument);
  55.  
  56.         //New for this class
  57.         virtual void      CreateLineMenu(void);
  58.  
  59.     public:
  60.         CCosmoFrame(HINSTANCE, HINSTANCE, LPSTR, int);
  61.         virtual ~CCosmoFrame(void);
  62.  
  63.         //Overrides
  64.         //CHAPTER7MOD
  65.         virtual BOOL      Init(PFRAMEINIT);
  66.         //End CHAPTER7MOD
  67.         virtual void      UpdateMenus(HMENU, UINT);
  68.         virtual void      UpdateToolbar(void);
  69.  
  70.         //New for this class
  71.         virtual void      CheckLineSelection(UINT);
  72.     };
  73.  
  74.  
  75. typedef CCosmoFrame *PCCosmoFrame;
  76.  
  77.  
  78.  
  79.  
  80.  
  81. //CLIENT.CPP
  82.  
  83. /*
  84.  * The only reason we have a derived class here is to override
  85.  * CreateCDocument so we can create our own type as well as
  86.  * overriding NewDocument to perform one other piece of work once
  87.  * the document's been created.
  88.  */
  89.  
  90. class CCosmoClient : public CClient
  91.     {
  92.     protected:
  93.         //Overridable for creating a new CDocument
  94.         virtual PCDocument CreateCDocument(void);
  95.  
  96.     public:
  97.         CCosmoClient(HINSTANCE, PCFrame);
  98.         virtual ~CCosmoClient(void);
  99.  
  100.         virtual PCDocument NewDocument(BOOL);
  101.     };
  102.  
  103.  
  104. typedef CCosmoClient *PCCosmoClient;
  105.  
  106.  
  107.  
  108.  
  109. //DOCUMENT.CPP
  110.  
  111. //Constant ID for the window polyline that lives in a document
  112. #define ID_POLYLINE         10
  113.  
  114.  
  115. class CCosmoDoc : public CDocument
  116.     {
  117.     friend class CPolylineAdviseSink;
  118.  
  119.     protected:
  120.         UINT                    m_uPrevSize;    //Last WM_SIZE wParam
  121.         LONG                    m_lVer;         //Loaded Polyline ver
  122.  
  123.         PCPolyline              m_pPL;          //Polyline window here
  124.         PCPolylineAdviseSink    m_pPLAdv;       //Advises from Polyline
  125.  
  126.     protected:
  127.         virtual BOOL     FMessageHook(HWND, UINT, WPARAM, LPARAM
  128.             , LRESULT *);
  129.  
  130.     public:
  131.         CCosmoDoc(HINSTANCE, PCFrame, PCDocumentAdviseSink);
  132.         virtual ~CCosmoDoc(void);
  133.  
  134.         virtual BOOL     Init(PDOCUMENTINIT);
  135.  
  136.         virtual void     Clear(void);
  137.  
  138.         virtual UINT     Load(BOOL, LPTSTR);
  139.         virtual UINT     Save(UINT, LPTSTR);
  140.  
  141.         virtual void     Undo(void);
  142.         virtual BOOL     Clip(HWND, BOOL);
  143.         virtual HGLOBAL  RenderFormat(UINT);
  144.         virtual BOOL     FQueryPaste(void);
  145.         virtual BOOL     Paste(HWND);
  146.  
  147.         virtual COLORREF ColorSet(UINT, COLORREF);
  148.         virtual COLORREF ColorGet(UINT);
  149.  
  150.         virtual UINT     LineStyleSet(UINT);
  151.         virtual UINT     LineStyleGet(void);
  152.     };
  153.  
  154. typedef CCosmoDoc *PCCosmoDoc;
  155.  
  156.  
  157. //These color indices wrap the polyline definitions
  158. #define DOCCOLOR_BACKGROUND             POLYLINECOLOR_BACKGROUND
  159. #define DOCCOLOR_LINE                   POLYLINECOLOR_LINE
  160.  
  161.  
  162.  
  163. #endif //_COSMO_H_
  164.