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

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

?? ftab.cpp

?? 一種簡單的股票軟件源代碼,編譯后可以實時顯示證券行情
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
	dc.LineTo(rc.right, rc.top);
	if (m_dwFtabStyle & FTS_FULLBORDER) {
		dc.MoveTo(rc.right-1, rc.top);
		dc.LineTo(rc.right-1, rc.bottom-1);
		dc.LineTo(rc.left,  rc.bottom-1);
		dc.LineTo(rc.left,  rc.top);
	} else {
		dc.MoveTo(rc.left, rc.top);
	}
	dc.LineTo(rcCurTab.TopLeft());
	dc.SelectObject(pOldPen);
}

//////////////////
// Handle mouse click: select new tab, if any. Notify parent, of course
//
void CFolderTabCtrl::OnLButtonDown(UINT nFlags, CPoint pt)
{
	int iTab = HitTest(pt);
	if (iTab>=0 && iTab!=m_iCurItem) {
		SelectItem(iTab);
		NMFOLDERTAB nm;
		nm.hwndFrom = m_hWnd;
		nm.idFrom = GetDlgCtrlID();
		nm.code = FTN_TABCHANGED;
		nm.iItem = iTab;
		CWnd* pParent = GetParent();
		pParent->SendMessage(WM_NOTIFY, nm.idFrom, (LPARAM)&nm);
	}
}

//////////////////
// Find which tab is under mouse, -1 if none
//
int CFolderTabCtrl::HitTest(CPoint pt)
{
	CRect rc;
	GetClientRect(&rc);
	rc.left += m_cxButtons;
	if (rc.PtInRect(pt)) {
		int xOrigin = m_cxButtons - GetTab(m_iFirstTab)->GetRect().left;
		pt.x -= xOrigin;
		int n = GetItemCount();
		for (int i=0; i<n; i++) {
			if (GetTab(i)->HitTest(pt))
				return i;
		}
	}
	return -1;
}

//////////////////
// Select ith tab. Returns index selected
//
int CFolderTabCtrl::SelectItem(int iTab)
{
	int count = GetItemCount();
	if (iTab<0 || iTab>=count)
		return -1;		// bad
	if (iTab == m_iCurItem)
		return iTab;	// already selected

	if (m_iCurItem < count)
		InvalidateTab(m_iCurItem);		// invalidate old tab (repaint)

	m_iCurItem = iTab;				// set new selected tab
	InvalidateTab(m_iCurItem);		// repaint new tab
	
	return m_iCurItem;
}

//////////////////
/// Invalidate a tab: invaldate its rect
//
void CFolderTabCtrl::InvalidateTab(int iTab, BOOL bErase)
{
	CRect rc = GetTab(iTab)->GetRect();
	int xOrigin = m_cxButtons - GetTab(m_iFirstTab)->GetRect().left;
	rc += CPoint(xOrigin,0);
	InvalidateRect(rc, bErase);
}

//////////////////
// Load folder tab control from resource string:
// newline-separated list of tab names.
//
BOOL CFolderTabCtrl::Load(UINT nIDRes)
{
	CString s;
	if (!s.LoadString(nIDRes))
		return FALSE;

	CString sTab;
	for (int i=0; AfxExtractSubString(sTab, s, i); i++) {
		AddItem(sTab);
	}
	return TRUE;
}

//////////////////
// Add a tab.
//
int CFolderTabCtrl::AddItem(LPCTSTR lpszText)
{
	m_lsTabs.AddTail(new CFolderTab(lpszText));
	RecomputeLayout();
	return m_lsTabs.GetCount() - 1;
}

//////////////////
// Remove tab at given index.
//
BOOL CFolderTabCtrl::RemoveItem(int iPos)
{
	POSITION pos = m_lsTabs.FindIndex(iPos);
	if (pos) {
		CFolderTab* pTab = (CFolderTab*)m_lsTabs.GetAt(pos);
		m_lsTabs.RemoveAt(pos);
		delete pTab;
	}
	RecomputeLayout();
	return pos!=NULL;
}

CFolderTab* CFolderTabCtrl::GetTab(int iPos)
{
	POSITION pos = m_lsTabs.FindIndex(iPos);
	return pos ? static_cast<CFolderTab*>(m_lsTabs.GetAt(pos)) : NULL;
}

//////////////////
// Recalculate layout based on having added or removed a tab.
//
void CFolderTabCtrl::RecomputeLayout()
{
	CClientDC dc(this);
	CFont* pOldFont = dc.SelectObject(&m_fontNormal);
	int x = 0;
	int n = GetItemCount();
	CFolderTab* pTab;
	for (int i=0; i<n; i++) {
		pTab = GetTab(i);
		if (pTab) 
			x += pTab->ComputeRgn(dc, x) - CXOFFSET;
	}
	dc.SelectObject(pOldFont);

	m_cxDesired = m_cxButtons;
	if (pTab) {
		CRect rc = pTab->GetRect();
		m_cxDesired += rc.right;
	}
}

//////////////////
// Folder tabs changed size: reposition scroll buttons.
//
void CFolderTabCtrl::OnSize(UINT nType, int cx, int cy)
{
	if (m_wndButton[0].m_hWnd) {
		int w = cy;
		CRect rc(0,0,w,cy);
		for (int i=FTBPREV; i<=FTBNEXT; i++) {
			m_wndButton[i-1].MoveWindow(&rc);
			rc += CPoint(w,0);
		}
		UpdateButtons();
	}
}

//////////////////
// Determine enabled state of scroll buttons
//
void CFolderTabCtrl::UpdateButtons()
{
	if (m_wndButton[0].m_hWnd && !m_lsTabs.IsEmpty()) {
		// enable prev button iff more tabs to left.
		m_wndButton[0].EnableWindow(m_iFirstTab>0);

		// enable next button iff more tabs to right
		CRect rc;
		GetClientRect(&rc);
		int xOrigin = m_cxButtons - GetTab(m_iFirstTab)->GetRect().left;
		CRect rcLast = ((CFolderTab*)m_lsTabs.GetTail())->GetRect();
		m_wndButton[1].EnableWindow(xOrigin + rcLast.right>rc.right);
	}
}

//////////////////
// User clicked next button: increment starting tab and repaint
//
void CFolderTabCtrl::OnNextTab()
{
	if (m_iFirstTab < m_lsTabs.GetCount()-1) {
		m_iFirstTab++;
		Invalidate();
		UpdateButtons();
	}
}

//////////////////
// User clicked prev button: decrement starting tab and repaint
//
void CFolderTabCtrl::OnPrevTab()
{
	if (m_iFirstTab > 0) {
		m_iFirstTab--;
		Invalidate();
		UpdateButtons();
	}
}

////////////////////////////////////////////////////////////////
// CFolderButton
//
IMPLEMENT_DYNAMIC(CFolderButton, CButton)
BEGIN_MESSAGE_MAP(CFolderButton, CButton)
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	ON_WM_LBUTTONDBLCLK()
	ON_WM_TIMER()
END_MESSAGE_MAP()

//////////////////
// Draw sroll button: draw a black triangle.
//
void CFolderButton::DrawItem(LPDRAWITEMSTRUCT lpDis)
{
	DRAWITEMSTRUCT& dis = *lpDis;
	CDC& dc = *CDC::FromHandle(dis.hDC);
	CRect rc;
	GetClientRect(&rc);

	// fill background with 3D face color
	dc.FillSolidRect(&rc,GetSysColor(COLOR_3DFACE));

	// shift southeast if button is pressed (bDown)
	BOOL bDown = dis.itemState & ODS_SELECTED;
	if (bDown) {
		rc += CPoint(1,1);
	}

	// draw line above to match folder tabs
	CPen pen(PS_SOLID,1,
		dis.itemState & ODS_DISABLED ? GetSysColor(COLOR_3DSHADOW) : RGB(0,0,0));
	CPen* pOldPen = dc.SelectObject(&pen);
	dc.MoveTo(rc.TopLeft());
	dc.LineTo(rc.right,rc.top);

	// Draw 3D highlight rect for 3D look
	CRect rc2=rc;
	for (int i=0; i<2; i++) {
		dc.Draw3dRect(&rc2,
			GetSysColor(bDown ? COLOR_3DFACE : COLOR_3DHIGHLIGHT),
			GetSysColor(COLOR_3DSHADOW));
		rc2.right--;
		rc2.bottom--;
	}

	// Draw triangle pointing the right way. Use shadow color if disabled.
	CSize szArrow = CSize(4,7);
	int cyMargin = (rc.Height()-szArrow.cy)/2;
	int cxMargin = (rc.Width()-szArrow.cx)/2;
	int x, incr;
	if (dis.CtlID==FTBNEXT) {
		x = rc.left + cxMargin;
		incr = 1;
	} else {
		x = rc.right - cxMargin - 1;
		incr = -1;
	}
	int y = rc.top + cyMargin;
	int h = 7;
	for (int j=0; j<4; j++) {
		dc.MoveTo(x,y);
		dc.LineTo(x,y+h);
		h-=2;
		x += incr;
		y++;
	}
	dc.SelectObject(pOldPen);
}

//////////////////
// User clicked button.
//
void CFolderButton::OnLButtonDown(UINT nFlags, CPoint pt)
{
	Default();									 // will send WM_COMMAND to parent
	SetTimer(1,500,NULL);					 // set timer for continual scroll
	m_nTimerClick = 0;						 // counter for initial delay
}

//////////////////
// User let go the mouse.
//
void CFolderButton::OnLButtonUp(UINT nFlags, CPoint pt)
{
	KillTimer(1);								 // no more repeat
	Default();
}

//////////////////
// Double-click: treat as another click.
//
void CFolderButton::OnLButtonDblClk(UINT nFlags, CPoint pt)
{
	SendMessage(WM_LBUTTONDOWN,nFlags,MAKELONG(pt.x,pt.y));
}

//////////////////
// Timer click: send another WM_COMMMAND, as if button clicked.
//
void CFolderButton::OnTimer(UINT nIDEvent)
{
	if (IsWindowEnabled()) {
		if (m_nTimerClick++ == 0) {
			KillTimer(1);
			SetTimer(1,150,NULL);
		}
		GetParent()->SendMessage(WM_COMMAND, GetDlgCtrlID());
	} else {
		KillTimer(1);
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
制服视频三区第一页精品| 国产99久久久精品| 精品精品欲导航| 亚洲成a人片在线观看中文| 99精品国产热久久91蜜凸| 日韩欧美在线观看一区二区三区| 欧美一区二区福利在线| 国产欧美日韩三级| 亚洲地区一二三色| 国产91高潮流白浆在线麻豆| 久久日一线二线三线suv| 国产一区美女在线| 日韩精品一区二区三区四区视频 | 亚洲视频狠狠干| 欧美在线观看一二区| 久久99久久99精品免视看婷婷| 色婷婷久久综合| 99riav久久精品riav| 国产精品久久夜| 亚洲图片一区二区| 综合久久久久久| 欧美日韩国产经典色站一区二区三区| 丁香婷婷综合色啪| 国产精品久久国产精麻豆99网站| 韩国成人福利片在线播放| 欧美性三三影院| 日韩精品电影一区亚洲| 欧美午夜精品一区二区蜜桃| 亚洲激情第一区| 制服.丝袜.亚洲.中文.综合| 亚洲狼人国产精品| 欧美一区二区三区在线| 日韩一区二区三区电影在线观看| 日韩 欧美一区二区三区| 欧美精彩视频一区二区三区| 欧美性猛交xxxx黑人交| 国产91精品精华液一区二区三区 | 日韩美女久久久| 一区在线中文字幕| 成人app网站| 日韩一区在线播放| 亚洲同性同志一二三专区| 久久亚洲精精品中文字幕早川悠里| 精品美女被调教视频大全网站| 亚洲第一在线综合网站| 欧美三级电影一区| 日韩av不卡在线观看| 91精品国产高清一区二区三区 | 国产女同互慰高潮91漫画| 国产成人自拍高清视频在线免费播放| 精品欧美黑人一区二区三区| 国产麻豆精品在线| 亚洲欧洲av在线| 欧美主播一区二区三区| 免费高清视频精品| 久久久久青草大香线综合精品| 国产成人亚洲综合a∨婷婷图片| 国产精品国产三级国产三级人妇| 91日韩在线专区| 日韩成人精品在线| 欧美国产精品专区| 欧美性一级生活| 精一区二区三区| 国产精品久久夜| 欧美精品精品一区| 国产成人免费视频| 亚洲成人第一页| 久久久久久9999| 欧美日韩精品一区二区在线播放| 韩国女主播成人在线| 亚洲乱码国产乱码精品精98午夜 | 蜜臀va亚洲va欧美va天堂| 久久久久久久精| 在线观看91视频| 黑人巨大精品欧美黑白配亚洲| 国产精品美女久久久久久久久| 欧美视频一区二区三区在线观看| 天天影视涩香欲综合网| 欧美国产成人在线| 日韩视频中午一区| 91色porny在线视频| 韩国女主播一区| 亚洲一区二区三区视频在线播放 | 精品一区二区三区久久| 专区另类欧美日韩| 91免费观看视频| 美女高潮久久久| 亚洲男人天堂一区| 国产精品丝袜久久久久久app| 欧美日韩国产精品自在自线| 91丝袜美女网| 国产一区二区免费看| 香蕉av福利精品导航| 亚洲免费成人av| 欧美国产精品一区二区三区| 精品少妇一区二区三区视频免付费 | 欧美无乱码久久久免费午夜一区| 国产一区二区三区国产| 日本欧美一区二区三区乱码| 亚洲一区二区三区三| 亚洲欧美一区二区三区孕妇| 国产欧美一区二区三区网站| 91精品国产91久久久久久最新毛片 | 亚洲欧美成aⅴ人在线观看| 国产亚洲欧美一区在线观看| 91精品国产手机| 欧美日韩不卡视频| 欧美制服丝袜第一页| 99久久精品国产精品久久| 国产91露脸合集magnet | 婷婷中文字幕一区三区| 亚洲欧美日本韩国| 亚洲欧洲国产日本综合| ●精品国产综合乱码久久久久| 欧美国产综合一区二区| 国产精品午夜春色av| 国产精品丝袜久久久久久app| 日本一区二区三区高清不卡| 亚洲国产成人在线| 中文字幕av一区二区三区| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 亚洲va欧美va国产va天堂影院| 亚洲色图制服丝袜| 日韩一区在线看| 亚洲男女一区二区三区| 亚洲免费观看高清完整版在线观看| 亚洲色图清纯唯美| 一区二区三区日韩精品| 亚洲v中文字幕| 久久精品国产一区二区三区免费看| 日韩精品一级中文字幕精品视频免费观看 | 色综合久久天天| 欧美在线一二三四区| 91精品国产综合久久久蜜臀图片 | 九色|91porny| 国产99一区视频免费| 色综合婷婷久久| 欧美日本视频在线| 精品久久久久久久久久久久久久久久久| 欧美成人性战久久| 欧美激情一区三区| 亚洲尤物在线视频观看| 日韩精品亚洲一区二区三区免费| 免费在线欧美视频| 粉嫩一区二区三区性色av| 91麻豆视频网站| 日韩欧美中文字幕公布| 久久久精品国产99久久精品芒果| 1区2区3区精品视频| 婷婷夜色潮精品综合在线| 风间由美性色一区二区三区| 91毛片在线观看| 日韩无一区二区| 91精品国产乱| 不卡的av在线| 欧美亚洲高清一区| 欧美大片一区二区| 欧美激情一区二区三区不卡| 国产精品理论在线观看| 亚洲va韩国va欧美va精品| 国产精品99久久久| 欧美午夜电影一区| 中文字幕不卡一区| 人人狠狠综合久久亚洲| 99久久久久久| 精品少妇一区二区三区| 亚洲欧美日韩系列| 激情文学综合网| 欧美美女视频在线观看| 国产农村妇女毛片精品久久麻豆| 亚洲123区在线观看| 粉嫩欧美一区二区三区高清影视| 欧美一区二区视频在线观看| 成人免费在线视频观看| 国产精品18久久久久久久网站| 欧美日韩精品专区| 一区二区不卡在线播放 | 欧美韩国一区二区| 精品一区二区三区日韩| 欧美精品v日韩精品v韩国精品v| 日本一区二区在线不卡| 毛片一区二区三区| 欧美色成人综合| 亚洲欧美日韩国产中文在线| 国产精品中文字幕一区二区三区| 欧美日韩国产免费| 亚洲一区二区在线观看视频| thepron国产精品| 国产日韩三级在线| 国产精品综合av一区二区国产馆| 欧美在线啊v一区| 亚洲视频一区二区在线观看| 成人av免费在线观看| 中文字幕精品一区二区三区精品| 另类小说图片综合网| 日韩一区二区高清| 亚洲午夜一二三区视频| 欧美色图在线观看| 一区二区三区四区不卡在线| 色婷婷综合五月|