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

📄 bcgpmousepage.cpp

📁 远程网络监视程序的源码
💻 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.
//*******************************************************************************

// BCGPMousePage.cpp : implementation file
//

#include "stdafx.h"

#ifndef BCG_NO_CUSTOMIZATION

#include "bcgglobals.h"
#include "BCGPToolbarCustomize.h"
#include "BCGPMousePage.h"
#include "BCGPMouseManager.h"

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

/////////////////////////////////////////////////////////////////////////////
// CBCGPMousePage property page

IMPLEMENT_DYNCREATE(CBCGPMousePage, CPropertyPage)

CBCGPMousePage::CBCGPMousePage() : CPropertyPage(CBCGPMousePage::IDD)
{
	//{{AFX_DATA_INIT(CBCGPMousePage)
	m_strCommandDescription = _T("");
	//}}AFX_DATA_INIT

	m_iCurrViewId = -1;
}

CBCGPMousePage::~CBCGPMousePage()
{
}

void CBCGPMousePage::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CBCGPMousePage)
	DDX_Control(pDX, IDC_BCGBARRES_LIST_VIEWS, m_wndListOfViews);
	DDX_Control(pDX, IDC_BCGBARRES_LIST_OF_COMMANDS, m_wndListOfCommands);
	DDX_Control(pDX, IDC_BCGBARRES_COMMAND_DESCRIPTION, m_wndCommandDescription);
	DDX_Text(pDX, IDC_BCGBARRES_COMMAND_DESCRIPTION, m_strCommandDescription);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CBCGPMousePage, CPropertyPage)
	//{{AFX_MSG_MAP(CBCGPMousePage)
	ON_BN_CLICKED(IDC_BCGBARRES_NO_DBLCLIICK, OnNoDblcliick)
	ON_BN_CLICKED(IDC_BCGBARRES_USE_DBLCLIICK, OnUseDblcliick)
	ON_LBN_SELCHANGE(IDC_BCGBARRES_LIST_OF_COMMANDS, OnSelchangeListOfCommands)
	ON_NOTIFY(LVN_ITEMCHANGED, IDC_BCGBARRES_LIST_VIEWS, OnItemchangedListViews)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CBCGPMousePage message handlers

void CBCGPMousePage::OnNoDblcliick() 
{
	g_pMouseManager->SetCommandForDblClick (m_iCurrViewId, 0);
	EnableDblClickControls (FALSE);
}
//*************************************************************************************************
void CBCGPMousePage::OnUseDblcliick() 
{
	EnableDblClickControls ();

	if (m_iCurrViewId < 0)
	{
		MessageBeep ((UINT) -1);
		return;
	}

	g_pMouseManager->SetCommandForDblClick (m_iCurrViewId, 0);
}
//*************************************************************************************************
void CBCGPMousePage::OnSelchangeListOfCommands() 
{
	ASSERT (g_pMouseManager != NULL);

	if (m_iCurrViewId < 0)
	{
		MessageBeep ((UINT) -1);
		return;
	}

	int iIndex = m_wndListOfCommands.GetCurSel ();
	UINT uiCmdId = (UINT) m_wndListOfCommands.GetItemData (iIndex);

	//-------------------------
	// Get command description:
	//-------------------------
	CFrameWnd* pParent = GetParentFrame ();
	if (pParent != NULL && pParent->GetSafeHwnd () != NULL)
	{
		pParent->GetMessageString (uiCmdId, m_strCommandDescription);
	}
	else
	{
		m_strCommandDescription.Empty ();
	}

	//----------------------
	// Update mouse manager:
	//----------------------
	g_pMouseManager->SetCommandForDblClick (m_iCurrViewId, uiCmdId);

	UpdateData (FALSE);
}
//*************************************************************************************************
void CBCGPMousePage::OnItemchangedListViews(NMHDR* pNMHDR, LRESULT* pResult) 
{
	ASSERT (g_pMouseManager != NULL);
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	
	*pResult = 0;

	if (pNMListView->uChanged != LVIF_STATE)
	{
		return;
	}

	for (int i = 0; i < m_wndListOfViews.GetItemCount (); i ++)
	{
		UINT uState = m_wndListOfViews.GetItemState (i, LVIF_STATE | LVIS_SELECTED);
		if (uState & LVIS_SELECTED)
		{
			m_iCurrViewId = (int) m_wndListOfViews.GetItemData (i);
			ASSERT (m_iCurrViewId >= 0);

			UINT uiCmd = g_pMouseManager->GetViewDblClickCommand (m_iCurrViewId);
			if (uiCmd == 0)
			{
				CheckDlgButton (IDC_BCGBARRES_USE_DBLCLIICK, 0);
				CheckDlgButton (IDC_BCGBARRES_NO_DBLCLIICK, 1);
				EnableDblClickControls (FALSE);
			}
			else
			{
				CheckDlgButton (IDC_BCGBARRES_USE_DBLCLIICK, 1);
				CheckDlgButton (IDC_BCGBARRES_NO_DBLCLIICK, 0);
				EnableDblClickControls ();
				SelectCommand (uiCmd);
			}

			break;
		}
	}
}
//*************************************************************************************************
BOOL CBCGPMousePage::OnInitDialog() 
{
	ASSERT (g_pMouseManager != NULL);

	CPropertyPage::OnInitDialog();

	CStringList listOfViewNames;
	g_pMouseManager->GetViewNames (listOfViewNames);

	//-------------------
	// Create image list:
	//-------------------
	if (!m_ViewsImages.Create (	globalData.m_sizeSmallIcon.cx,
								globalData.m_sizeSmallIcon.cy,
								ILC_COLOR | ILC_MASK, 
								listOfViewNames.GetCount (), 1))
	{
		ASSERT (FALSE);
	}

	m_wndListOfViews.SetImageList (&m_ViewsImages, LVSIL_SMALL);

	POSITION pos;
	
	//-----------------
	// Fill views list:
	//-----------------
	CRect rect;
	m_wndListOfViews.GetClientRect (&rect);
	m_wndListOfViews.InsertColumn (0, _T(""), LVCFMT_LEFT, rect.Width () - 1);

	//ASSERT (!listOfViewNames.IsEmpty ());

	int iMaxWidth = 0;

	for (pos = listOfViewNames.GetHeadPosition (); pos != NULL;)
	{
		CString strViewName = listOfViewNames.GetNext (pos);
		
		int iImageIndex = -1;

		//---------------
		// Add view icon:
		//---------------
		UINT uiViewIconId = g_pMouseManager->GetViewIconId (
			g_pMouseManager->GetViewIdByName (strViewName));

		HICON hViewIcon;
		if (uiViewIconId != 0 &&
			(hViewIcon = AfxGetApp ()->LoadIcon (uiViewIconId)) != NULL)
		{
			iImageIndex = m_ViewsImages.Add (hViewIcon);
			::DestroyIcon (hViewIcon);
		}

		int iIndex = m_wndListOfViews.GetItemCount ();
		for (int i = 0; i < m_wndListOfViews.GetItemCount (); i ++)
		{
			CString strText = m_wndListOfViews.GetItemText (i, 0);
			if (strText > strViewName)
			{
				iIndex = i;
				break;
			}
		}

		m_wndListOfViews.InsertItem (iIndex, strViewName, iImageIndex);
		m_wndListOfViews.SetItemData (iIndex, 
			(DWORD) g_pMouseManager->GetViewIdByName (strViewName));

		int iStrWidth = m_wndListOfViews.GetStringWidth (strViewName);
		iMaxWidth = max (iStrWidth, iMaxWidth);
	}

	//----------------------------------
	// Add icon width pluse some pixels:
	//----------------------------------
	IMAGEINFO info;
	m_ViewsImages.GetImageInfo (0, &info);
	CRect rectImage = info.rcImage;

	iMaxWidth += rectImage.Width () + 10;
	m_wndListOfViews.SetColumnWidth (0, iMaxWidth);

	//--------------------
	// Fill commands list:
	//--------------------
	CBCGPToolbarCustomize* pWndParent = DYNAMIC_DOWNCAST (CBCGPToolbarCustomize, GetParent ());
	ASSERT (pWndParent != NULL);

	pWndParent->FillAllCommandsList (m_wndListOfCommands);

	//-----------------------	
	// Select the first view:
	//-----------------------
	m_wndListOfViews.SetItemState  (0, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
	m_wndListOfViews.EnsureVisible (0, FALSE);

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
//*************************************************************************************************
void CBCGPMousePage::EnableDblClickControls (BOOL bEnable)
{
	m_wndListOfCommands.EnableWindow (bEnable);
	m_wndCommandDescription.EnableWindow (bEnable);

	if (!bEnable)
	{
		m_wndListOfCommands.SetCurSel (-1);

		m_strCommandDescription.Empty ();
		UpdateData (FALSE);
	}
}
//*************************************************************************************************
BOOL CBCGPMousePage::SelectCommand (UINT uiCmd)
{
	//-------------------------------
	// Get selected item description:
	//-------------------------------
	CFrameWnd* pParent = GetParentFrame ();
	if (pParent != NULL && pParent->GetSafeHwnd () != NULL)
	{
		pParent->GetMessageString (uiCmd, m_strCommandDescription);
	}
	else
	{
		m_strCommandDescription.Empty ();
	}

	UpdateData (FALSE);

	//----------------------------------------
	// Select command in the commands listbox:
	//----------------------------------------
	for (int iCmdIndex = 0; iCmdIndex < m_wndListOfCommands.GetCount (); iCmdIndex ++)
	{
		if (uiCmd == (UINT) m_wndListOfCommands.GetItemData (iCmdIndex))
		{
			m_wndListOfCommands.SetCurSel (iCmdIndex);
			m_wndListOfCommands.SetTopIndex (iCmdIndex);

			return TRUE;
		}
	}

	return FALSE;
}

#endif // BCG_NO_CUSTOMIZATION

⌨️ 快捷键说明

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