home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / graphics / gdi / fonts / gridfont / app.hxx < prev    next >
Text File  |  1994-08-28  |  4KB  |  163 lines

  1. //+--------------------------------------------------------
  2. // File:        App.hxx
  3. //
  4. // Classes:     CController
  5. //
  6. // Functions:   WinMain
  7. //              WndProc
  8. //              MakeWindowClass
  9. //              AboutDlgProc
  10. //
  11. // History:     22-Jan-1993     asmusf  created
  12. //              15-Dec-1993     michelsu
  13. //       - added font content awareness (page and block level)
  14. //       - fix Print All Pages
  15. //                15-Aug-1994        asmusf
  16. //         - added decomposition, property indication
  17. //----------------------------------------------------------
  18.  
  19. #include <string.h>
  20. #include "app.h"
  21. #include "view.hxx"
  22. #include "grid.hxx"
  23. #include "box.hxx"
  24.  
  25. //----------------------------------------------------------
  26. //
  27. // Class Hierarchy for Application   --- inheritance
  28. //           (approximate)           (x) contains x
  29. //
  30. //      CGrid
  31. //        |                          CBlockFrame(CFont)  
  32. //        |                                     (CLineGrid)
  33. //        +--CTextGrid(CFont)                   (CCodeGrid)
  34. //        |     |                               (CCharGrid)
  35. //        |     |
  36. //        |     +CCharGrid           CPage(CFont,CCodeGrid[])
  37. //   CLineGrid  |                         (CBlockFrame[])
  38. //              +CCodeGrid           
  39. //                                   CModel(CPage,CFontRange)
  40. //                                   
  41. //                                   
  42. //
  43. //      CCanvas                       CView
  44. //         |                            |
  45. //         |-- CPaintCanvas             |
  46. //         |                          CScrollableView
  47. //         |-- CScreenCanvas
  48. //         |
  49. //         +-- CPrintCanvas           CPrintRequest
  50. //
  51. //
  52. //     CController(CScrollableView, CModel, CBox)
  53. //
  54. //----------------------------------------------------------
  55.  
  56. #if 0
  57. #ifndef WPARAM
  58. #define WPARAM WORD
  59. #endif
  60. #ifndef LPARAM
  61. #define LPARAM LONG
  62. #endif
  63. #endif
  64.  
  65. // procedures called by Windows
  66.  
  67. extern "C" {
  68.  
  69. LRESULT CALLBACK WndProc
  70.    ( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam );
  71.  
  72. BOOL CALLBACK AboutDlgProc
  73.    ( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam );
  74.  
  75. BOOL CALLBACK PropDlgProc
  76.    ( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam );
  77. }
  78.  
  79.  
  80. // Main function and other functions used in App.cxx
  81.  
  82. int WINAPI WinMain
  83.    ( HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR cmdParam, int cmdShow );
  84.  
  85. void MakeWindowClass ( WNDPROC WndProc, LPTSTR szAppName, HINSTANCE hInst );
  86.  
  87.  
  88. // ==== Class CWindow =============================
  89.  
  90. class CWindow
  91. {
  92. public:
  93.    CWindow (): _hwnd(0) {}
  94.    CWindow ( LPTSTR caption, LPTSTR lpszClassName, HINSTANCE hInstance,
  95.             int cx = CW_USEDEFAULT, int cy=CW_USEDEFAULT);
  96.    void Show ( int nCmdShow )
  97.    {
  98.       ShowWindow ( _hwnd, nCmdShow );
  99.       UpdateWindow ( _hwnd );
  100.    }
  101.    operator HWND() { return _hwnd; }
  102. protected:
  103.    HWND _hwnd;
  104. };
  105.  
  106. inline CWindow::CWindow(LPTSTR caption, LPTSTR lpszClassName, HINSTANCE hInstance,
  107. int cx, int cy)
  108. {
  109.    _hwnd = CreateWindow (
  110.       lpszClassName,
  111.       caption,
  112.       WS_OVERLAPPEDWINDOW | WS_VSCROLL | WS_HSCROLL,
  113.       CW_USEDEFAULT,
  114.       CW_USEDEFAULT,
  115.       cx,
  116.       cy,
  117.       NULL,
  118.       NULL,
  119.       hInstance,
  120.       NULL );
  121. }
  122.  
  123. // ==== Class Controller ==========================
  124.  
  125. class CController
  126. {
  127. public:
  128.    void Init(HWND hwnd);
  129.  
  130.    void Create(HWND hwnd, LPARAM lParam);
  131.    void Destroy();
  132.    void Size ( LPARAM lParam );
  133.    void Paint ( HWND hwnd );
  134.    void Command ( HWND hwnd, WPARAM wParam );
  135.    void ButtonDown(HWND hwnd, LPARAM lParam );
  136.    void ButtonUp(HWND hwnd, LPARAM lParam);
  137.    void KeyDown(HWND hwnd, WPARAM wParam, LPARAM lParam);
  138.    void KeyUp(HWND hwnd, WPARAM wParam, LPARAM lParam);
  139.    void VScroll(HWND hwnd, WPARAM wParam, LPARAM lParam);
  140.    void HScroll(HWND hwnd, WPARAM wParam, LPARAM lParam);
  141.    void AlertBox(HWND hwnd, UINT ids, UINT fuStyle);
  142.  
  143. private:
  144.    void Page(HWND hwnd, WPARAM wParam);
  145.  
  146.    HINSTANCE  _hInst;
  147.    DLGPROC _funAbout;
  148.    DLGPROC _funProp;
  149.  
  150.    CScrollableView* _pView;
  151.    CModel* _pModel;
  152.    CBox *  _pBox;
  153. };
  154.  
  155.  
  156. inline void CController::Paint ( HWND hwnd )
  157. {
  158.    CPaintCanvas canvas (hwnd);
  159.  
  160.    _pView->Paint(canvas, _pModel, canvas.GetRect());
  161. }
  162.  
  163.