亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? resorgappprojectsview.cpp

?? 一個(gè)vc中管理資源文件ID的插件
?? CPP
字號(hào):
/************************************************************************
 *
 *                   Resource ID Organiser Add-In
 *
 *       (c) Copyright 2000-2001 by Andy Metcalfe (andy.metcalfe@lineone.net)
 *                         All rights reserved.
 *
 ************************************************************************
 *                                                                       
 *  Filename    : ResOrgAppProjectsView.cpp
 *
 *  Description : CResOrgAppProjectsView - 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/ResOrgApp/ResOrgAppProjectsView.cpp $
 *   $Revision: 6 $
 *       $Date: 8/07/01 8:40 $
 *     $Author: Andy $
 *
 *    $History: ResOrgAppProjectsView.cpp $
 * 
 * *****************  Version 6  *****************
 * User: Andy         Date: 8/07/01    Time: 8:40
 * Updated in $/Projects/AddIns/ResOrg/ResOrgApp
 * The Projects Display now autosizes the list control when it is resized
 * 
 * *****************  Version 5  *****************
 * User: Andy         Date: 5/05/01    Time: 20:49
 * Updated in $/Projects/AddIns/ResOrg/ResOrgApp
 * Trap attempts to Renumber symbols in empty resource symbol files from
 * the Workspace Display
 * 
 * *****************  Version 4  *****************
 * User: Andy         Date: 26/04/01   Time: 19:47
 * Updated in $/Projects/AddIns/ResOrg/ResOrgApp
 * Renamed Resource.h to ResOrgAddIn_Res.h
 * 
 * *****************  Version 3  *****************
 * User: Andy         Date: 23/04/01   Time: 21:25
 * Updated in $/Projects/AddIns/ResOrg/ResOrgApp
 * Added icons to context menu
 * 
 * *****************  Version 2  *****************
 * User: Andy         Date: 5/03/01    Time: 19:12
 * Updated in $/Projects/AddIns/ResOrg/ResOrgApp
 * 1.  CResOrgAppProjectsView::OnCmdOpenProject() now displays a message
 * box if a resource symbol file cannot be located in a project instead of
 * ASSERTing
 * 2.  The Workspace Display is now disabled if no workspace is loaded
 * 3.  CResOrgAppProjectsView::SortList() now calls the base class
 * implementation to set the correct sort image in the header control
 * 4.  Items inserted into the list control now have their item data set
 * to allow sorting
 * 5.  CResOrgAppProjectsView::OnCmdOpenProject() now displays a message
 * box instead of ASSERTing if no resource symbol file can be identified
 * within a project
 * 
 * *****************  Version 1  *****************
 * User: Andy         Date: 2/03/01    Time: 17:20
 * Created in $/Projects/AddIns/ResOrg/ResOrgApp
 * 
 * *****************  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: $
 *
 ************************************************************************/

// ResOrgAppProjectsView.cpp : implementation of the CResOrgAppProjectsView class
//

#include "StdAfx.h"
#include "ResOrgApp_Res.h"

#include "ResOrgAppProjectsDoc.h"

#include "ResOrgAppProjectsView.h"


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


/////////////////////////////////////////////////////////////////////////////
// CResOrgAppProjectsView

IMPLEMENT_DYNCREATE(CResOrgAppProjectsView, CResOrgAppProjectsView_BASE)

BEGIN_MESSAGE_MAP(CResOrgAppProjectsView, CResOrgAppProjectsView_BASE)
	//{{AFX_MSG_MAP(CResOrgAppProjectsView)
	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()


/////////////////////////////////////////////////////////////////////////////
// CResOrgAppProjectsView construction/destruction

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


CResOrgAppProjectsView::~CResOrgAppProjectsView(void)
{
	Clear();
}


/////////////////////////////////////////////////////////////////////////////
// CResOrgAppProjectsView 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 CResOrgAppProjectsView::PreCreateWindow(CREATESTRUCT& cs)
{
	cs.style = (cs.style & ~LVS_TYPEMASK) | LVS_REPORT /*| LVS_SINGLESEL*/ | LVS_SHOWSELALWAYS;

	return CResOrgAppProjectsView_BASE::PreCreateWindow(cs);
}


void CResOrgAppProjectsView::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;
	}
	CResOrgAppProjectsView_BASE::OnInitialUpdate();
}


void CResOrgAppProjectsView::OnUpdate( CView* pSender, LPARAM lHint, CObject* pHint)
{
	UNREFERENCED_PARAMETER(pSender);
	UNREFERENCED_PARAMETER(pHint);

	switch (lHint)
	{
		case CLEAR_WORKSPACE:
			GetListCtrl().DeleteAllItems();
			GetListCtrl().EnableWindow(FALSE);
			Clear();
			break;

		case SHOW_WORKSPACE:
			GetListCtrl().DeleteAllItems();
			GetListCtrl().EnableWindow(TRUE);
			Clear();

			GetDocument()->GetProjects(m_arrayProjects);
			FillListCtrl();

			// If there's only one project, open its symbol
			// file automatically
			if (m_arrayProjects.GetSize() == 1)
			{
				CString sProject = m_arrayProjects[0];
				if (!sProject.IsEmpty())
				{
					OpenProject(sProject);
				}
			}
			break;


		default:
			Clear();

			GetDocument()->GetProjects(m_arrayProjects);
			GetListCtrl().EnableWindow( (m_arrayProjects.GetSize() > 0) );

			FillListCtrl();

			break;
	}
}	


void CResOrgAppProjectsView::OnDraw(CDC* /*pDC*/)
{
	CResOrgAppProjectsDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	// TODO: add draw code for native data here
}


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

	// Resort contents if sorted before
	if (m_nSortColumn >= 0)
	{
		CResOrgAppProjectsView_BASE::SortList(nColumn, bAscending);

		DWORD lParam = MAKELONG(m_nSortColumn, m_bSortAscending);

		GetListCtrl().SortItems(ListViewCompareProc, lParam);

		return true;
	}
	return false;
}


/////////////////////////////////////////////////////////////////////////////
// CResOrgAppProjectsView diagnostics

#ifdef _DEBUG
void CResOrgAppProjectsView::AssertValid(void) const
{
	CResOrgAppProjectsView_BASE::AssertValid();
}


void CResOrgAppProjectsView::Dump(CDumpContext& dc) const
{
	CResOrgAppProjectsView_BASE::Dump(dc);
}


CResOrgAppProjectsDoc* CResOrgAppProjectsView::GetDocument(void) // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CResOrgAppProjectsDoc)));

	return (CResOrgAppProjectsDoc*)m_pDocument;
}
#endif //_DEBUG


/////////////////////////////////////////////////////////////////////////////
// CResOrgAppProjectsView implementation

void CResOrgAppProjectsView::FillListCtrl(void)
{
	GetListCtrl().SetRedraw(FALSE);

	GetListCtrl().DeleteAllItems();

	CResOrgAppProjectsDoc* pDoc = GetDocument();

	if (NULL != pDoc)
	{
		int nItem = -1;

		for (int n = 0; n < m_arrayProjects.GetSize(); n++)
		{
			CString sProject = m_arrayProjects[n];

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

			GetListCtrl().SetItemData(nItem, (DWORD)&(m_arrayProjects[n]) );
		}
	}
	SortList(m_nSortColumn, m_bSortAscending);

	GetListCtrl().SetRedraw(TRUE);
}


void CResOrgAppProjectsView::Clear(void)
{
	m_arrayProjects.RemoveAll();
}


/******************************************************************************
 *	Static callback function for List Control sorting
 *
 *	The list control will then repeatedly call this to determine how to sort
 *	its data
 *
 ******************************************************************************/

int CALLBACK CResOrgAppProjectsView::ListViewCompareProc(	LPARAM lParam1,
															LPARAM lParam2,
															LPARAM lParamSort)
{
	CString* pItem1 = (CString*)lParam1;
	CString* pItem2 = (CString*)lParam2;

	int nResult = 0;		// Default => Equal

	if ( (NULL != pItem1) && (NULL != pItem2) )
	{
		int nColumn			= LOWORD(lParamSort);
		BOOL bSortAscending	= HIWORD(lParamSort);

		switch (nColumn)
		{
			case 0:
				{
					CString sItem1 = *pItem1;
					CString sItem2 = *pItem2;

					nResult = lstrcmpi(sItem1, sItem2);

					if ( (sItem1.IsEmpty()) || (sItem2.IsEmpty()) )
					{
						nResult = -nResult;			// Modify sort so a blank entry is HIGHER than one with something in it
					}
				}
				break;

			default:
				return 0;
	   	}
		if (!bSortAscending)
		{
			nResult = -nResult;			// Sneaky way to reverse sort order...
		}
	}
	return nResult;
}


CDocument* CResOrgAppProjectsView::OpenProject(const CString& sProject)
{
	CDocument* pDoc = NULL;

	// First, extract the rc file name by parsing the .dsp file
	CString sResourceFile = GetDocument()->GetResourceFileName(sProject);
	if (!sResourceFile.IsEmpty())
	{
		// Retrieve the name of the symbol file by parsing the rc file
		CString sSymbolFile = ::GetSymbolFileName(sResourceFile);
		if (!sSymbolFile.IsEmpty())
		{
			pDoc = GetDocument()->GetOpenDocument(sSymbolFile);
			if (NULL != pDoc)
			{
				// If the file is already open, just activate it
				GetDocument()->SetActiveDocument(pDoc);
			}
			else
			{
				// ...otherwise, we have to open it...
				//
				// To Do: convert to flash box
				//AfxMessageBox( "Displaying symbols for: " + sSymbolFile);

				pDoc = AfxGetApp()->OpenDocumentFile(sSymbolFile);

				ASSERT(NULL != pDoc);
			}
		}
		else
		{
			ASSERT(FALSE);		// Unable to identify symbol file
		}
	}
	return pDoc;
}


/////////////////////////////////////////////////////////////////////////////
// CResOrgAppProjectsView message handlers

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


//	Context Menu handler
void CResOrgAppProjectsView::OnContextMenu(CWnd* pWnd, CPoint point) 
{
	UNREFERENCED_PARAMETER(pWnd);

	// Make sure window is active
	GetParentFrame()->ActivateFrame();

	// Convert to client coordinates for hit testing
	// Note that TrackPopupMenu() expects its coordinates to be screen, not client!
	CPoint ptClient = point;
	ScreenToClient(&ptClient);

	UINT nFlags = 0;
	int nIndex = GetListCtrl().HitTest(ptClient, &nFlags);
	
	if (nIndex >= 0)
	{
		CCJMenu menu;
		if (menu.LoadMenu(IDM_PRJ_CONTEXT_MENU))
		{
			menu.LoadToolbar(IDM_PRJ_CONTEXT_MENU);

			CMenu* pPopup = menu.GetSubMenu(0);
			ASSERT(NULL != pPopup);

			pPopup->SetDefaultItem(ID_PROJ_OPEN);
			pPopup->TrackPopupMenu(TPM_RIGHTBUTTON | TPM_LEFTALIGN,
								   point.x,
								   point.y,
								   AfxGetMainWnd()); // route commands through main window
			return;
		}
	}
	Default();									// Default message handling if we didn't do anything
}


void CResOrgAppProjectsView::OnDblClick(NMHDR* /*pNMHDR*/, LRESULT* pResult) 
{
	*pResult = 0;

	OnCmdOpenProject();
}


void CResOrgAppProjectsView::OnCmdOpenProject(void)
{
	if (GetListCtrl().GetSelectedCount() > 0)
	{
		CResOrgAppProjectsDoc* pDoc = GetDocument();
		ASSERT_VALID(pDoc);

		if (NULL != pDoc)
		{
			POSITION pos = GetListCtrl().GetFirstSelectedItemPosition();
			while (pos != NULL)
			{
				int nItem = GetListCtrl().GetNextSelectedItem(pos);
				if (nItem >= 0)
				{
					CString sProject = GetListCtrl().GetItemText(nItem, 0);

					if (NULL == OpenProject(sProject) )
					{
						CString sMsg;
						sMsg.Format(IDP_PRJ_NO_SYM_FILE, sProject);

						AfxMessageBox(	sMsg,
										MB_OK | MB_ICONEXCLAMATION);
					}
				}
			}
		}
	}
}


void CResOrgAppProjectsView::OnCmdRenumberProject(void)
{
	if (GetListCtrl().GetSelectedCount() > 0)
	{
		CResOrgAppProjectsDoc* pDoc = GetDocument();
		ASSERT_VALID(pDoc);

		if (NULL != pDoc)
		{
			POSITION pos = GetListCtrl().GetFirstSelectedItemPosition();
			while (pos != NULL)
			{
				int nItem = GetListCtrl().GetNextSelectedItem(pos);
				if (nItem >= 0)
				{
					CString sProject = GetListCtrl().GetItemText(nItem, 0);

					CResOrgSymbolsDoc* pDoc = dynamic_cast<CResOrgSymbolsDoc*>( OpenProject(sProject) );
					if (NULL != pDoc)
					{
						if (pDoc->GetSymbolBuffer()->GetSymbolCount() > 0)
						{
							AfxGetMainWnd()->PostMessage(WM_COMMAND, ID_TOOLS_RENUMBER);
						}
						else
						{
							AfxMessageBox(	_T("This file contains no symbols"),
											MB_OK | MB_ICONSTOP);
						}
					}
				}
			}
		}
	}
}


void CResOrgAppProjectsView::OnUpdateRenumberProject(CCmdUI* pCmdUI)
{
	pCmdUI->Enable( GetListCtrl().GetSelectedCount() == 1);
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品热久久久久夜色精品三区| 久久福利视频一区二区| 国产精品福利在线播放| 久久综合中文字幕| 久久久综合激的五月天| 久久婷婷成人综合色| 久久亚洲精华国产精华液| 精品欧美一区二区在线观看| 日韩精品一区二区三区三区免费| 日韩欧美国产麻豆| 久久网站热最新地址| 欧美激情一区二区三区四区| 国产精品久久久久毛片软件| 亚洲欧洲一区二区三区| 亚洲精品亚洲人成人网在线播放| 亚洲免费视频成人| 婷婷激情综合网| 久久99久久精品| 高清不卡一区二区| 91蜜桃网址入口| 欧美美女激情18p| 欧美成人激情免费网| 久久久国产一区二区三区四区小说| 国产欧美一二三区| 看电视剧不卡顿的网站| 国产电影一区在线| 一本到不卡精品视频在线观看| 欧美伊人久久大香线蕉综合69| 777奇米四色成人影色区| 日韩欧美www| 中文字幕在线视频一区| 亚洲综合久久av| 久久国产精品色| 成人免费毛片嘿嘿连载视频| 欧美羞羞免费网站| 精品国产一区二区精华| 中文欧美字幕免费| 亚洲成人1区2区| 国内成人免费视频| 色一情一乱一乱一91av| 日韩欧美一二区| 国产精品激情偷乱一区二区∴| 亚洲伊人伊色伊影伊综合网| 久久99精品久久久久久久久久久久| 成人黄色综合网站| 4hu四虎永久在线影院成人| 国产午夜精品理论片a级大结局| 亚洲免费在线视频一区 二区| 欧美a一区二区| 99精品国产热久久91蜜凸| 91精品免费观看| 中文字幕在线不卡| 九色综合狠狠综合久久| 91网页版在线| 欧美xxxx老人做受| 有码一区二区三区| 国产激情一区二区三区桃花岛亚洲| 91国在线观看| 国产精品人人做人人爽人人添| 久久久国产精品不卡| 一区二区三区高清不卡| 国产麻豆一精品一av一免费| 成人高清视频在线| 欧美一级专区免费大片| 最新国产の精品合集bt伙计| 免费观看91视频大全| 一本久久a久久免费精品不卡| 天天免费综合色| 成人午夜激情影院| 日韩欧美成人一区| 亚瑟在线精品视频| av电影天堂一区二区在线| 日韩欧美国产麻豆| 香蕉影视欧美成人| 91啦中文在线观看| 国产日韩亚洲欧美综合| 美女国产一区二区| 欧美午夜精品一区| 国产精品久久久久久久午夜片 | 亚洲综合久久久| 成人精品国产一区二区4080| 欧美成人aa大片| 亚洲成人av在线电影| 91麻豆产精品久久久久久| 欧美经典三级视频一区二区三区| 免费看日韩a级影片| 欧美另类一区二区三区| 一区二区三区资源| 一本一道综合狠狠老| 国产精品日日摸夜夜摸av| 国产一区二区在线免费观看| 欧美一区二区三区啪啪| 天天影视网天天综合色在线播放| 色噜噜狠狠色综合中国| 综合电影一区二区三区| 成人av一区二区三区| 日本一区免费视频| 国产成人无遮挡在线视频| 精品国产电影一区二区| 久久国产综合精品| 精品欧美一区二区在线观看| 日韩精彩视频在线观看| 在线观看91av| 蜜臀a∨国产成人精品| 欧美日韩大陆一区二区| 五月激情综合婷婷| 欧美精品久久99久久在免费线| 亚洲成av人影院| 欧美日韩在线直播| 午夜精品久久久| 在线成人免费视频| 男女激情视频一区| 精品久久久久av影院| 老司机午夜精品| 久久久国产精品麻豆| 成人午夜伦理影院| 亚洲日本成人在线观看| 欧美中文字幕一二三区视频| 亚洲在线视频免费观看| 欧美精品第1页| 久久91精品久久久久久秒播| 久久综合丝袜日本网| 国产成人亚洲精品狼色在线| 亚洲国产精品精华液2区45| 成人精品国产免费网站| 亚洲综合激情网| 91精品在线一区二区| 久久精品国产999大香线蕉| 久久久久久久免费视频了| 国产精品一二三在| 亚洲码国产岛国毛片在线| 欧美男生操女生| 国精产品一区一区三区mba桃花 | 日韩国产精品久久久| 精品国产成人系列| av男人天堂一区| 日韩影院精彩在线| 久久久精品天堂| 欧美影院午夜播放| 精品在线免费观看| 亚洲日本护士毛茸茸| 欧美一区二区在线免费观看| 国产精品 日产精品 欧美精品| 亚洲精品欧美综合四区| 日韩欧美在线影院| 99久久国产综合精品色伊| 日韩精品电影一区亚洲| 欧美国产精品中文字幕| 欧美主播一区二区三区美女| 久久国产精品免费| 一级女性全黄久久生活片免费| xf在线a精品一区二区视频网站| 97精品视频在线观看自产线路二| 天天色天天操综合| 中文字幕亚洲区| 日韩三区在线观看| 91啪亚洲精品| 国产一区二区精品久久99| 亚洲综合色区另类av| 国产日本一区二区| 3atv在线一区二区三区| av在线不卡电影| 久久成人免费网| 一区二区成人在线| 国产欧美一区二区三区在线老狼| 欧美色综合网站| 成人激情校园春色| 久久精品国产色蜜蜜麻豆| 亚洲国产日产av| 欧美极品另类videosde| 欧美一区二区三区在线看| 色综合久久综合| 大美女一区二区三区| 蜜桃精品视频在线观看| 又紧又大又爽精品一区二区| 国产欧美视频在线观看| 欧美一卡2卡三卡4卡5免费| 在线亚洲欧美专区二区| 大胆亚洲人体视频| 国产最新精品免费| 日本91福利区| 天堂久久久久va久久久久| 亚洲精品国产视频| 国产精品美女久久久久久| 久久一二三国产| 欧美va天堂va视频va在线| 69av一区二区三区| 欧美少妇性性性| 91福利在线导航| 99国产精品久久久久久久久久久| 国产精品亚洲一区二区三区在线 | 久久精品国产精品亚洲红杏| 午夜免费欧美电影| 亚洲国产精品综合小说图片区| 国产精品久久久久久久久久免费看| 久久久亚洲午夜电影| 欧美videossexotv100| 日韩精品中文字幕在线一区| 制服丝袜成人动漫| 欧美高清视频在线高清观看mv色露露十八 |