splash.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:4k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // splash.cpp : implementation file
  2. //
  3. // This file is a part of the XTREME TOOLKIT PRO MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. #include "stdafx.h"
  21. #include "wordpad.h"
  22. #ifdef _DEBUG
  23. #undef THIS_FILE
  24. static char BASED_CODE THIS_FILE[] = __FILE__;
  25. #endif
  26. /////////////////////////////////////////////////////////////////////////////
  27. // CSplashWnd dialog
  28. BOOL CSplashWnd::Create(CWnd* pParent)
  29. {
  30. //{{AFX_DATA_INIT(CSplashWnd)
  31. // NOTE: the ClassWizard will add member initialization here
  32. //}}AFX_DATA_INIT
  33. if (!CDialog::Create(CSplashWnd::IDD, pParent))
  34. {
  35. TRACE0("Warning: creation of CSplashWnd dialog failedn");
  36. return FALSE;
  37. }
  38. return TRUE;
  39. }
  40. BOOL CSplashWnd::OnInitDialog()
  41. {
  42. CDialog::OnInitDialog();
  43. CenterWindow();
  44. // initialize the big icon control
  45. m_icon.SubclassDlgItem(IDC_BIGICON, this);
  46. m_icon.SizeToContent();
  47. return TRUE;  // return TRUE  unless you set the focus to a control
  48. }
  49. /////////////////////////////////////////////////////////////////////////////
  50. // CSplashWnd message handlers
  51. /////////////////////////////////////////////////////////////////////////////
  52. // CBigIcon
  53. BEGIN_MESSAGE_MAP(CBigIcon, CButton)
  54. //{{AFX_MSG_MAP(CBigIcon)
  55. ON_WM_DRAWITEM()
  56. ON_WM_ERASEBKGND()
  57. //}}AFX_MSG_MAP
  58. END_MESSAGE_MAP()
  59. /////////////////////////////////////////////////////////////////////////////
  60. // CBigIcon message handlers
  61. #define CY_SHADOW   4
  62. #define CX_SHADOW   4
  63. void CBigIcon::SizeToContent()
  64. {
  65. m_bitmap.LoadBitmap(IDB_BITMAP48);
  66. BITMAP bm;
  67. m_bitmap.GetObject(sizeof(bm), &bm);
  68. m_sizeBitmap = CSize(bm.bmWidth, bm.bmHeight);
  69. // get system icon size
  70. // a big icon should be twice the size of an icon + shadows
  71. SetWindowPos(NULL, 0, 0, bm.bmWidth + CX_SHADOW + 4, bm.bmHeight + CY_SHADOW + 4,
  72. SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOZORDER);
  73. }
  74. void CBigIcon::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
  75. {
  76. CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
  77. ASSERT(pDC != NULL);
  78. CRect rect;
  79. GetClientRect(rect);
  80. int cxClient = rect.Width();
  81. int cyClient = rect.Height();
  82. // draw border around icon
  83. CPen pen;
  84. pen.CreateStockObject(BLACK_PEN);
  85. CPen* pPenOld = pDC->SelectObject(&pen);
  86. pDC->Rectangle(0, 0, cxClient-CX_SHADOW, cyClient-CY_SHADOW);
  87. if (pPenOld)
  88. pDC->SelectObject(pPenOld);
  89. // draw shadows around icon
  90. CBrush br;
  91. br.CreateStockObject(DKGRAY_BRUSH);
  92. rect.SetRect(cxClient-CX_SHADOW, CY_SHADOW, cxClient, cyClient);
  93. pDC->FillRect(rect, &br);
  94. rect.SetRect(CX_SHADOW, cyClient-CY_SHADOW, cxClient, cyClient);
  95. pDC->FillRect(rect, &br);
  96. // draw the bitmap contents
  97. CDC dcMem;
  98. if (!dcMem.CreateCompatibleDC(pDC))
  99. return;
  100. CBitmap* pBitmapOld = dcMem.SelectObject(&m_bitmap);
  101. if (pBitmapOld == NULL)
  102. return;
  103. pDC->BitBlt(2, 2, m_sizeBitmap.cx, m_sizeBitmap.cy, &dcMem, 0, 0, SRCCOPY);
  104. dcMem.SelectObject(pBitmapOld);
  105. }
  106. BOOL CBigIcon::OnEraseBkgnd(CDC*)
  107. {
  108. return TRUE;    // we don't do any erasing...
  109. }
  110. /////////////////////////////////////////////////////////////////////////////