亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mylistctrl.cpp

?? evc listcontrol控件自繪,實現(xiàn)report風格的標題自繪,以及滾動條的自繪
?? CPP
字號:
// SkinListCtrl.cpp : implementation file
//

#include "stdafx.h"
#include "MyListCtrl.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSkinListCtrl

CMyListCtrl::CMyListCtrl()
{
	g_MyClrBgHi = RGB(115,123,165);
	g_MyClrFgHi = RGB(229,229,229);
}

CMyListCtrl::~CMyListCtrl()
{
}


BEGIN_MESSAGE_MAP(CMyListCtrl, CListCtrl)
	//{{AFX_MSG_MAP(CSkinListCtrl)
//	ON_WM_NCCALCSIZE()
//	ON_WM_MOUSEWHEEL()
//	ON_WM_KEYDOWN()
//	ON_WM_KEYUP()
	ON_WM_ERASEBKGND()
	ON_WM_PAINT()
	//}}AFX_MSG_MAP
	ON_NOTIFY_REFLECT ( NM_CUSTOMDRAW, OnCustomDrawList )
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSkinListCtrl message handlers

void CMyListCtrl::PreSubclassWindow() 
{
	//use our custom CHeaderCtrl as long as there
	//is a headerctrl object to subclass
	if(GetHeaderCtrl())
		m_SkinHeaderCtrl.SubclassWindow(GetHeaderCtrl()->m_hWnd);

	CListCtrl::PreSubclassWindow();
}


void CMyListCtrl::OnCustomDrawList ( NMHDR* pNMHDR, LRESULT* pResult )
{
	NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
	static bool bHighlighted = false;
	
    *pResult = CDRF_DODEFAULT;

    if ( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage )
	{
        *pResult = CDRF_NOTIFYITEMDRAW;
	}
    else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage )
	{
        int iRow = (int)pLVCD->nmcd.dwItemSpec;
		
		bHighlighted = IsRowHighlighted(m_hWnd, iRow);
		if (bHighlighted)
		{
			pLVCD->clrText   = g_MyClrFgHi; // Use my foreground hilite color
			pLVCD->clrTextBk = g_MyClrBgHi; // Use my background hilite color
			
			EnableHighlighting(m_hWnd, iRow, false);
		}
		
		*pResult = CDRF_DODEFAULT | CDRF_NOTIFYPOSTPAINT;
		
	}
	else if(CDDS_ITEMPOSTPAINT == pLVCD->nmcd.dwDrawStage)
	{
	if (bHighlighted)
      {
        int  iRow = (int)pLVCD->nmcd.dwItemSpec;

        EnableHighlighting(m_hWnd, iRow, true);
      }

      *pResult = CDRF_DODEFAULT;

	}
}

void CMyListCtrl::EnableHighlighting(HWND hWnd, int row, bool bHighlight)
{
  ListView_SetItemState(hWnd, row, bHighlight? 0xff: 0, LVIS_SELECTED);
}

bool CMyListCtrl::IsRowSelected(HWND hWnd, int row)
{
  return ListView_GetItemState(hWnd, row, LVIS_SELECTED) != 0;
}

bool CMyListCtrl::IsRowHighlighted(HWND hWnd, int row)
{
  return IsRowSelected(hWnd, row) /*&& (::GetFocus() == hWnd)*/;
}
/*/
void CSkinListCtrl::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp) 
{
	UpdateWindow();
	CListCtrl::OnNcCalcSize(bCalcValidRects, lpncsp);
}

BOOL CSkinListCtrl::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt) 
{
	m_SkinVerticleScrollbar.UpdateThumbPosition();
	m_SkinHorizontalScrollbar.UpdateThumbPosition();

	return CListCtrl::OnMouseWheel(nFlags, zDelta, pt);
}


void CSkinListCtrl::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	m_SkinVerticleScrollbar.UpdateThumbPosition();
	m_SkinHorizontalScrollbar.UpdateThumbPosition();

	CListCtrl::OnKeyDown(nChar, nRepCnt, nFlags);
}

void CSkinListCtrl::Init()
{
	//another way to hide scrollbars
	InitializeFlatSB(m_hWnd);
	FlatSB_EnableScrollBar(m_hWnd, SB_BOTH, ESB_DISABLE_BOTH);

	CWnd* pParent = GetParent();

	//Create scrollbars at runtime
	m_SkinVerticleScrollbar.Create(NULL, WS_CHILD|SS_LEFT|SS_NOTIFY|WS_VISIBLE|WS_GROUP,CRect(0,0,0,0), pParent);
	m_SkinHorizontalScrollbar.Create(NULL, WS_CHILD|SS_LEFT|SS_NOTIFY|WS_VISIBLE|WS_GROUP,CRect(0,0,0,0), pParent);
	m_SkinVerticleScrollbar.pList = this;
	m_SkinHorizontalScrollbar.pList = this;

	//call this to position the scrollbars properly
	PositionScrollBars();
}

void CSkinListCtrl::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	m_SkinVerticleScrollbar.UpdateThumbPosition();
	m_SkinHorizontalScrollbar.UpdateThumbPosition();

	CListCtrl::OnKeyUp(nChar, nRepCnt, nFlags);
}
/*/
BOOL CMyListCtrl::OnEraseBkgnd(CDC* pDC) 
{
//	m_SkinVerticleScrollbar.UpdateThumbPosition();
//	m_SkinHorizontalScrollbar.UpdateThumbPosition();
	return FALSE;
	//return CListCtrl::OnEraseBkgnd(pDC);
}


void CMyListCtrl::OnPaint() 
{
	CPaintDC dc(this);
	CRect rect;
	GetClientRect(&rect);
	CMemDC memDC(&dc, rect);
	
	//funky code to allow use to double buffer
	//the onpaint calls for flicker free drawing
	//of the list items

	CRect headerRect;
	GetDlgItem(0)->GetWindowRect(&headerRect);
	ScreenToClient(&headerRect);
	dc.ExcludeClipRect(&headerRect);
	   
	   
	CRect clip;
	memDC.GetClipBox(&clip);
	memDC.FillSolidRect(clip, RGB(148,207,71));
	   
	SetTextBkColor(RGB(148,207,71));
	   
//	m_SkinVerticleScrollbar.UpdateThumbPosition();
//	m_SkinHorizontalScrollbar.UpdateThumbPosition();
	   
	   
	DefWindowProc(WM_PAINT, (WPARAM)memDC->m_hDC, (LPARAM)0);
}
/*/
void CSkinListCtrl::PositionScrollBars()
{
	//Thanks goes to mindows for this function
	//he posted on the message forums. He modified
	//it a bit based on the original init function,
	//and now I have modified his version a tiny bit ;)
	//The pParent->ScreenToClient that you did made it
	//possible for me to make the scrollbars position
	//properly based on any dialog size/borders/titlebar etc... :D

	CWnd* pParent = GetParent();
	
	CRect windowRect;
	GetWindowRect(&windowRect);

	
	int nTitleBarHeight = 0;
	
	if(pParent->GetStyle() & WS_CAPTION)
		nTitleBarHeight = GetSystemMetrics(SM_CYSIZE);
	
	
	int nDialogFrameHeight = 0;
	int nDialogFrameWidth = 0;
	if((pParent->GetStyle() & WS_BORDER))
	{
		nDialogFrameHeight = GetSystemMetrics(SM_CYDLGFRAME);
		nDialogFrameWidth = GetSystemMetrics(SM_CYDLGFRAME);
	}
	
	if(pParent->GetStyle() & WS_THICKFRAME)
	{
		nDialogFrameHeight+=1;
		nDialogFrameWidth+=1;
	}
	
	pParent->ScreenToClient(&windowRect);

	windowRect.top+=nTitleBarHeight+nDialogFrameHeight;
	windowRect.bottom+=nTitleBarHeight+nDialogFrameHeight;
	windowRect.left +=nDialogFrameWidth;
	windowRect.right+=nDialogFrameWidth;

	CRect vBar(windowRect.right-nDialogFrameWidth,windowRect.top-nTitleBarHeight-nDialogFrameHeight,windowRect.right+12-nDialogFrameWidth,windowRect.bottom+12-nTitleBarHeight-nDialogFrameHeight);
	CRect hBar(windowRect.left-nDialogFrameWidth,windowRect.bottom-nTitleBarHeight-nDialogFrameHeight,windowRect.right+1-nDialogFrameWidth,windowRect.bottom+12-nTitleBarHeight-nDialogFrameHeight);
	
//	m_SkinVerticleScrollbar.SetWindowPos(NULL,vBar.left,vBar.top,vBar.Width(),vBar.Height(),SWP_NOZORDER);
//	m_SkinHorizontalScrollbar.SetWindowPos(NULL,hBar.left,hBar.top,hBar.Width(),hBar.Height(),SWP_NOZORDER);
	
//	m_SkinHorizontalScrollbar.UpdateThumbPosition();
//	m_SkinVerticleScrollbar.UpdateThumbPosition();
}
/*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一二三四在线| 亚洲精品在线免费观看视频| 国产日韩高清在线| 欧美男女性生活在线直播观看| 亚洲美女淫视频| 久久久噜噜噜久噜久久综合| 色婷婷精品大在线视频| 麻豆91精品91久久久的内涵| 亚洲欧美综合色| 精品91自产拍在线观看一区| 欧美性大战久久久| 不卡的av中国片| 激情五月婷婷综合网| 亚洲人成网站在线| 国产日产欧美一区| 精品欧美乱码久久久久久| 91福利在线导航| 成人午夜看片网址| 国产 日韩 欧美大片| 九九国产精品视频| 美女mm1313爽爽久久久蜜臀| 亚洲动漫第一页| 亚洲一级电影视频| 亚洲一区在线观看视频| 免费观看久久久4p| 另类小说图片综合网| 日本网站在线观看一区二区三区 | 国产伦精品一区二区三区免费迷| 日本午夜精品视频在线观看| 午夜精品在线看| 日本aⅴ亚洲精品中文乱码| 日韩高清欧美激情| 青青草视频一区| 国产99久久久国产精品潘金 | 欧美日韩大陆一区二区| 欧美一区二区国产| 欧美一区二视频| 欧美一级久久久| 精品国产91亚洲一区二区三区婷婷| 欧美三区免费完整视频在线观看| 欧美日韩精品欧美日韩精品一综合| 欧美一卡二卡三卡| 久久精品无码一区二区三区| 亚洲国产综合视频在线观看| 国产一区二区日韩精品| 一本久道久久综合中文字幕| 日韩午夜激情免费电影| 亚洲成人av免费| 午夜视频在线观看一区二区 | 色婷婷av一区| 欧美mv和日韩mv国产网站| 一区二区三区四区视频精品免费| 免费成人你懂的| 精品视频在线免费| 亚洲在线一区二区三区| 国内精品国产成人| 欧美体内she精高潮| 欧美一级日韩一级| 亚洲愉拍自拍另类高清精品| 国产精品看片你懂得| 欧美精品一区二区三区蜜桃| 亚洲最快最全在线视频| 日日摸夜夜添夜夜添精品视频| 色视频成人在线观看免| 国产精品免费av| 日韩影院精彩在线| 欧美最猛黑人xxxxx猛交| 国产日产欧美一区| 麻豆精品在线观看| 欧美日免费三级在线| 一区在线观看免费| 国产一区二区三区日韩| 欧美日韩高清影院| 日本在线播放一区二区三区| 99久免费精品视频在线观看| 久久综合狠狠综合久久激情| 一区二区三区色| 欧洲一区二区三区免费视频| 最新欧美精品一区二区三区| 丁香一区二区三区| 国产日韩欧美麻豆| 不卡一二三区首页| 亚洲女人****多毛耸耸8| 97久久精品人人做人人爽| 亚洲三级免费观看| 99re这里只有精品首页| 欧美精品一区二区在线播放| 久久成人综合网| 国产精品视频在线看| 色婷婷激情综合| 奇米色777欧美一区二区| 国产日本亚洲高清| 在线视频一区二区三| 日韩高清在线观看| 国产欧美日韩视频在线观看| 在线观看国产一区二区| 日韩精品免费专区| 欧美国产欧美综合| 欧美电影一区二区三区| 国产成人免费av在线| 中文字幕中文字幕在线一区| 欧美日韩在线观看一区二区| 国产精品2024| 免费高清视频精品| 亚洲你懂的在线视频| 久久综合九色欧美综合狠狠| 欧美亚洲综合网| av激情亚洲男人天堂| 韩国av一区二区三区在线观看| 亚洲高清免费视频| 亚洲手机成人高清视频| 国产欧美精品一区| 欧美一区二区性放荡片| 粉嫩高潮美女一区二区三区| 日本欧美一区二区三区| 亚洲二区视频在线| 亚洲国产乱码最新视频 | 国产一区二区三区电影在线观看| 久久久三级国产网站| 精品国产一区二区亚洲人成毛片 | 欧美日韩在线电影| 播五月开心婷婷综合| 成人app软件下载大全免费| 日本欧美韩国一区三区| 另类小说色综合网站| 国产九九视频一区二区三区| 成人午夜在线视频| 在线欧美日韩国产| 欧美性大战久久| 欧美一区二区久久| 精品国产污污免费网站入口| 久久久99精品免费观看| 1区2区3区欧美| 18涩涩午夜精品.www| 日本成人在线一区| 国产专区综合网| 欧美日韩极品在线观看一区| 日韩欧美国产综合| 亚洲欧美日韩国产中文在线| 日韩精品电影在线| 精品一区二区三区免费观看| 97se亚洲国产综合自在线| 日韩一区二区中文字幕| 中文一区在线播放| 毛片不卡一区二区| 欧美综合天天夜夜久久| 国产午夜亚洲精品午夜鲁丝片| 玉米视频成人免费看| 国产一区二区福利| 日韩一区二区影院| 一区二区三区欧美| 成人黄色av电影| 久久亚洲综合色一区二区三区| 亚洲成av人片在线| 色天天综合色天天久久| 欧美日韩一区久久| 国产精品国产三级国产aⅴ原创 | 日韩天堂在线观看| 污片在线观看一区二区| 激情欧美日韩一区二区| 日韩一级大片在线观看| 一级精品视频在线观看宜春院| 奇米777欧美一区二区| 99久久99久久精品免费看蜜桃| 久久婷婷国产综合国色天香 | 97国产精品videossex| 亚洲欧洲成人自拍| 国产成人a级片| 中文字幕av在线一区二区三区| 麻豆精品国产91久久久久久| 欧美日本在线观看| 美女网站色91| 国产精品欧美综合在线| 国产成人福利片| 亚洲一区二区在线播放相泽| 在线不卡一区二区| 琪琪一区二区三区| 国产精品网站导航| 91年精品国产| 亚洲成精国产精品女| 欧美精品一区二| 精品1区2区3区| 成人福利电影精品一区二区在线观看| 欧美成人aa大片| 99久久精品免费精品国产| 一区二区三区电影在线播| 欧美成人vr18sexvr| 欧美精品1区2区| 69久久99精品久久久久婷婷| 欧美无人高清视频在线观看| 一本大道av伊人久久综合| 色中色一区二区| 欧美日韩国产在线播放网站| 欧美日韩一本到| 51精品国自产在线| 日韩西西人体444www| xvideos.蜜桃一区二区| 国产亲近乱来精品视频 | 欧美videos大乳护士334| 精品久久久久久久久久久久包黑料 |