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

图片显示

开发平台:

Visual C++

  1. // MainFrm.cpp : implementation of the CMainFrame class
  2. //
  3. #include "stdafx.h"
  4. #include "QuickImage.h"
  5. #include "MainFrm.h"
  6. #include "DirFrm.h"
  7. #include "ImgFrm.h"
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CMainFrame
  15. IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)
  16. BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
  17. //{{AFX_MSG_MAP(CMainFrame)
  18. // NOTE - the ClassWizard will add and remove mapping macros here.
  19. //    DO NOT EDIT what you see in these blocks of generated code !
  20. ON_WM_CREATE()
  21. //}}AFX_MSG_MAP
  22. END_MESSAGE_MAP()
  23. static UINT indicators[] =
  24. {
  25. ID_SEPARATOR,           // status line indicator
  26. ID_SEPARATOR,
  27. ID_SEPARATOR,
  28. // ID_INDICATOR_CAPS,
  29. // ID_INDICATOR_NUM,
  30. // ID_INDICATOR_SCRL,
  31. };
  32. /////////////////////////////////////////////////////////////////////////////
  33. // CMainFrame construction/destruction
  34. CMainFrame::CMainFrame()
  35. {
  36. // m_muToolBars[0] = FALSE;
  37. }
  38. CMainFrame::~CMainFrame()
  39. {
  40. }
  41. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  42. {
  43. if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
  44. return -1;
  45. if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
  46. | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
  47. !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
  48. {
  49. TRACE0("Failed to create toolbarn");
  50. return -1;      // fail to create
  51. }
  52. if (!m_wndStatusBar.Create(this) ||
  53. !m_wndStatusBar.SetIndicators(indicators,
  54.   sizeof(indicators)/sizeof(UINT)))
  55. {
  56. TRACE0("Failed to create status barn");
  57. return -1;      // fail to create
  58. }
  59. /* if (!m_tbMap.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
  60. | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
  61. !m_tbMap.LoadToolBar(IDR_TB_MAP))
  62. {
  63. TRACE0("Failed to create toolbarn");
  64. return -1;      // fail to create
  65. }
  66. m_tbMap.EnableDocking(CBRS_ALIGN_ANY);
  67. */ // TODO: Delete these three lines if you don't want the toolbar to
  68. //  be dockable
  69. m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
  70. EnableDocking(CBRS_ALIGN_ANY);
  71. DockControlBar(&m_wndToolBar);
  72. m_wndStatusBar.SetPaneInfo(1, ID_SEPARATOR, SBPS_NORMAL, 150);
  73. m_wndStatusBar.SetPaneInfo(2, ID_SEPARATOR, SBPS_NORMAL, 80);
  74. SetStatusText(0);
  75. // ShowControlBar(&m_tbMap,FALSE,FALSE);
  76. CenterWindow();
  77. return 0;
  78. }
  79. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  80. {
  81. if( !CMDIFrameWnd::PreCreateWindow(cs) )
  82. return FALSE;
  83. // TODO: Modify the Window class or styles here by modifying
  84. //  the CREATESTRUCT cs
  85. CRect rcDesktop;
  86. ::GetWindowRect(::GetDesktopWindow(),&rcDesktop);
  87. cs.cx=rcDesktop.Width();
  88. cs.cy=rcDesktop.Height()-30;
  89. return TRUE;
  90. }
  91. /////////////////////////////////////////////////////////////////////////////
  92. // CMainFrame diagnostics
  93. #ifdef _DEBUG
  94. void CMainFrame::AssertValid() const
  95. {
  96. CMDIFrameWnd::AssertValid();
  97. }
  98. void CMainFrame::Dump(CDumpContext& dc) const
  99. {
  100. CMDIFrameWnd::Dump(dc);
  101. }
  102. #endif //_DEBUG
  103. /////////////////////////////////////////////////////////////////////////////
  104. // CMainFrame message handlers
  105. BOOL CMainFrame::UpdateUIs(BOOL bActivate, const CWnd* pActivateWnd, const CWnd* pDeactivateWnd)
  106. {
  107. /* DWORD dwStyle = m_tbMap.GetBarStyle();
  108. UINT nDockBarID = 0;
  109. nDockBarID = (dwStyle & CBRS_ALIGN_TOP) ? AFX_IDW_DOCKBAR_TOP : nDockBarID;
  110. nDockBarID = (dwStyle & CBRS_ALIGN_BOTTOM && nDockBarID==0) ? AFX_IDW_DOCKBAR_BOTTOM : nDockBarID;
  111. nDockBarID = (dwStyle & CBRS_ALIGN_LEFT && nDockBarID==0) ? AFX_IDW_DOCKBAR_LEFT : nDockBarID;
  112. nDockBarID = (dwStyle & CBRS_ALIGN_RIGHT && nDockBarID==0) ? AFX_IDW_DOCKBAR_RIGHT : nDockBarID;
  113. //Modify Toolbar
  114. if(NULL == pActivateWnd)
  115. {
  116. m_tbMap.ShowWindow(SW_HIDE);
  117. m_muToolBars[0] = FALSE;
  118. RecalcLayout();
  119. return TRUE;
  120. }
  121. else if(pActivateWnd->IsKindOf(RUNTIME_CLASS(CDirFrame)))
  122. {
  123. m_tbMap.ShowWindow(SW_HIDE);
  124. m_muToolBars[0] = TRUE;
  125. }
  126. else if(pActivateWnd->IsKindOf(RUNTIME_CLASS(CImgFrame)))
  127. {
  128. m_tbMap.ShowWindow(SW_SHOW);
  129. DockControlBar(&m_tbMap, nDockBarID);
  130. m_muToolBars[0] = TRUE;
  131. }
  132. else
  133. {
  134. m_tbMap.ShowWindow(SW_HIDE);
  135. m_muToolBars[0] = FALSE;
  136. }
  137. RecalcLayout();
  138. */
  139. /////////////Modify Menu
  140. return TRUE;
  141. }
  142. int CMainFrame::FindMenuItem(const CMenu *Menu, LPCTSTR MenuString)
  143. {
  144.    ASSERT(Menu);
  145.    ASSERT(::IsMenu(Menu->GetSafeHmenu()));
  146.    int count = Menu->GetMenuItemCount();
  147.    for (int i = 0; i < count; i++)
  148.    {
  149.       CString str;
  150.       if (Menu->GetMenuString(i, str, MF_BYPOSITION) &&
  151.          (strcmp(str, MenuString) == 0))
  152.          return i;
  153.    }
  154.    return -1;
  155. }
  156. void CMainFrame::SetStatusText(int iPane, LPCTSTR lpszText)
  157. {
  158. // ASSERT(iPane > -1 && m_wndStatusBar
  159. if(NULL == lpszText)
  160. {
  161. m_wndStatusBar.SetPaneText(1, _T("Image Size: "));
  162. m_wndStatusBar.SetPaneText(2, _T("Zoom: "));
  163. }
  164. else
  165. {
  166. m_wndStatusBar.SetPaneText(iPane, lpszText); 
  167. }
  168. }