FCLASS.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:7k
源码类别:

Windows编程

开发平台:

Visual C++

  1. //+---------------------------------------------------------------------------
  2. //
  3. //  Microsoft Windows
  4. //  Copyright 1992 - 1997 Microsoft Corporation.
  5. //
  6. //  File:       fclass.h
  7. //
  8. //  Contents:   definition for the CFractalWindow class
  9. //
  10. //  Classes:    CFractalWindow
  11. //
  12. //  Functions:
  13. //
  14. //  History:    4-11-94   stevebl   Created
  15. //
  16. //----------------------------------------------------------------------------
  17. #ifndef __WFCLASS_H__
  18. #define __WFCLASS_H__
  19. #include "cwindow.h"
  20. #include <commdlg.h>
  21. #include <frhost.h>
  22. #include <frcngn.h>
  23. #include "engnlist.h"
  24. #include <palsize.h>
  25. #ifdef __cplusplus
  26. //+---------------------------------------------------------------------------
  27. //
  28. //  Class:      CFractalWindow
  29. //
  30. //  Purpose:    implements MFract's main window
  31. //
  32. //  Interface:  CFractalWindow       -- constructor
  33. //              ~CFractalWindow      -- destructor
  34. //              InitInstance         -- initializes an instance of the class
  35. //              WindowProc           -- main window procedure
  36. //              DoMenu               -- menu command handler
  37. //              OnCreate             -- called when the window is created
  38. //              NewWindowSize        -- called when window size changes
  39. //              SetUpColorTable      -- initializes the color table
  40. //              SetDefaultColors     -- selects the default color set
  41. //              Wash                 -- creats a wash over a range of colors
  42. //              ToggleTitle          -- toggles full screen mode on/off
  43. //              ChangeFractalEngines -- changes fractal engines
  44. //              CycleStop            -- stops color cycling
  45. //              Faster               -- alters speed of color cycling
  46. //              LoadPalette          -- loads a color palette from a file
  47. //              SavePalette          -- saves a color palette to a file
  48. //              SaveBitmap           -- saves the graph as a bitmap
  49. //              LoadFile             -- loads the graph from a docfile
  50. //              SaveFile             -- saves the graph to a docfile
  51. //              OnStart              -- starts the graph
  52. //              OnStop               -- stops the graph
  53. //              GetHwnd              -- gets the main window handle
  54. //              DrawRect             -- draws the zoom rectangle
  55. //              EraseRect            -- erases the zoom rectangle
  56. //              ClipLine             -- clips a line to the graph dimensions
  57. //
  58. //              IUnknown methods:
  59. //              QueryInterface       -- retreives interface pointers
  60. //              AddRef               -- increments ref-count
  61. //              Release              -- decrements ref-count
  62. //
  63. //              IFractalHost methods:
  64. //              SetGraphSize         -- changes the size of the graph
  65. //              GetGraphSize         -- returns the size of the graph
  66. //              GetPoint             -- returns the color at a point
  67. //              Rect                 -- draws a rectangle
  68. //              Line                 -- draws a line
  69. //              Point                -- plots a point
  70. //              DoneDrawingGraph     -- signals when the graph is complete
  71. //
  72. //  History:    4-11-94   stevebl   Created
  73. //              7-07-94   stevebl   changed definition of GetPoint
  74. //
  75. //----------------------------------------------------------------------------
  76. class CFractalWindow: public CHlprWindow, public IFractalHost
  77. {
  78. public:
  79.     CFractalWindow();
  80.     ~CFractalWindow();
  81.     BOOL InitInstance(HINSTANCE, int);
  82.     LRESULT WindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam);
  83.     LRESULT DoMenu(WPARAM wParam, LPARAM lParam);
  84.     void OnCreate(void);
  85.     void NewWindowSize(unsigned uWidth, unsigned uHeight);
  86.     void SetUpColorTable(void);
  87.     void SetDefaultColors(void);
  88.     void Wash(int i, PALETTEENTRY rgColors[]);
  89.     void ToggleTitle(void);
  90.     void ChangeFractalEngines(void);
  91.     void CycleStop(void);
  92.     void Faster(int);
  93.     void LoadPalette(void);
  94.     void SavePalette(void);
  95.     void SaveBitmap(void);
  96.     void LoadFile(void);
  97.     void SaveFile(void);
  98.     void OnStart(void);
  99.     void OnStop(void);
  100.     HWND GetHwnd(void);
  101.     BOOL DrawRect(HDC, const RECT *);
  102.     BOOL EraseRect(HDC, const RECT *);
  103.     BOOL ClipLine(int & x1, int & y1, int & x2, int & y2);
  104.     // IUnknown members
  105.     STDMETHOD(QueryInterface) (THIS_ REFIID, void **);
  106.     STDMETHOD_(ULONG, AddRef) (THIS);
  107.     STDMETHOD_(ULONG, Release) (THIS);
  108.     // IFractalHost members
  109.     STDMETHOD(SetGraphSize) (THIS_ unsigned uWidth, unsigned uHeight);
  110.     STDMETHOD(GetGraphSize) (THIS_ unsigned * puWidth, unsigned * puHeight);
  111.     STDMETHOD(GetPoint) (THIS_ unsigned * puValue, int x, int y);
  112.     STDMETHOD(Rect)
  113.         (THIS_
  114.         int iLeft,
  115.         int iTop,
  116.         int iRight,
  117.         int iBottom,
  118.         unsigned uColor);
  119.     STDMETHOD(Line)
  120.         (THIS_
  121.         int x1,
  122.         int y1,
  123.         int x2,
  124.         int y2,
  125.         unsigned uColor);
  126.     STDMETHOD(Point)
  127.         (THIS_
  128.         int x,
  129.         int y,
  130.         unsigned uColor);
  131.     STDMETHOD(DoneDrawingGraph)(THIS_ void);
  132. private:
  133.     HDC         _hdcMem;
  134.     ULONG       _uRefreshRate;
  135.     HANDLE      _hTitleEvent;
  136.     HANDLE      _hGraphStartedEvent;
  137.     HPALETTE    _hpal;
  138.     HBITMAP     _hbmSavedBitmap;
  139.     HBITMAP     _hbmMainWindow;
  140.     unsigned    _uScreenWidth;
  141.     unsigned    _uScreenHeight;
  142.     unsigned    _uImageWidth;
  143.     unsigned    _uImageHeight;
  144.     unsigned    _uWindowWidth;
  145.     unsigned    _uWindowHeight;
  146.     unsigned    _uScrollPosX;
  147.     unsigned    _uScrollPosY;
  148.     int         _iCycleVelocity;
  149.     int         _iCurrentDirection;
  150.     double      _dLeft, _dRight, _dTop, _dBottom;
  151.     PALETTEENTRY * _pEntry1, * _pEntry2;
  152.     LOGPALETTE * _pLogPal;
  153.     LOGPALETTE * _pSecondLogPal;
  154.     ULONG       _uRefCount;
  155.     CEngineList * _pEngineList;
  156.     unsigned    _uFractalType;
  157.     IFractalEngine * _pFractalEngine;
  158.     RECT        _rectZoom;
  159.     BOOL        _fZooming;
  160.     BOOL        _fRButtonDown;
  161.     OPENFILENAME _ofnPalette;
  162.     OPENFILENAME _ofnBitmap;
  163.     OPENFILENAME _ofnFile;
  164.     TCHAR       _szPalFileName[MAX_PATH];
  165.     TCHAR       _szPalFileTitle[MAX_PATH];
  166.     TCHAR       _szBmpFileName[MAX_PATH];
  167.     TCHAR       _szBmpFileTitle[MAX_PATH];
  168.     TCHAR       _szFileName[MAX_PATH];
  169.     TCHAR       _szFileTitle[MAX_PATH];
  170.     TCHAR       _szHelpFile[MAX_PATH];
  171.     RECT        _rectPainted;
  172.     IStorage  * _pstg;
  173.     char      * _rgPixels;
  174.     BOOL        _fReRealizePalette;
  175.     BOOL        _fCanAnimate;
  176.     CRITICAL_SECTION _csGraph;
  177. };
  178. #endif // __cplusplus
  179. #define REFRESH_TIMER 1
  180. #define CYCLE_TIMER 2
  181. #define CYCLE_RATE 50
  182. #define QUICKWIDTH 160
  183. #define QUICKHEIGHT 120
  184. #endif // __WFCLASS_H__