MainFrm.cpp
上传用户:cqzhuye
上传日期:2007-01-01
资源大小:72k
文件大小:4k
源码类别:

浏览器

开发平台:

Visual C++

  1. // MainFrm.cpp : implementation of the CMainFrame class
  2. //
  3. #include "stdafx.h"
  4. #include "EZSnakeDemo.h"
  5. #include "EZSnakeCtrl.h "
  6. #include "MainFrm.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CMainFrame
  14. IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
  15. BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
  16. //{{AFX_MSG_MAP(CMainFrame)
  17. ON_WM_CREATE()
  18. ON_COMMAND(ID_START, OnStart)
  19. ON_COMMAND(ID_STOP, OnStop)
  20. //}}AFX_MSG_MAP
  21. END_MESSAGE_MAP()
  22. static UINT indicators[] =
  23. {
  24. ID_SEPARATOR,           // status line indicator
  25.     ID_INDICATOR_EZSNAKE, 
  26. ID_INDICATOR_CAPS,
  27. ID_INDICATOR_NUM,
  28. ID_INDICATOR_SCRL,
  29. };
  30. /////////////////////////////////////////////////////////////////////////////
  31. // CMainFrame construction/destruction
  32. CMainFrame::CMainFrame()
  33. {
  34. // TODO: add member initialization code here
  35. m_bStart=FALSE;
  36. m_bDialog=FALSE;
  37. }
  38. CMainFrame::~CMainFrame()
  39. {
  40. }
  41. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  42. {
  43. if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
  44. return -1;
  45. if (!m_wndToolBar.CreateEx(this) ||
  46. !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
  47. {
  48. TRACE0("Failed to create toolbarn");
  49. return -1;      // fail to create
  50. }
  51. if (!m_wndDlgBar.Create(this, IDR_MAINFRAME, 
  52. CBRS_ALIGN_TOP, AFX_IDW_DIALOGBAR))
  53. {
  54. TRACE0("Failed to create dialogbarn");
  55. return -1; // fail to create
  56. }
  57. if (!m_wndReBar.Create(this) ||
  58. !m_wndReBar.AddBar(&m_wndToolBar) ||
  59. !m_wndReBar.AddBar(&m_wndDlgBar))
  60. {
  61. TRACE0("Failed to create rebarn");
  62. return -1;      // fail to create
  63. }
  64. if (!m_wndStatusBar.Create(this) ||
  65. !m_wndStatusBar.SetIndicators(indicators,
  66.   sizeof(indicators)/sizeof(UINT)))
  67. {
  68. TRACE0("Failed to create status barn");
  69. return -1;      // fail to create
  70. }
  71. // TODO: Remove this if you don't want tool tips
  72. m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
  73. CBRS_TOOLTIPS | CBRS_FLYBY);
  74. m_wndStatusBar.SetPaneInfo(1,ID_INDICATOR_EZSNAKE,SBPS_STRETCH,NULL);
  75. return 0;
  76. }
  77. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  78. {
  79. if( !CFrameWnd::PreCreateWindow(cs) )
  80. return FALSE;
  81. // TODO: Modify the Window class or styles here by modifying
  82. //  the CREATESTRUCT cs
  83. cs.style = WS_OVERLAPPED | WS_CAPTION | FWS_ADDTOTITLE
  84. | WS_THICKFRAME | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_MAXIMIZE;
  85. return TRUE;
  86. }
  87. /////////////////////////////////////////////////////////////////////////////
  88. // CMainFrame diagnostics
  89. #ifdef _DEBUG
  90. void CMainFrame::AssertValid() const
  91. {
  92. CFrameWnd::AssertValid();
  93. }
  94. void CMainFrame::Dump(CDumpContext& dc) const
  95. {
  96. CFrameWnd::Dump(dc);
  97. }
  98. #endif //_DEBUG
  99. /////////////////////////////////////////////////////////////////////////////
  100. // CMainFrame message handlers
  101. void CMainFrame::OnStart() 
  102. {
  103.   m_bStart=TRUE;
  104.   CEZSnakeCtrl wndSnake;
  105.   CRect rc;
  106.   m_wndStatusBar.GetItemRect(1,&rc);
  107.   wndSnake.Create("",WS_CHILD|WS_VISIBLE|SS_SUNKEN,rc,&m_wndStatusBar,ID_INDICATOR_EZSNAKE);
  108.   wndSnake.SetSize(30);
  109.   wndSnake.SetGradientFill(::GetSysColor(COLOR_3DLIGHT),::GetSysColor(COLOR_3DDKSHADOW));
  110.   wndSnake.SetBkColor(::GetSysColor(COLOR_BTNFACE));
  111.   while(m_bStart)
  112.   {
  113.   MSG msg;
  114.   Sleep(10);
  115.   if(::PeekMessage(&msg,m_hWnd,0,0,TRUE))
  116.   {
  117.   ::TranslateMessage(&msg);
  118.   ::DispatchMessage(&msg);
  119.   }
  120.   wndSnake.StepIt();
  121.   }
  122. }
  123. void CMainFrame::OnStop() 
  124. {
  125.    m_bStart=FALSE;
  126. }
  127. BOOL CMainFrame::DestroyWindow() 
  128. {
  129.     m_bStart=FALSE;
  130. return CFrameWnd::DestroyWindow();
  131. }