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

加入VIP,免费下载
 

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

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

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(重载listctrl列头列头皮肤.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

重载listctrl列头列头皮肤.docx

1、重载listctrl列头列头皮肤重载listctrl头,可惜换列头皮肤#pragma once#include RSHeaderCtrl.h/ CRSListCtrlclass CRSListCtrl : public CListCtrlDECLARE_DYNAMIC(CRSListCtrl)public:CRSListCtrl();virtual CRSListCtrl();protected:CFont m_fontText;CRSHeaderCtrl m_wndHeaderCtrl;protected:DECLARE_MESSAGE_MAP()void InitHeader();void

2、 RSRectangle(HDC hDC, int left, int top, int right, int bottom);virtual BOOL PreCreateWindow(CREATESTRUCT& cs);public:afx_msg void OnPaint();afx_msg BOOL OnEraseBkgnd(CDC* pDC);afx_msg void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);afx_msg void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);

3、 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);afx_msg void OnDestroy();afx_msg LRESULT OnInsertColumn(WPARAM wParam, LPARAM lParam); ;/ RSListCtrl.cpp : 实现文件/#include stdafx.h#include Rising.h#include RSListCtrl.h#include .rslistctrl.h/ CRSListCtrlIMPLEMENT_DYNAMIC(CRSListCtrl, CListCtrl)CRSL

4、istCtrl:CRSListCtrl()CRSListCtrl:CRSListCtrl()BEGIN_MESSAGE_MAP(CRSListCtrl, CListCtrl)ON_WM_PAINT()ON_WM_ERASEBKGND()ON_WM_DRAWITEM_REFLECT()ON_WM_MEASUREITEM_REFLECT()ON_WM_CREATE()ON_WM_DESTROY()ON_MESSAGE(LVM_INSERTCOLUMN, OnInsertColumn) END_MESSAGE_MAP()/ CRSListCtrl 消息处理程序BOOL CRSListCtrl:Pre

5、CreateWindow(CREATESTRUCT& cs) cs.style |= LVS_OWNERDRAWFIXED;return CListCtrl:PreCreateWindow(cs);void CRSListCtrl:RSRectangle(HDC hDC, int left, int top, int right, int bottom) POINT ptOrg, ptTmp;right = max(0, right-1);bottom = max(0, bottom-1);:MoveToEx(hDC, left, top, &ptOrg);:LineTo(hDC, left,

6、 bottom);:MoveToEx(hDC, left, bottom, &ptTmp);:LineTo(hDC, right, bottom);:MoveToEx(hDC, right, bottom, &ptTmp);:LineTo(hDC, right, top);:MoveToEx(hDC, right, top, &ptTmp);:LineTo(hDC, left, top);:MoveToEx(hDC, ptOrg.x, ptOrg.y, &ptTmp);void CRSListCtrl:OnPaint()PAINTSTRUCT ps;HDC hDC = NULL;HDC hDC

7、Mem = NULL;HBITMAP hBMP = NULL;HBITMAP hOldBitmap = NULL;HPEN hPen = NULL;HPEN hOldPen = NULL;CRect rectClient;HRGN hRgn = NULL;GetClientRect(&rectClient);InitHeader();/ do nothing, only validate the clip region.hDC = :BeginPaint(m_hWnd, &ps);:EndPaint(m_hWnd, &ps);/ real drawhDC = :GetDC(m_hWnd);hD

8、CMem = :CreateCompatibleDC(hDC);hBMP = (HBITMAP):CreateCompatibleBitmap(hDC, rectClient.Width(), rectClient.Height();hOldBitmap = (HBITMAP):SelectObject(hDCMem, hBMP);hPen = :CreatePen(PS_SOLID, 1, RGB(150, 198, 226);hOldPen = (HPEN):SelectObject(hDCMem, hPen);/ clip header ctrlCHeaderCtrl *pHeadCtr

9、l = GetHeaderCtrl();CRect rectHead;pHeadCtrl-GetClientRect(&rectHead);hRgn = :CreateRectRgn(rectClient.left, rectClient.top+rectHead.Height(), rectClient.right, rectClient.bottom);:SelectClipRgn(hDC, hRgn);/ Draw BackGround:SetBkColor(hDCMem, RGB(242, 250, 255);:ExtTextOut(hDCMem, 0, 0, ETO_OPAQUE,

10、&rectClient, NULL, 0, NULL);/ Draw Itemsint nItemCount = GetItemCount();int firstvisible = GetTopIndex();int lastvisible = firstvisible + GetCountPerPage();if (lastvisible nItemCount)lastvisible = nItemCount;int index = firstvisible;while (index CtlType = ODT_LISTVIEW)lpMeasureItemStruct-itemHeight

11、= 18;void CRSListCtrl:DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)if (lpDrawItemStruct-CtlType != ODT_LISTVIEW)return;CDC dc;dc.Attach(lpDrawItemStruct-hDC);CHeaderCtrl *pHeadCtrl = GetHeaderCtrl();if (lpDrawItemStruct-itemAction = ODA_DRAWENTIRE)if (lpDrawItemStruct-itemState & ODS_SELECTED)dc.FillS

12、olidRect(&lpDrawItemStruct-rcItem, RGB(182,218,243);elsedc.FillSolidRect(&lpDrawItemStruct-rcItem, RGB(242, 250, 255);CFont *pOldFont = dc.SelectObject(&m_fontText);dc.SetBkMode(TRANSPARENT);dc.SetTextColor(RGB(35,99,133);/ Draw ItemTCHAR szItemText256;LVITEM lvi;lvi.mask = LVIF_IMAGE|LVIF_STATE|LVI

13、F_TEXT;lvi.iImage = 0;lvi.iItem = lpDrawItemStruct-itemID;lvi.iSubItem = 0;lvi.cchTextMax = 256;lvi.pszText = szItemText;GetItem(&lvi);CRect headerItemRect;pHeadCtrl-GetItemRect(0, &headerItemRect);CRect rectItem;rectItem = lpDrawItemStruct-rcItem;rectItem.right = rectItem.left + headerItemRect.Widt

14、h();CImageList *pImageList = GetImageList(LVSIL_NORMAL);if (pImageList)CPoint pt;pt.x = rectItem.left + 4;pt.y = rectItem.top + 2;pImageList-Draw(&dc, lvi.iImage, pt, ILD_TRANSPARENT);rectItem.left += 24;dc.DrawText(szItemText, (int)_tcslen(szItemText), &rectItem, DT_LEFT|DT_VCENTER|DT_SINGLELINE|DT

15、_WORDBREAK|DT_END_ELLIPSIS);/ Draw SubItemint nCol = pHeadCtrl-GetItemCount();for (int i = 1; i itemID, i, LVIR_BOUNDS, rectSubItem);CString strText = GetItemText(lpDrawItemStruct-itemID, i);dc.DrawText(strText, &rectSubItem, DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS|DT_WORDBREAK); if (pOld

16、Font)dc.SelectObject(pOldFont);dc.Detach();int CRSListCtrl:OnCreate(LPCREATESTRUCT lpCreateStruct)if (CListCtrl:OnCreate(lpCreateStruct) = -1)return -1;m_fontText.CreateFont(-12, 0, 0, 0, FW_NORMAL,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,ANTIALIASED_QUALITY, FF_DONTCARE, _T(Arial);return 0;void CRSListC

17、trl:OnDestroy()CListCtrl:OnDestroy();m_fontText.DeleteObject();void CRSListCtrl:InitHeader()if (m_wndHeaderCtrl.GetSafeHwnd() = NULL)m_wndHeaderCtrl.SubclassDlgItem(0, this);m_wndHeaderCtrl.Init();FALSE, FALSE, FALSE, CLIP_DEFAULT_PRECIS,LRESULT CRSListCtrl:OnInsertColumn(WPARAM wParam, LPARAM lPara

18、m)LRESULT lResult = CListCtrl:DefWindowProc(LVM_INSERTCOLUMN, wParam, lParam);InitHeader();return lResult;#pragma once/ CRSHeaderCtrlclass CRSHeaderCtrl : public CHeaderCtrlDECLARE_DYNAMIC(CRSHeaderCtrl)public:CRSHeaderCtrl();virtual CRSHeaderCtrl();public:void Init();protected:DECLARE_MESSAGE_MAP()

19、protected:HBITMAP m_hBitmap;CFont m_font;void HorzStretchBlt(HDC hDC, LPRECT lpDst, HBITMAP hBMP, LPRECT lpSrc, UINT nLeftPart, UINT nRightPart);public:afx_msg LRESULT OnLayout(WPARAM wParam, LPARAM lParam);afx_msg void OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult);afx_msg void OnPaint();afx_msg B

20、OOL OnEraseBkgnd(CDC* pDC);afx_msg void OnDestroy();/ RSHeaderCtrl.cpp : 实现文件/#include stdafx.h#include Rising.h#include RSHeaderCtrl.h/ CRSHeaderCtrlIMPLEMENT_DYNAMIC(CRSHeaderCtrl, CHeaderCtrl)CRSHeaderCtrl:CRSHeaderCtrl()m_hBitmap = NULL;CRSHeaderCtrl:CRSHeaderCtrl()BEGIN_MESSAGE_MAP(CRSHeaderCtr

21、l, CHeaderCtrl)ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnNMCustomdraw)ON_WM_PAINT()ON_WM_ERASEBKGND()ON_WM_DESTROY()ON_MESSAGE(HDM_LAYOUT, OnLayout)END_MESSAGE_MAP()void CRSHeaderCtrl:Init()if (m_hBitmap = NULL)CString strSkinPath = theApp.m_pWinManager-duGetSkinPath();CString strImagePath = strSkinPath +

22、headerctrl.bmp;m_hBitmap = (HBITMAP):LoadImage(NULL, strImagePath.GetBuffer(strImagePath.GetLength(), IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE|LR_LOADFROMFILE);m_font.CreateFont(-12, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY, FF_

23、DONTCARE, _T(Arial);void CRSHeaderCtrl:HorzStretchBlt(HDC hDC, LPRECT lpDst, HBITMAP hBMP, LPRECT lpSrc, UINT nLeftPart, UINT nRightPart)if (hDC = NULL | lpDst = NULL | hBMP = NULL)return;BITMAP bm;GetObject(hBMP, sizeof(BITMAP), &bm);if (nLeftPart (UINT)bm.bmWidth | nRightPart (UINT)bm.bmWidth)retu

24、rn;RECT rSrc;if (lpSrc = NULL)rSrc.left = 0;rSrc.top = 0;rSrc.right = bm.bmWidth;rSrc.bottom = bm.bmHeight;elseCopyRect(&rSrc, lpSrc);HDC hMemDC = CreateCompatibleDC(hDC);HBITMAP hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBMP);BitBlt(hDC, lpDst-left, lpDst-top, nLeftPart, lpDst-bottom-lpDst-top, hM

25、emDC, rSrc.left, rSrc.top, SRCCOPY);StretchBlt(hDC,lpDst-left + nLeftPart,lpDst-top,max(0, lpDst-right-lpDst-left-nLeftPart-nRightPart),lpDst-bottom-lpDst-top,hMemDC,rSrc.left + nLeftPart,rSrc.top,max(0, rSrc.right-rSrc.left-nLeftPart-nRightPart),rSrc.bottom-rSrc.top,SRCCOPY);BitBlt(hDC, lpDst-right

26、-nRightPart, lpDst-top, nRightPart, lpDst-bottom-lpDst-top, hMemDC, rSrc.right-nRightPart, rSrc.top, SRCCOPY);SelectObject(hMemDC, hOldBitmap);DeleteDC(hMemDC);/ CRSHeaderCtrl 消息处理程序LRESULT CRSHeaderCtrl:OnLayout(WPARAM wParam, LPARAM lParam)LRESULT lResult = CHeaderCtrl:DefWindowProc(HDM_LAYOUT, 0,

27、 lParam); HD_LAYOUT &hdl = *( HD_LAYOUT * ) lParam;RECT *prc = hdl.prc;WINDOWPOS *pwpos = hdl.pwpos;int nHeight = 18;pwpos-cy = nHeight;prc-top = nHeight;return lResult;void CRSHeaderCtrl:OnNMCustomdraw(NMHDR *lpNMHDR, LRESULT *pResult) LPNMCUSTOMDRAW lpNMCDreinterpret_cast(lpNMHDR);switch(lpNMCD-dwDrawStage)case CDDS_PREPAINT:*pResult = CDRF_NOTIFYITEMDRAW|C

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1