封装按钮

转载 2015年07月07日 22:19:25
// SkinButton.cpp : 实现文件
//
#include "stdafx.h"
#include "project.h"
#include "SkinButton.h"


// SkinButton
IMPLEMENT_DYNAMIC(SkinButton, CButton)
SkinButton::SkinButton()
{
 m_bMouseLeave = FALSE;
 m_BitmapNormal = NULL;
 m_BitmapHot = NULL;
 m_BitmapPress = NULL;
 m_BitmapDisnable = NULL;
}
SkinButton::~SkinButton()
{
}


BEGIN_MESSAGE_MAP(SkinButton, CButton)
 ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave)
 ON_MESSAGE(WM_MOUSEHOVER, OnMouseHover)
 ON_WM_MOUSEMOVE()
END_MESSAGE_MAP()
 
// SkinButton 消息处理程序
LRESULT SkinButton::OnMouseLeave(WPARAM Wparam, LPARAM Lparam)
{
 Invalidate();
 m_bMouseLeave = FALSE;
 return 0;
}
LRESULT SkinButton::OnMouseHover(WPARAM Wparam, LPARAM Lparam)
{
 Invalidate();
 m_bMouseLeave = TRUE;
 return 0;
}
void SkinButton::LoadBitmaps(HBITMAP hLeave, HBITMAP hHonver, HBITMAP hClick, HBITMAP hDisable)
{
 m_BitmapNormal = hLeave;
 m_BitmapHot = hHonver;
 m_BitmapPress = hClick;
 m_BitmapDisnable = hDisable;
}
void SkinButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
 // TODO:  添加您的代码以绘制指定项
 if ( GetStyle() == WS_VISIBLE )
 {
  return ;
 }
 HBITMAP bitmap;
 if (lpDrawItemStruct->itemState == ODS_DISABLED)
 {
  bitmap = m_BitmapDisnable;
 } 
 else if( lpDrawItemStruct->itemState == ODS_SELECTED)
 {
  bitmap = m_BitmapPress;
 }
 else
 {
  if (!m_bMouseLeave)
  {
   bitmap = m_BitmapNormal;
  }
  else
  {
   bitmap = m_BitmapHot;
  }
 }
  HDC dc = CreateCompatibleDC(lpDrawItemStruct->hDC);
  HBITMAP OldBitmap = (HBITMAP)SelectObject(dc, bitmap);
  RECT rect = lpDrawItemStruct->rcItem;
  //BitBlt(lpDrawItemStruct->hDC, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, dc, 0, 0, SRCCOPY);


  BITMAP bmp;
  ::GetObject(bitmap, sizeof(BITMAP), &bmp);
  SetStretchBltMode(lpDrawItemStruct->hDC,COLORONCOLOR/*HALFTONE*/);
  StretchBlt(lpDrawItemStruct->hDC,rect.left, rect.top,rect.right-rect.left,rect.bottom-rect.top, dc,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
  CString text;
  GetWindowText(text);
  SetBkMode(lpDrawItemStruct->hDC, TRANSPARENT);
 
 DrawText(lpDrawItemStruct->hDC, text, text.GetLength(), &rect, DT_CENTER|DT_VCENTER|DT_SINGLELINE);
 
 SelectObject(dc, OldBitmap);
 DeleteDC(dc);
}
void SkinButton::OnMouseMove(UINT nFlags, CPoint point)
{
 // TODO: 在此添加消息处理程序代码和/或调用默认值
 if (!m_bMouseLeave)
 {
  Invalidate();
  TRACKMOUSEEVENT tme = {sizeof(TRACKMOUSEEVENT), TME_LEAVE, m_hWnd, 0};
  m_bMouseLeave = TrackMouseEvent(&tme); 
 }
 CButton::OnMouseMove(nFlags, point);
}

iOS按钮封装

+ (UIButton *)buttonWithTitle:(NSString *)title frame:(CGRect) frame target:(id)target action:(SEL)a...
  • tongwei117
  • tongwei117
  • 2016年08月01日 14:20
  • 753

iOS开发 - 封装一个自己的按钮

有时候,你会看到设计出来的界面某个位置可点击,但是直接用按钮又无法控制几个元素的关系,这个时候与其用多个控件组合出来这样的按钮不如自己封装一个来的快,还可以重复使用。虽然也需要计算元素的位置大小,但是...
  • CodingFire
  • CodingFire
  • 2017年02月08日 17:36
  • 1519

react-native组件Button封装与传值

感觉React native开发就是要先写组件(component),然后用组件去组装页面。组件写好了,后续开发就简单多了。不多说了。   1.下面介绍下自定义圆角Button的封装。 ...
  • qq_32014215
  • qq_32014215
  • 2017年03月30日 10:32
  • 960

封装按钮

// SkinButton.cpp : 实现文件 // #include "stdafx.h" #include "project.h" #include "SkinButton.h" ...
  • u012761633
  • u012761633
  • 2015年04月28日 15:58
  • 192

react-native--万能Button封装

导语:在日常开发中,我们经常需要用过按钮,比如:提交,确认,登录。 其中,大部分的按钮都有如下需求: 1-:点击与不可点击时背景颜色 2-:文案大小,字体颜色 3-:圆角,边框颜色一:案例: ...
  • tiem_erhu
  • tiem_erhu
  • 2016年12月07日 21:31
  • 1210

安卓开发之封装显示倒计时按钮控件

实现倒计时逻辑比较简单,使用了CountDownTimer来计时(考虑了线程安全问题)。 对使用逻辑封装成了一个自定义控件TimerButton。 源代码:import android.cont...
  • cxmscb
  • cxmscb
  • 2016年08月05日 22:49
  • 871

iOS开发封装带有Button的UIView控件,使用代理给button添加点击事件

iOS开发封装带有Button的UIView控件,使用代理给button添加点击事件
  • l2i2j2
  • l2i2j2
  • 2016年05月12日 22:23
  • 3121

PB数据窗口中按钮的封装

PB数据窗口中按钮的封装 (加入日期:2001-9-26) 【保存文章至硬盘】【打印文章】【字体:大中 小】 分享到: 0   众所周知在数据库的操作中,对数据表记录的添加、删除、保...
  • hunter403
  • hunter403
  • 2012年04月05日 16:17
  • 407

Jquery前端封装--DOM加载

学习要点: 1.问题所在 2.设置代码 处理页面文档加载的时候,我们遇到一个难题,就是使用window.onload 这种将所有内 容加载后(包括DOM 文档结构,外部脚本、样式,图片音乐...
  • xiaoerduo123x
  • xiaoerduo123x
  • 2016年02月15日 17:28
  • 309

Unity3D之Button的封装

原创不易,转载请注明转自:
  • u012413679
  • u012413679
  • 2014年05月20日 12:05
  • 2117
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:封装按钮
举报原因:
原因补充:

(最多只允许输入30个字)