MainFrm.cpp
上传用户:dfwb928
上传日期:2013-04-20
资源大小:228k
文件大小:5k
源码类别:

图形图象

开发平台:

Visual C++

  1. // MainFrm.cpp : implementation of the CMainFrame class
  2. //
  3. #include "stdafx.h"
  4. #include "ED256.h"
  5. #include "MainFrm.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CMainFrame
  13. IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
  14. BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
  15. //{{AFX_MSG_MAP(CMainFrame)
  16. // NOTE - the ClassWizard will add and remove mapping macros here.
  17. //    DO NOT EDIT what you see in these blocks of generated code !
  18. ON_WM_CREATE()
  19. ON_MESSAGE(WM_USER+0x0001, ThreshChange)
  20. //}}AFX_MSG_MAP
  21. END_MESSAGE_MAP()
  22. static UINT indicators[] =
  23. {
  24. ID_SEPARATOR,           // status line indicator
  25. ID_INDICATOR_CAPS,
  26. ID_INDICATOR_NUM,
  27. ID_INDICATOR_SCRL,
  28. };
  29. /////////////////////////////////////////////////////////////////////////////
  30. // CMainFrame construction/destruction
  31. CMainFrame::CMainFrame() {
  32. m_iThreshold = 20;
  33. }
  34. CMainFrame::~CMainFrame() {}
  35. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) {
  36. if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1;
  37. if (!m_wndToolBar.Create(this) ||
  38. !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) {
  39. TRACE0("Failed to create toolbarn");
  40. return -1;
  41. }
  42. if (!m_wndProtoBar.Create(this) ||
  43. !m_wndProtoBar.LoadToolBar(IDR_PROTOTYPING)) {
  44. TRACE0("Failed to create prototyping toolbarn");
  45. return -1;
  46. }
  47. if (!m_wndStatusBar.Create(this) ||
  48. !m_wndStatusBar.SetIndicators(indicators,
  49.   sizeof(indicators)/sizeof(UINT))) {
  50. TRACE0("Failed to create status barn");
  51. return -1;
  52. }
  53. m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
  54. CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
  55. m_wndProtoBar.SetBarStyle(m_wndProtoBar.GetBarStyle() |
  56. CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
  57. m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
  58. m_wndProtoBar.EnableDocking(CBRS_ALIGN_ANY);
  59. EnableDocking(CBRS_ALIGN_ANY);
  60. DockControlBar(&m_wndToolBar);
  61. DockControlBarLeftOf(&m_wndProtoBar, &m_wndToolBar);
  62. int ind = m_wndToolBar.CommandToIndex(ID_THRESHEDIT);
  63. m_wndToolBar.SetButtonInfo(ind, ID_THRESHEDIT, TBBS_SEPARATOR, 40);
  64. CRect rect;
  65. m_wndToolBar.GetItemRect(ind,&rect);
  66. if (!m_wndToolBar.m_cEdit.Create(WS_VISIBLE | WS_CHILD | WS_BORDER, rect,
  67. &m_wndToolBar, ID_THRESHEDIT)) {
  68. TRACE0("Failed to create edit control! Damn...");
  69. return -1;
  70. }
  71. m_cFont.CreatePointFont(100, "Tahoma");
  72. m_wndToolBar.m_cEdit.SetFont(&m_cFont, true);
  73. CString str; str.Format("%d",m_iThreshold);
  74. m_wndToolBar.m_cEdit.SetWindowText(str);
  75. return 0;
  76. }
  77. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  78. {
  79. // TODO: Modify the Window class or styles here by modifying
  80. //  the CREATESTRUCT cs
  81. return CFrameWnd::PreCreateWindow(cs);
  82. }
  83. /////////////////////////////////////////////////////////////////////////////
  84. // CMainFrame diagnostics
  85. #ifdef _DEBUG
  86. void CMainFrame::AssertValid() const
  87. {
  88. CFrameWnd::AssertValid();
  89. }
  90. void CMainFrame::Dump(CDumpContext& dc) const
  91. {
  92. CFrameWnd::Dump(dc);
  93. }
  94. #endif //_DEBUG
  95. /////////////////////////////////////////////////////////////////////////////
  96. // CMainFrame message handlers
  97. CToolBar *CMainFrame::GetToolbar() {
  98. return &m_wndToolBar;
  99. }
  100. LRESULT CMainFrame::ThreshChange(WPARAM wparam, LPARAM lparam) {
  101. m_iThreshold = (int)(wparam);
  102. return 0;
  103. }
  104. void CMainFrame::DockControlBarLeftOf(CToolBar* Bar, CToolBar* LeftOf) {
  105. // From DOCKTOOL Sample
  106. CRect rect;
  107. DWORD dw;
  108. UINT n;
  109. // get MFC to adjust the dimensions of all docked ToolBars
  110. // so that GetWindowRect will be accurate
  111. RecalcLayout();
  112. LeftOf->GetWindowRect(&rect);
  113. rect.OffsetRect(1,0);
  114. dw=LeftOf->GetBarStyle();
  115. n = 0;
  116. n = (dw&CBRS_ALIGN_TOP) ? AFX_IDW_DOCKBAR_TOP : n;
  117. n = (dw&CBRS_ALIGN_BOTTOM && n==0) ? AFX_IDW_DOCKBAR_BOTTOM : n;
  118. n = (dw&CBRS_ALIGN_LEFT && n==0) ? AFX_IDW_DOCKBAR_LEFT : n;
  119. n = (dw&CBRS_ALIGN_RIGHT && n==0) ? AFX_IDW_DOCKBAR_RIGHT : n;
  120. // When we take the default parameters on rect, DockControlBar will dock
  121. // each Toolbar on a seperate line.  By calculating a rectangle, we in effect
  122. // are simulating a Toolbar being dragged to that location and docked.
  123. DockControlBar(Bar,n,&rect);
  124. }
  125. void CMainFrame::PercentComplete(float percent) {
  126. CString str;
  127. str.Format("%.1f percent complete...",percent);
  128. SetStatusMessage(str);
  129. }
  130. void CMainFrame::SetStatusMessage(UINT uID) {
  131. CString str;
  132. str.LoadString(uID);
  133. SetStatusMessage(str);
  134. }
  135. void CMainFrame::SetStatusMessage(CString str) {
  136. m_wndStatusBar.SetPaneText(0,str);
  137. }