⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 label.cpp

📁 完成MOTOBUS通信
💻 CPP
字号:
//   Label.cpp   :   implementation   file   
  //   
    
  #include   "stdafx.h"   
  #include   "Resource.h"   
  #include   "Label.h"   
  //#include   "globaltype.h"   
  #ifdef   _DEBUG   
  #define   new   DEBUG_NEW   
  #undef   THIS_FILE   
  static   char   THIS_FILE[]   =   __FILE__;   
  #endif   
    
    
  /////////////////////////////////////////////////////////////////////////////   
  //   CLabel   
    
  CLabel::CLabel()   
  {   
  m_crText   =   GetSysColor(COLOR_WINDOWTEXT);   
  m_hBrush   =   ::CreateSolidBrush(GetSysColor(COLOR_3DFACE));   
    
  ::GetObject((HFONT)GetStockObject(DEFAULT_GUI_FONT),sizeof(m_lf),&m_lf);   
    
  m_font.CreateFontIndirect(&m_lf);   
  m_bTimer   =   FALSE;   
  m_bState   =   FALSE;   
  m_bLink   =   TRUE;   
  m_hCursor   =   NULL;   
  m_Type   =   None;   
    
  m_hwndBrush   =   ::CreateSolidBrush(GetSysColor(COLOR_3DFACE));   
  }   
    
    
  CLabel::~CLabel()   
  {   
  m_font.DeleteObject();   
  ::DeleteObject(m_hBrush);   
  }   
    
    
    
  CLabel&   CLabel::SetText(const   CString&   strText)   
  {   
  SetWindowText(strText);   
  return   *this;   
  }   
    
  CLabel&   CLabel::SetTextColor(COLORREF   crText)   
  {   
  m_crText   =   crText;   
  RedrawWindow();   
  return   *this;   
  }   
    
  CLabel&   CLabel::SetFontBold(BOOL   bBold)   
  {     
  m_lf.lfWeight   =   bBold   ?   FW_BOLD   :   FW_NORMAL;   
  ReconstructFont();   
  RedrawWindow();   
  return   *this;   
  }   
    
  CLabel&   CLabel::SetFontUnderline(BOOL   bSet)   
  {     
  m_lf.lfUnderline   =   bSet;   
  ReconstructFont();   
  RedrawWindow();   
  return   *this;   
  }   
    
  CLabel&   CLabel::SetFontItalic(BOOL   bSet)   
  {   
  m_lf.lfItalic   =   bSet;   
  ReconstructFont();   
  RedrawWindow();   
  return   *this;     
  }   
    
  CLabel&   CLabel::SetSunken(BOOL   bSet)   
  {   
  if   (!bSet)   
  ModifyStyleEx(WS_EX_STATICEDGE,0,SWP_DRAWFRAME);   
  else   
  ModifyStyleEx(0,WS_EX_STATICEDGE,SWP_DRAWFRAME);   
    
  return   *this;     
  }   
    
  CLabel&   CLabel::SetBorder(BOOL   bSet)   
  {   
  if   (!bSet)   
  ModifyStyle(WS_BORDER,0,SWP_DRAWFRAME);   
  else   
  ModifyStyle(0,WS_BORDER,SWP_DRAWFRAME);   
    
  return   *this;     
  }   
    
  CLabel&   CLabel::SetFontSize(int   nSize)   
  {   
  nSize*=-1;   
  m_lf.lfHeight   =   nSize;   
  ReconstructFont();   
  RedrawWindow();   
  return   *this;   
  }   
    
    
  CLabel&   CLabel::SetBkColor(COLORREF   crBkgnd)   
  {   
  if   (m_hBrush)   
  ::DeleteObject(m_hBrush);   
    
  m_hBrush   =   ::CreateSolidBrush(crBkgnd);   
  return   *this;   
  }   
    
  CLabel&   CLabel::SetFontName(const   CString&   strFont)   
  {     
  strcpy(m_lf.lfFaceName,strFont);   
  ReconstructFont();   
  RedrawWindow();   
  return   *this;   
  }   
    
    
  BEGIN_MESSAGE_MAP(CLabel,   CStatic)   
  //{{AFX_MSG_MAP(CLabel)   
  ON_WM_CTLCOLOR_REFLECT()   
  ON_WM_TIMER()   
  ON_WM_LBUTTONDOWN()   
  //2001-10-12-feng---------------------   
  ON_WM_PAINT()   
  //------------------------------------   
  ON_WM_SETCURSOR()   
  //}}AFX_MSG_MAP   
  END_MESSAGE_MAP()   
    
  /////////////////////////////////////////////////////////////////////////////   
  //   CLabel   message   handlers   
    
  HBRUSH   CLabel::CtlColor(CDC*   pDC,   UINT   nCtlColor)     
  {   
  //   TODO:   Change   any   attributes   of   the   DC   here   
    
  //   TODO:   Return   a   non-NULL   brush   if   the   parent's   handler   should   not   be   called   
    
  if   (CTLCOLOR_STATIC   ==   nCtlColor)   
  {   
  pDC->SelectObject(&m_font);   
  pDC->SetTextColor(m_crText);   
  pDC->SetBkMode(TRANSPARENT);   
  }   
    
    
  if   (m_Type   ==   Background)   
  {   
  if   (!m_bState)   
  return   m_hwndBrush;   
  }   
    
  return   m_hBrush;   
  }   
    
  void   CLabel::ReconstructFont()   
  {   
  m_font.DeleteObject();   
  BOOL   bCreated   =   m_font.CreateFontIndirect(&m_lf);   
    
  ASSERT(bCreated);   
  }   
    
    
  CLabel&   CLabel::FlashText(BOOL   bActivate)   
  {   
  if   (m_bTimer)   
  {   
  SetWindowText(m_strText);   
  KillTimer(1);   
  }   
    
  if   (bActivate)   
  {   
  GetWindowText(m_strText);   
  m_bState   =   FALSE;   
    
  m_bTimer   =   TRUE;   
  SetTimer(1,500,NULL);   
  m_Type   =   Text;   
  }   
    
  return   *this;   
  }   
    
  CLabel&   CLabel::FlashBackground(BOOL   bActivate)   
  {   
    
  if   (m_bTimer)   
  KillTimer(1);   
    
  if   (bActivate)   
  {   
  m_bState   =   FALSE;   
    
  m_bTimer   =   TRUE;   
  SetTimer(1,500,NULL);   
    
  m_Type   =   Background;   
  }   
    
  return   *this;   
  }   
    
    
  void   CLabel::OnTimer(UINT   nIDEvent)     
  {   
  m_bState   =   !m_bState;   
    
  switch   (m_Type)   
  {   
  case   Text:   
  if   (m_bState)   
  SetWindowText("");   
  else   
  SetWindowText(m_strText);   
  break;   
    
  case   Background:   
  InvalidateRect(NULL,FALSE);   
  UpdateWindow();   
  break;   
  }   
    
  CStatic::OnTimer(nIDEvent);   
  }   
    
  CLabel&   CLabel::SetLink(BOOL   bLink)   
  {   
  m_bLink   =   bLink;   
    
  if   (bLink)   
  ModifyStyle(0,SS_NOTIFY);   
  else   
  ModifyStyle(SS_NOTIFY,0);   
    
  return   *this;   
  }   
    
  void   CLabel::OnLButtonDown(UINT   nFlags,   CPoint   point)     
  {   
  CString   strLink;   
    
  GetWindowText(strLink);   
  //2001-10-12--------------------------------------------------   
  if   (strlen((char   *)(LPCSTR)strLink)>0)   
  //------------------------------------------------------------   
  ShellExecute(NULL,"open",strLink,NULL,NULL,SW_SHOWNORMAL);   
    
  CStatic::OnLButtonDown(nFlags,   point);   
  }   
    
  BOOL   CLabel::OnSetCursor(CWnd*   pWnd,   UINT   nHitTest,   UINT   message)     
  {   
  if   (m_hCursor)   
  {   
  ::SetCursor(m_hCursor);   
  return   TRUE;   
  }   
    
  return   CStatic::OnSetCursor(pWnd,   nHitTest,   message);   
  }   
    
  CLabel&   CLabel::SetLinkCursor(HCURSOR   hCursor)   
  {   
  m_hCursor   =   hCursor;   
  return   *this;   
  }   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -