ImageVerifierCode 换一换
格式:DOC , 页数:6 ,大小:52.50KB ,
资源ID:12024326      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/12024326.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(VC-按钮颜色设置.doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

VC-按钮颜色设置.doc

1、这是一个实现自绘CButton的类,期望对大家有点帮助,我提供这个类,只是为大家提供一个自绘控件的思路,你可以在此基础上,随意地修改代码,直到它能完成你所需要的功能.其它控件的自绘,原理了和这个差不多. 1.#if !defined(AFX_BUTTONST_H__1271FF9C_E28C_4D3B_B429_AFE65924A5D0__INCLUDED_) 2.#define AFX_BUTTONST_H__1271FF9C_E28C_4D3B_B429_AFE65924A5D0__INCLUDED_ 3.4.#if _MSC_VER > 1000 5.#pragma once 6.#e

2、ndif // _MSC_VER > 1000 7.// ButtonST.h : header file 8.// 9.10.///////////////////////////////////////////////////////////////////////////// 11.// CButtonST window 12.13.class CButtonST : public CButton 14.{ 15.// Construction 16.public: 17. CButtonST(); 18.19.// Attributes 20.public: 21.

3、 22.// Operations 23.public: 24. //设置背景颜色 25. void SetBkColor(COLORREF BkColor); 26. //设置鼠标在按钮上的偏移颜色 27. void SetShOffset(int nShOffset); 28. //设置字体颜色 29. void SetTextColor(COLORREF TextColor); 30. //设置网页链接 31. void SetURL(CString strURL); 32. //设置背景图片 33. void

4、SetBkPicture(CBitmap *pBitMap); 34.35.// Overrides 36. // ClassWizard generated virtual function overrides 37. //{{AFX_VIRTUAL(CButtonST) 38. public: 39. virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct); 40. virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName,

5、 DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL); 41. protected: 42. virtual BOOL PreCreateWindow(CREATESTRUCT& cs); 43. virtual void PreSubclassWindow(); 44. //}}AFX_VIRTUAL 45.46.// Implementation 47.public: 48. virtual ~CButtonST()

6、 49. 50. void DrawItem1(LPDRAWITEMSTRUCT lpDrawItemStruct); 51.52. // Generated message map functions 53.protected: 54. //{{AFX_MSG(CButtonST) 55. afx_msg void OnMouseMove(UINT nFlags, CPoint point); 56. afx_msg BOOL OnNcActivate(BOOL bActive); 57. afx_msg void OnNcMouse

7、Move(UINT nHitTest, CPoint point); 58. afx_msg void OnKillFocus(CWnd* pNewWnd); 59. afx_msg void OnLButtonDown(UINT nFlags, CPoint point); 60. //}}AFX_MSG 61.protected: 62. //鼠标是否在按钮上面 63. BOOL m_IsPressed; 64. COLORREF m_BkColor; 65. int m_nShOffset; 66. COLORREF

8、 m_TextColor; 67. CString m_strURL; 68. CBitmap *m_pBitMapBK; 69.protected: 70. //背景颜色偏移 71. COLORREF OffsetColor(COLORREF color,int nOffset); 72. //鼠标离开 73. LRESULT OnMouseLeave(WPARAM wParam, LPARAM lParam); 74. DECLARE_MESSAGE_MAP() 75.}; 76.77./////////////////////

9、//////////////////////////////////////////////////////// 78.79.//{{AFX_INSERT_LOCATION}} 80.// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 81.82.#endif // !defined(AFX_BUTTONST_H__1271FF9C_E28C_4D3B_B429_AFE65924A5D0__INCLUDED_) 83. 1.// Bu

10、ttonST.cpp : implementation file 2.// 3.4.#include "stdafx.h" 5.#include "ContrlST.h" 6.#include "ButtonST.h" 7.8.#ifdef _DEBUG 9.#define new DEBUG_NEW 10.#undef THIS_FILE 11.static char THIS_FILE[] = __FILE__; 12.#endif 13.#define BS_TYPEMASK SS_TYPEMASK 14.15.//////////////////////////////////////

11、/////////////////////////////////////// 16.// CButtonST 17.18.CButtonST::CButtonST() 19.{ 20. m_IsPressed = FALSE; 21. m_BkColor = RGB(216,233,216); 22. m_nShOffset = 30; 23. m_TextColor = RGB(0,0,0); 24. m_strURL = ""; 25. m_pBitMapBK = NULL; 26.} 27.28.CButtonST::~CBu

12、ttonST() 29.{ 30. if(m_pBitMapBK!=NULL) 31. { 32. delete m_pBitMapBK; 33. m_pBitMapBK = NULL; 34. } 35.} 36.37.38.BEGIN_MESSAGE_MAP(CButtonST, CButton) 39. //{{AFX_MSG_MAP(CButtonST) 40. ON_WM_MOUSEMOVE() 41. ON_WM_NCACTIVATE() 42. ON_WM_NCMOUSEMOVE() 4

13、3. ON_WM_KILLFOCUS() 44. ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave) 45. ON_WM_LBUTTONDOWN() 46. //}}AFX_MSG_MAP 47.END_MESSAGE_MAP() 48.49.///////////////////////////////////////////////////////////////////////////// 50.// CButtonST message handlers 51.52.53.//设置背景颜色 54.void CButtonST::

14、SetBkColor(COLORREF BkColor) 55.{ 56. m_BkColor = BkColor; 57. this->Invalidate(); 58.} 59.//设置鼠标在按钮上的偏移颜色 60.void CButtonST::SetShOffset(int nShOffset) 61.{ 62. m_nShOffset = nShOffset; 63. this->Invalidate(); 64.} 65.//设置字体颜色 66.void CButtonST::SetTextColor(COLORREF TextCol

15、or) 67.{ 68. m_TextColor = TextColor; 69. this->Invalidate(); 70.} 71.//设置网页链接 72.void CButtonST::SetURL(CString strURL) 73.{ 74. m_strURL = strURL; 75.} 76.77.//设置背景图片 78.void CButtonST::SetBkPicture(CBitmap *pBitMap) 79.{ 80. if(m_pBitMapBK==pBitMap) 81. return; 82.

16、 if(m_pBitMapBK!=NULL) 83. { 84. delete m_pBitMapBK; 85. m_pBitMapBK = pBitMap; 86. } 87. m_pBitMapBK = pBitMap; 88. this->Invalidate(); 89.} 90.//背景颜色偏移 91.COLORREF CButtonST::OffsetColor(COLORREF color,int nOffset) 92.{ 93. BYTE byRed = 0; 94. BYTE

17、 byGreen = 0; 95. BYTE byBlue = 0; 96. short shOffsetR = nOffset; 97. short shOffsetG = nOffset; 98. short shOffsetB = nOffset; 99. if (nOffset < -255 || nOffset > 255) 100. { 101. nOffset = 30; 102. } 103. 104. // Get RGB components of specifi

18、ed color 105. byRed = GetRValue(color); 106. byGreen = GetGValue(color); 107. byBlue = GetBValue(color); 108. 109. // Calculate max. allowed real offset 110. if (nOffset > 0) 111. { 112. if (byRed + nOffset > 255) shOffsetR = 255 - byRed; 113. if (byGr

19、een + nOffset > 255) shOffsetG = 255 - byGreen; 114. if (byBlue + nOffset > 255) shOffsetB = 255 - byBlue; 115. nOffset = min(min(shOffsetR, shOffsetG), shOffsetB); 116. } 117. else118. { 119. if (byRed + nOffset < 0) shOffsetR = -byRed; 12

20、0. if (byGreen + nOffset < 0) shOffsetG = -byGreen; 121. if (byBlue + nOffset < 0) shOffsetB = -byBlue; 122. 123. nOffset = max(max(shOffsetR, shOffsetG), shOffsetB); 124. } 125. int r,g,b; 126. r = byRed + nOffset; 127. g =byGreen + nOffset

21、 128. b =byBlue + nOffset; 129. return RGB(r,g,b); 130.} 131.132.void CButtonST::DrawItem1(LPDRAWITEMSTRUCT lpDrawItemStruct) 133.{ 134. // TODO: Add your code to draw the specified item 135. 136. 137. CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC); 138. CRect

22、 rect = lpDrawItemStruct->rcItem; 139. CRect offRect = rect; 140. int ndist = 2; 141. offRect.left+= ndist; 142. offRect.right -=ndist; 143. offRect.top += ndist; 144. offRect.bottom -=ndist; 145. 146. 147. pDC->SetBkMode(TRANSPARENT); 148. pDC->SetTextColor

23、m_TextColor); 149. 150. //绘制背景 151. if(m_pBitMapBK!=NULL) 152. { 153. CDC* pNewDC = new CDC; 154. pNewDC->CreateCompatibleDC(pDC); 155. pNewDC->SelectObject(m_pBitMapBK); 156. BITMAP bmp; 157. m_pBitMapBK->GetBitmap(&bmp); 158. if(m_

24、IsPressed) 159. { 160. pDC->StretchBlt(0,0,rect.Width(),rect.Height(),pNewDC,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY); 161. } 162. else163. { 164. CBrush brush(RGB(220,220,220));//RGB(m_nShOffset,m_nShOffset,m_nShOffset)); 165. pDC->Fill

25、Rect(&rect,&brush); 166. pDC->StretchBlt(0,0,rect.Width(),rect.Height(),pNewDC,0,0,bmp.bmWidth,bmp.bmHeight,SRCAND); 167. } 168. 169. delete pNewDC; 170. pNewDC = NULL; 171. } 172. else173. { 174. if(m_IsPressed) 175. { 176.

26、 CBrush brush(OffsetColor(m_BkColor,m_nShOffset)); 177. pDC->FillRect(rect,&brush); 178. CBrush brush1(RGB(128,128,128)); 179. pDC->FrameRect(rect,&brush1); 180. pDC->FrameRect(offRect,&brush1); 181. } 182.

27、 else183. { 184. CBrush brush(m_BkColor); 185. pDC->FillRect(rect,&brush); 186. CBrush brush1(RGB(128,128,128)); 187. pDC->FrameRect(offRect,&brush1); 188. } 189. } 190. 191. 192. CString sTitle; 193. GetWindowTe

28、xt(sTitle); 194. offRect.OffsetRect(0,rect.Height()/2-8); 195. // pDC->DrawText(sTitle, sTitle.GetLength(),offRect, DT_WORDBREAK | DT_CENTER); 196. pDC->DrawText(sTitle, sTitle.GetLength(),offRect, DT_WORDBREAK|DT_CENTER); 197.198.199.} 200.201.void CButtonST::DrawItem(LPDRAWITEMSTRUCT

29、 lpDrawItemStruct) 202.{ 203. // TODO: Add your code to draw the specified item 204. DrawItem1(lpDrawItemStruct); 205. return; 206.207. 208. CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC); 209. CRect rect = lpDrawItemStruct->rcItem; 210. CRect offRect = rect; 21

30、1. int ndist = 2; 212. offRect.left+= ndist; 213. offRect.right -=ndist; 214. offRect.top += ndist; 215. offRect.bottom -=ndist; 216.217. CDC* pResetDC=new CDC(); 218. pResetDC->CreateCompatibleDC(pDC); 219. CBitmap bitmap; 220. bitmap.CreateCompatibleBitmap(pDC,re

31、ct.Width(),rect.Height()); 221. pResetDC->SelectObject(&bitmap); 222.223. 224. pResetDC->SetBkMode(TRANSPARENT); 225. pResetDC->SetTextColor(m_TextColor); 226. 227. //绘制背景 228. if(m_pBitMapBK!=NULL) 229. { 230. CDC* pNewDC = new CDC; 231. pNewDC->Cr

32、eateCompatibleDC(pResetDC); 232. pNewDC->SelectObject(m_pBitMapBK); 233. BITMAP bmp; 234. m_pBitMapBK->GetBitmap(&bmp); 235. if(m_IsPressed) 236. { 237. pResetDC->StretchBlt(0,0,rect.Width(),rect.Height(),pNewDC,0,0,bmp.bmWidth,bmp.bmHeight,SRCCO

33、PY); 238. } 239. else240. { 241. CBrush brush(RGB(220,220,220));//RGB(m_nShOffset,m_nShOffset,m_nShOffset)); 242. pResetDC->FillRect(&rect,&brush); 243. pResetDC->StretchBlt(0,0,rect.Width(),rect.Height(),pNewDC,0,0,bmp.bmWidth,bmp.bmHeight,S

34、RCAND); 244. } 245. 246. delete pNewDC; 247. pNewDC = NULL; 248. } 249. else250. { 251. if(m_IsPressed) 252. { 253. CBrush brush(OffsetColor(m_BkColor,m_nShOffset)); 254. pResetDC->FillRect(rect,&brush);

35、 255. CBrush brush1(RGB(128,128,128)); 256. pResetDC->FrameRect(rect,&brush1); 257. pResetDC->FrameRect(offRect,&brush1); 258. 259. } 260. else261. { 262. CBrush brush(m_BkColor); 263. pResetDC->FillRe

36、ct(rect,&brush); 264. CBrush brush1(RGB(128,128,128)); 265. pResetDC->FrameRect(offRect,&brush1); 266. } 267. } 268. 269. 270. CString sTitle; 271. GetWindowText(sTitle); 272. offRect.OffsetRect(0,rect.Height()/2-8); 273.// pDC->DrawText(sT

37、itle, sTitle.GetLength(),offRect, DT_WORDBREAK | DT_CENTER); 274. pResetDC->DrawText(sTitle, sTitle.GetLength(),offRect, DT_CENTER); 275. pDC->StretchBlt(0,0,rect.Width(),rect.Height(),pResetDC,0,0,rect.Width(),rect.Height(),SRCCOPY); 276. delete pResetDC; 277.} 278.279.void CButtonST::

38、OnMouseMove(UINT nFlags, CPoint point) 280.{ 281. // TODO: Add your message handler code here and/or call default 282. TRACKMOUSEEVENT csTME; 283. csTME.cbSize = sizeof(csTME); 284. csTME.dwFlags = TME_LEAVE; 285. csTME.hwndTrack = m_hWnd; 286. ::_TrackMouseEvent(&csTME)

39、 287.288. if(m_IsPressed==FALSE) 289. { 290. m_IsPressed = TRUE; 291. this->Invalidate(); 292. } 293. 294. CButton::OnMouseMove(nFlags, point); 295.} 296.297.BOOL CButtonST::OnNcActivate(BOOL bActive) 298.{ 299. // TODO: Add your message handler co

40、de here and/or call default 300.301. return CButton::OnNcActivate(bActive); 302.} 303.304.void CButtonST::OnNcMouseMove(UINT nHitTest, CPoint point) 305.{ 306. // TODO: Add your message handler code here and/or call default 307. 308. 309. CButton::OnNcMouseMove(nHitTest, poin

41、t); 310.} 311.312.void CButtonST::OnKillFocus(CWnd* pNewWnd) 313.{ 314. CButton::OnKillFocus(pNewWnd); 315. // TODO: Add your message handler code here 316.} 317.LRESULT CButtonST::OnMouseLeave(WPARAM wParam, LPARAM lParam) 318.{ 319. m_IsPressed = FALSE; 320. this->Invalidat

42、e(); 321. return 0; 322.} // End of OnMouseLeave 323.324.325.BOOL CButtonST::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) 326.{ 327. // TODO: Add your specialized code here and/or call the base

43、 class 328. dwStyle |= BS_OWNERDRAW; 329. return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext); 330.} 331.332.void CButtonST::OnLButtonDown(UINT nFlags, CPoint point) 333.{ 334. // TODO: Add your message handler code here and/or call default 3

44、35.336. if(m_strURL.IsEmpty()==FALSE) 337. { 338. SHELLEXECUTEINFO csSEI; 339. 340. memset(&csSEI, 0, sizeof(csSEI)); 341. csSEI.cbSize = sizeof(SHELLEXECUTEINFO); 342. csSEI.fMask = SEE_MASK_FLAG_NO_UI; 343. csSEI.lpVerb = _T("open"); 344.

45、 csSEI.lpFile = m_strURL; 345. csSEI.nShow = SW_SHOWMAXIMIZED; 346. ::ShellExecuteEx(&csSEI); 347. } 348. CButton::OnLButtonDown(nFlags, point); 349.} 350.351.BOOL CButtonST::PreCreateWindow(CREATESTRUCT& cs) 352.{ 353. // TODO: Add your specialized code here a

46、nd/or call the base class 354. 355. return CButton::PreCreateWindow(cs); 356.} 357.358.void CButtonST::PreSubclassWindow() 359.{ 360. // TODO: Add your specialized code here and/or call the base class 361. ModifyStyle(BS_TYPEMASK, BS_OWNERDRAW, SWP_FRAMECHANGED); 362. CButton::PreSubclassWindow(); 363.} 本文来自CSDN博客,转载请标明出处:

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服