⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bcgptaskpaneminiframewnd.cpp

📁 远程网络监视程序的源码
💻 CPP
字号:
// BCGPTaskPaneMiniFrameWnd.cpp: implementation of the CBCGPTaskPaneMiniFrameWnd class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "bcgcbpro.h"
#include "BCGPCaptionMenuButton.h"
#include "BCGPTasksPane.h"
#include "BCGPTaskPaneMiniFrameWnd.h"

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

IMPLEMENT_SERIAL(CBCGPTaskPaneMiniFrameWnd,CBCGPMiniFrameWnd,VERSIONABLE_SCHEMA | 2)

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CBCGPTaskPaneMiniFrameWnd::CBCGPTaskPaneMiniFrameWnd()
{
	m_bMenuBtnPressed = FALSE;
}

CBCGPTaskPaneMiniFrameWnd::~CBCGPTaskPaneMiniFrameWnd()
{

}

BEGIN_MESSAGE_MAP(CBCGPTaskPaneMiniFrameWnd, CBCGPMiniFrameWnd)
	//{{AFX_MSG_MAP(CBCGPTaskPaneMiniFrameWnd)
	ON_WM_NCPAINT()
	//}}AFX_MSG_MAP
	ON_NOTIFY_EX_RANGE(TTN_NEEDTEXT, 0, 0xFFFF, OnNeedTipText)
END_MESSAGE_MAP()

//--------------------------------------------------------------------------------------//
void CBCGPTaskPaneMiniFrameWnd::SetCaptionButtons (DWORD dwButtons)
{
	ASSERT_VALID (this);
	RemoveAllCaptionButtons ();

	if (dwButtons & BCGP_CAPTION_BTN_CLOSE)
	{
		CBCGPBaseControlBar* pBar = DYNAMIC_DOWNCAST (CBCGPBaseControlBar, GetControlBar ());
		if (pBar != NULL && pBar->CanBeClosed ())
		{
			AddButton (HTCLOSE);
		}
	}

	if (dwButtons & BCGP_CAPTION_BTN_PIN)
	{
		AddButton (HTMAXBUTTON);
	}

	if (dwButtons & BCGP_CAPTION_BTN_MENU)
	{
		AddButton (HTMINBUTTON);
	}

	AddButton (HTLEFTBUTTON_BCG);
	AddButton (HTRIGHTBUTTON_BCG);
	AddButton (HTMENU_BCG);

	m_dwCaptionButtons = dwButtons | BCGP_CAPTION_BTN_LEFT | 
			BCGP_CAPTION_BTN_RIGHT | BCGP_CAPTION_BTN_TPMENU;
	SetCaptionButtonsToolTips ();

	ArrangeCaptionButtons ();
	SendMessage (WM_NCPAINT);
}
//--------------------------------------------------------------------------------------//
void CBCGPTaskPaneMiniFrameWnd::AddButton (UINT nHit)
{
	ASSERT_VALID (this);

	CBCGPCaptionButton* pBtn = FindButton (nHit);

	if (pBtn == NULL)
	{
		switch (nHit) 
		{
		case HTLEFTBUTTON_BCG:
			m_lstCaptionButtons.AddHead (new CBCGPCaptionButton (HTLEFTBUTTON_BCG, TRUE));
			break;
		case HTRIGHTBUTTON_BCG:
			m_lstCaptionButtons.AddHead (new CBCGPCaptionButton (HTRIGHTBUTTON_BCG, TRUE));
			break;

		case HTMENU_BCG:
			{
				CBCGPCaptionMenuButton *pMenuBtn = new CBCGPCaptionMenuButton;
				pMenuBtn->m_bOSMenu = FALSE;
				pMenuBtn->m_nHit = HTMENU_BCG;
				m_lstCaptionButtons.AddHead (pMenuBtn);
			}
			break;

		default:
			CBCGPMiniFrameWnd::AddButton (nHit);
		}
	}
}
//--------------------------------------------------------------------------------------//
void CBCGPTaskPaneMiniFrameWnd::SetTaskPaneCaptionButtons ()
{
	ASSERT_VALID (this);

	if (TRUE)
	{
		SetCaptionButtons (m_dwCaptionButtons | BCGP_CAPTION_BTN_LEFT | 
												BCGP_CAPTION_BTN_RIGHT | 
												BCGP_CAPTION_BTN_TPMENU);
	}	
}
//--------------------------------------------------------------------------------------//
void CBCGPTaskPaneMiniFrameWnd::OnNcPaint()
{
	// Enable or disable Taskpane specific caption buttons:
	CBCGPTasksPane* pTaskPane = DYNAMIC_DOWNCAST (CBCGPTasksPane, GetControlBar ());
	BOOL bMultiPages = (pTaskPane != NULL && pTaskPane->GetPagesCount () > 1);
	BOOL bUseNavigationToolbar = (pTaskPane != NULL && pTaskPane->IsNavigationToolbarEnabled ());

	for (POSITION pos = m_lstCaptionButtons.GetHeadPosition (); pos != NULL;)
	{
		CBCGPCaptionButton* pBtn = (CBCGPCaptionButton*) m_lstCaptionButtons.GetNext (pos);
		ASSERT_VALID (pBtn);

		switch (pBtn->GetHit ())
		{
		case HTLEFTBUTTON_BCG:
		case HTRIGHTBUTTON_BCG:
		case HTMENU_BCG:
			pBtn->m_bHidden = !bMultiPages || bUseNavigationToolbar;
		}
		if (pBtn->GetHit () == HTLEFTBUTTON_BCG)
		{
			pBtn->m_bEnabled = (pTaskPane != NULL && pTaskPane->IsBackButtonEnabled ());
		}
		if (pBtn->GetHit () == HTRIGHTBUTTON_BCG)
		{
			pBtn->m_bEnabled = (pTaskPane != NULL && pTaskPane->IsForwardButtonEnabled ());
		}
	}

	UpdateTooltips ();
	
	CBCGPMiniFrameWnd::OnNcPaint ();
}
//--------------------------------------------------------------------------------------//
void CBCGPTaskPaneMiniFrameWnd::OnDrawBorder (CDC* pDC)
{
	CBCGPMiniFrameWnd::OnDrawBorder (pDC);
}
//--------------------------------------------------------------------------------------//
void CBCGPTaskPaneMiniFrameWnd::OnDrawCaptionButtons (CDC* pDC)
{
	ASSERT_VALID (pDC);

	// Paint caption buttons:
	for (POSITION pos = m_lstCaptionButtons.GetHeadPosition (); pos != NULL;)
	{
		CBCGPCaptionButton* pBtn = (CBCGPCaptionButton*) m_lstCaptionButtons.GetNext (pos);
		ASSERT_VALID (pBtn);

		BOOL bMaximized = TRUE;
		if (pBtn->GetHit () == HTMAXBUTTON && m_bPinned)
		{
			bMaximized = FALSE;
		}
		pBtn->OnDraw (pDC, FALSE, TRUE, bMaximized);
	}
}
//--------------------------------------------------------------------------------------//
void CBCGPTaskPaneMiniFrameWnd::OnPressButtons (UINT nHit)
{
	CBCGPTasksPane* pTaskPane = DYNAMIC_DOWNCAST (CBCGPTasksPane, GetControlBar ());
	if (pTaskPane != NULL)
	{
		ASSERT_VALID (pTaskPane);

		switch (nHit)
		{
		case HTLEFTBUTTON_BCG:
			// Handle Back caption button
			pTaskPane->OnPressBackButton ();
			break;

		case HTRIGHTBUTTON_BCG:
			// Handle Forward caption button
			pTaskPane->OnPressForwardButton ();
			break;

		case HTMENU_BCG:
			// Handle Other caption button
			{
				CBCGPCaptionMenuButton* pbtn = (CBCGPCaptionMenuButton*)FindButton (HTMENU_BCG);
				if (pbtn != NULL)
				{
					m_bMenuBtnPressed = TRUE;
					pTaskPane->OnPressOtherButton (pbtn, this);
					m_bMenuBtnPressed = FALSE;
				}
			}
			break;
		}
	}

	CBCGPMiniFrameWnd::OnPressButtons (nHit);
}
//--------------------------------------------------------------------------------------//
void CBCGPTaskPaneMiniFrameWnd::CalcBorderSize (CRect& rectBorderSize) const
{
		rectBorderSize.SetRect (g_nToolbarBorderSize, g_nToolbarBorderSize, 
								g_nToolbarBorderSize, g_nToolbarBorderSize);
}
//--------------------------------------------------------------------------------------//
void CBCGPTaskPaneMiniFrameWnd::OnTrackCaptionButtons (CPoint point)
{
	if (!m_bMenuBtnPressed)
	{
		CBCGPMiniFrameWnd::OnTrackCaptionButtons (point);
	}
}
//--------------------------------------------------------------------------------------//
void CBCGPTaskPaneMiniFrameWnd::StopCaptionButtonsTracking ()
{
	if (!m_bMenuBtnPressed)
	{
		CBCGPMiniFrameWnd::StopCaptionButtonsTracking ();
	}
}
//--------------------------------------------------------------------------------------//
BOOL CBCGPTaskPaneMiniFrameWnd::OnNeedTipText(UINT id, NMHDR* pNMH, LRESULT* pResult)
{
	static CString strTipText;

	if (m_ToolTip.GetSafeHwnd () == NULL)
	{
		return FALSE;
	}

	LPNMTTDISPINFO	pTTDispInfo	= (LPNMTTDISPINFO) pNMH;
	ASSERT((pTTDispInfo->uFlags & TTF_IDISHWND) == 0);

	if (pNMH->idFrom > 0 && (int)pNMH->idFrom <= m_lstCaptionButtons.GetCount())
	{
		POSITION pos = m_lstCaptionButtons.FindIndex (pNMH->idFrom - 1);
		if (pos != NULL)
		{
			CBCGPCaptionButton* pBtn = (CBCGPCaptionButton*)m_lstCaptionButtons.GetAt (pos);
			ASSERT_VALID (pBtn);

			switch (pBtn->GetHit ())
			{
			case HTLEFTBUTTON_BCG:
				//CBCGPLocalResource locaRes;
				//strTipText.LoadString (IDS_BCGBARRES_BACK);
				strTipText = _T("Back");
				pTTDispInfo->lpszText = const_cast<LPTSTR> ((LPCTSTR) strTipText);
				return TRUE;
			case HTRIGHTBUTTON_BCG:
				//CBCGPLocalResource locaRes;
				//strTipText.LoadString (IDS_BCGBARRES_FORWARD);
				strTipText = _T("Forward");
				pTTDispInfo->lpszText = const_cast<LPTSTR> ((LPCTSTR) strTipText);
				return TRUE;
			case HTMENU_BCG:
				//CBCGPLocalResource locaRes;
				//strTipText.LoadString (IDS_BCGBARRES_OTHER_TASKS_PANE);
				strTipText = _T("Other Tasks Pane");
				pTTDispInfo->lpszText = const_cast<LPTSTR> ((LPCTSTR) strTipText);
				return TRUE;
			}
	}
	}

	return CBCGPMiniFrameWnd::OnNeedTipText (id, pNMH, pResult);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -