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

📄 resorgoptionsfixedsymbolspage.cpp

📁 ResOrg 图形化管理Vc项目的资源ID的工具的源代码。 ResOrg - Manage and Renumber Resource Symbol IDs Introduction The
💻 CPP
字号:
/************************************************************************
 *
 *                 Resource ID Organiser Core Library
 *
 * (c) Copyright 2000-2004 by Anna-Jayne Metcalfe (resorg@annasplace.me.uk)
 *                         All rights reserved.
 *
 ************************************************************************
 *                                                                       
 *  Filename    : ResOrgOptionsFixedSymbolsPage.cpp
 *
 *  Description : CResOrgOptionsFixedSymbolsPage - Property page class for
 *                general program options
 *
 *  Compiler    : Microsoft Visual C++ 6.0, Service Pack 3 or later
 *                Microsoft Visual C++ .NET 2002 or later
 *                                                                       
 *  Target                                                               
 *  Environment : Windows 98/NT/2000/XP
 *
 *  NOTE:
 *
 *    This software is provided "as is" free for personal use. All
 *    title and copyrights in and to the software, including but not
 *    limited to any images, text, etc. incorporated into it, are
 *    owned by Anna-Jayne Metcalfe, except where acknowledged otherwise.
 *
 *    Your may freely to use this code in your own products, PROVIDED
 *    this notice is not removed or modified.
 *
 *
 *    Visit http://www.annasplace.me.uk/resorg for latest updates
 *
 ************************************************************************
 *
 *   MODIFICATION HISTORY:
 *
 *           This is a controlled document. See project configuration
 *           control tool for latest version and full version history.
 *
 *    $Archive: /Projects/AddIns/ResOrg/ResOrgCore/ResOrgOptionsFixedSymbolsPage.cpp $
 *   $Revision: 2 $
 *       $Date: 11/05/04 22:49 $
 *     $Author: Anna $
 *
 *    $History: ResOrgOptionsFixedSymbolsPage.cpp $
 * 
 * *****************  Version 2  *****************
 * User: Anna         Date: 11/05/04   Time: 22:49
 * Updated in $/Projects/AddIns/ResOrg/ResOrgCore
 * Improved handling of default fixed symbol lists
 * 
 * *****************  Version 1  *****************
 * User: Anna         Date: 11/05/04   Time: 0:20
 * Created in $/Projects/AddIns/ResOrg/ResOrgCore
 * 
 * 
 * $Nokeywords: $
 *
 ************************************************************************/


#include "StdAfx.h"
#include "ResOrgCore_Priv.h"

#include "ResourceSymbol.h"
#include "ResOrgOptionsFixedSymbolsPage.h"



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



/////////////////////////////////////////////////////////////////////////////
// CResOrgOptionsFixedSymbolsPage property page

IMPLEMENT_DYNCREATE(CResOrgOptionsFixedSymbolsPage, CResOrgOptionsFixedSymbolsPage_BASE)

CResOrgOptionsFixedSymbolsPage::CResOrgOptionsFixedSymbolsPage(void)
 : CResOrgOptionsFixedSymbolsPage_BASE(CResOrgOptionsFixedSymbolsPage::IDD)
{
	m_sSymbolToAdd		= _T("");
}


CResOrgOptionsFixedSymbolsPage::~CResOrgOptionsFixedSymbolsPage(void)
{
}


void CResOrgOptionsFixedSymbolsPage::DoDataExchange(CDataExchange* pDX)
{
	CResOrgOptionsFixedSymbolsPage_BASE::DoDataExchange(pDX);
	DDX_Control(pDX,	IDC_RESORG_FIXED_SYMBOLS_DESC,			m_ctrlDescription);
	DDX_Control(pDX,	IDC_RESORG_FIXED_SYMBOLS_LIST,			m_ctrlFixedSymbols);
	DDX_Text(pDX,		IDC_RESORG_FIXED_SYMBOLS_LIST_ADD,		m_sSymbolToAdd);
}


BEGIN_MESSAGE_MAP(CResOrgOptionsFixedSymbolsPage, CResOrgOptionsFixedSymbolsPage_BASE)
	ON_EN_CHANGE(		IDC_RESORG_FIXED_SYMBOLS_LIST_ADD,		OnChangeSymbolToAdd)
	ON_LBN_SELCHANGE(	IDC_RESORG_FIXED_SYMBOLS_LIST,			OnSelChangeFixedSymbols)
	ON_BN_CLICKED(		IDC_RESORG_FIXED_SYMBOLS_ADD,			OnClickedAddSymbol)
	ON_BN_CLICKED(		IDC_RESORG_FIXED_SYMBOLS_REMOVE,		OnClickedRemoveSymbols)
	ON_BN_CLICKED(		IDC_RESORG_FIXED_SYMBOLS_DEFAULTS,		OnClickedDefaults)
END_MESSAGE_MAP()



/////////////////////////////////////////////////////////////////////////////
// CResOrgOptionsFixedSymbolsPage overrides

BOOL CResOrgOptionsFixedSymbolsPage::OnInitDialog(void)
{
	CResOrgOptionsFixedSymbolsPage_BASE::OnInitDialog();

	FillSymbolsListBox(m_setFixedSymbols);

	SetAvailableControls();

	return TRUE;
}


void CResOrgOptionsFixedSymbolsPage::OnOK(void)
{
	m_setFixedSymbols.clear();
	for (int nItem = 0; nItem < m_ctrlFixedSymbols.GetCount(); nItem++)
	{
		CString sSymbolName;
		m_ctrlFixedSymbols.GetText(nItem, sSymbolName);

		if (!sSymbolName.IsEmpty() )
		{
			m_setFixedSymbols.insert(sSymbolName);
		}
	}

	CResOrgOptionsFixedSymbolsPage_BASE::OnOK();
}


/////////////////////////////////////////////////////////////////////////////
// CResOrgOptionsFixedSymbolsPage operations

int CResOrgOptionsFixedSymbolsPage::GetFixedSymbols(std::set<CString>& rsetFixedSymbols)
{
	ASSERT(!::IsWindow(m_hWnd) );
	if (!::IsWindow(m_hWnd) )
	{
		rsetFixedSymbols.clear();

#if _MSC_VER >= 1300
		rsetFixedSymbols.insert(m_setFixedSymbols.begin(), m_setFixedSymbols.end() );
#else
		// VC6 is REALLY beginning to annoy me...
		for (std::set<CString>::const_iterator it = m_setFixedSymbols.begin();
			it != m_setFixedSymbols.end();
			it++)
		{
            rsetFixedSymbols.insert(*it);
		}
#endif
		return true;
	}
	return false;
}


bool CResOrgOptionsFixedSymbolsPage::SetFixedSymbols(const std::set<CString>& setFixedSymbols)
{
	ASSERT(!::IsWindow(m_hWnd) );
	if (!::IsWindow(m_hWnd) )
	{
#if _MSC_VER >= 1300
		m_setFixedSymbols.insert(setFixedSymbols.begin(), setFixedSymbols.end() );
#else
		// VC6 is REALLY beginning to annoy me...
		for (std::set<CString>::const_iterator it = setFixedSymbols.begin();
			it != setFixedSymbols.end();
			it++)
		{
            m_setFixedSymbols.insert(*it);
		}
#endif

		return true;
	}
	return false;
}


bool CResOrgOptionsFixedSymbolsPage::SetDefaultFixedSymbols(const std::set<CString>& setDefaultFixedSymbols)
{
	ASSERT(!::IsWindow(m_hWnd) );
	if (!::IsWindow(m_hWnd) )
	{
#if _MSC_VER >= 1300
		m_setDefaultFixedSymbols.insert(setDefaultFixedSymbols.begin(), setDefaultFixedSymbols.end() );
#else
		// VC6 is REALLY beginning to annoy me...
		for (std::set<CString>::const_iterator it = setDefaultFixedSymbols.begin();
			it != setDefaultFixedSymbols.end();
			it++)
		{
            m_setDefaultFixedSymbols.insert(*it);
		}
#endif
		return true;
	}
	return false;
}


/////////////////////////////////////////////////////////////////////////////
// CResOrgOptionsFixedSymbolsPage implementation

void CResOrgOptionsFixedSymbolsPage::SetAvailableControls(void)
{
	EnableDlgControl(IDC_RESORG_FIXED_SYMBOLS_ADD,		!m_sSymbolToAdd.IsEmpty() );
	EnableDlgControl(IDC_RESORG_FIXED_SYMBOLS_REMOVE,	m_ctrlFixedSymbols.GetSelCount() > 0 );
}


void CResOrgOptionsFixedSymbolsPage::FillSymbolsListBox(const std::set<CString>& setFixedSymbols)
{
	m_ctrlFixedSymbols.ResetContent();

	for (std::set<CString>::const_iterator it = setFixedSymbols.begin();
		it != setFixedSymbols.end();
		it++)
	{
		m_ctrlFixedSymbols.AddString(*it);
	}
}


/////////////////////////////////////////////////////////////////////////////
// CResOrgOptionsFixedSymbolsPage message handlers

void CResOrgOptionsFixedSymbolsPage::OnChangeSymbolToAdd(void)
{
	UpdateData(TRUE);
	SetAvailableControls();
}


void CResOrgOptionsFixedSymbolsPage::OnSelChangeFixedSymbols(void)
{
	SetAvailableControls();
}


void CResOrgOptionsFixedSymbolsPage::OnClickedAddSymbol(void) 
{
	ASSERT(!m_sSymbolToAdd.IsEmpty() );

	if (CResourceSymbol::IsValidName(m_sSymbolToAdd) )
	{
		if (m_ctrlFixedSymbols.FindStringExact(0, m_sSymbolToAdd) < 0)
		{
			m_ctrlFixedSymbols.AddString(m_sSymbolToAdd);
		}
		else
		{
			AfxMessageBox("Symbol already added!");
		}
	}
	else
	{
		// Not a valid symbol name
		CNGMessageBox dlg;

		dlg.FormatMsgEx(MAKEINTRESOURCE(IDP_SYM_NAME_INVALID),
						_T("RTF"),
						m_sSymbolToAdd);
		dlg.SetRtf();
		dlg.SetStandardIcon(IDI_ERROR);
		dlg.AddButton(IDOK, TRUE, TRUE, _T("OK") );

		dlg.DoModal();
	}
	SetAvailableControls();
}


void CResOrgOptionsFixedSymbolsPage::OnClickedRemoveSymbols(void) 
{
	int nSelCount = m_ctrlFixedSymbols.GetSelCount();

	ASSERT(nSelCount > 0);
	if (nSelCount > 0)
	{
		CArray<int,int> arraySelectedItems;
		arraySelectedItems.SetSize(nSelCount);

		m_ctrlFixedSymbols.GetSelItems(nSelCount, arraySelectedItems.GetData()); 

		for (int n = nSelCount - 1; n >= 0; n--)
		{
			int nItem = arraySelectedItems[n];
			m_ctrlFixedSymbols.DeleteString(nItem);
		}
	}

	SetAvailableControls();
}


void CResOrgOptionsFixedSymbolsPage::OnClickedDefaults(void) 
{
	FillSymbolsListBox(m_setDefaultFixedSymbols);
}

⌨️ 快捷键说明

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