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

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

?? iebar.cpp

?? 有關mfc控制條方面的知識!可以直接運行!
?? CPP
字號:
// IEBar.cpp : implementation file
//

#include "stdafx.h"
#include "CToobarDemo.h"
#include "IEBar.h"

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

/////////////////////////////////////////////////////////////////////////////
// CIEBar dialog
#ifndef IE_FRM_WIDTH
#define IE_FRM_WIDTH 6
#endif
CIEBar::CIEBar(CWnd* pParent /*=NULL*/): CDialogBar()
{
	m_TitleTxt           = _T("定制控制條窗口");
	m_cyTitle            = 32;
	m_cxIEBar            = 200;
	pTreeCtrl            = NULL;
	m_HideBtnRc.bottom   = 0;
	m_VirClientRc.bottom = 0;
	m_PrePnt.y           = 0; 
	m_bPressed           = false;
}
void CIEBar::DoDataExchange(CDataExchange* pDX)
{
	CDialogBar::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CIEBar)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CIEBar, CDialogBar)
	//{{AFX_MSG_MAP(CIEBar)
	ON_WM_LBUTTONDBLCLK()
	ON_WM_LBUTTONDOWN()
	ON_WM_PAINT()
	ON_WM_MOUSEMOVE()
	ON_WM_LBUTTONUP()
	ON_WM_SETCURSOR()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CIEBar message handlers

BOOL CIEBar::InitIEBar()
{
	UpdateData(FALSE);
	SetWindowText("定制控制條");//顯示窗口標題
	m_Font.CreateFont(-12,0,0,0,400,0,0,0,134,3,2,1,2,"宋體");//設置字體
	SetFont(&m_Font);

	// 創建樹形控件
	pTreeCtrl = new CTreeCtrl();
	ASSERT(pTreeCtrl);
	if(!pTreeCtrl->Create(WS_CHILD | WS_VISIBLE, CRect(0,0,0,0), this, IDS_TREECTRL))
	{
		TRACE0("Failed to create tree control!");
		return FALSE;
	}
    // 創建工具提示
    if(!m_TipCtrl.Create(this))
		return FALSE;	
	return TRUE;
}

// 工具提示控件
BOOL CIEBar::PreTranslateMessage(MSG* pMsg) 
{
    m_TipCtrl.RelayEvent(pMsg);//將一個鼠標消息傳遞給一個工具提示控件處理
    return CWnd::PreTranslateMessage(pMsg);
}

BOOL CIEBar::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
{	
	ChangeCursor();//更改鼠標光標
	return TRUE;  // avoid the cross cursor flash
}

// change cursor
void CIEBar::ChangeCursor()
{
	if(!m_VirClientRc.IsRectEmpty())
	{
		CPoint t_CurPnt;
		::GetCursorPos(&t_CurPnt);
		ScreenToClient(&t_CurPnt);
		CRect t_CursorRc(m_VirClientRc);
		t_CursorRc.left = m_VirClientRc.right;
		t_CursorRc.right = t_CursorRc.left + IE_FRM_WIDTH;
		HCURSOR hCursor = NULL;
		if(t_CursorRc.PtInRect(t_CurPnt))
			hCursor = AfxGetApp()->LoadCursor(IDC_RESIZE);
		else
			hCursor = AfxGetApp()->LoadStandardCursor(IDC_ARROW);
		::SetCursor(hCursor);
	}
}

void CIEBar::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
	// don't floating
	return;
}

void CIEBar::OnLButtonDown(UINT nFlags, CPoint point) 
{	
	SetCapture();       // 捕捉鼠標

	if(!m_HideBtnRc.IsRectEmpty())
	{
		m_bTrack  = true;   // track enable
		m_bRaised = false;

		if(m_HideBtnRc.PtInRect(point))
			m_bPressed = true;
		InvalidateRect(&m_HideBtnRc);
	}	
	// whether track mouse for risize IE bar
	CRect t_CursorRc(m_VirClientRc);
	t_CursorRc.left = m_VirClientRc.right;
	t_CursorRc.right = t_CursorRc.left + IE_FRM_WIDTH;
	if(t_CursorRc.PtInRect(point))
		m_bResize = true;
	return;
}

void CIEBar::OnLButtonUp(UINT nFlags, CPoint point) 
{	
	ReleaseCapture();
	m_bTrack   = 
	m_bRaised  =
	m_bPressed = false;
	// hide previous drag line
	if(m_PrePnt != CPoint(0, 0))
	{
		DrawDragLine(m_PrePnt);
		m_PrePnt = CPoint(0, 0);
	}
	// hide itself
	if(!m_HideBtnRc.IsRectEmpty())
		if(m_HideBtnRc.PtInRect(point))
			GetDockingFrame()->ShowControlBar(this, FALSE, FALSE);
	// adjust IE bar size
	ResizeIEBar();
	m_bResize = false;
	CDialogBar::OnLButtonUp(nFlags, point);
}

// adjust IE bar size
void CIEBar::ResizeIEBar()
{
	if(m_bResize)
	{
		CPoint t_CurPnt;
		::GetCursorPos(&t_CurPnt);
		ScreenToClient(&t_CurPnt);
		m_cxIEBar = t_CurPnt.x;
		CRect t_ClientRc;
		GetClientRect(&t_ClientRc);
		ClientToScreen(&t_ClientRc);
		t_ClientRc.right = t_ClientRc.left + m_cxIEBar;

		// resize right of the "t_ClientRc"
		if(t_ClientRc.Width() < 11)
		{
			t_ClientRc.right = t_ClientRc.left + 11;
			m_cxIEBar = 11;
		}
		else
		{
			CRect t_FrmRc;
			GetDockingFrame()->GetClientRect(&t_FrmRc);
			if(t_ClientRc.Width() > t_FrmRc.Width() / 2)
			{
				t_ClientRc.right = t_ClientRc.left + t_FrmRc.Width() / 2;
				m_cxIEBar = t_FrmRc.Width() / 2;
			}
		}

		GetDockingFrame()->ShowControlBar(this, FALSE, FALSE);
		MoveWindow(&t_ClientRc);
		GetDockingFrame()->ShowControlBar(this, TRUE, FALSE);
	}
}

void CIEBar::OnMouseMove(UINT nFlags, CPoint point) 
{	
	CDialogBar::OnMouseMove(nFlags, point);
	
	// draw tracking line
	if(m_bResize)
	{
		// hide previous drag line
		if(m_PrePnt != CPoint(0, 0))
			DrawDragLine(m_PrePnt);
		// draw new drag line
		CPoint t_ScrPnt(GetFitPnt());
		ClientToScreen(&t_ScrPnt);
		DrawDragLine(t_ScrPnt);	
		// for draw previous drag line
		m_PrePnt = t_ScrPnt;
	}
	// draw hide-button for raised and pressed
	DrawHideBtnFace(point);
}

// draw hide-button for raised and pressed
void CIEBar::DrawHideBtnFace(CPoint point)
{
	if(!m_HideBtnRc.IsRectEmpty())
	{
		if(m_HideBtnRc.PtInRect(point))
		{
			SetCapture();

			if(m_bRaised)  // only draw once
				return;
			m_bRaised  = m_bTrack ? false : true;
			m_bPressed = m_bTrack ? true : false;
		}
		else
		{
			if(!m_bTrack)
				ReleaseCapture();

			if(!m_bRaised && !m_bPressed)  // only draw once
				return;
			m_bRaised  = 
			m_bPressed = false;
		}
		InvalidateRect(&m_HideBtnRc);
	}
}

// get fit point
CPoint CIEBar::GetFitPnt() 
{
	CRect t_FrmRc;
	GetDockingFrame()->GetClientRect(&t_FrmRc);

	POINT t_CurPnt;
	::GetCursorPos(&t_CurPnt);
	ScreenToClient(&t_CurPnt);

	if(t_CurPnt.x < 0)
		return CPoint(0, t_CurPnt.y);
	if(t_CurPnt.x > t_FrmRc.Width() / 2)
		return CPoint(t_FrmRc.Width() / 2, t_CurPnt.y);
	return t_CurPnt;
}

// draw draging line
void CIEBar::DrawDragLine(CPoint point)
{
	CRect t_ClientRect;
	GetClientRect(&t_ClientRect);
	ClientToScreen(&t_ClientRect); 
	
	CRect t_FocusRect(point.x, t_ClientRect.top,
		point.x, t_ClientRect.bottom);
	t_FocusRect.InflateRect(2, 0, -2, -43);
	
	CDC dc;
	dc.Attach(::GetWindowDC(NULL));  // note: this dc is used in screen coordinates
	int t_OldMode = dc.SetROP2(R2_NOT);
	
	for(int i=0; i<2; i++)           // draw drag lines here
	{
		t_FocusRect.left  += 2;
		t_FocusRect.right += 2;
		dc.DrawFocusRect(&t_FocusRect);
	}
	
	dc.SetROP2(t_OldMode);
	dc.DeleteDC();
}

CSize CIEBar::CalcDynamicLayout(int nLength, DWORD dwMode)
{
	// get rectangle for main frame
	CRect t_FrmRc;
	GetDockingFrame()->GetClientRect(&t_FrmRc);

	// resize tree control size
	if(pTreeCtrl)
	{
		if(pTreeCtrl->m_hWnd != NULL)
		{
			CRect t_TreeRc(5, 8, m_cxIEBar-2-IE_FRM_WIDTH, t_FrmRc.Height() - 51);
			t_TreeRc.top += m_cyTitle + 1;
			pTreeCtrl->MoveWindow(&t_TreeRc);
		}
	}

	// set IE bar size
	return CSize(m_cxIEBar, t_FrmRc.Height());
}

// get tree control
CTreeCtrl* CIEBar::GetTreeCtrl()
{
	if(pTreeCtrl)
		return pTreeCtrl;
	else
		return NULL;
}

void CIEBar::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	DrawFrm(dc);       //繪制控制條的外觀框架
	DrawTitleTxt(dc);  // 繪制控制條的標題
	DrawHideBtn(dc);   // 繪制控制條的隱藏按鈕(X)
}

// draw big frame for IE bar
void CIEBar::DrawFrm(CDC& dc)
{
	CRect t_ClientRc;
	GetClientRect(&t_ClientRc);
	t_ClientRc.DeflateRect(3, 6, IE_FRM_WIDTH, 49);
	dc.SelectStockObject(NULL_BRUSH);
	dc.Draw3dRect(&t_ClientRc,::GetSysColor(COLOR_GRAYTEXT),::GetSysColor(COLOR_GRAYTEXT));

	dc.SelectStockObject(BLACK_PEN);
	// draw left single line
	dc.MoveTo(t_ClientRc.left + 1, t_ClientRc.top + 1);
	dc.LineTo(t_ClientRc.left + 1, t_ClientRc.bottom - 1);
	// draw top single line
	dc.MoveTo(t_ClientRc.left + 1, t_ClientRc.top + 1);
	dc.LineTo(t_ClientRc.right - 1, t_ClientRc.top + 1);
	// draw right single line
	dc.MoveTo(t_ClientRc.right, t_ClientRc.top);
	dc.LineTo(t_ClientRc.right, t_ClientRc.bottom);
	// draw bottom single line
	dc.MoveTo(t_ClientRc.left, t_ClientRc.bottom);
	dc.LineTo(t_ClientRc.right + 1, t_ClientRc.bottom);
	// get virtual rectangle
	m_VirClientRc = t_ClientRc;
	m_VirClientRc.InflateRect(-1, -1, 0, 0); 
}

// draw title text
void CIEBar::DrawTitleTxt(CDC& dc)
{
	CFont* pOldFont = dc.SelectObject(GetFont());
	ASSERT(pOldFont);
	int t_cxTxt = dc.GetTextExtent(m_TitleTxt).cx;
	CRect t_TxtRc(m_VirClientRc);
	t_TxtRc.left    += 5;
	t_TxtRc.right   =  t_TxtRc.left + t_cxTxt;
	t_TxtRc.bottom  =  t_TxtRc.top + m_cyTitle;
	int t_OldMode   = dc.SetBkMode(TRANSPARENT);
	dc.DrawText(m_TitleTxt,&t_TxtRc, DT_CENTER|DT_VCENTER|DT_SINGLELINE);
	dc.SelectObject(pOldFont);
	dc.SetBkMode(t_OldMode);
	// draw bottom single line for similar to 3d rectangle
	CPen t_BottomPen(PS_SOLID, 1, ::GetSysColor(COLOR_GRAYTEXT));
	CPen* pOldPen = dc.SelectObject(&t_BottomPen);
	dc.MoveTo(m_VirClientRc.left+1, t_TxtRc.bottom);
	dc.LineTo(m_VirClientRc.right, t_TxtRc.bottom);
	dc.SelectObject(pOldPen);
}

// draw hide button
void CIEBar::DrawHideBtn(CDC& dc)
{
	CRect t_HideBtnRc(m_VirClientRc);
	t_HideBtnRc.right  -= 5;
	t_HideBtnRc.left   = t_HideBtnRc.right - m_cyTitle;
	t_HideBtnRc.bottom = t_HideBtnRc.top + m_cyTitle;
	t_HideBtnRc.DeflateRect(7, 4, -1, 3);	
	// get hide button rectangle area
	m_HideBtnRc = t_HideBtnRc;
	// add a tip for hide button
	if(m_TipCtrl.GetToolCount())
		m_TipCtrl.DelTool(this, 1);
	m_TipCtrl.AddTool(this, "關閉控制條", t_HideBtnRc, 1);
	// draw 3d face
	dc.SelectStockObject(NULL_BRUSH);
	if(m_bRaised)
		::GetSysColor(COLOR_BTNHIGHLIGHT),::GetSysColor(COLOR_BTNSHADOW);
	else if(m_bPressed)
		    dc.Draw3dRect(&t_HideBtnRc,::GetSysColor(COLOR_BTNSHADOW),::GetSysColor(COLOR_BTNHIGHLIGHT));
	HICON hIcon = AfxGetApp()->LoadIcon(IDI_HIDE_BTN);
	ASSERT(hIcon);
	::DrawIconEx(dc.m_hDC, t_HideBtnRc.left, t_HideBtnRc.top, hIcon, 16, 16, 0, NULL, DI_NORMAL);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美最新大片在线看| 91一区在线观看| 国产成人亚洲综合a∨婷婷| 欧美精三区欧美精三区| 亚洲成人黄色小说| 日本高清不卡视频| 亚洲在线观看免费视频| 蜜桃av一区二区三区| 99精品欧美一区二区蜜桃免费| 欧美性生活大片视频| 国产欧美一区二区三区沐欲| 午夜在线电影亚洲一区| 91美女在线看| 久久久亚洲综合| 日韩高清不卡一区二区三区| 欧美日本一道本| 国产a精品视频| 亚洲男人电影天堂| 8v天堂国产在线一区二区| 樱花影视一区二区| 日本久久电影网| 蜜臀久久久久久久| 国产亚洲欧美日韩日本| 欧美精选一区二区| 成人av电影免费观看| 国产成人精品亚洲777人妖| 欧美日韩国产另类一区| 日本一区二区三区久久久久久久久不| 青青草原综合久久大伊人精品优势| 精品视频一区三区九区| 国产精品自拍网站| 日韩电影在线免费看| 欧美三级三级三级爽爽爽| 色欧美88888久久久久久影院| 欧美性受xxxx黑人xyx| 国产欧美日韩精品一区| 亚洲一级二级在线| 久久综合九色综合97婷婷| 91成人免费电影| 99精品视频在线免费观看| 国产一区在线观看麻豆| 日本色综合中文字幕| 一级精品视频在线观看宜春院| 中文字幕在线不卡国产视频| 欧美激情综合在线| 国产精品网曝门| 亚洲美女视频一区| 欧洲色大大久久| 一区二区三区欧美| 欧美日韩精品欧美日韩精品一 | 亚洲成人av一区| 欧美日韩视频专区在线播放| 亚洲成人免费视| 日韩欧美视频一区| 粉嫩在线一区二区三区视频| 国产色91在线| 91一区二区在线| 亚洲高清不卡在线| 精品理论电影在线观看| 国产不卡视频在线播放| 国产精品二三区| 欧美日韩亚洲国产综合| 久草中文综合在线| 中文字幕视频一区| 欧美一区二区三区免费观看视频| 国产美女娇喘av呻吟久久| 亚洲欧美另类久久久精品| 欧美日韩国产一级| 国产精品一区在线观看乱码 | 成人免费视频视频在线观看免费| 亚洲欧美综合网| 欧美一区三区四区| 国产91精品一区二区| 亚洲www啪成人一区二区麻豆 | 久久精品免费看| 日韩伦理免费电影| 日韩精品一区二区三区蜜臀| av在线一区二区三区| 日韩专区一卡二卡| 国产精品天美传媒沈樵| 欧美人xxxx| 97久久精品人人做人人爽50路| 五月天久久比比资源色| 国产精品福利电影一区二区三区四区| 欧美精品成人一区二区三区四区| 高潮精品一区videoshd| 天堂av在线一区| 亚洲免费高清视频在线| 久久亚洲二区三区| 51精品国自产在线| 91啪亚洲精品| 国产福利一区二区三区视频| 午夜视黄欧洲亚洲| 亚洲人成网站色在线观看| 精品国产乱码久久久久久浪潮 | 精品成人免费观看| 欧美丝袜丝交足nylons| 99久久精品免费看| 国产美女av一区二区三区| 天天色天天爱天天射综合| 亚洲免费在线播放| 中文字幕av不卡| 久久无码av三级| 日韩一二三区不卡| 在线综合亚洲欧美在线视频| 日本韩国一区二区三区视频| av成人老司机| 97久久人人超碰| 91在线观看高清| 白白色 亚洲乱淫| 国产·精品毛片| 国产高清视频一区| 国产一区二区三区视频在线播放| 美女网站在线免费欧美精品| 午夜精品久久久久久不卡8050| 樱花草国产18久久久久| 亚洲美女电影在线| 亚洲视频你懂的| 亚洲狠狠丁香婷婷综合久久久| 国产精品欧美一区喷水| 欧美经典一区二区| 国产女人18毛片水真多成人如厕| 久久嫩草精品久久久久| 亚洲精品一区二区三区四区高清| 精品精品国产高清a毛片牛牛 | 欧美视频第二页| 欧美三级三级三级爽爽爽| 欧美三级乱人伦电影| 91精品久久久久久久91蜜桃 | 国产精品久久久爽爽爽麻豆色哟哟| 26uuu亚洲综合色欧美| 欧美精品一区二区在线观看| 久久综合给合久久狠狠狠97色69| 国产亚洲精品aa午夜观看| 亚洲国产精品ⅴa在线观看| 国产精品三级av在线播放| 亚洲素人一区二区| 丝袜诱惑制服诱惑色一区在线观看 | 悠悠色在线精品| 视频在线观看一区| 九九视频精品免费| 成人国产在线观看| 欧洲国内综合视频| 日韩精品一区二区三区视频在线观看 | 韩国女主播成人在线观看| 国产suv精品一区二区6| 色综合天天做天天爱| 欧美精品tushy高清| 久久色中文字幕| 亚洲乱码中文字幕| 麻豆成人免费电影| 国产成人精品免费在线| 色综合久久中文综合久久97| 欧美日韩亚洲国产综合| 国产欧美精品一区二区三区四区| 亚洲男人电影天堂| 激情小说欧美图片| 91麻豆国产福利在线观看| 欧美一级电影网站| 综合久久久久久| 国产中文字幕一区| 91玉足脚交白嫩脚丫在线播放| 在线不卡免费欧美| 亚洲欧美日韩在线不卡| 男女视频一区二区| 色婷婷久久一区二区三区麻豆| 日韩欧美国产1| 亚洲影视在线观看| 国产成人高清视频| 欧美一级片在线看| 亚洲午夜电影网| 成人高清视频免费观看| 911精品国产一区二区在线| 国产精品久久久久久久久晋中 | 亚洲va欧美va天堂v国产综合| 国产成人自拍高清视频在线免费播放| 欧美亚洲国产一卡| 最新国产の精品合集bt伙计| 国产综合色在线视频区| 欧美一级午夜免费电影| 亚洲影院理伦片| 91丨九色丨国产丨porny| 久久久91精品国产一区二区精品| 石原莉奈在线亚洲二区| 欧美最猛黑人xxxxx猛交| 1024成人网| 大尺度一区二区| 久久久久久久久97黄色工厂| 日本在线不卡视频| 欧美丰满美乳xxx高潮www| 亚洲激情自拍视频| 91蜜桃网址入口| 亚洲色欲色欲www| eeuss鲁片一区二区三区在线观看| 欧美不卡一区二区三区| 久久国产尿小便嘘嘘| 日韩一区二区三区视频在线| 午夜国产精品影院在线观看| 欧美情侣在线播放| 三级成人在线视频|