📄 resorgprojectsview.cpp
字号:
/************************************************************************
*
* Resource ID Organiser Add-In
*
* (c) Copyright 2000-2001 by Andy Metcalfe (andy.metcalfe@lineone.net)
* All rights reserved.
*
************************************************************************
*
* Filename : ResOrgProjectsView.cpp
*
* Description : CResOrgProjectsView - project workspace list view class
*
* Compiler : Microsoft Visual C++ 6.0, Service Pack 3 or 4
*
* Target
* Environment : Windows 98/NT
*
* 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 Andy 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.resorg.co.uk 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/ResOrgAddIn/ResOrgProjectsView.cpp $
* $Revision: 11 $
* $Date: 10/07/01 9:39 $
* $Author: Andy $
*
* $History: ResOrgProjectsView.cpp $
*
* ***************** Version 11 *****************
* User: Andy Date: 10/07/01 Time: 9:39
* Updated in $/Projects/AddIns/ResOrg/ResOrgAddIn
* Fix syntax errors
*
* ***************** Version 10 *****************
* User: Andy Date: 8/07/01 Time: 8:41
* Updated in $/Projects/AddIns/ResOrg/ResOrgAddIn
* The Projects Display now autosizes the list control when it is resized
*
* ***************** Version 9 *****************
* User: Andy Date: 5/05/01 Time: 20:48
* Updated in $/Projects/AddIns/ResOrg/ResOrgAddIn
* Trap attempts to Renumber symbols in empty resource symbol files from
* the Workspace Display
*
* ***************** Version 8 *****************
* User: Andy Date: 26/04/01 Time: 19:41
* Updated in $/Projects/AddIns/ResOrg/ResOrgAddIn
* Renamed Resource.h to ResOrgAddIn_Res.h
*
* ***************** Version 7 *****************
* User: Andy Date: 23/04/01 Time: 21:23
* Updated in $/Projects/AddIns/ResOrg/ResOrgAddIn
* 1. Added icons to context menu
* 2. Set default item on context menu
*
* ***************** Version 6 *****************
* User: Andy Date: 5/03/01 Time: 19:05
* Updated in $/Projects/AddIns/ResOrg/ResOrgAddIn
* CResOrgProjectsView::OnCmdOpenProject() now displays a message box if a
* resource symbol file cannot be located in a project instead of
* ASSERTing
*
* ***************** Version 5 *****************
* User: Andy Date: 2/03/01 Time: 17:50
* Updated in $/Projects/AddIns/ResOrg/ResOrgAddIn
* GetSymbolFileName() is now a global function, rather than a member of
* CWorkspaceHelper
*
* ***************** Version 4 *****************
* User: Andy Date: 17/02/01 Time: 7:08
* Updated in $/Projects/AddIns/ResOrg/ResOrgAddIn
* Context menu ID changed
*
* ***************** Version 3 *****************
* User: Andy Date: 29/11/00 Time: 18:37
* Updated in $/Projects/AddIns/ResOrg/ResOrgAddIn
* 1. Moved Office2KDlg code to its own DLL
* 2. Added file banners
*
* $Nokeywords: $
*
************************************************************************/
// ResOrgProjectsView.cpp : implementation of the CResOrgProjectsView class
//
#include "StdAfx.h"
#include "ResOrgAddIn_Res.h"
#include "ResOrgAddInApp.h"
#include "ResOrgProjectsDoc.h"
#include "WorkspaceHelper.h"
#include "ResOrgProjectsView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CResOrgProjectsView
IMPLEMENT_DYNCREATE(CResOrgProjectsView, CResOrgProjectsView_BASE)
BEGIN_MESSAGE_MAP(CResOrgProjectsView, CResOrgProjectsView_BASE)
//{{AFX_MSG_MAP(CResOrgProjectsView)
ON_WM_SIZE()
ON_WM_CONTEXTMENU()
ON_COMMAND( ID_PROJ_OPEN, OnCmdOpenProject)
ON_COMMAND( ID_PROJ_RENUMBER, OnCmdRenumberProject)
ON_UPDATE_COMMAND_UI( ID_PROJ_RENUMBER, OnUpdateRenumberProject)
//}}AFX_MSG_MAP
// The following are outside of ClassWizard's reach as it can't understand
// them....
ON_NOTIFY_REFLECT( NM_DBLCLK, OnDblClick)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CResOrgProjectsView construction/destruction
CResOrgProjectsView::CResOrgProjectsView(void)
{
m_bInitialised = FALSE;
m_nSortColumn = 0;
m_bSortAscending = true;
}
CResOrgProjectsView::~CResOrgProjectsView(void)
{
Clear();
}
/////////////////////////////////////////////////////////////////////////////
// CResOrgProjectsView 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 CResOrgProjectsView::PreCreateWindow(CREATESTRUCT& cs)
{
cs.style = (cs.style & ~LVS_TYPEMASK) | LVS_REPORT /*| LVS_SINGLESEL*/ | LVS_SHOWSELALWAYS;
return CResOrgProjectsView_BASE::PreCreateWindow(cs);
}
void CResOrgProjectsView::OnInitialUpdate(void)
{
// Change style to have:
//
// 1. Flat header (requires CJListCtrl)
// 2. Full row selection (requires ComCtl32.dll v4.71)
//
if (!m_bInitialised)
{
SubclassHeader();
SetExtendedStyle(GetExtendedStyle() | LVS_EX_FULLROWSELECT);
CRect rect;
GetClientRect(rect);
GetListCtrl().InsertColumn(0,
_T("Project"),
LVCFMT_LEFT,
rect.Width(),
-1);
m_bInitialised = TRUE;
}
CResOrgProjectsView_BASE::OnInitialUpdate();
}
void CResOrgProjectsView::OnUpdate( CView* pSender, LPARAM lHint, CObject* pHint)
{
UNREFERENCED_PARAMETER(pSender);
UNREFERENCED_PARAMETER(pHint);
switch (lHint)
{
case CLEAR_WORKSPACE:
GetListCtrl().DeleteAllItems();
Clear();
break;
case SHOW_WORKSPACE:
GetListCtrl().DeleteAllItems();
Clear();
Workspace.GetProjects(m_arrayProjects);
FillListCtrl();
//if (::IsWindowVisible(m_hWnd) )
{
// If there's only one project, open its symbol
// file automatically
if (m_arrayProjects.GetSize() == 1)
{
IGenericProject* pProject = m_arrayProjects[0];
if (NULL != pProject)
{
CString sProject = Workspace.GetName(pProject);
ASSERT(!sProject.IsEmpty());
OpenProject(sProject);
}
}
}
break;
default:
GetListCtrl().DeleteAllItems();
Clear();
Workspace.GetProjects(m_arrayProjects);
FillListCtrl();
break;
}
}
void CResOrgProjectsView::OnDraw(CDC* /*pDC*/)
{
CResOrgProjectsDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
bool CResOrgProjectsView::SortList(int nColumn, bool bAscending)
{
m_nSortColumn = nColumn;
m_bSortAscending = bAscending;
// Resort contents if sorted before
if (m_nSortColumn >= 0)
{
DWORD lParam = MAKELONG(m_nSortColumn, m_bSortAscending);
GetListCtrl().SortItems(ListViewCompareProc, lParam);
return true;
}
return false;
}
/////////////////////////////////////////////////////////////////////////////
// CResOrgProjectsView diagnostics
#ifdef _DEBUG
void CResOrgProjectsView::AssertValid(void) const
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -