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

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

?? rollupctrl.cpp

?? 一個比較完整的酒店管理系統(tǒng)
?? CPP
?? 第 1 頁 / 共 2 頁
字號:


//---------------------------------------------------------------------------
// Function name	: MovePageAt
// Description		: newidx can be equal to -1 (move at end)
//					  Return -1 if an error occurs
//---------------------------------------------------------------------------
int CRollupCtrl::MovePageAt(int idx, int newidx)
{
	if (idx==newidx)									return -1;
	if (idx>=m_PageList.GetSize() || idx<0)				return -1;

	if (newidx>0 && newidx>=m_PageList.GetSize())		newidx=-1;

	//Remove page from its old position
	RC_PAGEINFO* pi = m_PageList[idx];
	m_PageList.RemoveAt(idx);

	//Insert at its new position
	int retidx;
	if (newidx<0)	retidx = m_PageList.Add(pi);
	else	{ m_PageList.InsertAt(newidx, pi); retidx=newidx; }


	//Update
	RecalLayout();
	
	return retidx;
}


//---------------------------------------------------------------------------
// Function name	: IsPageExpanded
// Description		: 
//---------------------------------------------------------------------------
BOOL CRollupCtrl::IsPageExpanded(int idx)
{
	if (idx>=m_PageList.GetSize() || idx<0)				return FALSE;
	return m_PageList[idx]->bExpanded;
}

//---------------------------------------------------------------------------
// Function name	: IsPageEnabled
// Description		: 
//---------------------------------------------------------------------------
BOOL CRollupCtrl::IsPageEnabled(int idx)
{
	if (idx>=m_PageList.GetSize() || idx<0)				return FALSE;
	return m_PageList[idx]->bEnable;
}


//---------------------------------------------------------------------------
// Function name	: RecalLayout
// Description		: 
//---------------------------------------------------------------------------
void CRollupCtrl::RecalLayout()
{
	//Check StartPosY
	CRect r; GetClientRect(&r);
	int BottomPagePos = m_nStartYPos+m_nPageHeight;

	if (BottomPagePos<r.Height())		m_nStartYPos = r.Height()-m_nPageHeight;
	if (m_nStartYPos>0)					m_nStartYPos = 0;


	//Update layout
	HDWP hdwp = BeginDeferWindowPos(m_PageList.GetSize()*3);	//*3 for pwndButton+pwndTemplate+pwndGroupBox

	int posy=m_nStartYPos;

	for (int i=0; i<m_PageList.GetSize(); i++){
		RC_PAGEINFO* pi = m_PageList[i];

		//Enable-Disable Button
		pi->pwndButton->SetCheck(pi->bEnable&pi->bExpanded);
		pi->pwndButton->EnableWindow(pi->bEnable);

		//Expanded
		if (pi->bExpanded && pi->bEnable) {
			CRect tr; pi->pwndTemplate->GetWindowRect(&tr);

			//Update GroupBox position and size
			DeferWindowPos(hdwp, pi->pwndGroupBox->m_hWnd, 0, 2, posy, r.Width()-3-RC_SCROLLBARWIDTH, tr.Height()+RC_PGBUTTONHEIGHT+RC_GRPBOXINDENT-4, SWP_NOZORDER|SWP_SHOWWINDOW);

			//Update Template position and size
			DeferWindowPos(hdwp, pi->pwndTemplate->m_hWnd, 0, RC_GRPBOXINDENT, posy+RC_PGBUTTONHEIGHT, r.Width()-RC_SCROLLBARWIDTH-(RC_GRPBOXINDENT*2), tr.Height(), SWP_NOZORDER|SWP_SHOWWINDOW);

			//Update Button's position and size
			DeferWindowPos(hdwp, pi->pwndButton->m_hWnd, 0, RC_GRPBOXINDENT, posy, r.Width()-RC_SCROLLBARWIDTH-(RC_GRPBOXINDENT*2), RC_PGBUTTONHEIGHT, SWP_NOZORDER|SWP_SHOWWINDOW);

			posy+=tr.Height()+RC_PGBUTTONHEIGHT;

		//Collapsed
		} else {

			//Update GroupBox position and size
			DeferWindowPos(hdwp, pi->pwndGroupBox->m_hWnd, 0, 2, posy, r.Width()-3-RC_SCROLLBARWIDTH, 16,SWP_NOZORDER|SWP_SHOWWINDOW);

			//Update Template position and size
			DeferWindowPos(hdwp, pi->pwndTemplate->m_hWnd, 0, RC_GRPBOXINDENT, 0, 0, 0,SWP_NOZORDER|SWP_HIDEWINDOW|SWP_NOSIZE|SWP_NOMOVE);

			//Update Button's position and size
			DeferWindowPos(hdwp, pi->pwndButton->m_hWnd, 0, RC_GRPBOXINDENT, posy, r.Width()-RC_SCROLLBARWIDTH-(RC_GRPBOXINDENT*2), RC_PGBUTTONHEIGHT, SWP_NOZORDER|SWP_SHOWWINDOW);

			posy+=RC_PGBUTTONHEIGHT;
		}

		posy+=(RC_GRPBOXINDENT/2);

	}
	EndDeferWindowPos(hdwp);


	//Update Scroll Bar
	CRect br = CRect(r.right-RC_SCROLLBARWIDTH,r.top, r.right, r.bottom);
	InvalidateRect(&br, FALSE);
	UpdateWindow();
}

//---------------------------------------------------------------------------
// Function name	: GetPageIdxFromButtonHWND
// Description		: Return -1 if matching hwnd not found
//---------------------------------------------------------------------------
int CRollupCtrl::GetPageIdxFromButtonHWND(HWND hwnd)
{
	//Search matching button's hwnd
	for (int i=0; i<m_PageList.GetSize(); i++)
		if (hwnd==m_PageList[i]->pwndButton->m_hWnd)		return i;

	return -1;
}

//---------------------------------------------------------------------------
// Function name	: GetPageInfo
// Description		: Return -1 if an error occurs
//---------------------------------------------------------------------------
RC_PAGEINFO* CRollupCtrl::GetPageInfo(int idx)
{
	if (idx>=m_PageList.GetSize() || idx<0)				return (RC_PAGEINFO*)-1;

	return m_PageList[idx];
}


//---------------------------------------------------------------------------
// Dialog SubClasser
//---------------------------------------------------------------------------
LRESULT CALLBACK CRollupCtrl::DlgWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	RC_PAGEINFO* pi		= (RC_PAGEINFO*)GetWindowLong(hWnd, GWL_USERDATA);
	CRollupCtrl* _this	= (CRollupCtrl*)GetWindowLong(hWnd, DWL_USER);

	CRect r; _this->GetClientRect(&r);
	if (_this->m_nPageHeight>r.Height())	//Can Scroll ?
	{

		switch (uMsg) {

			case WM_LBUTTONDOWN:
			case WM_MBUTTONDOWN:
			{
				CPoint pos; GetCursorPos(&pos);
				_this->m_nOldMouseYPos = pos.y;
				::SetCapture(hWnd);
			return 0;
			}

			case WM_LBUTTONUP:
			case WM_MBUTTONUP:
			{
				if (::GetCapture() == hWnd)	{ ::ReleaseCapture(); return 0; }
			break;
			}

			case WM_MOUSEMOVE:
			{
				if ((::GetCapture() == hWnd) && (wParam==MK_LBUTTON || wParam==MK_MBUTTON)) {
					CPoint pos; GetCursorPos(&pos);
					_this->m_nStartYPos+=(pos.y-_this->m_nOldMouseYPos);
					_this->RecalLayout();
					_this->m_nOldMouseYPos = pos.y;
					return 0;
				}

			break;
			}

			case WM_SETCURSOR:
				if ((HWND)wParam==hWnd)	{ ::SetCursor(::LoadCursor(NULL, RC_ROLLCURSOR)); return TRUE; }
			break;

		}//switch(uMsg)
	}

	return ::CallWindowProc(pi->pOldDlgProc, hWnd, uMsg, wParam, lParam);
}


//---------------------------------------------------------------------------
// Button SubClasser
//---------------------------------------------------------------------------
LRESULT CALLBACK CRollupCtrl::ButWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	if (uMsg==WM_SETFOCUS)		return FALSE;

	RC_PAGEINFO* pi	= (RC_PAGEINFO*)GetWindowLong(hWnd, GWL_USERDATA);
	return ::CallWindowProc(pi->pOldButProc, hWnd, uMsg, wParam, lParam);
}


/////////////////////////////////////////////////////////////////////////////
// CRollupCtrl message handlers

//---------------------------------------------------------------------------
// OnCommand
//---------------------------------------------------------------------------
BOOL CRollupCtrl::OnCommand(WPARAM wParam, LPARAM lParam) 
{
	//PopupMenu command ExpandAllPages
	if		(LOWORD(wParam)==RC_IDM_EXPANDALL)			ExpandAllPages(TRUE);
	else if	(LOWORD(wParam)==RC_IDM_COLLAPSEALL)		ExpandAllPages(FALSE);

	//PopupMenu command ExpandPage
	else if (LOWORD(wParam)>=RC_IDM_STARTPAGES
		&&	 LOWORD(wParam)<RC_IDM_STARTPAGES+GetPagesCount())
	{
		int idx = LOWORD(wParam)-RC_IDM_STARTPAGES;
		ExpandPage(idx, !IsPageExpanded(idx) );
	}

	//Button command
	else if (HIWORD(wParam)==BN_CLICKED)
	{
		int idx = GetPageIdxFromButtonHWND((HWND)lParam);
		if (idx!=-1) {
			RC_PAGEINFO* pi = m_PageList[idx];
			ExpandPage(idx, !pi->bExpanded);
			return 0;
		}
	}

	return CWnd::OnCommand(wParam, lParam);
}

//---------------------------------------------------------------------------
// OnPaint
//---------------------------------------------------------------------------
void CRollupCtrl::OnPaint() 
{
	CPaintDC dc(this);

	//Draw ScrollBar
	CRect r; GetClientRect(&r);
	CRect br = CRect(r.right-RC_SCROLLBARWIDTH,r.top, r.right, r.bottom);
	dc.DrawEdge(&br, EDGE_RAISED, BF_RECT  );

	int SB_Pos	= 0;
	int SB_Size = 0;
	int ClientHeight = r.Height()-4;

	if (m_nPageHeight>r.Height()) {
		SB_Size = ClientHeight-(((m_nPageHeight-r.Height())*ClientHeight)/m_nPageHeight);
		SB_Pos	= -(m_nStartYPos*ClientHeight)/m_nPageHeight;
	} else {
		SB_Size = ClientHeight;
	}

	br.left		+=2;
	br.right	-=1;
	br.top		= SB_Pos+2;
	br.bottom	= br.top+SB_Size;

	dc.FillSolidRect(&br, RC_SCROLLBARCOLOR);
	dc.FillSolidRect(CRect(br.left,2,br.right,br.top), RGB(0,0,0));
	dc.FillSolidRect(CRect(br.left,br.bottom,br.right,2+ClientHeight), RGB(0,0,0));

	// Do not call CWnd::OnPaint() for painting messages
}

//---------------------------------------------------------------------------
// OnSize
//---------------------------------------------------------------------------
void CRollupCtrl::OnSize(UINT nType, int cx, int cy) 
{
	CWnd::OnSize(nType, cx, cy);
	RecalLayout();
}

//---------------------------------------------------------------------------
// OnLButtonDown
//---------------------------------------------------------------------------
void CRollupCtrl::OnLButtonDown(UINT nFlags, CPoint point) 
{
	CRect r; GetClientRect(&r);
	if (m_nPageHeight<=r.Height())		return;	//Can't Scroll

	CRect br = CRect(r.right-RC_SCROLLBARWIDTH,r.top, r.right, r.bottom);

	if ((nFlags&MK_LBUTTON) && br.PtInRect(point)) {

		SetCapture();

		int ClientHeight = r.Height()-4;

		int SB_Size = ClientHeight-(((m_nPageHeight-r.Height())*ClientHeight)/m_nPageHeight);
		int	SB_Pos	= -(m_nStartYPos*ClientHeight)/m_nPageHeight;

		//Click inside scrollbar cursor
		if ((point.y<(SB_Pos+SB_Size)) && (point.y>SB_Pos)) {

			m_nSBOffset = SB_Pos-point.y+1;
		
		//Click outside scrollbar cursor (2 cases => above or below cursor)
		} else {
			int distup	= point.y-SB_Pos;	
			int distdown= (SB_Pos+SB_Size)-point.y;
			if (distup<distdown)	m_nSBOffset = 0;		//above
			else					m_nSBOffset = -SB_Size;	//below
		}

		//Calc new m_nStartYPos from mouse pos
		int TargetPos	= point.y + m_nSBOffset;
		m_nStartYPos=-(TargetPos*m_nPageHeight)/ClientHeight;

		//Update
		RecalLayout();
	}


	CWnd::OnLButtonDown(nFlags, point);
}

//---------------------------------------------------------------------------
// OnLButtonUp
//---------------------------------------------------------------------------
void CRollupCtrl::OnLButtonUp(UINT nFlags, CPoint point) 
{
	if (GetCapture()==this)		ReleaseCapture();
	CWnd::OnLButtonUp(nFlags, point);
}


//---------------------------------------------------------------------------
// OnMouseMove
//---------------------------------------------------------------------------
void CRollupCtrl::OnMouseMove(UINT nFlags, CPoint point) 
{
	CRect r; GetClientRect(&r);
	if (m_nPageHeight<=r.Height())		return;	//Can't Scroll

	CRect br = CRect(r.right-RC_SCROLLBARWIDTH,r.top, r.right, r.bottom);

	if ((nFlags&MK_LBUTTON) && (GetCapture()==this)) {

		//Calc new m_nStartYPos from mouse pos
		int ClientHeight	= r.Height()-4;
		int TargetPos		= point.y + m_nSBOffset;
		m_nStartYPos=-(TargetPos*m_nPageHeight)/ClientHeight;

		//Update
		RecalLayout();
	}

	CWnd::OnMouseMove(nFlags, point);
}


//---------------------------------------------------------------------------
// OnMouseWheel
//---------------------------------------------------------------------------
BOOL CRollupCtrl::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt) 
{
	//Calc new m_nStartYPos
	m_nStartYPos+=(zDelta/4);

	//Update
	RecalLayout();

	return CWnd::OnMouseWheel(nFlags, zDelta, pt);
}

//---------------------------------------------------------------------------
// OnMouseActivate
//---------------------------------------------------------------------------
int CRollupCtrl::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message) 
{
	SetFocus();
	return CWnd::OnMouseActivate(pDesktopWnd, nHitTest, message);
}


//---------------------------------------------------------------------------
// OnContextMenu
//---------------------------------------------------------------------------
void CRollupCtrl::OnContextMenu(CWnd* pWnd, CPoint point) 
{
	CMenu menu;
	if (menu.CreatePopupMenu())
	{
		menu.AppendMenu(MF_STRING,		RC_IDM_EXPANDALL,	"Expand all"	);
		menu.AppendMenu(MF_STRING,		RC_IDM_COLLAPSEALL,	"Collapse all"	);
		menu.AppendMenu(MF_SEPARATOR,	0,					""				);

		//Add all pages with checked style for expanded ones
		for (int i=0; i<m_PageList.GetSize(); i++) {
			CString cstrPageName;
			m_PageList[i]->pwndButton->GetWindowText(cstrPageName);
			menu.AppendMenu(MF_STRING, RC_IDM_STARTPAGES+i, cstrPageName);	
			if (m_PageList[i]->bExpanded)
				menu.CheckMenuItem(RC_IDM_STARTPAGES+i, MF_CHECKED);
		}

		menu.TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON, point.x, point.y, this);
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区视频在线播放| 亚洲欧美日韩在线| 美女高潮久久久| 精品国产一区二区三区四区四| 视频一区视频二区在线观看| 6080日韩午夜伦伦午夜伦| 婷婷中文字幕一区三区| 91精品国产综合久久精品性色| 免费成人在线影院| 久久久国产一区二区三区四区小说 | 日韩亚洲欧美综合| 九九九精品视频| 中文字幕的久久| 欧美在线短视频| 国产一区啦啦啦在线观看| 日本一区二区三区四区在线视频| 91麻豆成人久久精品二区三区| 亚洲一二三四在线观看| 日韩欧美中文字幕精品| 粉嫩蜜臀av国产精品网站| 亚洲在线一区二区三区| 日韩欧美国产高清| 成人动漫一区二区三区| 亚瑟在线精品视频| 国产女人18毛片水真多成人如厕 | 欧美一区二区免费观在线| 久久电影国产免费久久电影| 国产精品久久影院| 欧美高清视频www夜色资源网| 国产在线视视频有精品| 亚洲精品日韩专区silk| 欧美大片拔萝卜| 色婷婷激情综合| 国产一区二区三区在线看麻豆| 一区二区三区欧美激情| 久久亚洲一区二区三区四区| 91网站黄www| 国产美女在线精品| 亚洲成av人影院| 国产精品护士白丝一区av| 日韩欧美卡一卡二| 欧美亚洲一区三区| 成人av影院在线| 国产一区二区三区四区五区美女| 亚洲影院在线观看| 亚洲欧美自拍偷拍色图| 精品免费99久久| 欧美精品久久99| 在线一区二区三区做爰视频网站| 国产美女久久久久| 久久电影网电视剧免费观看| 亚洲.国产.中文慕字在线| 亚洲欧美日韩国产综合在线| 久久亚洲精品国产精品紫薇| 91精品国产乱码久久蜜臀| 一本色道久久综合亚洲精品按摩| 国产91在线看| 国产精品综合久久| 精品一区二区三区免费毛片爱| 亚洲一卡二卡三卡四卡| 一区二区三区高清| 亚洲色图一区二区| 国产精品久久久久久久久免费相片| 欧美第一区第二区| 欧美xxxxxxxxx| 日韩一区二区免费高清| 欧美人xxxx| 7878成人国产在线观看| 欧美剧情片在线观看| 在线播放一区二区三区| 欧美高清你懂得| 欧美一级夜夜爽| 日韩免费看网站| 精品国产91洋老外米糕| 欧美精品一区二区三区四区| 日韩一级黄色片| www成人在线观看| 久久久久久久久伊人| 国产亚洲综合性久久久影院| 欧美国产日韩精品免费观看| 欧美经典三级视频一区二区三区| 久久久久久久久久久99999| 久久久99精品久久| 国产精品福利在线播放| 亚洲伦理在线免费看| 亚洲一区二区偷拍精品| 五月婷婷另类国产| 老司机免费视频一区二区| 国产一区二区三区国产| 本田岬高潮一区二区三区| 99精品黄色片免费大全| 色94色欧美sute亚洲线路一久| 欧美性三三影院| 欧美一区二区三区在线观看视频| 欧美xxxx老人做受| 国产日韩欧美高清| 亚洲欧美日韩一区二区三区在线观看 | 久草精品在线观看| 成人一二三区视频| 色婷婷久久99综合精品jk白丝| 欧美另类久久久品| 久久亚洲一区二区三区四区| 亚洲色欲色欲www| 奇米888四色在线精品| 高清av一区二区| 欧美在线看片a免费观看| 日韩欧美你懂的| 国产精品福利一区二区| 日本中文字幕一区| 成人免费视频网站在线观看| 在线观看网站黄不卡| 精品电影一区二区三区| 亚洲欧美偷拍另类a∨色屁股| 午夜精品福利在线| 国产91对白在线观看九色| 欧美人妖巨大在线| 日本一区二区三区四区| 日本大胆欧美人术艺术动态| 成人av在线播放网址| 8x8x8国产精品| 亚洲视频狠狠干| 国内不卡的二区三区中文字幕| 99re热视频精品| 欧美成人女星排名| 亚洲一区在线观看免费| 国产精品中文字幕欧美| 欧美人成免费网站| 最新国产精品久久精品| 久久av资源网| 欧美色图天堂网| 亚洲色欲色欲www在线观看| 国产在线精品一区二区| 欧美日韩精品是欧美日韩精品| 欧美国产综合一区二区| 麻豆成人免费电影| 欧美裸体bbwbbwbbw| 亚洲精品成人精品456| 国产91精品一区二区| 日韩三级.com| 婷婷综合久久一区二区三区| 99精品欧美一区二区三区小说| 久久久久国产精品麻豆| 久久精品国产久精国产| 欧美日本韩国一区二区三区视频| 国产精品精品国产色婷婷| 国产成人av一区二区三区在线观看| 91麻豆精品国产综合久久久久久| 亚洲精品久久7777| av在线不卡免费看| 国产精品国产三级国产普通话99 | 婷婷综合另类小说色区| 在线视频你懂得一区| 亚洲视频中文字幕| 成人激情免费网站| 国产精品色一区二区三区| 国产电影精品久久禁18| 久久久亚洲精品一区二区三区| 精品在线免费视频| 精品入口麻豆88视频| 奇米色777欧美一区二区| 欧美电影一区二区| 婷婷国产v国产偷v亚洲高清| 欧美私人免费视频| 亚洲图片欧美色图| 欧美日韩一区二区在线观看| 一区二区激情视频| 欧美网站大全在线观看| 午夜精品久久久久| 日韩一区二区免费视频| 国产在线视频精品一区| 亚洲国产精品ⅴa在线观看| 粗大黑人巨茎大战欧美成人| 中文字幕在线一区免费| 97久久超碰国产精品| 亚洲国产一区视频| 日韩一区二区视频| 国产很黄免费观看久久| 中文字幕在线视频一区| 色综合天天在线| 亚洲视频小说图片| 色综合色综合色综合色综合色综合 | www久久久久| 成人爱爱电影网址| 亚洲一区欧美一区| 91麻豆精品国产91久久久更新时间| 日本欧美一区二区在线观看| 日韩欧美成人一区| 成人高清伦理免费影院在线观看| 亚洲男女毛片无遮挡| 欧美人妖巨大在线| 国产毛片精品国产一区二区三区| 国产精品久久久久久久久晋中| 日本二三区不卡| 蜜桃视频在线观看一区| 中文字幕av一区二区三区| 精品视频一区二区不卡| 精品一区二区三区免费视频| 中文字幕中文字幕中文字幕亚洲无线| 欧美一a一片一级一片| 国产在线精品国自产拍免费|