当前位置: 首页 > news >正文

博敏 网站开发淘宝联盟怎么做网站推广

博敏 网站开发,淘宝联盟怎么做网站推广,上海网站建设网站,郴州网站建设较好的公司1.前言 最近发现读者对我的mfc美化的专栏比较感兴趣#xff0c;因此在这里进行续写#xff0c;这里我会计划写几个连续的篇章#xff0c;包括对MFC按钮的美化#xff0c;菜单栏的美化#xff0c;标题栏的美化#xff0c;list列表的美化#xff0c;直到最后形成一个完整…1.前言 最近发现读者对我的mfc美化的专栏比较感兴趣因此在这里进行续写这里我会计划写几个连续的篇章包括对MFC按钮的美化菜单栏的美化标题栏的美化list列表的美化直到最后形成一个完整的成品效果。 2.最终效果展示 点击启动按钮之后能响应功能。 博主不会UI设计图片显示的效果比较差用更好的图片贴上去就能显示更好的效果的 3.思路分析 1.使用我们设计好的图片来美化按钮。把图片贴到按钮上 2.创建一个按钮类继承CButton,来重绘按钮 3.核心还是重写了 DrawItem函数来实现重绘的效果 4.实现过程 1.在MFC的界面那里创建两个按钮启动和停止按钮。 2.找到按钮的属性那里把所有者描述改成true,不然重绘是不能成功的这一步是一定要做的 3.核心代码 头文件里面声明按钮变量 public:CMyButton m_button_start;CMyButton m_button_stop;afx_msg void OnBnClickedButton2();afx_msg void OnBnClickedButton1(); OnInitDialog()函数 BOOL CMFCDrawnTitleDlg::OnInitDialog() {CDialogEx::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。// IDM_ABOUTBOX 必须在系统命令范围内。ASSERT((IDM_ABOUTBOX 0xFFF0) IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX 0xF000);CMenu* pSysMenu GetSystemMenu(FALSE);if (pSysMenu ! nullptr){BOOL bNameValid;CString strAboutMenu;bNameValid strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()){pSysMenu-AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// 设置此对话框的图标。 当应用程序主窗口不是对话框时框架将自动// 执行此操作SetIcon(m_hIcon, TRUE); // 设置大图标SetIcon(m_hIcon, FALSE); // 设置小图标// TODO: 在此添加额外的初始化代码//退出按钮绘制CRect rtBtnClo;GetClientRect(rtBtnClo);rtBtnClo.left rtBtnClo.right - 20;m_btnExit.SetImagePath(_T(.\\res\\icon_popup_off.png), _T(.\\res\\icon_popup_off.png), _T(.\\res\\icon_popup_off.png));m_btnExit.InitMyButton(rtBtnClo.left, 5, 16, 16, true);//最大化按钮绘制GetClientRect(rtBtnClo);rtBtnClo.left rtBtnClo.right - 50;m_btnMax.SetImagePath(_T(.\\res\\icon_square.png), _T(.\\res\\icon_square.png), _T(.\\res\\icon_square.png));m_btnMax.InitMyButton(rtBtnClo.left, 5, 16, 16, true);//最小化按钮// GetClientRect(rtBtnClo);rtBtnClo.left rtBtnClo.right - 80;m_btnMin.SetImagePath(_T(.\\res\\icon_minimiz.png), _T(.\\res\\icon_minimiz.png), _T(.\\res\\icon_minimiz.png));m_btnMin.InitMyButton(rtBtnClo.left, 5, 16, 16, true);return TRUE; // 除非将焦点设置到控件否则返回 TRUE } 5.button重绘的头文件和cpp文件 mybutton.h pch.h, 和framework.h这两个文件的路径可以改的。根据你的项目文件实际放置情况 #pragma once#include afxwin.h #include ../pch.h #include ../framework.h // CMyButtonclass CMyButton : public CButton {DECLARE_DYNAMIC(CMyButton)public:CMyButton();virtual ~CMyButton();protected://正常状态图像路径CString m_strNormalImgPath;//按下状态图像路径CString m_strPressImgPath;//悬浮状态图像路径CString m_strFloatImgPath;//正常状态图像CImage m_imgNormal;//按下状态图像CImage m_imgPress;//悬浮状态图像CImage m_imgFloat;//窗口背景图片CImage m_BkImg;public://设置按钮图片路径void SetImagePath(CString strNoramlImgPath, CString strPressImgPath, CString strFloatImgPath);//初始化按钮主要是调整按钮的位置处理透明色 bool InitMyButton(int nX/*左上角X坐标*/, int nY/*左上角Y坐标*/, int nW/*图像宽*/, int nH/*图像高*/, bool bIsPng/*是否是PNG图片*/);//自绘制函数 void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);//初始化窗口背景void SetBkImg(CString strBkImg);//释放图片资源方便最大化 void ReleaseImg(); protected://光标是否在窗口内BOOL m_bIsInWnd;DECLARE_MESSAGE_MAP() public:afx_msg void OnMouseMove(UINT nFlags, CPoint point);afx_msg void OnMouseHover(UINT nFlags, CPoint point);afx_msg void OnMouseLeave();}; mybutton.cpp // MyButton.cpp : 实现文件 //#include pch.h #include MyButton.h// CMyButtonIMPLEMENT_DYNAMIC(CMyButton, CButton)CMyButton::CMyButton() {m_bIsInWnd FALSE; }CMyButton::~CMyButton() { }BEGIN_MESSAGE_MAP(CMyButton, CButton)ON_WM_MOUSEMOVE()ON_WM_MOUSEHOVER()ON_WM_MOUSELEAVE() END_MESSAGE_MAP()// CMyButton 消息处理程序//设置按钮图片路径 void CMyButton::SetImagePath(CString strNoramlImgPath, CString strPressImgPath, CString strFloatImgPath) {m_strNormalImgPath strNoramlImgPath;m_strPressImgPath strPressImgPath;m_strFloatImgPath strFloatImgPath; }void CMyButton::SetBkImg(CString strBkImg) {if (strBkImg.IsEmpty())return;m_BkImg.Load(strBkImg); }//初始化按钮主要是调整按钮的位置处理透明色 void CMyButton::ReleaseImg() {if (m_imgNormal){m_imgNormal.Destroy();}if (m_imgPress){m_imgPress.Destroy();}if (m_imgFloat){m_imgFloat.Destroy();} } bool CMyButton::InitMyButton(int nX/*左上角X坐标*/, int nY/*左上角Y坐标*/, int nW/*图像宽*/, int nH/*图像高*/, bool bIsPng/*是否是PNG图片*/) {HRESULT hr 0;if (m_strNormalImgPath.IsEmpty())return false;if (m_strPressImgPath.IsEmpty())return false;if (m_strFloatImgPath.IsEmpty())return false;hr m_imgNormal.Load(m_strNormalImgPath);int a GetLastError();if (FAILED(hr))return false;hr m_imgPress.Load(m_strPressImgPath);if (FAILED(hr))return false;hr m_imgFloat.Load(m_strFloatImgPath);if (FAILED(hr))return false;if (bIsPng){if (m_imgNormal.GetBPP() 32){int i 0;int j 0;for (i 0; i m_imgNormal.GetWidth(); i){for (j 0; j m_imgNormal.GetHeight(); j){byte * pbyte (byte *)m_imgNormal.GetPixelAddress(i, j);pbyte[0] pbyte[0] * pbyte[3] / 255;pbyte[1] pbyte[1] * pbyte[3] / 255;pbyte[2] pbyte[2] * pbyte[3] / 255;}}}if (m_imgPress.GetBPP() 32){int i 0;int j 0;for (i 0; i m_imgPress.GetWidth(); i){for (j 0; j m_imgPress.GetHeight(); j){byte * pbyte (byte *)m_imgPress.GetPixelAddress(i, j);pbyte[0] pbyte[0] * pbyte[3] / 255;pbyte[1] pbyte[1] * pbyte[3] / 255;pbyte[2] pbyte[2] * pbyte[3] / 255;}}}if (m_imgFloat.GetBPP() 32){int i 0;int j 0;for (i 0; i m_imgFloat.GetWidth(); i){for (j 0; j m_imgFloat.GetHeight(); j){byte * pbyte (byte *)m_imgFloat.GetPixelAddress(i, j);pbyte[0] pbyte[0] * pbyte[3] / 255;pbyte[1] pbyte[1] * pbyte[3] / 255;pbyte[2] pbyte[2] * pbyte[3] / 255;}}}}MoveWindow(nX, nY, nW, nH);return true;} //自绘制函数 void CMyButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) {if (!lpDrawItemStruct)return;HDC hMemDC;HBITMAP bmpMem;HGDIOBJ hOldObj;bmpMem CreateCompatibleBitmap(lpDrawItemStruct-hDC, lpDrawItemStruct-rcItem.right - lpDrawItemStruct-rcItem.left, lpDrawItemStruct-rcItem.bottom - lpDrawItemStruct-rcItem.top);if (!bmpMem)return;hMemDC CreateCompatibleDC(lpDrawItemStruct-hDC);if (!hMemDC){if (bmpMem){::DeleteObject(bmpMem);bmpMem NULL;}return;}hOldObj ::SelectObject(hMemDC, bmpMem);int nW lpDrawItemStruct-rcItem.right - lpDrawItemStruct-rcItem.left;int nH lpDrawItemStruct-rcItem.bottom - lpDrawItemStruct-rcItem.top;RECT rectTmp { 0 };rectTmp lpDrawItemStruct-rcItem;MapWindowPoints(GetParent(), rectTmp);if (m_BkImg.IsNull() false)m_BkImg.Draw(hMemDC, 0, 0, rectTmp.right - rectTmp.left, rectTmp.bottom - rectTmp.top, rectTmp.left, rectTmp.top, rectTmp.right - rectTmp.left, rectTmp.bottom - rectTmp.top);if (lpDrawItemStruct-itemState ODS_SELECTED){//按钮被选择 m_imgPress.AlphaBlend(hMemDC, 0, 0, nW, nH, 0, 0, nW, nH);}else{//默认状态 m_imgNormal.AlphaBlend(hMemDC, 0, 0, nW, nH, 0, 0, nW, nH);}::BitBlt(lpDrawItemStruct-hDC, 0, 0, nW, nH, hMemDC,0,0,SRCCOPY);SelectObject(hMemDC, hOldObj);if (bmpMem){::DeleteObject(bmpMem);bmpMem NULL;}if (hMemDC){::DeleteDC(hMemDC);hMemDC NULL;}return; }void CMyButton::OnMouseMove(UINT nFlags, CPoint point) {// TODO: 在此添加消息处理程序代码和/或调用默认值CButton::OnMouseMove(nFlags, point);if (!m_bIsInWnd){TRACKMOUSEEVENT tme;tme.cbSize sizeof(TRACKMOUSEEVENT);tme.dwFlags TME_HOVER | TME_LEAVE;tme.dwHoverTime 10;tme.hwndTrack m_hWnd;_TrackMouseEvent(tme);m_bIsInWnd TRUE;} }void CMyButton::OnMouseHover(UINT nFlags, CPoint point) {// TODO: 在此添加消息处理程序代码和/或调用默认值HDC hMemDC;HBITMAP bmpMem;HGDIOBJ hOldObj;HDC hDC ::GetDC(GetSafeHwnd());CRect rcItem;GetClientRect(rcItem);if (hDC){bmpMem CreateCompatibleBitmap(hDC, rcItem.Width(), rcItem.Height());if (!bmpMem){::ReleaseDC(GetSafeHwnd(), hDC);return;}hMemDC CreateCompatibleDC(hDC);if (!hMemDC){if (bmpMem){::DeleteObject(bmpMem);bmpMem NULL;}::ReleaseDC(GetSafeHwnd(), hDC);return;}hOldObj ::SelectObject(hMemDC, bmpMem);RECT rectTmp { 0 };rectTmp rcItem;MapWindowPoints(GetParent(), rectTmp);if (m_BkImg.IsNull() false)m_BkImg.Draw(hMemDC, 0, 0, rectTmp.right - rectTmp.left, rectTmp.bottom - rectTmp.top, rectTmp.left, rectTmp.top, rectTmp.right - rectTmp.left, rectTmp.bottom - rectTmp.top);int nW rcItem.right - rcItem.left;int nH rcItem.bottom - rcItem.top;m_imgFloat.AlphaBlend(hMemDC, 0, 0, nW, nH, 0, 0,nW,nH);::BitBlt(hDC, 0, 0, nW, nH, hMemDC, 0, 0, SRCCOPY);SelectObject(hMemDC, hOldObj);if (bmpMem){::DeleteObject(bmpMem);bmpMem NULL;}if (hMemDC){::DeleteDC(hMemDC);hMemDC NULL;}::ReleaseDC(GetSafeHwnd(), hDC);}CButton::OnMouseHover(nFlags, point); }void CMyButton::OnMouseLeave() {// TODO: 在此添加消息处理程序代码和/或调用默认值CButton::OnMouseLeave();InvalidateRect(NULL);m_bIsInWnd FALSE; }
http://www.hkea.cn/news/14466590/

相关文章:

  • 服务网站设计案例宣传型网站
  • 免费3d模型网站织梦如何做中英文网站
  • 情侣博客网站模板wordpress首页源码
  • 中国志愿者服务网站登录注册wordpress 添加固定字段
  • 网站升级维护网页qq登录页面
  • 台州市城乡建设局网站广东seo
  • 手机网站预约表单泉州握旗公司网站建设
  • 微信推送用哪个网站做网站建设制作设计营销 中山
  • wordpress打开媒体链接设置郑州做网站优化
  • 怎么才能百度做网站网页设计与制作课程思政案例集
  • 综合性医院网站源代码下载网络推广是做什么工作的
  • 建个网站需要多少钱圣宝电动车大架号在哪里企业网站网站建设
  • 购物网站主要的功能模块海南网站建设报价
  • 上海建站提供商购买域名有什么用
  • 用.net做购物网站北京网站建设方案外包
  • 自主建站郑州建设网站
  • 网站建设需要哪些成本费用培训中心网站建设方案
  • 网站建设维护公司地址网站域名实名认证
  • 北京网络建站模板网站建设项目概况
  • 最新远程网站建设服务国内虚拟助手网站
  • 越南做企业网站网站添加qq聊天
  • 电影分享网站源码厦门网页设计代做
  • 用wordpress建企业网站个人网站建设目标
  • 搭建网站的方案怎么做外贸网站的邮箱签名
  • 建设网站建设哪家快开公司建网站
  • 网站怎么做网络推广手机广西网
  • 网站域名的建立广州网站seo招聘
  • 怎么做服装网站南昌市城市建设档案馆网站
  • seo作弊seo网站优化快速排名软件
  • 网站推广 排名wordpress投票插件wp-polls