frame.cpp
上传用户:biuytresa
上传日期:2007-12-07
资源大小:721k
文件大小:4k
源码类别:

DNA

开发平台:

Visual C++

  1. // frame.cpp : implementation of the CMainFrame class
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992-1998 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12. #include "stdafx.h"
  13. #include "oclient.h"
  14. #include "frame.h"
  15. #ifdef _DEBUG
  16. #undef THIS_FILE
  17. static char BASED_CODE THIS_FILE[] = __FILE__;
  18. #endif
  19. /////////////////////////////////////////////////////////////////////////////
  20. // CMainFrame
  21. IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)
  22. BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
  23. //{{AFX_MSG_MAP(CMainFrame)
  24. ON_WM_CREATE()
  25. ON_COMMAND(ID_WINDOW_TILE_HORZ, OnWindowTileHorz)
  26. ON_WM_PALETTECHANGED()
  27. ON_WM_QUERYNEWPALETTE()
  28. //}}AFX_MSG_MAP
  29. END_MESSAGE_MAP()
  30. /////////////////////////////////////////////////////////////////////////////
  31. // arrays of IDs used to initialize control bars
  32. // toolbar buttons - IDs are command buttons
  33. static UINT BASED_CODE buttons[] =
  34. {
  35. // same order as in the bitmap 'toolbar.bmp'
  36. ID_FILE_NEW,
  37. ID_FILE_OPEN,
  38. ID_FILE_SAVE,
  39. ID_SEPARATOR,
  40. ID_EDIT_CUT,
  41. ID_EDIT_COPY,
  42. ID_EDIT_PASTE,
  43. ID_SEPARATOR,
  44. ID_FILE_PRINT,
  45. ID_APP_ABOUT,
  46. ID_CONTEXT_HELP,
  47. };
  48. static UINT BASED_CODE indicators[] =
  49. {
  50. ID_SEPARATOR,           // status line indicator
  51. ID_INDICATOR_CAPS,
  52. ID_INDICATOR_NUM,
  53. ID_INDICATOR_SCRL,
  54. };
  55. /////////////////////////////////////////////////////////////////////////////
  56. // CMainFrame construction/destruction
  57. CMainFrame::CMainFrame()
  58. {
  59. }
  60. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  61. {
  62. if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
  63. return -1;
  64. if (!m_wndToolBar.Create(this) ||
  65. !m_wndToolBar.LoadBitmap(IDR_MAINFRAME) ||
  66. !m_wndToolBar.SetButtons(buttons,
  67.   sizeof(buttons)/sizeof(UINT)))
  68. {
  69. TRACE0("Failed to create toolbarn");
  70. return -1;      // fail to create
  71. }
  72. if (!m_wndStatusBar.Create(this) ||
  73. !m_wndStatusBar.SetIndicators(indicators,
  74.   sizeof(indicators)/sizeof(UINT)))
  75. {
  76. TRACE0("Failed to create status barn");
  77. return -1;      // fail to create
  78. }
  79. EnableDocking(CBRS_ALIGN_ANY);
  80. m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
  81. DockControlBar(&m_wndToolBar);
  82. CDC* pDC = GetDC();
  83. m_palette.CreateHalftonePalette(pDC);
  84. ReleaseDC(pDC);
  85. return 0;
  86. }
  87. CMainFrame::~CMainFrame()
  88. {
  89. }
  90. /////////////////////////////////////////////////////////////////////////////
  91. // CMainFrame diagnostics
  92. #ifdef _DEBUG
  93. void CMainFrame::AssertValid() const
  94. {
  95. CMDIFrameWnd::AssertValid();
  96. }
  97. void CMainFrame::Dump(CDumpContext& dc) const
  98. {
  99. CMDIFrameWnd::Dump(dc);
  100. }
  101. #endif //_DEBUG
  102. /////////////////////////////////////////////////////////////////////////////
  103. // CMainFrame commands
  104. void CMainFrame::OnWindowTileHorz()
  105. {
  106. if (GetKeyState(VK_SHIFT) < 0)
  107. OnMDIWindowCmd(ID_WINDOW_TILE_VERT);
  108. else
  109. OnMDIWindowCmd(ID_WINDOW_TILE_HORZ);
  110. }
  111. /////////////////////////////////////////////////////////////////////////////
  112. // CMainFrame message handlers
  113. void CMainFrame::OnPaletteChanged(CWnd* pFocusWnd)
  114. {
  115. CMDIFrameWnd::OnPaletteChanged(pFocusWnd);
  116. if (pFocusWnd != this)
  117. SelectPalette(TRUE);
  118. }
  119. BOOL CMainFrame::OnQueryNewPalette()
  120. {
  121. if (CMDIFrameWnd::OnQueryNewPalette())
  122. return TRUE;
  123. return SelectPalette(FALSE);
  124. }
  125. BOOL CMainFrame::SelectPalette(BOOL bBackground)
  126. {
  127. if (m_palette.m_hObject == NULL)
  128. return FALSE;
  129. CDC* pDC = GetDC();
  130. CPalette* pOldPal = pDC->SelectPalette(&m_palette, bBackground);
  131. UINT nPalChg = pDC->RealizePalette();
  132. pDC->SelectPalette(pOldPal, TRUE); // background
  133. ReleaseDC(pDC);
  134. if (nPalChg > 0)
  135. InvalidateRect(NULL, TRUE);
  136. return TRUE;
  137. }