MPCLogoPane.cpp
上传用户:rubberdam
上传日期:2007-01-10
资源大小:43k
文件大小:2k
源码类别:

状态条

开发平台:

Visual C++

  1. //
  2. // MPCLogoPane.cpp
  3. // 
  4. // (c) Pierre MELLINAND
  5. //
  6. // History
  7. // --------
  8. // v 1.0
  9. // June 1998: Created.
  10. // v 1.01
  11. // October 19, 1999 Added History
  12. //
  13. #include "StdAfx.h"
  14. #include "MPCLogoPane.h"
  15. #ifdef _DEBUG
  16. #define new DEBUG_NEW
  17. #undef THIS_FILE
  18. static char THIS_FILE[] = __FILE__;
  19. #endif
  20. ////////////////////////////////////////////////////////////////////////
  21. // MPCLogoPane
  22. IMPLEMENT_DYNCREATE(MPCLogoPane,CWnd)
  23. BEGIN_MESSAGE_MAP(MPCLogoPane, CWnd)
  24. //{{AFX_MSG_MAP(MPCLogoPane)
  25. ON_WM_PAINT()
  26. //}}AFX_MSG_MAP
  27. END_MESSAGE_MAP()
  28. MPCLogoPane::MPCLogoPane()
  29. {
  30. SetLogoFont("Arial");
  31. }
  32. void MPCLogoPane::SetLogoText(CString sTxt)
  33. {
  34. m_LogoText=sTxt;
  35. }
  36. void MPCLogoPane::SetLogoFont(CString Name, int nHeight/* = 24*/,
  37. int nWeight/* = FW_BOLD*/, BYTE bItalic/* = true*/, BYTE bUnderline/* = false*/)
  38. {
  39. if(m_fontLogo.m_hObject)
  40. m_fontLogo.Detach();
  41. m_fontLogo.CreateFont(nHeight, 0, 0, 0, nWeight, bItalic, bUnderline,0,0,0,0,0,0, Name);
  42. }
  43. void MPCLogoPane::OnPaint() 
  44. {
  45. CPaintDC dc(this); // device context for painting
  46. CRect rect;
  47. GetWindowRect(rect);
  48. dc.SetBkMode(TRANSPARENT);
  49. CFont * OldFont = dc.SelectObject(&m_fontLogo);
  50. // draw text in DC
  51. COLORREF OldColor = dc.SetTextColor( ::GetSysColor( COLOR_3DHILIGHT));
  52. rect.right = rect.Width();
  53. rect.bottom = rect.Height();
  54. rect.left = rect.top = 0;
  55. dc.FillSolidRect(rect, ::GetSysColor(COLOR_3DFACE));
  56. dc.DrawText( m_LogoText, rect + CPoint(1,1), DT_SINGLELINE | DT_LEFT | DT_VCENTER);
  57. dc.SetTextColor( ::GetSysColor( COLOR_3DSHADOW));
  58. dc.DrawText( m_LogoText, rect, DT_SINGLELINE | DT_LEFT | DT_VCENTER);
  59. // restore old text color
  60. dc.SetTextColor( OldColor);
  61. // restore old font
  62. dc.SelectObject(OldFont);
  63. // Do not call CWnd::OnPaint() for painting messages
  64. }
  65. BOOL MPCLogoPane::Create(CString sText,DWORD dwStyle, CWnd * pParent,UINT nID)
  66. {
  67. BOOL bOk = CWnd::Create(AfxRegisterWndClass(CS_BYTEALIGNCLIENT),
  68. sText,
  69. dwStyle,
  70. CRect(0,0,0,0),
  71. pParent,nID);
  72. m_LogoText=sText;
  73. return bOk;
  74. }