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

Windows编程

开发平台:

Visual C++

  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. #include <string.h>
  19. #include "app.h"
  20. #include "view.hxx"
  21. #include "grid.hxx"
  22. #include "box.hxx"
  23. //----------------------------------------------------------
  24. //
  25. // Class Hierarchy for Application   --- inheritance
  26. //           (approximate)           (x) contains x
  27. //
  28. //      CGrid
  29. //        |                          CBlockFrame(CFont)  
  30. //        |                                     (CLineGrid)
  31. //        +--CTextGrid(CFont)                   (CCodeGrid)
  32. //        |     |                               (CCharGrid)
  33. //        |     |
  34. //        |     +CCharGrid           CPage(CFont,CCodeGrid[])
  35. //   CLineGrid  |                         (CBlockFrame[])
  36. //              +CCodeGrid           
  37. //                                   CModel(CPage,CFontRange)
  38. //                                   
  39. //                                   
  40. //
  41. //      CCanvas                       CView
  42. //         |                            |
  43. //         |-- CPaintCanvas             |
  44. //         |                          CScrollableView
  45. //         |-- CScreenCanvas
  46. //         |
  47. //         +-- CPrintCanvas           CPrintRequest
  48. //
  49. //
  50. //     CController(CScrollableView, CModel, CBox)
  51. //
  52. //----------------------------------------------------------
  53. #if 0
  54. #ifndef WPARAM
  55. #define WPARAM WORD
  56. #endif
  57. #ifndef LPARAM
  58. #define LPARAM LONG
  59. #endif
  60. #endif
  61. // procedures called by Windows
  62. extern "C" {
  63. LRESULT CALLBACK WndProc
  64.    ( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam );
  65. BOOL CALLBACK AboutDlgProc
  66.    ( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam );
  67. BOOL CALLBACK PropDlgProc
  68.    ( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam );
  69. }
  70. // Main function and other functions used in App.cxx
  71. int WINAPI WinMain
  72.    ( HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR cmdParam, int cmdShow );
  73. void MakeWindowClass ( WNDPROC WndProc, LPTSTR szAppName, HINSTANCE hInst );
  74. // ==== Class CWindow =============================
  75. class CWindow
  76. {
  77. public:
  78.    CWindow (): _hwnd(0) {}
  79.    CWindow ( LPTSTR caption, LPTSTR lpszClassName, HINSTANCE hInstance,
  80.             int cx = CW_USEDEFAULT, int cy=CW_USEDEFAULT);
  81.    void Show ( int nCmdShow )
  82.    {
  83.       ShowWindow ( _hwnd, nCmdShow );
  84.       UpdateWindow ( _hwnd );
  85.    }
  86.    operator HWND() { return _hwnd; }
  87. protected:
  88.    HWND _hwnd;
  89. };
  90. inline CWindow::CWindow(LPTSTR caption, LPTSTR lpszClassName, HINSTANCE hInstance,
  91. int cx, int cy)
  92. {
  93.    _hwnd = CreateWindow (
  94.       lpszClassName,
  95.       caption,
  96.       WS_OVERLAPPEDWINDOW | WS_VSCROLL | WS_HSCROLL,
  97.       CW_USEDEFAULT,
  98.       CW_USEDEFAULT,
  99.       cx,
  100.       cy,
  101.       NULL,
  102.       NULL,
  103.       hInstance,
  104.       NULL );
  105. }
  106. // ==== Class Controller ==========================
  107. class CController
  108. {
  109. public:
  110.    void Init(HWND hwnd);
  111.    void Create(HWND hwnd, LPARAM lParam);
  112.    void Destroy();
  113.    void Size ( LPARAM lParam );
  114.    void Paint ( HWND hwnd );
  115.    void Command ( HWND hwnd, WPARAM wParam );
  116.    void ButtonDown(HWND hwnd, LPARAM lParam );
  117.    void ButtonUp(HWND hwnd, LPARAM lParam);
  118.    void KeyDown(HWND hwnd, WPARAM wParam, LPARAM lParam);
  119.    void KeyUp(HWND hwnd, WPARAM wParam, LPARAM lParam);
  120.    void VScroll(HWND hwnd, WPARAM wParam, LPARAM lParam);
  121.    void HScroll(HWND hwnd, WPARAM wParam, LPARAM lParam);
  122.    void AlertBox(HWND hwnd, UINT ids, UINT fuStyle);
  123. private:
  124.    void Page(HWND hwnd, WPARAM wParam);
  125.    HINSTANCE  _hInst;
  126.    DLGPROC _funAbout;
  127.    DLGPROC _funProp;
  128.    CScrollableView* _pView;
  129.    CModel* _pModel;
  130.    CBox *  _pBox;
  131. };
  132. inline void CController::Paint ( HWND hwnd )
  133. {
  134.    CPaintCanvas canvas (hwnd);
  135.    _pView->Paint(canvas, _pModel, canvas.GetRect());
  136. }