home *** CD-ROM | disk | FTP | other *** search
/ Windows Graphics Programming / Feng_Yuan_Win32_GDI_DirectX.iso / Samples / include / Framewnd.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-11  |  2.8 KB  |  95 lines

  1. #pragma once
  2.  
  3. //-----------------------------------------------------------------------------------//
  4. //              Windows Graphics Programming: Win32 GDI and DirectDraw               //
  5. //                             ISBN  0-13-086985-6                                   //
  6. //                                                                                   //
  7. //  Written            by  Yuan, Feng                             www.fengyuan.com   //
  8. //  Copyright (c) 2000 by  Hewlett-Packard Company                www.hp.com         //
  9. //  Published          by  Prentice Hall PTR, Prentice-Hall, Inc. www.phptr.com      //
  10. //                                                                                   //
  11. //  FileName   : framewnd.h                                                             //
  12. //  Description: SDI & MDI frame windows                                             //
  13. //  Version    : 1.00.000, May 31, 2000                                              //
  14. //-----------------------------------------------------------------------------------//
  15.  
  16. #include <commctrl.h>
  17.  
  18. class KStatusWindow;
  19. class KCanvas;
  20. class KToolbar;
  21.  
  22. // SDI frame window, can have a toolbar, canvas window and a status window
  23. class KFrame : public KWindow
  24. {
  25. protected:
  26.     typedef enum { ID_STATUSWINDOW = 101,
  27.                    ID_TOOLBAR      = 102
  28.                 };
  29.  
  30.     KToolbar        * m_pToolbar;
  31.     KCanvas         * m_pCanvas;
  32.     
  33.     const TBBUTTON  * m_pButtons;
  34.     int                  m_nButtons;
  35.  
  36.     int                  m_nToolbarHeight;
  37.     int                    m_nStatusHeight;
  38.  
  39. public:
  40.     HWND              m_hMDIClient;
  41.     HINSTANCE          m_hInst;
  42.     HACCEL              m_hAccel;    
  43.     KStatusWindow   * m_pStatus;
  44.  
  45.     virtual LRESULT OnCreate(void);
  46.     virtual LRESULT OnSize(int width, int height);
  47.     virtual BOOL    OnCommand(WPARAM wParam, LPARAM lParam);
  48.  
  49.     virtual LRESULT WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
  50.  
  51.     KFrame(HINSTANCE hInstance, const TBBUTTON * pButtons, int nCount,
  52.            KToolbar * pToolbar, KCanvas * pCanvas, KStatusWindow * pStatus);
  53.     
  54.     virtual ~KFrame();
  55.     
  56.     virtual WPARAM MessageLoop(void);
  57. };
  58.  
  59.  
  60. typedef enum
  61. {
  62.     Enum_FILE_CLOSE,
  63.     Enum_FILE_EXIT,
  64.  
  65.     Enum_WINDOW_TILE,
  66.     Enum_WINDOW_CASCADE,
  67.     Enum_WINDOW_ARRANGE,
  68.     Enum_WINDOW_CLOSEALL
  69. };
  70.  
  71.  
  72. // MDI Frame Window
  73. class KMDIFrame : public KFrame
  74. {
  75.     HMENU m_hMainMenu;
  76.     int      m_Translate[Enum_WINDOW_CLOSEALL+1];
  77.  
  78. protected:
  79.     virtual BOOL    OnCommand(WPARAM wParam, LPARAM lParam);
  80.     virtual LRESULT WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
  81.  
  82. public:
  83.     KMDIFrame(HINSTANCE hInstance, const TBBUTTON * pButtons, int nCount,
  84.         KToolbar * pToolbar, KStatusWindow * pStatus, const int * pTranslate) :
  85.         KFrame(hInstance, pButtons, nCount, pToolbar, NULL, pStatus)
  86.     {
  87.         m_hMainMenu = NULL;
  88.  
  89.         if ( pTranslate )
  90.             memcpy(m_Translate, pTranslate, sizeof(m_Translate));
  91.         else
  92.             memset(m_Translate, 0xFF, sizeof(m_Translate));
  93.     }
  94. };
  95.