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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? infobarctrl.cpp

?? 用套接字實(shí)現(xiàn)的ftp文件傳輸源代碼
?? CPP
字號:
/****************************************************************/
/*																*/
/*  InfobarCtrl.cpp												*/
/*																*/
/*  Implementation of the CInfobarCtrl class.					*/
/*	This class imitates the outlook infobar.					*/
/*																*/
/*  Programmed by Pablo van der Meer							*/
/*  Copyright Pablo Software Solutions 2002						*/
/*	http://www.pablovandermeer.nl								*/
/*																*/
/*  Last updated: 10 july 2002									*/
/*																*/
/****************************************************************/

#include "stdafx.h"
#include "resource.h"
#include "InfobarCtrl.h"

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


CInfobarCtrl::CInfobarCtrl()
{
	m_bMouseInButton = FALSE;
	m_bMouseDown = FALSE;
}

CInfobarCtrl::~CInfobarCtrl()
{
}


BEGIN_MESSAGE_MAP(CInfobarCtrl, CStatic)
	//{{AFX_MSG_MAP(CInfobarCtrl)
	ON_WM_PAINT()
	ON_WM_MOUSEMOVE()
	ON_WM_TIMER()
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


/********************************************************************/
/*																	*/
/* Function name : OnPaint											*/
/* Description   : This is where all the painting of our control	*/
/*				   takes place.										*/
/*																	*/
/********************************************************************/
void CInfobarCtrl::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	CDC memDC;
	CBitmap memBitmap;
	CBitmap* pOldBitmap;

	CRect rcClient;
	GetClientRect(&rcClient);

	// to avoid flicker, establish a memory dc, draw to it and then BitBlt it to the client
	memDC.CreateCompatibleDC(&dc);
	memBitmap.CreateCompatibleBitmap(&dc, rcClient.Width(), rcClient.Height());
	pOldBitmap = (CBitmap *)memDC.SelectObject(&memBitmap);

	// paint background
	memDC.FillSolidRect(rcClient, GetSysColor(COLOR_3DSHADOW));

	// select font
	CFont* pOldFont = (CFont*)memDC.SelectObject(&m_TextFont);
	COLORREF oldTextColor;
	int nBkMode = memDC.SetBkMode(TRANSPARENT);

	// set text color to white
	oldTextColor = memDC.SetTextColor(RGB(255,255,255));

	CRect rcItem = m_rcButton;
	if (rcItem.right >= rcClient.right)
		rcItem.right = rcClient.right-1;

	if (m_bMouseInButton)
	{
		if (m_bMouseDown)
			memDC.Draw3dRect(rcItem, RGB(0,0,0), RGB(255,255,255));
		else
			memDC.Draw3dRect(rcItem, RGB(255,255,255), RGB(0,0,0));
	}

	rcItem.DeflateRect(5, 0);
	rcItem.right -= 12;
	// draw text
	::DrawTextEx(memDC.m_hDC,
                m_strText.GetBuffer (0),
                m_strText.GetLength(),
                &rcItem,
                DT_SINGLELINE | DT_VCENTER | DT_LEFT | DT_PATH_ELLIPSIS,
                NULL);

	// draw a arrow
	rcItem.right += 12;
	rcItem.left = rcItem.right-8;
	rcItem.top += rcItem.Height() / 2 - 1;
	CPoint pt[3];
	pt[0] = rcItem.TopLeft();
	pt[1] = CPoint(rcItem.right, rcItem.top);
	pt[2] = CPoint(rcItem.left + rcItem.Width()/2, rcItem.top + rcItem.Width()/2);
	memDC.SelectStockObject(WHITE_BRUSH);
	memDC.SelectStockObject(NULL_PEN);
	memDC.Polygon(pt, 3);

	// finally send the result to the display
	dc.BitBlt(0, 0, rcClient.Width(), rcClient.Height(), &memDC, 0, 0, SRCCOPY);

	// restore old values
	memDC.SelectObject(pOldFont);		
	memDC.SetTextColor(oldTextColor);
	memDC.SetBkMode(nBkMode);
	memDC.SelectObject(pOldBitmap);
}


/********************************************************************/
/*																	*/
/* Function name : OnLButtonDown									*/
/* Description   : Handle WM_LBUTTONDOWN message					*/
/*																	*/
/********************************************************************/
void CInfobarCtrl::OnLButtonDown(UINT nFlags, CPoint point) 
{
	if (m_bMouseInButton)
	{
		if (!m_bMouseDown)
			m_bMouseDown = TRUE;

		Invalidate();
	}	
	CStatic::OnLButtonDown(nFlags, point);
}


/********************************************************************/
/*																	*/
/* Function name : OnLButtonUp										*/
/* Description   : Handle WM_LBUTTONUP message						*/
/*																	*/
/********************************************************************/
void CInfobarCtrl::OnLButtonUp(UINT nFlags, CPoint point) 
{
	if (m_bMouseInButton)
	{
		int bOldMode = m_bMouseInButton;
		if (m_rcButton.PtInRect(point))
			m_bMouseInButton = TRUE;
		else 
			m_bMouseInButton = FALSE;
		
		if (m_bMouseDown)
		{
			m_bMouseDown = FALSE;

			if (m_bMouseInButton == bOldMode)
			{
				Invalidate();
				
				// do something ...
				if (m_bMouseInButton)
				{
					Invalidate();

					// load and display popup menu
					CMenu menu;
					menu.LoadMenu(IDR_INFOBARMENU);
					CMenu* pPopup = menu.GetSubMenu(0);
					
					CRect rect;
					GetWindowRect(rect);
				
				    // show and track the menu
					DWORD dwID = pPopup->TrackPopupMenu((TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_NONOTIFY|TPM_RETURNCMD),
                                                  rect.left, rect.bottom, this);
					GetParent()->SendMessage(WM_COMMAND, dwID);
				}
			}
			else
			{
				m_bMouseInButton = FALSE;
				Invalidate();
			}
		}
	}	
	CStatic::OnLButtonUp(nFlags, point);
}


/********************************************************************/
/*																	*/
/* Function name : OnMouseMove										*/
/* Description   : Handle WM_MOUSEMOVE message						*/
/*																	*/
/********************************************************************/
void CInfobarCtrl::OnMouseMove(UINT nFlags, CPoint point) 
{
	if (nFlags & MK_LBUTTON)
		m_bMouseDown = TRUE;
	else
		m_bMouseDown = FALSE;

	BOOL bOldState = m_bMouseInButton;

	if (m_rcButton.PtInRect(point))
		m_bMouseInButton = TRUE;
	else 
		m_bMouseInButton = FALSE;

	if (m_bMouseInButton != bOldState)
	{
		Invalidate(FALSE);

		KillTimer(1);
		SetTimer(1,10,NULL);
	}
	
	CStatic::OnMouseMove(nFlags, point);
}


/********************************************************************/
/*																	*/
/* Function name : OnTimer											*/
/* Description   : Handle WM_TIMER message -> process timer			*/
/*																	*/
/********************************************************************/
void CInfobarCtrl::OnTimer(UINT nIDEvent) 
{
	if (nIDEvent == 1)
	{
		CPoint pt;
		if (!GetCursorPos(&pt))
			return;
		ScreenToClient(&pt);
		
		CRect rcClient;
		GetClientRect(&rcClient);
		rcClient.bottom = rcClient.top + 22;

		if (!rcClient.PtInRect(pt))
		{
			KillTimer(1);

			m_bMouseInButton = FALSE;
			m_bMouseDown = FALSE;

			Invalidate();
		}
	}
	CStatic::OnTimer(nIDEvent);
}


/********************************************************************/
/*																	*/
/* Function name : SetText											*/
/* Description   : Set text of the control							*/
/*																	*/
/********************************************************************/
void CInfobarCtrl::SetText(LPCTSTR lpszText)
{
	m_strText = lpszText;

	CClientDC dc(this);
	CFont* pFont = (CFont*)dc.SelectObject(&m_TextFont);

	CRect rcClient;
	GetClientRect(&rcClient);

	// calculate new button rect
	CSize size = dc.GetTextExtent(m_strText);
	size.cx += 22;
	size.cy = rcClient.Height()-2;
	m_rcButton = CRect(CPoint(1, 1), size);

	dc.SelectObject(pFont);

	Invalidate();
}


/********************************************************************/
/*																	*/
/* Function name : PreSubclassWindow								*/
/* Description   : Initialize control variables						*/
/*																	*/
/********************************************************************/
void CInfobarCtrl::PreSubclassWindow() 
{
	m_TextFont.CreateFont(16, 0,0,0,FW_BOLD, 0,0,0,
		DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,
		DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial");
	
	CStatic::PreSubclassWindow();
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜欧美视频在线观看| 最好看的中文字幕久久| 日韩二区三区在线观看| 欧美日韩一区二区三区不卡| 亚洲精品一二三四区| 91美女片黄在线观看91美女| 国产日韩精品一区二区三区| 成人美女在线视频| 国产精品灌醉下药二区| 91在线观看下载| 亚洲一二三区在线观看| 欧美高清你懂得| 久久国产精品72免费观看| 精品国产一区久久| 国产成人免费在线视频| 亚洲欧洲精品一区二区三区不卡 | 7777精品伊人久久久大香线蕉经典版下载 | 欧美老人xxxx18| 亚洲一区二区四区蜜桃| 欧美三级中文字| 香蕉久久一区二区不卡无毒影院| 51精品秘密在线观看| 国产一区二区在线观看视频| 国产精品久久久久久一区二区三区 | 国产在线播放一区| 国产精品久久综合| 91福利精品第一导航| 亚洲精品一区二区三区影院| 91精品在线一区二区| 精品中文av资源站在线观看| 国产日韩欧美精品一区| 成人动漫在线一区| 无码av免费一区二区三区试看 | 欧美美女视频在线观看| 免费成人av在线| 亚洲国产精品精华液2区45| 欧美亚一区二区| 韩日av一区二区| 洋洋av久久久久久久一区| 精品久久国产老人久久综合| av亚洲精华国产精华| 麻豆成人久久精品二区三区红| 国产精品嫩草影院av蜜臀| 欧美精品自拍偷拍| 成人激情视频网站| 精品一区二区免费视频| 一区二区日韩av| 欧美国产成人精品| 国产精品久久久久久久浪潮网站| 欧美精品一区二区高清在线观看 | 天天综合日日夜夜精品| 国产调教视频一区| 日韩精品一区二区三区中文不卡| 91天堂素人约啪| 国产大陆a不卡| 美美哒免费高清在线观看视频一区二区 | 午夜精品久久久久久久蜜桃app| 国产日韩影视精品| 日韩欧美精品在线视频| 欧美影视一区在线| 色狠狠桃花综合| 9色porny自拍视频一区二区| 国内精品在线播放| 久久国产婷婷国产香蕉| 亚洲午夜在线观看视频在线| 日韩理论片中文av| 亚洲欧洲另类国产综合| 欧美激情一区二区| 国产日韩欧美精品电影三级在线| 日韩精品一区国产麻豆| 日韩精品专区在线影院重磅| 在线不卡欧美精品一区二区三区| 色综合久久综合| 99久久国产综合精品麻豆| 懂色av一区二区夜夜嗨| 国产伦精品一区二区三区免费 | 狠狠色丁香婷婷综合| 久久精品国产精品亚洲精品 | 久久蜜桃av一区二区天堂| 日韩女优制服丝袜电影| 91精品国产综合久久精品麻豆| 色噜噜久久综合| 色综合久久66| 欧美亚洲国产一区二区三区| 91亚洲精品久久久蜜桃网站 | 国产成a人无v码亚洲福利| 国产精品一区二区久久精品爱涩| 激情五月婷婷综合| 黑人巨大精品欧美黑白配亚洲| 国内一区二区视频| 国产91综合网| 91亚洲精品久久久蜜桃| 欧洲av一区二区嗯嗯嗯啊| 欧美视频在线不卡| 日韩一区二区免费在线观看| 日韩亚洲欧美高清| 久久久99久久精品欧美| 国产精品夫妻自拍| 亚洲精品国产一区二区精华液| 综合久久久久久久| 亚洲国产色一区| 精品一区在线看| 成人av网址在线| 欧美撒尿777hd撒尿| 日韩三级伦理片妻子的秘密按摩| 久久综合网色—综合色88| 中文乱码免费一区二区| 亚洲精品成人a在线观看| 午夜精品久久久久久久99水蜜桃 | 成人自拍视频在线| 日本久久电影网| 91精品国产一区二区人妖| 久久色视频免费观看| 中文字幕在线不卡视频| 性欧美大战久久久久久久久| 狠狠狠色丁香婷婷综合激情| hitomi一区二区三区精品| 欧美日韩成人综合| 国产午夜精品一区二区| 亚洲国产三级在线| 国产精品一区二区免费不卡 | 日韩视频一区二区在线观看| 国产肉丝袜一区二区| 亚洲成人精品一区二区| 国产美女精品一区二区三区| 欧美最新大片在线看| 精品粉嫩超白一线天av| 亚洲免费观看在线视频| 久久99热国产| 欧美在线影院一区二区| 久久看人人爽人人| 日韩精品久久久久久| 日本久久一区二区| 欧美极品另类videosde| 日韩电影一区二区三区四区| 成人国产亚洲欧美成人综合网| 欧美精品日韩一区| 亚洲三级视频在线观看| 国产尤物一区二区| 欧美精品亚洲一区二区在线播放| 国产精品视频一区二区三区不卡| 日韩高清在线观看| 在线亚洲欧美专区二区| 国产精品成人一区二区艾草| 狠狠色综合色综合网络| 正在播放亚洲一区| 一卡二卡三卡日韩欧美| 99re在线精品| 国产视频一区在线观看| 欧美96一区二区免费视频| 欧美日韩你懂的| 亚洲欧美色综合| 成人午夜免费视频| 久久久精品日韩欧美| 久久精品国产在热久久| 在线综合亚洲欧美在线视频| 亚洲午夜久久久久久久久久久 | 国产综合色视频| 欧美r级电影在线观看| 五月激情综合色| 欧美日韩精品高清| 亚洲综合视频在线观看| 色综合久久综合中文综合网| 国产精品国产自产拍高清av王其| 国产精品一区二区久久精品爱涩| 欧美videos大乳护士334| 日韩电影在线观看电影| 欧美一级日韩一级| 免费观看在线综合色| 欧美电影一区二区| 日韩国产精品久久久久久亚洲| 欧美三级中文字| 日韩激情在线观看| 日韩亚洲欧美高清| 久久国产精品色婷婷| 精品国产91亚洲一区二区三区婷婷 | 精品成人一区二区三区四区| 久久99久国产精品黄毛片色诱| 欧美大尺度电影在线| 国产一区二区三区不卡在线观看 | 91精品国产综合久久香蕉的特点| 偷拍一区二区三区四区| 欧美精品黑人性xxxx| 91麻豆精品91久久久久同性| 国产精品久久三| 成av人片一区二区| 国产精品不卡在线| 色哟哟一区二区| 天天综合天天做天天综合| 日韩一级精品视频在线观看| 精品国产1区2区3区| 91精品国产色综合久久不卡电影| 一区二区在线观看免费 | 亚洲成人av资源| 777亚洲妇女| 国产伦精一区二区三区| 日韩一区在线播放| 91麻豆精品久久久久蜜臀| 国产精品一二三| 一区二区在线观看免费视频播放|