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

📄 resorgsymbolslistview.cpp

📁 一个vc中管理资源文件ID的插件
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	// TODO: add extra initialization before printing
}


void CResOrgSymbolsListView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}


/////////////////////////////////////////////////////////////////////////////
// CResOrgSymbolsListView diagnostics

#ifdef _DEBUG
void CResOrgSymbolsListView::AssertValid(void) const
{
	CResOrgSymbolsListView_BASE::AssertValid();
}


void CResOrgSymbolsListView::Dump(CDumpContext& dc) const
{
	CResOrgSymbolsListView_BASE::Dump(dc);
}


CResOrgSymbolsDoc* CResOrgSymbolsListView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CResOrgSymbolsDoc)));
	return (CResOrgSymbolsDoc*)m_pDocument;
}
#endif //_DEBUG


/////////////////////////////////////////////////////////////////////////////
// CResOrgSymbolsListView implementation

void CResOrgSymbolsListView::Initialise(void)
{
	if (!m_bInitialised)
	{
		m_ctrlSymbols.Initialise(TRUE);

		m_bInitialised = TRUE;
	}
}

BOOL CResOrgSymbolsListView::ConfirmDelete(const CString& sSymbol /*= _T("")*/ ) const
{
	CNGMessageBox dlg;

	if (!sSymbol.IsEmpty())
	{
		dlg.FormatMsgEx(MAKEINTRESOURCE(IDP_SYM_DELETE_WARNING_EX),
						_T("RTF"),
						sSymbol);
	}
	else
	{
		dlg.SetMsgEx( MAKEINTRESOURCE(	IDP_SYM_DELETE_WARNING),
										_T("RTF") );
	}
	dlg.SetRtf();
	dlg.SetStandardIcon(IDI_WARNING);
	dlg.AddButton(IDYES, FALSE, FALSE, _T("&Yes") );
	dlg.AddButton(IDNO, TRUE, TRUE, _T("&No") );

	return (IDYES == dlg.DoModal());
}

/////////////////////////////////////////////////////////////////////////////
// CResOrgSymbolsListView message handlers

int CResOrgSymbolsListView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	int nResult = CResOrgSymbolsListView_BASE::OnCreate(lpCreateStruct);
	
	if (-1 != nResult)
	{
		if (!m_ctrlSymbols.Create(	WS_CHILD | WS_VISIBLE | LVS_REPORT | LVS_SHOWSELALWAYS,
									CRect(0,0,0,0),
									this,
									IDC_RESORG_SYMBOLS))
		{
			TRACE(_T("Failed to create References tab window.\n"));

			return -1;
		}
	}
	return nResult;
}


void CResOrgSymbolsListView::OnSize(UINT nType, int cx, int cy) 
{
	CResOrgSymbolsListView_BASE::OnSize(nType, cx, cy);
	
	if (m_ctrlSymbols.GetSafeHwnd() != NULL)
	{
		m_ctrlSymbols.SetWindowPos(	NULL,
									0,
									0,
									cx,
									cy,
									SWP_SHOWWINDOW|SWP_NOZORDER
									);
	}
}


//	Context Menu handler
void CResOrgSymbolsListView::OnContextMenu(CWnd* /*pWnd*/, CPoint point) 
{
	// Make sure window is active
	GetParentFrame()->ActivateFrame();

	CCJMenu menu;
	if (menu.LoadMenu(IDM_SYM_CONTEXT_MENU))
	{
		menu.LoadToolbar(IDR_MAINFRAME);

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

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


void CResOrgSymbolsListView::OnItemChangedListCtrl(NMHDR* /*pNMHDR*/, LRESULT* pResult) 
{
	*pResult = 0;

	// Reserved for future expansion
}

	
/******************************************************************************
 *	Called when the user double clicks on an item in the list
 *
 ******************************************************************************/

void CResOrgSymbolsListView::OnDblClickListCtrl(NMHDR* /*pNMHDR*/, LRESULT* pResult) 
{
	*pResult = 0;

	OnCmdSymbolProperties();
}


void CResOrgSymbolsListView::OnCmdAutosizeColumns(void)
{
	m_ctrlSymbols.AutoSizeColumn();
}


/******************************************************************************
 *	Handlers for Edit|Select All menu command
 *
 ******************************************************************************/

void CResOrgSymbolsListView::OnCmdEditSelectAll(void) 
{
#if 0
	CMapStringToPtr* pMap = GetDocument()->GetSymbolMap();

	ASSERT(NULL != pMap);

	POSITION pos = pMap->GetStartPosition();

	// Zoom through the map...
	CString sKey;
	CResourceSymbol* pSymbol = NULL;
	while (NULL != pos)
	{
		pMap->GetNextAssoc(pos, sKey, (LPVOID&)pSymbol );

		if (NULL != pSymbol)
		{
			LV_FINDINFO FindInfo;
			FindInfo.flags = LVFI_PARAM;
			FindInfo.lParam = (DWORD)pSymbol;
			int nItem = GetListCtrl().FindItem(&FindInfo);
			if (nItem >= 0)
			{
				GetListCtrl().SetItemState(nItem, /*LVIS_FOCUSED |*/ LVIS_SELECTED, 0xff);
			}
		}
	}
#endif
}


void CResOrgSymbolsListView::OnUpdateEditSelectAll(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable( TRUE );
//	pCmdUI->Enable( !GetDocument()->IsEmpty() );
}



/******************************************************************************
 *	Edit the configuration of the currently selected Symbol
 *
 ******************************************************************************/

void CResOrgSymbolsListView::OnCmdSymbolProperties(void) 
{
	CResourceSymbol* pSymbol = m_ctrlSymbols.LookupSelection();
	if (NULL != pSymbol)
	{
		// Create a dialog object and let it do the difficult bit
		CSymbolPropertySheet dlg(IDP_SYM_PROPERTIES_CAPTION, this);

		dlg.Initialise( GetDocument()->GetSymbolBuffer(),
						pSymbol);

		if (IDOK == dlg.DoModal())
		{
			GetDocument()->Set(	pSymbol,
								dlg.m_GeneralPage.m_sName,
								dlg.m_GeneralPage.m_uValue,
								dlg.m_GeneralPage.m_bReadOnly);
		}
	}
}


void CResOrgSymbolsListView::OnUpdateSymbolProperties(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable( m_ctrlSymbols.LookupSelection() != NULL );
}


void CResOrgSymbolsListView::OnCmdAddSymbol(void)
{
	CString sName = GetDocument()->GetSymbolBuffer()->GetUnusedName(SYM_RESOURCE);
	ASSERT(!sName.IsEmpty());

	CResourceSymbol Symbol( sName,
							GetDocument()->GetSymbolBuffer()->m_uNextResourceValue);

	// Create a dialog object and let it do the difficult bit
	CSymbolPropertySheet dlg(IDP_SYM_ADD_CAPTION, this);

	dlg.Initialise( GetDocument()->GetSymbolBuffer(),
					&Symbol);

	dlg.m_GeneralPage.m_bWarnOnSymbolChanges	= FALSE;		// This is a new symbol, so don't warn

	if (IDOK == dlg.DoModal())
	{
		CResourceSymbol* pSymbol = GetDocument()->Add(	dlg.m_GeneralPage.m_sName,
														dlg.m_GeneralPage.m_uValue,
														0);

		pSymbol->SetReadOnly(dlg.m_GeneralPage.m_bReadOnly);

		GetDocument()->UpdateAllViews(NULL, SYM_CHANGED, (CObject*)pSymbol);	// For read only attribute only
	
		// Select the new symbol
		int nItem = m_ctrlSymbols.FindSymbol(pSymbol);
		if (nItem >= 0)
		{
			m_ctrlSymbols.EnsureVisible(nItem, FALSE);

			m_ctrlSymbols.SetItemState(nItem, LVIS_SELECTED, LVIS_SELECTED);
		}
	}
}


void CResOrgSymbolsListView::OnCmdDeleteSymbol(void) 
{
	CResourceSymbol* pSymbol = NULL;
	switch (m_ctrlSymbols.GetSelectedCount())
	{
		case 1:
			pSymbol = m_ctrlSymbols.LookupSelection();
			if (NULL != pSymbol)			// Single selection
			{
				BOOL bOkToDelete = TRUE;
				if (Options.WarnOnSymbolChanges())
				{
					if (!ConfirmDelete(pSymbol->GetName() ) )
					{
						bOkToDelete = FALSE;
					}
				}
				if (bOkToDelete)
				{
					GetDocument()->Remove(pSymbol);
				}
			}
			break;

		default:						// Multiple (or no) selection
			BOOL bOkToDelete = TRUE;
			if (Options.WarnOnSymbolChanges())
			{
				if (!ConfirmDelete() )
				{
					bOkToDelete = FALSE;
				}
			}
			if (bOkToDelete)
			{
				CTypedPtrArray<CPtrArray, CResourceSymbol*>arrayToDelete;
				POSITION pos = m_ctrlSymbols.GetFirstSelectedItemPosition();
				while (pos != NULL)
				{
					int nItem = m_ctrlSymbols.GetNextSelectedItem(pos);
					pSymbol = (CResourceSymbol*)m_ctrlSymbols.GetItemData(nItem);
					arrayToDelete.Add(pSymbol);
				}
				ASSERT(arrayToDelete.GetSize() != 0);
				for (int n = 0; n <= arrayToDelete.GetUpperBound(); n++)
				{
					pSymbol = arrayToDelete[n];
					GetDocument()->GetSymbolBuffer()->Remove(pSymbol);
					delete pSymbol;
				}
				GetDocument()->UpdateAllViews(NULL, SYM_REFRESH, NULL);
			}
			break;
	}
}


void CResOrgSymbolsListView::OnUpdateDeleteSymbol(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable( m_ctrlSymbols.GetSelectedCount() >= 1 );
}


LRESULT CResOrgSymbolsListView::OnHelpHitTest(WPARAM, LPARAM)
{
	return IDR_DISPLAY_SYMBOLS + HID_BASE_RESOURCE;
}

⌨️ 快捷键说明

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