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

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

?? coolcontrolbar.cpp

?? C++開發完整酒店管理系統
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*########################################################################
	Filename: 	CoolControlbar.cpp
	----------------------------------------------------
	Remarks:	...
	----------------------------------------------------
	Author:		成真
	Email:		anyou@sina.com
				anyou@msn.com
	Created:	7/3/2003 21:52
  ########################################################################*/
#include "stdafx.h"
#include "resource.h"
#include "CoolControlBar.h"

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


CCoolBarArray CCoolControlBar::m_arrBars; 

/*########################################################################
			  ------------------------------------------------
								  class CCoolControlBar
			  ------------------------------------------------
  ########################################################################*/

CCoolControlBar::CCoolControlBar()
{
	m_bTracking = FALSE;
	m_bParentSizing = FALSE;
}

CCoolControlBar::~CCoolControlBar()
{

}

BOOL CCoolControlBar::Create(CWnd *pParentWnd, CSize size, UINT dwStyle, UINT uID)
{
	ASSERT_VALID(pParentWnd);
	ASSERT( (dwStyle & CBRS_ALIGN_ANY) == CBRS_ALIGN_TOP    ||
			(dwStyle & CBRS_ALIGN_ANY) == CBRS_ALIGN_BOTTOM ||
			(dwStyle & CBRS_ALIGN_ANY) == CBRS_ALIGN_LEFT   ||
			(dwStyle & CBRS_ALIGN_ANY) == CBRS_ALIGN_RIGHT);
	
    ASSERT (!((dwStyle & CBRS_SIZE_FIXED) && (dwStyle & CBRS_SIZE_DYNAMIC)));
	
	m_dwStyle = (dwStyle & CBRS_ALL);
	// keep only the generic window styles--------------
	dwStyle &= ~CBRS_ALL;
	// force WS_CLIPSIBLINGS (otherwise will cause repaint problems)---
	dwStyle |= WS_CLIPSIBLINGS;
	
	BOOL bRets = CControlBar::Create(NULL, NULL, dwStyle, 
		CRect(0, 0, 0, 0), pParentWnd, uID, NULL);
	if (bRets)
	{
		m_szDefault = size;    
		m_szHorz	= size;
		m_szVert	= size;
		m_szFloat   = size;
		
		// force the size to zero - resizing bar will occur later----------
		SetWindowPos(NULL, 0, 0, 0, 0, SWP_NOZORDER | SWP_NOACTIVATE | SWP_SHOWWINDOW);
	}
	return bRets;
}

BOOL CCoolControlBar::DestroyWindow() 
{
    int nPos = FindCoolBar(this);
    ASSERT(nPos >= 0);
    m_arrBars.RemoveAt(nPos);
	
	return CControlBar::DestroyWindow();
}

CSize CCoolControlBar::CalcFixedLayout(BOOL bStretch, BOOL bHorz)
{
	if (bStretch) 
	{
		return CSize(bHorz ? 32767 : m_szVert.cx, bHorz ? m_szHorz.cy : 32767);
	}
	else
	{
		// dirty cast - using CCoolDockBar to access protected CDockBar members
		CFriendDockBar* pDockBar = (CFriendDockBar*)m_pDockBar;
		if (pDockBar != NULL)
		{
			// force imediate RecalcDelayShow() for all sizing bars on the row
			// with delayShow/delayHide flags set to avoid IsVisible() problems
			CCoolBarArray arrCoolBars;
			GetCoolBars(arrCoolBars);
			AFX_SIZEPARENTPARAMS layout;
			layout.hDWP = pDockBar->m_bLayoutQuery ? NULL 
				: ::BeginDeferWindowPos(arrCoolBars.GetSize());
			for (int i = 0; i < arrCoolBars.GetSize(); i++)
			{
				arrCoolBars[i]->RecalcDelayShow(&layout);
			}
			
			if (layout.hDWP != NULL)
			{
				::EndDeferWindowPos(layout.hDWP);
			}
			if (IsVisible() && !IsFloating() && m_bParentSizing && arrCoolBars[0] == this)
			{
				m_bParentSizing = FALSE;

				CRect rc = pDockBar->m_rectLayout;
				if (rc.IsRectEmpty())
				{
					m_pDockSite->GetClientRect(&rc);
				}
				
				int nLengthAvail = bHorz ? rc.Width() + 2 : rc.Height();
				if (AutoSize(nLengthAvail, bHorz))
				{
					AutoAlign();
				}
			}
		}
		return bHorz ? m_szHorz : m_szVert;
	}
}

CSize CCoolControlBar::CalcDynamicLayout(int nLength, DWORD dwMode)
{
	if (dwMode & (LM_HORZDOCK | LM_VERTDOCK)) // docked ?
    {
		if (nLength == -1) m_bParentSizing = TRUE;
        return CControlBar::CalcDynamicLayout(nLength, dwMode);
    }

    if (dwMode & LM_MRUWIDTH) return m_szFloat;
    if (dwMode & LM_COMMIT)   return m_szFloat; // already committed

    ((dwMode & LM_LENGTHY) ? m_szFloat.cy : m_szFloat.cx) = nLength;

    m_szFloat.cx = max(m_szFloat.cx, m_szDefault.cx);
    m_szFloat.cy = max(m_szFloat.cy, m_szDefault.cy);

   return m_szFloat;
}

IMPLEMENT_DYNAMIC(CCoolControlBar, CControlBar);

/*########################################################################
			  ------------------------------------------------
								Message handlers
			  ------------------------------------------------
  ########################################################################*/

BEGIN_MESSAGE_MAP(CCoolControlBar, CControlBar)
//{{AFX_MSG_MAP(CCoolControlBar)
	ON_WM_NCCALCSIZE()
	ON_WM_NCPAINT()
	ON_WM_ERASEBKGND()
	ON_WM_NCLBUTTONDOWN()
	ON_WM_WINDOWPOSCHANGING()
	ON_WM_NCHITTEST()
	ON_WM_MOUSEMOVE()
	ON_WM_LBUTTONUP()
	ON_WM_CREATE()
	ON_WM_PAINT()
	ON_WM_NCLBUTTONUP()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

int CCoolControlBar::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
    m_arrBars.Add(this);
	if (CControlBar::OnCreate(lpCreateStruct) == -1)
	{
		return -1;
	}
	return 0;
}

void CCoolControlBar::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos) 
{
	// force non-client recalc if moved or resized
    lpwndpos->flags |= SWP_FRAMECHANGED;
	CControlBar::OnWindowPosChanging(lpwndpos);
}

void CCoolControlBar::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp) 
{
	CRect rect = lpncsp->rgrc[0];

	BOOL bALignLeft   = (m_dwStyle & CBRS_ALIGN_LEFT  );
	BOOL bALignRight  = (m_dwStyle & CBRS_ALIGN_RIGHT );
	BOOL bALignTop    = (m_dwStyle & CBRS_ALIGN_TOP   );
	BOOL bALignBottom = (m_dwStyle & CBRS_ALIGN_BOTTOM);

	if ((m_dwStyle & CBRS_FLOATING) != CBRS_FLOATING)
	{
		if (m_pDockBar != NULL)
		{
			rect.DeflateRect(5, 5);
		}
		else
		{
			if (bALignLeft) rect.DeflateRect(1, 1, 3, 0);
			else if (bALignRight) rect.DeflateRect(3, 0, 1, 0);
			else if (bALignTop) rect.DeflateRect(0, 0, 0, 3);
			else rect.DeflateRect(0, 3, 0, 0);
		}

		if (m_dwStyle & CBRS_TITLEBAR)
		{
			(IsHorizontal() ? rect.left : rect.top) += 16;
		}
	}

    lpncsp->rgrc[0] = rect;	
}

void CCoolControlBar::OnNcPaint() 
{
    CWindowDC dc(this);
	dc.SetBkMode(TRANSPARENT);
	
    CRect rcClient, rcWindow;
    GetWindowRect(&rcWindow);
    GetClientRect(&rcClient);
	ClientToScreen(&rcClient);
    rcClient.OffsetRect(-rcWindow.TopLeft());
    rcWindow.OffsetRect(-rcWindow.TopLeft());

	//填充背景-----------------------------------------
	if (rcClient.bottom > rcClient.top && rcClient.right > rcClient.left)
	{
		 dc.ExcludeClipRect(rcClient);
	}
	dc.FillSolidRect(rcWindow, ::GetSysColor(COLOR_3DFACE));
	
	//繪制邊框-----------------------------------------
	if (m_pDockBar != NULL)
	{
		dc.Draw3dRect(rcWindow, RGB(128, 128, 128), RGB(255, 255, 255));
		rcWindow.DeflateRect(1, 1);
		dc.Draw3dRect(rcWindow, RGB(255, 255, 255), RGB(128, 128, 128));
	}
	
	//繪制標題欄---------------------------------------
	if (m_dwStyle & CBRS_TITLEBAR)
	{
		CRect rcTitleBar(rcWindow);
		if (IsHorizontal())
		{
			rcTitleBar.right = rcTitleBar.left + 19;
			rcTitleBar.DeflateRect(0, 4);
			if (m_pDockBar == NULL)
			{
				rcTitleBar.OffsetRect(-2, 0);
			}

			m_rcCloseButton.right = rcTitleBar.right - 1;
			m_rcCloseButton.top   = rcTitleBar.top + 1;
		}
		else
		{
			rcTitleBar.bottom = rcTitleBar.top + 19;
			rcTitleBar.DeflateRect(4, 0);
			if (m_pDockBar == NULL)
			{
				rcTitleBar.OffsetRect(0, -2);
			}
			m_rcCloseButton.right = rcTitleBar.right - 1;
			m_rcCloseButton.top   = rcTitleBar.top + 4;
		}
		m_rcCloseButton.left = m_rcCloseButton.right - 12;
		m_rcCloseButton.bottom = m_rcCloseButton.top + 12;

		DrawTitleBar(&dc, rcTitleBar, IsHorizontal());
		DrawCloseButton(&dc, m_dwButtonState);
	}
	
	ReleaseDC(&dc);
}

void CCoolControlBar::OnPaint() 
{
	CPaintDC dc(this); 
}

BOOL CCoolControlBar::OnEraseBkgnd(CDC* pDC) 
{
	CRect rect;
	GetClientRect(&rect);
	pDC->FillSolidRect(rect, ::GetSysColor(COLOR_3DFACE));
	return CControlBar::OnEraseBkgnd(pDC);
}

UINT CCoolControlBar::OnNcHitTest(CPoint point) 
{
	if (IsFloating())
	{
		return CControlBar::OnNcHitTest(point);
	}

    CRect rcWindow, rcTrack;
    GetWindowRect(rcWindow);

	if (m_dwStyle & CBRS_TITLEBAR)
	{
		CRect rc(m_rcCloseButton);
		rc.OffsetRect(rcWindow.TopLeft());
		if (rc.PtInRect(point))
		{
			return HTCLOSE;
		}
	}
	
	for (int i = 0; i < 4; i++)
	{
		if (GetTrackRect(rcTrack, i) && rcTrack.PtInRect(point)) 
		{
			switch (i) 
			{
				case 0:  return HTLEFT;	  break;
				case 1:  return HTTOP; 	  break;
				case 2:  return HTRIGHT;  break;
				case 3:  return HTBOTTOM; break;
			}
		}
	}
	
	return HTCLIENT; 
}

void CCoolControlBar::OnNcLButtonDown(UINT nHitTest, CPoint point) 
{
	if (IsFloating())
	{
		CControlBar::OnNcLButtonDown(nHitTest, point);
		return;
	}
	
	if ((nHitTest >= HTSIZEFIRST) && (nHitTest <= HTSIZELAST))
	{
		SetCapture();
		m_bTracking  = TRUE;
		m_bTrackType = nHitTest;
		m_oldPoint   = point;
	}
}

void CCoolControlBar::OnNcLButtonUp(UINT nHitTest, CPoint point) 
{
	if (nHitTest == HTCLOSE)
	{
		GetParentFrame()->ShowControlBar(this, FALSE, FALSE);
		return;
	}	
	CControlBar::OnNcLButtonUp(nHitTest, point);
}

void CCoolControlBar::OnMouseMove(UINT nFlags, CPoint point) 
{
	if (m_bTracking)
	{
		ClientToScreen(&point);
		UpdateWndSize(point);
	}
	CControlBar::OnMouseMove(nFlags, point);
}

void CCoolControlBar::OnLButtonUp(UINT nFlags, CPoint point) 
{
	ReleaseCapture();
	if (m_bTracking)
	{
		m_bTracking = FALSE;
		return;
	}
	CControlBar::OnLButtonUp(nFlags, point);
}

void CCoolControlBar::OnUpdateCmdUI(CFrameWnd *pTarget, BOOL bDisableIfNoHndler)
{
	CPoint point;
    ::GetCursorPos(&point);
	CRect rcWindow;
	GetWindowRect(&rcWindow);
	point = point - rcWindow.TopLeft();

	DWORD dwoldState = m_dwButtonState;
	m_dwButtonState = m_rcCloseButton.PtInRect(point) ?
				((::GetKeyState(VK_LBUTTON) < 0) ? 2 : 1) : 0;
	// if need paint---------------------------------------
    if (dwoldState != m_dwButtonState)
	{
        SendMessage(WM_NCPAINT);
	}	
}

/*########################################################################
			  ------------------------------------------------
						
			  ------------------------------------------------
  ########################################################################*/

BOOL CCoolControlBar::GetTrackRect(CRect& rcTrack, int nEdge)
{
	CRect rcWindow;
    GetWindowRect(rcWindow);
    rcTrack = rcWindow;
	
	BOOL bAtStart = TRUE;
	BOOL bAtEnd   = TRUE;

	if (m_pDockBar != NULL)
	{
		CCoolBarArray arrCoolBars;
		GetCoolBars  (arrCoolBars);
		bAtStart  =  (arrCoolBars[0] == this);
		bAtEnd    =  (arrCoolBars[arrCoolBars.GetSize() - 1] == this);
	}

	BOOL bALignLeft   = (m_dwStyle & CBRS_ALIGN_LEFT  );
	BOOL bALignRight  = (m_dwStyle & CBRS_ALIGN_RIGHT );
	BOOL bALignTop    = (m_dwStyle & CBRS_ALIGN_TOP   );
	BOOL bALignBottom = (m_dwStyle & CBRS_ALIGN_BOTTOM);
	
    BOOL bHorz = IsHorizontal();
	
    switch (nEdge)
    {
	case 0:
		{
			if (!bALignRight) return FALSE;
			rcTrack.right = rcTrack.left + SIZING_WIDTH;
		}
		break;
	case 1:
		{
			if (!bALignBottom) return FALSE;
			rcTrack.bottom = rcTrack.top + SIZING_WIDTH;
		}
		break;
	case 2:
		{
			if (bALignRight || (bAtEnd && (bALignTop || bALignBottom))) return FALSE;
			rcTrack.left = rcTrack.right - SIZING_WIDTH;
		}
		break;
	case 3:
		{
			if (bALignBottom || (bAtEnd && (bALignLeft || bALignRight))) return FALSE;
			rcTrack.top = rcTrack.bottom - SIZING_WIDTH;
		}
		break;
    default:
        ASSERT(FALSE); // invalid hit test code
    }
    return TRUE;
}

void CCoolControlBar::UpdateWndSize(CPoint point)
{
	ASSERT(m_bTracking);
	if (!m_bTracking) return;
	BOOL bHorz = IsHorizontal();
	
	CSize szOld = (bHorz ? m_szHorz : m_szVert);
	CSize szNew = szOld;

	//僅在控制欄所在的行內改變大小--------------------------
	if ((m_bTrackType == HTRIGHT && bHorz) || (m_bTrackType == HTBOTTOM && !bHorz))
	{
		CCoolBarArray arrCoolBars;
		GetCoolBars(arrCoolBars);
		//取得與它相鄰的下一條控制條的指針------------------
		for (int i = 0; i < arrCoolBars.GetSize(); i++)
		{
			if (arrCoolBars.GetAt(i) == this) break;
		}
		CCoolControlBar *pCoolBar = arrCoolBars.GetAt(i + 1);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久尤物电影视频在线观看| 成人精品视频一区二区三区尤物| 成人精品免费看| 欧美激情一区二区三区四区 | 欧美激情在线一区二区三区| 亚洲你懂的在线视频| 久久综合九色综合久久久精品综合| 一区二区三区四区蜜桃| 色诱亚洲精品久久久久久| 中文字幕一区二区三区蜜月 | 午夜精品久久久久久久蜜桃app| 尤物av一区二区| 国产精品亚洲专一区二区三区| a级高清视频欧美日韩| 日韩亚洲欧美一区| 亚洲成人综合网站| 99riav久久精品riav| 久久亚洲精华国产精华液| 亚洲成人av一区二区| 岛国精品在线播放| 日韩视频一区二区在线观看| 久久久精品天堂| 在线国产电影不卡| 国产日韩欧美精品综合| 亚洲成人av在线电影| 色就色 综合激情| 国产精品国产三级国产aⅴ入口| 人人爽香蕉精品| 在线不卡一区二区| 午夜久久电影网| 在线播放一区二区三区| 亚洲资源在线观看| 欧美图片一区二区三区| 一二三四社区欧美黄| 色呦呦国产精品| 99国内精品久久| 一区二区三区四区蜜桃| 欧美在线色视频| 精品国产欧美一区二区| 中文字幕不卡的av| 国产精品三级av在线播放| 日韩欧美专区在线| 欧美网站大全在线观看| 99v久久综合狠狠综合久久| 日韩经典中文字幕一区| 亚洲sss视频在线视频| 一区二区三区精品视频| 国产原创一区二区三区| 精品粉嫩超白一线天av| 国内国产精品久久| 久久久午夜电影| 成人久久18免费网站麻豆| 2024国产精品| 日本一区二区免费在线观看视频 | 日本中文字幕一区二区视频| a美女胸又www黄视频久久| 久久午夜色播影院免费高清| 国产精品系列在线播放| 国产精品久久久久久亚洲毛片| 成人一区二区三区在线观看| 亚洲精品成人悠悠色影视| 91精品婷婷国产综合久久竹菊| 国产高清久久久久| 一区二区三区欧美日| 91精品国产高清一区二区三区蜜臀| 老司机免费视频一区二区| 中文无字幕一区二区三区| 欧美日韩在线综合| 国内精品久久久久影院薰衣草| 国产精品国产三级国产有无不卡 | 久久精品一区二区三区四区| 91亚洲资源网| 久久99深爱久久99精品| 国产精品久久夜| 日韩一级二级三级精品视频| 丁香另类激情小说| 日韩国产欧美三级| 国产精品免费免费| 777色狠狠一区二区三区| 懂色一区二区三区免费观看| 日韩国产在线观看| 中文字幕中文字幕在线一区 | 国产视频在线观看一区二区三区| 综合色天天鬼久久鬼色| 91麻豆精品秘密| 黄色日韩网站视频| 亚洲不卡av一区二区三区| 久久久久久麻豆| 欧美蜜桃一区二区三区| 99精品偷自拍| 国产99精品视频| 久久99久国产精品黄毛片色诱| 亚洲免费观看高清完整| 国产片一区二区三区| 日韩三区在线观看| 欧美精品久久99久久在免费线| 99视频热这里只有精品免费| 国产成人午夜高潮毛片| 蜜桃视频在线观看一区| 日韩精品三区四区| 亚洲一区视频在线| 亚洲免费资源在线播放| 国产精品久久毛片av大全日韩| 久久久美女毛片 | 欧美性xxxxxxxx| 91色乱码一区二区三区| av综合在线播放| 成人性视频免费网站| 国产成人精品aa毛片| 国产伦理精品不卡| 国产精品一区三区| 懂色av一区二区三区蜜臀 | 国产欧美日韩精品一区| 国产精品一线二线三线精华| 亚洲国产精品精华液网站| 亚洲欧美激情视频在线观看一区二区三区 | 成人成人成人在线视频| 久久综合久久99| av不卡在线播放| 日本视频一区二区三区| 国产精品私房写真福利视频| 国产一区二区福利| 精品99一区二区三区| 精品国产乱码久久久久久图片| 日韩欧美你懂的| 久久综合九色综合97婷婷女人| 日韩一区二区麻豆国产| 精品国产99国产精品| 国产精品三级在线观看| 亚洲精品国产第一综合99久久 | 99久久国产综合精品女不卡| av亚洲精华国产精华| av在线不卡网| 欧美国产国产综合| 欧美www视频| 国产日产精品1区| 亚洲精品videosex极品| 亚洲国产综合91精品麻豆 | 亚洲一区国产视频| 亚洲h在线观看| 精品在线播放午夜| av亚洲产国偷v产偷v自拍| 欧美午夜精品久久久久久超碰| 欧美一二三四在线| 欧美国产精品一区二区| 亚洲国产色一区| 国产一本一道久久香蕉| 色婷婷综合视频在线观看| 911国产精品| 中文字幕电影一区| 五月天视频一区| 综合电影一区二区三区| 亚洲精品水蜜桃| voyeur盗摄精品| 久久精品视频一区二区三区| 国产精品无码永久免费888| 一区二区三区高清不卡| 蜜臀精品久久久久久蜜臀 | 亚洲成人动漫在线观看| 黄色精品一二区| 欧美日韩国产在线观看| 中文字幕在线观看一区二区| 亚洲欧美偷拍另类a∨色屁股| 尤物视频一区二区| 国产精品99久久久| 欧美高清性hdvideosex| 欧美高清在线视频| 久久精品国产99久久6| 欧美主播一区二区三区美女| 国产午夜精品久久久久久免费视| 日韩国产在线观看一区| 色诱亚洲精品久久久久久| 日本一区二区三区高清不卡 | 日本韩国精品在线| 久久人人超碰精品| 亚洲国产成人porn| 色综合av在线| 亚洲视频狠狠干| 成人高清视频在线观看| 久久久久国产精品麻豆| 美女一区二区久久| 国产精品不卡一区| 国产一区二区视频在线| 欧美理论电影在线| 欧美系列一区二区| 成人精品免费看| 久久99精品国产麻豆婷婷| 久久精品国产免费| 欧美视频在线观看一区二区| 亚洲欧洲精品一区二区三区不卡| 国产一区高清在线| 亚洲精品老司机| 99久久99久久精品免费看蜜桃| 久久影院午夜片一区| 韩国精品主播一区二区在线观看 | 免费高清视频精品| 在线观看91精品国产麻豆| 亚洲成人福利片| 7777精品伊人久久久大香线蕉经典版下载 | 国产高清视频一区|