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

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

?? flatbar.cpp

?? VC界面類編程技巧大全附源碼(DOC)
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
			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]); // **PD** renamed from _SetButton

			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 CFlatToolBar::CalcFixedLayout(BOOL bStretch, BOOL bHorz)
{
	DWORD dwMode = bStretch ? LM_STRETCH : 0;
	dwMode |= bHorz ? LM_HORZ : 0;

	return CalcLayout(dwMode);
}

CSize CFlatToolBar::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);
}

/////////////////////////////////////////////////////////////////////////////
// CToolBar attribute access

// **PD** I renamed this from _GetButton.
//
void CFlatToolBar::GetButton(int nIndex, TBBUTTON* pButton) const
{
	CToolBar* pBar = (CToolBar*)this;
	VERIFY(pBar->SendMessage(TB_GETBUTTON, nIndex, (LPARAM)pButton));
	// TBSTATE_ENABLED == TBBS_DISABLED so invert it
	pButton->fsState ^= TBSTATE_ENABLED;
}

// **PD** I renamed this from _SetButton.
//
void CFlatToolBar::SetButton(int nIndex, TBBUTTON* pButton)
{
	// get original button state
	TBBUTTON button;
	VERIFY(SendMessage(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(SendMessage(TB_DELETEBUTTON, nIndex, 0));
		VERIFY(SendMessage(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(FALSE);
		}
		else
		{
			// invalidate just the button
			CRect rect;
			if (SendMessage(TB_GETITEMRECT, nIndex, (LPARAM)&rect))
				InvalidateRect(rect, FALSE);    // don't erase background
		}
	}
}

////////////////////////////////////////////////////////////////
// End FixTb code.
////////////////////////////////////////////////////////////////

////////////////
// Load override modifies the style after loading toolbar.
//
BOOL CFlatToolBar::LoadToolBar(LPCTSTR lpszResourceName)
{
	if (!CToolBar::LoadToolBar(lpszResourceName))
		return FALSE;
	ModifyStyle(0, TBSTYLE_FLAT); // make it flat
	return TRUE;
}

//#define ILLUSTRATE_DISPLAY_BUG			 // remove comment to see the bug

//////////////////
// MFC doesn't handle moving a TBSTYLE_FLAT toolbar correctly.
// The simplest way to fix it is to repaint the old rectangle and
// toolbar itself whenever the toolbar moves.
// 
void CFlatToolBar::OnWindowPosChanging(LPWINDOWPOS lpwp)
{
	CToolBar::OnWindowPosChanging(lpwp);

#ifndef ILLUSTRATE_DISPLAY_BUG

	if (!(lpwp->flags & SWP_NOMOVE)) {	 // if moved:
		CRect rc;								 //   Fill rectangle with..
		GetWindowRect(&rc);					 //   ..my (toolbar) rectangle.
		CWnd* pParent = GetParent();		 //   get parent (dock bar/frame) win..
		pParent->ScreenToClient(&rc);		 //   .. and convert to parent coords

		// Ask parent window to paint the area beneath my old location.
		// Typically, this is just solid grey. The area won't get painted until
		// I send WM_NCPAINT after the move, in OnWindowPosChanged below.
		//
		pParent->InvalidateRect(&rc);		 // paint old rectangle
	}
#endif
}

//////////////////
// Now toolbar has moved: repaint old area
//
void CFlatToolBar::OnWindowPosChanged(LPWINDOWPOS lpwp)
{
	CToolBar::OnWindowPosChanged(lpwp);

#ifndef ILLUSTRATE_DISPLAY_BUG
	if (!(lpwp->flags & SWP_NOMOVE)) {	 // if moved:
		// Now paint my non-client area at the new location.
		// This is the extra bit of border space surrounding the buttons.
		// Without this, you will still have a partial display bug (try it!)
		//
		SendMessage(WM_NCPAINT);
	}
#endif
}

////////////////////////////////////////////////////////////////
// The following stuff is to make the command update UI mechanism
// work properly for flat tool bars. The main idea is to convert
// a "checked" button state into a "pressed" button state. Changed 
// lines marked with "PD"

void CFlatOrCoolBarCmdUI::Enable(BOOL bOn)
{
	m_bEnableChanged = TRUE;
	CToolBar* pToolBar = (CToolBar*)m_pOther;
	ASSERT(pToolBar != NULL);
	ASSERT_KINDOF(CToolBar, pToolBar);
	ASSERT(m_nIndex < m_nIndexMax);

	UINT nNewStyle = pToolBar->GetButtonStyle(m_nIndex) & ~TBBS_DISABLED;
	if (!bOn)
	{
		nNewStyle |= TBBS_DISABLED;
		// WINBUG: If a button is currently pressed and then is disabled
		// COMCTL32.DLL does not unpress the button, even after the mouse
		// button goes up!  We work around this bug by forcing TBBS_PRESSED
		// off when a button is disabled.
		nNewStyle &= ~TBBS_PRESSED;
	}
	ASSERT(!(nNewStyle & TBBS_SEPARATOR));
	pToolBar->SetButtonStyle(m_nIndex, nNewStyle);
}

// Take your pick:
#define MYTBBS_CHECKED TBBS_CHECKED			// use "checked" state
//#define MYTBBS_CHECKED TBBS_PRESSED		// use pressed state

//////////////////
// This is the only function that has changed: instead of TBBS_CHECKED,
// I use TBBS_PRESSED--PD
//
void CFlatOrCoolBarCmdUI::SetCheck(int nCheck)
{
	ASSERT(nCheck >= 0 && nCheck <= 2); // 0=>off, 1=>on, 2=>indeterminate
	CToolBar* pToolBar = (CToolBar*)m_pOther;
	ASSERT(pToolBar != NULL);
	ASSERT_KINDOF(CToolBar, pToolBar);
	ASSERT(m_nIndex < m_nIndexMax);

	UINT nOldStyle = pToolBar->GetButtonStyle(m_nIndex); // PD
	UINT nNewStyle = nOldStyle &
				~(MYTBBS_CHECKED | TBBS_INDETERMINATE); // PD
	if (nCheck == 1)
		nNewStyle |= MYTBBS_CHECKED; // PD
	else if (nCheck == 2)
		nNewStyle |= TBBS_INDETERMINATE;

	// Following is to fix display bug for TBBS_CHECKED:
	// If new state is unchecked, repaint--but only if style actually changing.
	// (Otherwise will end up with flicker)
	// 
	if (nNewStyle != nOldStyle) {
		ASSERT(!(nNewStyle & TBBS_SEPARATOR));
		pToolBar->SetButtonStyle(m_nIndex, nNewStyle);
		pToolBar->Invalidate();
	}
}

void CFlatOrCoolBarCmdUI::SetText(LPCTSTR)
{
	// ignore for now, but you should really set the text
}

//////////////////
// This function is mostly copied from CToolBar/BARTOOL.CPP. The only thing
// that's different is I instantiated a CFlatOrCoolBarCmdUI instead of
// CToolCmdUI.
//
void CFlatToolBar::OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler)
{
	CFlatOrCoolBarCmdUI state; // <<<< This is the only line that's different--PD
	state.m_pOther = this;

	state.m_nIndexMax = (UINT)DefWindowProc(TB_BUTTONCOUNT, 0, 0);
	for (state.m_nIndex = 0; state.m_nIndex < state.m_nIndexMax; state.m_nIndex++)
	{
		// get button state
		TBBUTTON button;
		VERIFY(DefWindowProc(TB_GETBUTTON, state.m_nIndex, (LPARAM)&button));
		// TBSTATE_ENABLED == TBBS_DISABLED so invert it
		button.fsState ^= TBSTATE_ENABLED;

		state.m_nID = button.idCommand;

		// ignore separators
		if (!(button.fsStyle & TBSTYLE_SEP))
		{
			// allow the toolbar itself to have update handlers
			if (CWnd::OnCmdMsg(state.m_nID, CN_UPDATE_COMMAND_UI, &state, NULL))
				continue;

			// allow the owner to process the update
			state.DoUpdate(pTarget, bDisableIfNoHndler);
		}
	}

	// update the dialog controls added to the toolbar
	UpdateDialogControls(pTarget, bDisableIfNoHndler);
}

//////////////////
// Make the parent frame my owner. This is important for status bar
// prompts to work. Note that when you create the CCoolToolBar in
// CYourCoolBar::OnCreateBands, you must also set CBRS_FLYBY in the
// the CCoolToolBar style!
//

BOOL CFlatToolBar::OnNcCreate(LPCREATESTRUCT lpCreateStruct) 
{
	CFrameWnd* pFrame = GetParentFrame();
	ASSERT_VALID(pFrame);
	SetOwner(pFrame);
	return CToolBar::OnNcCreate(lpCreateStruct);
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 日韩小视频在线观看专区| 91精品国产乱| 欧美国产在线观看| 一区av在线播放| 青青草精品视频| yourporn久久国产精品| 欧美日韩一本到| 国产欧美日韩三区| 亚洲成av人片在线| 国产成人av影院| 欧美精品自拍偷拍| 国产精品毛片大码女人| 日韩不卡一区二区三区| 成人av午夜电影| 91麻豆精品国产91久久久使用方法 | 久久精品噜噜噜成人88aⅴ| 国产福利电影一区二区三区| 欧美中文字幕不卡| 久久蜜桃av一区二区天堂| 亚洲国产一二三| 国产白丝精品91爽爽久久| 欧美日本一区二区| 亚洲欧洲精品一区二区精品久久久| 日韩在线a电影| 91香蕉视频污| 国产亚洲欧美在线| 蜜臀av性久久久久av蜜臀妖精 | 亚洲色图欧美在线| 国产一区二区福利视频| 欧美亚洲高清一区| 国产精品乱码一区二三区小蝌蚪| 日本网站在线观看一区二区三区| 91猫先生在线| 国产日韩综合av| 免费日韩伦理电影| 欧美亚洲免费在线一区| 18成人在线观看| 国产成人av福利| 欧美大片顶级少妇| 天天爽夜夜爽夜夜爽精品视频| av不卡免费在线观看| 久久一日本道色综合| 日本不卡视频一二三区| 欧美在线观看你懂的| 国产精品福利av| 国产a区久久久| 久久天天做天天爱综合色| 奇米777欧美一区二区| 欧美在线不卡视频| 亚洲女爱视频在线| 99久久精品国产毛片| 欧美国产禁国产网站cc| 国产精品亚洲人在线观看| 精品国产一区二区三区久久影院 | 精品区一区二区| 免费观看在线综合色| 欧美另类高清zo欧美| 亚洲国产乱码最新视频| 欧美艳星brazzers| 亚洲蜜臀av乱码久久精品| av在线不卡免费看| 一区在线观看免费| av在线不卡免费看| 亚洲女与黑人做爰| 在线免费观看日本一区| 亚洲美女视频在线| 在线观看91视频| 亚洲一线二线三线视频| 在线观看91视频| 亚洲一级二级三级| 欧美老女人在线| 日本不卡123| 精品久久久久久久久久久院品网| 免费观看一级特黄欧美大片| 日韩亚洲欧美成人一区| 经典一区二区三区| 久久久久国产精品麻豆| 国产成人欧美日韩在线电影| 国产精品视频yy9299一区| www.亚洲国产| 国产精品国产三级国产普通话三级| 成人18精品视频| 亚洲素人一区二区| 成人av中文字幕| 亚洲黄色小视频| av亚洲精华国产精华精华| 国产精品人妖ts系列视频| av亚洲精华国产精华精华| 亚洲精品高清在线| 欧美中文字幕亚洲一区二区va在线| 亚洲一区二区三区在线播放| 欧美丰满一区二区免费视频| 蜜桃一区二区三区在线| 国产亚洲一区二区三区在线观看 | 亚洲女人的天堂| 欧美日韩一级二级三级| 免费不卡在线视频| 国产三级精品视频| 91女神在线视频| 午夜精品久久久久久久99樱桃| 日韩欧美久久一区| 成人精品国产免费网站| 一二三四区精品视频| 欧美一区二区日韩一区二区| 国产精品亚洲一区二区三区妖精| 亚洲欧美在线观看| 欧美日韩国产123区| 九一久久久久久| 国产精品美女久久久久aⅴ| 欧美日韩一卡二卡| 国产一区中文字幕| 欧美国产1区2区| 欧美中文字幕一二三区视频| 免费成人av在线播放| 日韩精品一区二区在线| 99久久综合国产精品| 亚洲狠狠爱一区二区三区| 久久综合久色欧美综合狠狠| 色综合视频一区二区三区高清| 午夜在线成人av| 国产色婷婷亚洲99精品小说| 色欲综合视频天天天| 久久精品国产精品青草| 日韩美女啊v在线免费观看| 欧美在线色视频| 国内成人精品2018免费看| 亚洲天堂久久久久久久| 日韩美女视频在线| 91香蕉视频黄| 久久不见久久见中文字幕免费| 国产精品热久久久久夜色精品三区| 欧洲av在线精品| 国产乱人伦精品一区二区在线观看 | 亚洲欧洲另类国产综合| 4438x成人网最大色成网站| 国产在线精品一区二区不卡了 | 91丝袜国产在线播放| 极品少妇一区二区| 亚洲精品菠萝久久久久久久| 在线播放欧美女士性生活| 成人黄色在线网站| 美女视频黄免费的久久| 一区二区三区国产| 久久久99精品免费观看| 91.com在线观看| 一本色道久久综合亚洲aⅴ蜜桃 | 18成人在线视频| 久久久av毛片精品| 91精品国产一区二区人妖| av午夜精品一区二区三区| 麻豆精品一区二区av白丝在线| 一区二区三区在线不卡| 亚洲国产岛国毛片在线| 91精品国产综合久久小美女| 99久久久久免费精品国产| 国产麻豆精品theporn| 日韩精品福利网| 亚洲最新在线观看| 日韩久久一区二区| 国产精品久久综合| 国产精品污www在线观看| 精品国产3级a| 日韩精品专区在线| 欧美一区二区三区白人| 欧美日韩中文一区| 欧美中文字幕不卡| 在线精品观看国产| 91美女视频网站| av动漫一区二区| av一二三不卡影片| 成人高清av在线| 国产suv精品一区二区三区| 国产在线播放一区| 国产一区久久久| 极品少妇xxxx偷拍精品少妇| 久久精品国产99国产| 美女视频一区在线观看| 久久99久久精品| 久久国产夜色精品鲁鲁99| 毛片一区二区三区| 日产精品久久久久久久性色 | 欧美喷水一区二区| 99久久精品国产毛片| 成人免费视频网站在线观看| 国产一区不卡精品| 国产一区二区伦理片| 国产成人午夜视频| 九九精品视频在线看| 蜜臀av一区二区在线观看| 免费观看一级特黄欧美大片| 秋霞影院一区二区| 激情综合网av| 国产真实乱对白精彩久久| 国模大尺度一区二区三区| 国产电影一区在线| a级高清视频欧美日韩| 色婷婷综合久久久| 欧美视频你懂的| 91精品蜜臀在线一区尤物|