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

📄 resorgprojectslistctrlvc7.cpp

📁 ResOrg 图形化管理Vc项目的资源ID的工具的源代码。 ResOrg - Manage and Renumber Resource Symbol IDs Introduction The
💻 CPP
字号:
// ResOrgProjectsListCtrlVc7.cpp : implementation file
//

#include "stdafx.h"
#include "ResOrgNETAddInToolWindows.h"
#include "ResOrgNETProjectsListCtrl.h"


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


/////////////////////////////////////////////////////////////////////////////
// CResOrgProjectsListCtrlVc7

IMPLEMENT_DYNAMIC(CResOrgProjectsListCtrlVc7, CResOrgProjectsListCtrlVc7_BASE)


/////////////////////////////////////////////////////////////////////////////
// CResOrgProjectsListCtrlVc7 construction/destruction

CResOrgProjectsListCtrlVc7::CResOrgProjectsListCtrlVc7(void)
{
	m_bInitialised		= FALSE;
	m_nSortColumn		= 0;
	m_bSortAscending	= true;
}


CResOrgProjectsListCtrlVc7::~CResOrgProjectsListCtrlVc7(void)
{
	Clear();

	m_AutomationHelper.SetDTE(NULL);
}


/******************************************************************************
 *	Message Map implementation
 *
 ******************************************************************************/

BEGIN_MESSAGE_MAP(CResOrgProjectsListCtrlVc7, CResOrgProjectsListCtrlVc7_BASE)

	ON_WM_SIZE()

END_MESSAGE_MAP()



/////////////////////////////////////////////////////////////////////////////
// CResOrgProjectsListCtrlVc7 overrides

/******************************************************************************
 *	This method is called by the framework before the creation of the
 *	window attached to this CWnd object.
 *
 *	This override is used to modify the window styles here to set the List
 *	control style to report view.
 *
 *	This is achieved by masking out the view style using LVS_TYPEMASK
 *	and setting the LVS_REPORT style. LVS_SINGLESEL is also set to allow
 *	only single selections.
 *
 *	Note that we DON'T want the LVS_SORTASCENDING style as this sorts items
 *	by item text and in this case we cannot have a comparison function.
 *
 ******************************************************************************/

BOOL CResOrgProjectsListCtrlVc7::PreCreateWindow(CREATESTRUCT& cs)
{
	cs.style = (cs.style & ~LVS_TYPEMASK) | LVS_REPORT /*| LVS_SINGLESEL*/ | LVS_SHOWSELALWAYS;

	return CResOrgProjectsListCtrlVc7_BASE::PreCreateWindow(cs);
}


bool CResOrgProjectsListCtrlVc7::SortList(int nColumn, bool bAscending)
{
	m_nSortColumn		= nColumn;
	m_bSortAscending	= bAscending;

	// Resort contents if sorted before
	if (m_nSortColumn >= 0)
	{
		CCJSortClass sorter(this, m_nSortColumn);
		sorter.Sort(m_bSortAscending, DT_STRING);

		return true;
	}
	return false;
}


/////////////////////////////////////////////////////////////////////////////
// CResOrgProjectsListCtrlVc7 operations

bool CResOrgProjectsListCtrlVc7::Initialise(CComPtr<EnvDTE::_DTE> pDTE)
{
	// Change style to have:
	//
	//	1.	Flat header (requires CJListCtrl)
	//	2.	Full row selection (requires ComCtl32.dll v4.71)
	//
	if (!m_bInitialised)
	{
		m_AutomationHelper.SetDTE(pDTE);

		CCJThemeHelper theme;
		if (!theme.IsAppThemed() )
		{
			SubclassHeader();
		}
		SetExtendedStyle(GetExtendedStyle() | LVS_EX_FULLROWSELECT);

		CRect rect;
		GetClientRect(rect);

		InsertColumn(	0,
						_T("Project"),
						LVCFMT_LEFT,
						rect.Width(),
						-1);

		m_bInitialised = true;

		return true;
	}
	return false;
}


void CResOrgProjectsListCtrlVc7::Clear(void)
{
	if (::IsWindow(m_hWnd) )
	{
		DeleteAllItems();
	}
	for (int n = 0; n < m_arrayProjects.GetSize(); n++)
	{
		EnvDTE::Project* pProject = m_arrayProjects[n];
		if (NULL != pProject)
		{
			pProject->Release();
		}
	}
	m_arrayProjects.RemoveAll();
}


/////////////////////////////////////////////////////////////////////////////
// CResOrgProjectsListCtrlVc7 implementation

void CResOrgProjectsListCtrlVc7::FillListCtrl(void)
{
	SetRedraw(FALSE);

	Clear();

	m_AutomationHelper.GetProjects(m_arrayProjects);

	int nItem = -1;

	for (int n = 0; n < m_arrayProjects.GetSize(); n++)
	{
		EnvDTE::Project* pProject = m_arrayProjects[n];
		if (NULL != pProject)
		{
			CString sProject = m_AutomationHelper.GetName(pProject);

			VERIFY(-1 != InsertItem(++nItem, sProject) );

			SetItemData(nItem, (DWORD_PTR)pProject);
		}
	}
	SortList(m_nSortColumn, m_bSortAscending);

	SetRedraw(TRUE);
}


/////////////////////////////////////////////////////////////////////////////
// CResOrgProjectsListCtrlVc7 message handlers

void CResOrgProjectsListCtrlVc7::OnSize(UINT nType, int cx, int cy) 
{
	CResOrgProjectsListCtrlVc7_BASE::OnSize(nType, cx, cy);
	
	if (m_bInitialised)
	{
		AutoSizeColumn();
	}
}



⌨️ 快捷键说明

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