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

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

?? guitoolbarwnd.cpp

?? 方便的串口監(jiān)視工具
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
				 CWnd * pWnd =GetDlgItem(pData[i].idCommand);
				 ASSERT_VALID(pWnd);
				 pWnd->ShowWindow( SW_HIDE   );
				 pData[i].fsState |= TBSTATE_HIDDEN;
				 continue;
				
			}
			else
			{
				
					CWnd * pWnd =GetDlgItem(pData[i].idCommand);
					ASSERT_VALID(pWnd);
					pData[i].fsState &= ~TBSTATE_HIDDEN;
					pWnd->ShowWindow( SW_SHOW   );
					
								
			}
		}
		
		int cySep = pData[i].iBitmap;
		cySep = cySep * 2 / 3;
		CRect rci;
		GetItemRect(i, &rci);
		int cx=rci.Width();
		xSizeMin=min(xSizeMin,cx);
		if (pData[i].fsStyle & TBSTYLE_SEP)
		{
			// a separator represents either a height or width
			if (pData[i].fsState & TBSTATE_WRAP)
				sizeResult.cy = max(cur.y + m_sizeButton.cy + cySep, sizeResult.cy);
			else
				sizeResult.cx = max(cur.x + pData[i].iBitmap, sizeResult.cx);
		}
		else
		{
			// check for dropdown style, but only if the buttons are being drawn
			if ((pData[i].fsStyle & TBSTYLE_DROPDOWN) &&
				(dwExtendedStyle & TBSTYLE_EX_DRAWDDARROWS))
			{
				// add size of drop down
				cx += (_afxGuiDropDownWidth);
				nNumDrow++;
				bDrow=TRUE;
			}
			sizeResult.cx = max(cur.x + cx, sizeResult.cx);
			sizeResult.cy = max(cur.y + m_sizeButton.cy, sizeResult.cy);
		}

			

		if (pData[i].fsStyle & TBSTYLE_SEP)
			cur.x += pData[i].iBitmap;
		else
			cur.x += cx - CX_OVERLAP;

		if (pData[i].fsState & TBSTATE_WRAP)
		{
			cur.x = 0;
			cur.y += m_sizeButton.cy;
			if (pData[i].fsStyle & TBSTYLE_SEP)
				cur.y += cySep;
		}
	}
	if (bDrow == TRUE)
	{
			
		if (bVertDocked)
		{
			sizeResult.cx-=_afxGuiDropDownWidth;
			sizeResult.cy+=_afxGuiDropDownWidth-2;//*nNumDrow;
		}
		else
		{
			sizeResult.cx-=_afxGuiDropDownWidth*nNumDrow;
		}
	}
	else
	{
		if (bVertDocked)
			sizeResult.cy+=_afxGuiDropDownWidth/2;
	}
	/*if (sizeResult.cx > nSizeHoWid && nSizeHoWid > 0)
		sizeResult.cx = nSizeHoWid;
	else
	{
		if(sizeResult.cx < nSizeBarReal)
		 sizeResult.cx=	nSizeBarReal-10;
	}*/

	return sizeResult;
}

int  CGuiToolBarWnd::WrapToolBar(TBBUTTON* pData, int nCount, int nWidth)
{
	ASSERT(pData != NULL && nCount > 0);

	int nResult = 0;
	int x = 0;
	for (int i = 0; i < nCount; i++)
	{
		pData[i].fsState &= ~TBSTATE_WRAP;

		if (pData[i].fsState & TBSTATE_HIDDEN)
			continue;

		int dx, dxNext;
		if (pData[i].fsStyle & TBSTYLE_SEP)
		{
			dx = pData[i].iBitmap;
			dxNext = dx;
		}
		else
		{
			dx = m_sizeButton.cx;
			dxNext = dx - CX_OVERLAP;
		}

		if (x + dx > nWidth)
		{
			BOOL bFound = FALSE;
			for (int j = i; j >= 0  &&  !(pData[j].fsState & TBSTATE_WRAP); j--)
			{
				// Find last separator that isn't hidden
				// a separator that has a command ID is not
				// a separator, but a custom control.
				if ((pData[j].fsStyle & TBSTYLE_SEP) &&
					(pData[j].idCommand == 0) &&
					!(pData[j].fsState & TBSTATE_HIDDEN))
				{
					bFound = TRUE; i = j; x = 0;
					pData[j].fsState |= TBSTATE_WRAP;
					nResult++;
					break;
				}
			}
			if (!bFound)
			{
				for (int j = i - 1; j >= 0 && !(pData[j].fsState & TBSTATE_WRAP); j--)
				{
					// Never wrap anything that is hidden,
					// or any custom controls
					if ((pData[j].fsState & TBSTATE_HIDDEN) ||
						((pData[j].fsStyle & TBSTYLE_SEP) &&
						(pData[j].idCommand != 0)))
						continue;

					bFound = TRUE; i = j; x = 0;
					pData[j].fsState |= TBSTATE_WRAP;
					nResult++;
					break;
				}
				if (!bFound)
					x += dxNext;
			}
		}
		else
			x += dxNext;
	}
	return nResult + 1;
}

void   CGuiToolBarWnd::SizeToolBar(TBBUTTON* pData, int nCount, int nLength, BOOL bVert)
{
	ASSERT(pData != NULL && nCount > 0);
	bVert;
	if (!bVert)
	{
		int nMin, nMax, nTarget, nCurrent, nMid;

		// Wrap ToolBar as specified
		nMax = nLength;
		nTarget = WrapToolBar(pData, nCount, nMax);

		// Wrap ToolBar vertically
		nMin = 0;
		nCurrent = WrapToolBar(pData, nCount, nMin);

		if (nCurrent != nTarget)
		{
			while (nMin < nMax)
			{
				nMid = (nMin + nMax) / 2;
				nCurrent = WrapToolBar(pData, nCount, nMid);

				if (nCurrent == nTarget)
					nMax = nMid;
				else
				{
					if (nMin == nMid)
					{
						WrapToolBar(pData, nCount, nMax);
						break;
					}
					nMin = nMid;
				}
			}
		}
		CSize size = CalcSize(pData, nCount);
		WrapToolBar(pData, nCount, size.cx);
	}
	else
	{
		CSize sizeMax, sizeMin, sizeMid;

		// Wrap ToolBar vertically
		WrapToolBar(pData, nCount, 0);
		sizeMin = CalcSize(pData, nCount);

		// Wrap ToolBar horizontally
		WrapToolBar(pData, nCount, 32767);
		sizeMax = CalcSize(pData, nCount);

		while (sizeMin.cx < sizeMax.cx)
		{
			sizeMid.cx = (sizeMin.cx + sizeMax.cx) / 2;
			WrapToolBar(pData, nCount, sizeMid.cx);
			sizeMid = CalcSize(pData, nCount);

			if (nLength < sizeMid.cy)
			{
				if (sizeMin == sizeMid)
				{
					WrapToolBar(pData, nCount, sizeMax.cx);
					return;
				}
				sizeMin = sizeMid;
			}
			else if (nLength > sizeMid.cy)
				sizeMax = sizeMid;
			else
				return;
		}
	}
}

struct _AFX_CONTROLPOS
{
	int nIndex, nID;
	CRect rectOldPos;
};




CSize  CGuiToolBarWnd::CalcLayout(DWORD dwMode, int nLength)
{
	ASSERT_VALID(this);
	ASSERT(::IsWindow(m_hWnd));
	if (dwMode & LM_HORZDOCK)
		ASSERT(dwMode & LM_HORZ);
	
	if (dwMode & LM_HORZ)
		bVertDocked=FALSE;
	else
		bVertDocked=TRUE;
	int nCount;
	TBBUTTON* pData = NULL;
	CSize sizeResult(0,0);
	//BLOCK: Load Buttons
	{
		nCount = DefWindowProc(TB_BUTTONCOUNT, 0, 0);
		if (nCount != 0)
		{
			int i;
			pData = new TBBUTTON[nCount];
			for (i = 0; i < nCount; i++)
			{
				_GetButton(i, &pData[i]);
			}
		}
	}

	if (nCount > 0)
	{
		if (!(m_dwStyle & CBRS_SIZE_FIXED))
		{
			BOOL bDynamic = m_dwStyle & CBRS_SIZE_DYNAMIC;

			if (bDynamic && (dwMode & LM_MRUWIDTH))
				SizeToolBar(pData, nCount, m_nMRUWidth);
			else if (bDynamic && (dwMode & LM_HORZDOCK))
				SizeToolBar(pData, nCount, 32767);
			else if (bDynamic && (dwMode & LM_VERTDOCK))
				SizeToolBar(pData, nCount, 0);
			else if (bDynamic && (nLength != -1))
			{
				CRect rect; rect.SetRectEmpty();
				CalcInsideRect(rect, (dwMode & LM_HORZ));
				BOOL bVert = (dwMode & LM_LENGTHY);
				int nLen = nLength + (bVert ? rect.Height() : rect.Width());

				SizeToolBar(pData, nCount, nLen, bVert);
			}
			else if (bDynamic && (m_dwStyle & CBRS_FLOATING))
				SizeToolBar(pData, nCount, m_nMRUWidth);
			else
				SizeToolBar(pData, nCount, (dwMode & LM_HORZ) ? 32767 : 0);
		}

		sizeResult = CalcSize(pData, nCount);

		if (dwMode & LM_COMMIT)
		{
			_AFX_CONTROLPOS* pControl = NULL;
			int nControlCount = 0;
			BOOL bIsDelayed = m_bDelayedButtonLayout;
			m_bDelayedButtonLayout = FALSE;

			for (int i = 0; i < nCount; i++)
				if ((pData[i].fsStyle & TBSTYLE_SEP) && (pData[i].idCommand != 0))
					nControlCount++;

			if (nControlCount > 0)
			{
				pControl = new _AFX_CONTROLPOS[nControlCount];
				nControlCount = 0;

				for(int i = 0; i < nCount; i++)
				{
					if ((pData[i].fsStyle & TBSTYLE_SEP) && (pData[i].idCommand != 0))
					{
						pControl[nControlCount].nIndex = i;
						pControl[nControlCount].nID = pData[i].idCommand;

						CRect rect;
						GetItemRect(i, &rect);
						ClientToScreen(&rect);
						pControl[nControlCount].rectOldPos = rect;

						nControlCount++;
					}
				}
			}

			if ((m_dwStyle & CBRS_FLOATING) && (m_dwStyle & CBRS_SIZE_DYNAMIC))
				m_nMRUWidth = sizeResult.cx;
			for (i = 0; i < nCount; i++)
				_SetButton(i, &pData[i]);

			if (nControlCount > 0)
			{
				for (int i = 0; i < nControlCount; i++)
				{
					CWnd* pWnd = GetDlgItem(pControl[i].nID);
					if (pWnd != NULL)
					{
						CRect rect;
						pWnd->GetWindowRect(&rect);
						CPoint pt = rect.TopLeft() - pControl[i].rectOldPos.TopLeft();
						GetItemRect(pControl[i].nIndex, &rect);
						pt = rect.TopLeft() + pt;
						pWnd->SetWindowPos(NULL, pt.x, pt.y, 0, 0, SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOZORDER);
					}
				}
				delete[] pControl;
			}
			m_bDelayedButtonLayout = bIsDelayed;
		}
		delete[] pData;
	}

	//BLOCK: Adjust Margins
	{
		CRect rect; rect.SetRectEmpty();
		CalcInsideRect(rect, (dwMode & LM_HORZ));
		sizeResult.cy -= rect.Height();
		sizeResult.cx -= rect.Width();

		CSize size = CControlBar::CalcFixedLayout((dwMode & LM_STRETCH), (dwMode & LM_HORZ));
		sizeResult.cx = max(sizeResult.cx, size.cx);
		sizeResult.cy = max(sizeResult.cy, size.cy);
	}
	
	return sizeResult;
}

CSize  CGuiToolBarWnd::CalcFixedLayout(BOOL bStretch, BOOL bHorz)
{
	DWORD dwMode = bStretch ? LM_STRETCH : 0;
	dwMode |= bHorz ? LM_HORZ : 0;

	return CalcLayout(dwMode);
}

CSize  CGuiToolBarWnd::CalcDynamicLayout(int nLength, DWORD dwMode)
{
	if ((nLength == -1) && !(dwMode & LM_MRUWIDTH) && !(dwMode & LM_COMMIT) &&
		((dwMode & LM_HORZDOCK) || (dwMode & LM_VERTDOCK)))
	{
		return CalcFixedLayout(dwMode & LM_STRETCH, dwMode & LM_HORZDOCK);
	}
	return CalcLayout(dwMode, nLength);
}

void   CGuiToolBarWnd::_GetButton(int nIndex, TBBUTTON* pButton) const
{
	CGuiToolBarWnd* pBar = (CGuiToolBarWnd*)this;
	VERIFY(pBar->DefWindowProc(TB_GETBUTTON, nIndex, (LPARAM)pButton));
	// TBSTATE_ENABLED == TBBS_DISABLED so invert it
	pButton->fsState ^= TBSTATE_ENABLED;
}

void   CGuiToolBarWnd::_SetButton(int nIndex, TBBUTTON* pButton)
{
	// get original button state
	TBBUTTON button;
	VERIFY(DefWindowProc(TB_GETBUTTON, nIndex, (LPARAM)&button));

	// prepare for old/new button comparsion
	button.bReserved[0] = 0;
	button.bReserved[1] = 0;
	// TBSTATE_ENABLED == TBBS_DISABLED so invert it
	pButton->fsState ^= TBSTATE_ENABLED;
	pButton->bReserved[0] = 0;
	pButton->bReserved[1] = 0;

	// nothing to do if they are the same
	if (memcmp(pButton, &button, sizeof(TBBUTTON)) != 0)
	{
		// don't redraw everything while setting the button
		DWORD dwStyle = GetStyle();
		ModifyStyle(WS_VISIBLE, 0);
		VERIFY(DefWindowProc(TB_DELETEBUTTON, nIndex, 0));
		VERIFY(DefWindowProc(TB_INSERTBUTTON, nIndex, (LPARAM)pButton));
		ModifyStyle(0, dwStyle & WS_VISIBLE);

		// invalidate appropriate parts
		if (((pButton->fsStyle ^ button.fsStyle) & TBSTYLE_SEP) ||
			((pButton->fsStyle & TBSTYLE_SEP) && pButton->iBitmap != button.iBitmap))
		{
			// changing a separator
			Invalidate();
		}
		else
		{
			// invalidate just the button
			CRect rect;
			if (DefWindowProc(TB_GETITEMRECT, nIndex, (LPARAM)&rect))
				InvalidateRect(rect);
		}
	}
}


BOOL CGuiToolBarWnd::IsLeft()
{
	if (nDockBarAling == AFX_IDW_DOCKBAR_LEFT)	return TRUE;
	return FALSE;
}

BOOL CGuiToolBarWnd::IsRight()
{
	if (nDockBarAling == AFX_IDW_DOCKBAR_RIGHT)	return TRUE;
	return FALSE;
}

BOOL CGuiToolBarWnd::IsTop()
{
	if (nDockBarAling == AFX_IDW_DOCKBAR_TOP) return TRUE;
	return FALSE;
}

BOOL CGuiToolBarWnd::IsBottom()
{
	if (nDockBarAling == AFX_IDW_DOCKBAR_BOTTOM) return TRUE;
	return FALSE;
}

BOOL CGuiToolBarWnd::IsVert()
{
	if (IsLeft() || IsRight())	
		return TRUE;
	return FALSE;
}

BOOL CGuiToolBarWnd::IsHorz()
{
	if (IsTop() || IsBottom())	
		return TRUE;
	return FALSE;
}

BOOL CGuiToolBarWnd::IsFloating()
{
	if (nDockBarAling == AFX_IDW_DOCKBAR_FLOAT)	
		return TRUE;
	return FALSE;

}

	



void CGuiToolBarWnd::OnMouseMove(UINT nFlags, CPoint point)
{
	// TODO: Add your message handler code here and/or call default
	int nCountBtn=  nCountBtn = SendMessage (TB_BUTTONCOUNT, 0, 0);
	CRect rc;
	if (!IsTopParentActive() || !GetTopLevelParent()->IsWindowEnabled())
		return;

	for (int i=0; i< nCountBtn; i++)
	{
		GetItemRect(i,rc);
		if (GetButtonStyle(i) == TBBS_SEPARATOR)
			continue;
		else
		{

			if (rc.PtInRect(point) && m_ActualBtn != i)
			{
				m_ActualBtn=i;
				InvalidateRect(rc,TRUE);
				m_rcBtnGlobal=rc;
				m_rcSaveFloat=rc;
			}
			if (m_ActualBtn == i)
				m_rcBtnGlobal=rc;
		}
		
	}
	SetTimer(1, 250, 0);
	CToolBar::OnMouseMove(nFlags, point);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人福利片| 久久99国产精品成人| 欧美精品一卡二卡| 热久久免费视频| 精品国产免费人成在线观看| 精品一区二区在线看| 国产亚洲精品aa午夜观看| 国产成人福利片| 亚洲日穴在线视频| 欧美日韩在线直播| 美洲天堂一区二卡三卡四卡视频| 久久综合网色—综合色88| 不卡av免费在线观看| 亚洲一区在线视频观看| 欧美一区二区黄色| 国产精品1024| 亚洲人精品午夜| 欧美一区二区精品| 成人av在线资源网站| 一区二区成人在线| 日韩欧美二区三区| av亚洲精华国产精华精华| 午夜亚洲福利老司机| 久久综合色一综合色88| 91麻豆产精品久久久久久 | 欧美经典一区二区三区| 97精品久久久午夜一区二区三区| 亚洲第一在线综合网站| 精品福利av导航| 99久久er热在这里只有精品66| 亚洲午夜在线观看视频在线| 欧美成人a∨高清免费观看| 成人av在线观| 日韩精品乱码av一区二区| 国产日本欧洲亚洲| 欧美偷拍一区二区| 国产乱码一区二区三区| 亚洲精品视频一区| 精品福利一区二区三区免费视频| 成人av资源站| 久热成人在线视频| 亚洲男人的天堂在线aⅴ视频| 日韩一区二区三区在线视频| 成人va在线观看| 美腿丝袜亚洲一区| 亚洲欧美激情在线| 精品国产区一区| 欧美在线视频你懂得| 国产一本一道久久香蕉| 偷拍与自拍一区| 国产精品美女久久久久久| 91精品久久久久久久91蜜桃| 99久久综合国产精品| 日韩和欧美一区二区三区| 亚洲欧美在线观看| 日韩欧美亚洲国产精品字幕久久久 | 国产麻豆成人传媒免费观看| 亚洲色大成网站www久久九九| 日韩一区二区三区电影在线观看| 成人ar影院免费观看视频| 免费的成人av| 亚洲最大成人综合| 国产日韩欧美不卡| 日韩视频一区在线观看| 色噜噜狠狠成人中文综合| 国产精品一区二区在线看| 视频一区二区中文字幕| 一区二区三区四区不卡在线 | 亚洲免费观看高清完整版在线观看| 日韩欧美激情一区| 欧美日韩一区二区三区高清| proumb性欧美在线观看| 国产综合久久久久久久久久久久| 五月天丁香久久| 一区二区三区欧美日| 日本一区二区三区电影| 欧美精品一区二区在线播放| 欧美三级视频在线| 色欧美片视频在线观看| av成人动漫在线观看| 国产乱码精品一区二区三区忘忧草 | 欧美日韩一区二区三区四区五区| 波多野结衣的一区二区三区| 韩国精品一区二区| 日本成人在线视频网站| 午夜久久久影院| 亚洲电影在线播放| 一区二区三区在线视频观看| 成人免费视频在线观看| 国产精品久久久久一区| 久久免费电影网| 欧美tk—视频vk| 日韩欧美高清在线| 日韩一级完整毛片| 宅男噜噜噜66一区二区66| 欧美视频在线观看一区二区| 色婷婷一区二区三区四区| 99精品在线观看视频| 不卡视频在线观看| caoporn国产精品| 成人福利视频在线看| 99免费精品在线| 91在线免费看| 91久久线看在观草草青青| 91视视频在线观看入口直接观看www| 成人激情小说乱人伦| 成人在线综合网站| 成人h精品动漫一区二区三区| 粉嫩aⅴ一区二区三区四区| 成人永久免费视频| 福利电影一区二区| www.日韩大片| av亚洲精华国产精华精华| 99九九99九九九视频精品| 色视频欧美一区二区三区| 欧美影院精品一区| 欧美日韩国产一级| 欧美久久高跟鞋激| 欧美一区二区免费视频| 日韩欧美一级片| 久久综合一区二区| 日本一区二区久久| 亚洲人成精品久久久久久| 一区二区视频免费在线观看| 亚洲mv大片欧洲mv大片精品| 日韩电影在线观看网站| 美国十次综合导航| 国产米奇在线777精品观看| 成人小视频免费观看| 色哦色哦哦色天天综合| 88在线观看91蜜桃国自产| 日韩三区在线观看| 国产亚洲一区字幕| 日韩码欧中文字| 亚洲国产欧美一区二区三区丁香婷| 亚洲成人综合网站| 久久99热狠狠色一区二区| 国产在线看一区| av亚洲产国偷v产偷v自拍| 欧美视频日韩视频| 欧美zozo另类异族| 国产精品国产精品国产专区不片 | 亚洲欧美视频一区| 午夜伦欧美伦电影理论片| 久久97超碰国产精品超碰| 不卡的av网站| 欧美卡1卡2卡| 久久亚洲综合色一区二区三区| 国产精品免费丝袜| 五月婷婷综合在线| 国产成人精品三级麻豆| 在线观看视频一区| 欧美大片国产精品| 亚洲欧洲日韩一区二区三区| 偷窥少妇高潮呻吟av久久免费| 国产精品99久久久| 日本高清视频一区二区| 日韩你懂的在线播放| 国产精品二区一区二区aⅴ污介绍| 亚洲国产精品一区二区尤物区| 久久激情五月激情| 99国产精品久久| 日韩欧美电影一二三| 亚洲视频电影在线| 麻豆专区一区二区三区四区五区| 成人自拍视频在线| 在线综合亚洲欧美在线视频| 国产精品久久久久久久浪潮网站| 性久久久久久久| 成人av动漫在线| 日韩一级片网址| 亚洲欧美激情插| 久久不见久久见免费视频7| 一本一本久久a久久精品综合麻豆| 欧美一级高清片在线观看| 中文字幕一区二区三区蜜月 | 欧美日韩黄视频| 国产午夜精品福利| 日韩av午夜在线观看| 91色视频在线| 日韩视频国产视频| 一区二区激情视频| 国产福利91精品一区二区三区| 欧美日韩一级黄| 中文字幕色av一区二区三区| 免费精品视频在线| 91成人网在线| 欧美国产一区视频在线观看| 日韩精品一二三四| 色欧美乱欧美15图片| 国产日产欧美一区| 蜜桃视频免费观看一区| 欧美视频一区在线观看| 国产精品成人一区二区艾草 | 国产a视频精品免费观看| 制服丝袜中文字幕一区| 亚洲乱码国产乱码精品精可以看| 国产酒店精品激情| 777奇米成人网| 亚洲精品大片www|