www.pudn.com > ÍøÂç¶Ë¿Ú¼àÊÓ.rar > BCGPDialogBar.cpp


//******************************************************************************* 
// COPYRIGHT NOTES 
// --------------- 
// This is a part of the BCGControlBar Library 
// Copyright (C) 1998-2000 BCGSoft Ltd. 
// All rights reserved. 
// 
// This source code can be used, distributed or modified 
// only under terms and conditions  
// of the accompanying license agreement. 
 //******************************************************************************* 
 
// BCGPDialogBar.cpp : implementation file 
// 
 
#include "stdafx.h" 
#if _MSC_VER >= 1300 
	#include  
#else 
	#include <../src/occimpl.h> 
#endif 
 
#include "BCGPDialogBar.h" 
#include "BCGPGlobalUtils.h" 
#include "BCGPDockManager.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CBCGPDialogBar 
 
IMPLEMENT_SERIAL(CBCGPDialogBar, CBCGPDockingControlBar, VERSIONABLE_SCHEMA | 1) 
 
CBCGPDialogBar::CBCGPDialogBar() 
{ 
#ifndef _AFX_NO_OCC_SUPPORT 
	m_pOccDialogInfo = NULL; 
#endif 
} 
 
CBCGPDialogBar::~CBCGPDialogBar() 
{ 
 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CBCGPDialogBar message handlers 
 
BOOL CBCGPDialogBar::Create(LPCTSTR lpszWindowName, CWnd* pParentWnd, BOOL bHasGripper,  
						   UINT nIDTemplate, UINT nStyle, UINT nID) 
{  
	return Create(lpszWindowName, pParentWnd, bHasGripper, MAKEINTRESOURCE(nIDTemplate), nStyle, nID);  
} 
//**************************************************************************************** 
BOOL CBCGPDialogBar::Create(LPCTSTR lpszWindowName, CWnd* pParentWnd, BOOL bHasGripper,  
						   LPCTSTR lpszTemplateName, UINT nStyle, UINT nID,  
						   DWORD dwTabbedStyle, DWORD dwBCGStyle) 
{ 
	m_lpszBarTemplateName = (LPTSTR) lpszTemplateName; 
 
	if (!CBCGPDockingControlBar::Create(lpszWindowName, pParentWnd, CSize (0, 0), bHasGripper,  
						   nID, nStyle, dwTabbedStyle, dwBCGStyle)) 
	{ 
		return FALSE; 
	} 
 
	m_lpszBarTemplateName = NULL; 
	SetOwner (BCGCBProGetTopLevelFrame (this)); 
	//m_ahSlideMode = BCGP_AHSM_STRETCH; 
	return TRUE; 
} 
//**************************************************************************************** 
void CBCGPDialogBar::OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler) 
{ 
	CBCGPDockingControlBar::OnUpdateCmdUI (pTarget, bDisableIfNoHndler); 
} 
 
BEGIN_MESSAGE_MAP(CBCGPDialogBar, CBCGPDockingControlBar) 
	//{{AFX_MSG_MAP(CBCGPDialogBar) 
	ON_WM_ERASEBKGND() 
	ON_WM_LBUTTONDBLCLK() 
	ON_WM_LBUTTONDOWN() 
	ON_WM_WINDOWPOSCHANGING() 
	//}}AFX_MSG_MAP 
	ON_MESSAGE(WM_INITDIALOG, HandleInitDialog) 
END_MESSAGE_MAP() 
 
//***************************************************************************************** 
LRESULT CBCGPDialogBar::HandleInitDialog(WPARAM wParam, LPARAM lParam) 
{ 
	CBCGPBaseControlBar::HandleInitDialog(wParam, lParam); 
 
#ifndef _AFX_NO_OCC_SUPPORT 
	Default();  // allow default to initialize first (common dialogs/etc) 
 
	// create OLE controls 
	COccManager* pOccManager = afxOccManager; 
	if ((pOccManager != NULL) && (m_pOccDialogInfo != NULL)) 
	{ 
		if (!pOccManager->CreateDlgControls(this, m_lpszBarTemplateName, 
			m_pOccDialogInfo)) 
		{ 
			TRACE (_T("Warning: CreateDlgControls failed during dialog bar init.\n")); 
			return FALSE; 
		} 
	} 
#endif //!_AFX_NO_OCC_SUPPORT 
 
	return TRUE; 
} 
 
#ifndef _AFX_NO_OCC_SUPPORT 
//***************************************************************************************** 
BOOL CBCGPDialogBar::SetOccDialogInfo(_AFX_OCC_DIALOG_INFO* pOccDialogInfo) 
{ 
	m_pOccDialogInfo = pOccDialogInfo; 
	return TRUE; 
} 
#endif //!_AFX_NO_OCC_SUPPORT 
//***************************************************************************************** 
BOOL CBCGPDialogBar::OnEraseBkgnd(CDC* pDC)  
{ 
	CRect rectClient; 
	GetClientRect (rectClient); 
 
	pDC->FillRect (rectClient, &globalData.brBtnFace); 
	return TRUE; 
} 
//***************************************************************************************** 
void CBCGPDialogBar::OnLButtonDblClk(UINT nFlags, CPoint point)  
{ 
	CPoint ptScr = point; 
	ClientToScreen (&ptScr); 
 
	int nHitTest = HitTest (ptScr, TRUE); 
 
	if (nHitTest == HTCAPTION) 
	{ 
		CBCGPDockingControlBar::OnLButtonDblClk(nFlags, point); 
	} 
	else 
	{ 
		CWnd::OnLButtonDblClk(nFlags, point); 
	} 
} 
//***************************************************************************************** 
void CBCGPDialogBar::OnLButtonDown(UINT nFlags, CPoint point)  
{ 
	CPoint ptScr = point; 
	ClientToScreen (&ptScr); 
 
	int nHitTest = HitTest (ptScr, TRUE); 
 
	if (nHitTest == HTCAPTION || nHitTest == HTCLOSE_BCG ||  
		nHitTest == HTMAXBUTTON) 
	{ 
		CBCGPDockingControlBar::OnLButtonDown(nFlags, point); 
	} 
	else 
	{ 
		CWnd::OnLButtonDown(nFlags, point); 
	} 
} 
//***************************************************************************************** 
void CBCGPDialogBar::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos)  
{ 
	CBCGPDockingControlBar::OnWindowPosChanging(lpwndpos); 
	 
	if (!CanBeResized ()) 
	{ 
		CSize sizeMin;  
		GetMinSize (sizeMin); 
		 
		if (IsHorizontal () && lpwndpos->cy < sizeMin.cy) 
		{ 
			lpwndpos->cy = sizeMin.cy; 
			lpwndpos->hwndInsertAfter = HWND_BOTTOM; 
		} 
		else if (!IsHorizontal () && lpwndpos->cx < sizeMin.cx) 
		{ 
			lpwndpos->cx = sizeMin.cx; 
			lpwndpos->hwndInsertAfter = HWND_BOTTOM; 
		} 
	} 
 
	 
}