www.pudn.com > ODBCApi.rar > DeskOutDlg.cpp


// FloatBar.cpp : 实现文件 
// 
 
#include "stdafx.h" 
#include "DeskOutDlg.h" 
#include "FloatBar.h" 
#include ".\floatbar.h" 
#define IDC_BUTTON 1001 
#define IDC_BUTTON_MAX 2000 
 
// CFloatBar 对话框 
 
IMPLEMENT_DYNAMIC(CDeskOutDlg, CDialog) 
 
CDeskOutDlg::CDeskOutDlg(CWnd* pParent /*=NULL*/) 
	: CDialog(CDeskOutDlg::IDD, pParent) 
{ 
	rcItem.nItemHeight = 30; 
	rcItem.nItemWidth = 100; 
} 
 
CDeskOutDlg::~CDeskOutDlg() 
{ 
	INT_PTR nCount = m_ptrArray.GetSize(); 
	for(int i=0; ibIsShow = FALSE; 
	pDesk->wndHeader.Create(strItem, WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,   
		CRect(0,0,rcItem.nItemWidth,rcItem.nItemHeight), this, IDC_BUTTON+nDesk); 
	pDesk->wndHeader.SetShade(CShadeButtonST::SHS_HARDBUMP); 
	pDesk->wndCleint.Create(strItem, WS_CHILD | WS_BORDER | SS_BLACKRECT, CRect(0,0,30,100), this, IDC_BUTTON+nDesk); 
	m_ptrArray.Add(pDesk); 
 
	nDesk++; 
	return TRUE; 
} 
 
BEGIN_MESSAGE_MAP(CDeskOutDlg, CDialog) 
	ON_WM_CREATE() 
	ON_WM_SIZE() 
	ON_CONTROL_RANGE( BN_CLICKED, IDC_BUTTON, IDC_BUTTON_MAX,CDeskOutDlg::OnBnCliceked) 
END_MESSAGE_MAP() 
 
 
// CFloatBar 消息处理程序 
 
int CDeskOutDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{ 
	if (CDialog::OnCreate(lpCreateStruct) == -1) 
		return -1; 
	return 0; 
} 
void CDeskOutDlg::OnSize(UINT nType, int cx, int cy) 
{ 
	CDialog::OnSize(nType, cx, cy); 
	CRect rcClient; 
	GetClientRect(rcClient); 
	rcItem.nItemWidth = rcClient.Width(); 
	INT_PTR nCount = m_ptrArray.GetSize(); 
	CRect itemHead(0,-rcItem.nItemHeight, rcItem.nItemWidth,0); 
	CRect itemClient(0,0, rcItem.nItemWidth,0); 
	for(int i=0; ibIsShow) 
			{ 
				itemHead.top += rcItem.nItemHeight; 
				itemHead.bottom = itemHead.top + rcItem.nItemHeight; 
 
				pDesk->wndHeader.MoveWindow(&itemHead);				 
 
				itemClient.top = itemHead.bottom; 
				itemClient.bottom = itemClient.top + rcClient.Height()-nCount*rcItem.nItemHeight; 
				pDesk->wndCleint.MoveWindow(itemClient); 
				pDesk->wndCleint.ShowWindow(TRUE); 
 
				itemHead.top = itemClient.bottom-rcItem.nItemHeight; 
				itemHead.bottom = itemHead.top + rcItem.nItemHeight; 
			} 
			else 
			{ 
				itemHead.top += rcItem.nItemHeight; 
				itemHead.bottom = itemHead.top + rcItem.nItemHeight; 
				pDesk->wndHeader.MoveWindow(&itemHead); 
 
				itemClient.top = itemHead.bottom; 
				itemClient.bottom = itemClient.top; 
				pDesk->wndCleint.MoveWindow(&itemClient); 
				pDesk->wndCleint.ShowWindow(TRUE); 
			} 
			pDesk->wndHeader.SetShade(CShadeButtonST::SHS_HARDBUMP); 
		}	 
	} 
} 
void CDeskOutDlg::OnBnCliceked( UINT nID ) 
{ 
	INT_PTR nCount = m_ptrArray.GetSize(); 
	DESK* pDesk = NULL; 
	for(int i=0; ibIsShow = FALSE; 
	} 
	pDesk = (DESK*)m_ptrArray.GetAt(nID-1001); 
	pDesk->bIsShow = TRUE; 
	SendMessage(WM_SIZE, 0, 0); 
} 
BOOL CDeskOutDlg::SetCurSel(int nDesk) 
{ 
	INT_PTR nCount = m_ptrArray.GetSize(); 
	if(nDesk<0) 
	{ 
		DESK* pDesk = (DESK*)m_ptrArray.GetAt(0); 
		pDesk->bIsShow = TRUE; 
	} 
	else if(nDesk>=nCount) 
	{ 
		DESK* pDesk = (DESK*)m_ptrArray.GetAt(nCount-1); 
		pDesk->bIsShow = TRUE; 
	} 
	else 
	{ 
		DESK* pDesk = (DESK*)m_ptrArray.GetAt(nDesk); 
		pDesk->bIsShow = TRUE; 
	} 
	return TRUE; 
} 
 
DESK* CDeskOutDlg::GetDesk(int nDesk) 
{ 
	INT_PTR nCount = m_ptrArray.GetSize(); 
	DESK* pDesk = NULL; 
	if(nDesk<0) 
	{ 
		 pDesk = NULL; 
	} 
	else if(nDesk>=nCount) 
	{ 
		pDesk = NULL; 
	} 
	else 
	{ 
		pDesk = (DESK*)m_ptrArray.GetAt(nDesk); 
	} 
	return pDesk; 
}