📄 renumwizselectsymbolspage.cpp
字号:
if (m_pEngine->Select(pSymbol) )
{
m_ctrlAvailableSymbols.RemoveSymbol(pSymbol);
m_ctrlSelectedSymbols.AddSymbol(pSymbol);
return TRUE;
}
return FALSE;
}
BOOL CRenumWizSelectSymbolsPage::IsSelected(CResourceSymbol* pSymbol) const
{
return m_pEngine->IsSelected(pSymbol);
}
BOOL CRenumWizSelectSymbolsPage::Deselect(CResourceSymbol* pSymbol)
{
if (m_pEngine->Deselect(pSymbol) )
{
m_ctrlSelectedSymbols.RemoveSymbol(pSymbol);
m_ctrlAvailableSymbols.AddSymbol(pSymbol);
return TRUE;
}
return FALSE;
}
/////////////////////////////////////////////////////////////////////////////
// CRenumWizSelectSymbolsPage message handlers
/******************************************************************************
* "Select" button handler
*
******************************************************************************/
void CRenumWizSelectSymbolsPage::OnClickedSelect(void)
{
// Work out which control is focused (left or right):
//
// * If the left control is focused, add to the selection
// * If the right control is focused, remove from the selection
//
// Note that we use a temporary list of symbols to prevent the list controls
// being modified whilst their contents are being examined.
switch (m_eSelMode)
{
case SEL_MODE_ADD:
{
m_ctrlAvailableSymbols.SetRedraw(FALSE);
m_ctrlSelectedSymbols.SetRedraw(FALSE);
CResourceSymbolList listSymbols;
POSITION pos = m_ctrlAvailableSymbols.GetFirstSelectedItemPosition();
while (NULL != pos)
{
int nItem = m_ctrlAvailableSymbols.GetNextSelectedItem(pos);
ASSERT(nItem >= 0);
CResourceSymbol* pSymbol = (CResourceSymbol*)m_ctrlAvailableSymbols.GetItemData(nItem);
ASSERT(NULL != pSymbol);
listSymbols.AddTail(pSymbol);
}
pos = listSymbols.GetHeadPosition();
while (NULL != pos)
{
CResourceSymbol* pSymbol = listSymbols.GetNext(pos);
Select(pSymbol);
}
m_ctrlAvailableSymbols.SetRedraw(TRUE);
m_ctrlSelectedSymbols.SetRedraw(TRUE);
}
break;
case SEL_MODE_REMOVE:
{
m_ctrlAvailableSymbols.SetRedraw(FALSE);
m_ctrlSelectedSymbols.SetRedraw(FALSE);
CResourceSymbolList listSymbols;
POSITION pos = m_ctrlSelectedSymbols.GetFirstSelectedItemPosition();
while (NULL != pos)
{
int nItem = m_ctrlSelectedSymbols.GetNextSelectedItem(pos);
ASSERT(nItem >= 0);
CResourceSymbol* pSymbol = (CResourceSymbol*)m_ctrlSelectedSymbols.GetItemData(nItem);
ASSERT(NULL != pSymbol);
listSymbols.AddTail(pSymbol);
}
pos = listSymbols.GetHeadPosition();
while (NULL != pos)
{
CResourceSymbol* pSymbol = listSymbols.GetNext(pos);
Deselect(pSymbol);
}
m_ctrlAvailableSymbols.SetRedraw(TRUE);
m_ctrlSelectedSymbols.SetRedraw(TRUE);
}
break;
default:
ASSERT(FALSE);
break;
}
SetAvailableControls();
}
/******************************************************************************
* "Select All" button handler
*
******************************************************************************/
void CRenumWizSelectSymbolsPage::OnClickedSelectAll(void)
{
int nItemCount = m_ctrlAvailableSymbols.GetItemCount();
if (nItemCount > 0)
{
m_ctrlAvailableSymbols.SetRedraw(FALSE);
m_ctrlSelectedSymbols.SetRedraw(FALSE);
for (int nItem = nItemCount - 1; nItem >= 0; nItem--)
{
CResourceSymbol* pSymbol = (CResourceSymbol*)m_ctrlAvailableSymbols.GetItemData(nItem);
ASSERT(NULL != pSymbol);
Select(pSymbol);
}
m_ctrlAvailableSymbols.SetRedraw(TRUE);
m_ctrlSelectedSymbols.SetRedraw(TRUE);
SetMode(SEL_MODE_NONE);
}
SetAvailableControls();
}
/******************************************************************************
* "Deselect All" button handler
*
******************************************************************************/
void CRenumWizSelectSymbolsPage::OnClickedDeselectAll(void)
{
int nItemCount = m_ctrlSelectedSymbols.GetItemCount();
if (nItemCount > 0)
{
m_ctrlAvailableSymbols.SetRedraw(FALSE);
m_ctrlSelectedSymbols.SetRedraw(FALSE);
for (int nItem = nItemCount - 1; nItem >= 0; nItem--)
{
CResourceSymbol* pSymbol = (CResourceSymbol*)m_ctrlSelectedSymbols.GetItemData(nItem);
ASSERT(NULL != pSymbol);
Deselect(pSymbol);
}
m_ctrlAvailableSymbols.SetRedraw(TRUE);
m_ctrlSelectedSymbols.SetRedraw(TRUE);
SetMode(SEL_MODE_NONE);
}
SetAvailableControls();
}
/******************************************************************************
* "Auto" button handler
*
******************************************************************************/
void CRenumWizSelectSymbolsPage::OnClickedAutoSelect(void)
{
CRenumWizAutoSelectSymbolsDlg dlg;
if (IDOK == dlg.DoModal() )
{
OnClickedDeselectAll(); // Deselect all symbols to start with
m_ctrlAvailableSymbols.SetRedraw(FALSE);
m_ctrlSelectedSymbols.SetRedraw(FALSE);
POSITION pos = m_pEngine->m_listAvailableSymbols.GetHeadPosition();
while (NULL != pos)
{
CResourceSymbol* pSymbol = m_pEngine->m_listAvailableSymbols.GetNext(pos);
if (NULL != pSymbol)
{
BOOL bRenumberSymbol = TRUE;
if (dlg.m_bRenumberConflicts)
{
// If this option is set only renumber conflicting symbols
if (!pSymbol->HasConflicts() )
{
bRenumberSymbol = FALSE;
continue;
}
}
switch (pSymbol->GetType())
{
case SYM_RESOURCE:
bRenumberSymbol = dlg.m_bRenumberResources;
break;
case SYM_BITMAP:
bRenumberSymbol = dlg.m_bRenumberBitmaps;
break;
case SYM_CONTROL:
bRenumberSymbol = dlg.m_bRenumberControls;
break;
case SYM_DIALOG:
bRenumberSymbol = dlg.m_bRenumberDialogs;
break;
case SYM_MENU:
bRenumberSymbol = dlg.m_bRenumberMenus;
break;
case SYM_ICON:
bRenumberSymbol = dlg.m_bRenumberIcons;
break;
case SYM_PROMPT:
bRenumberSymbol = dlg.m_bRenumberPrompts;
break;
case SYM_STRING:
bRenumberSymbol = dlg.m_bRenumberStrings;
break;
case SYM_COMMAND:
bRenumberSymbol = dlg.m_bRenumberCommands;
break;
default:
break;
}
if (bRenumberSymbol)
{
Select(pSymbol);
}
}
}
m_ctrlAvailableSymbols.SetRedraw(TRUE);
m_ctrlSelectedSymbols.SetRedraw(TRUE);
SetAvailableControls();
}
}
/******************************************************************************
* Called when an item changes in one of the list controls
*
******************************************************************************/
void CRenumWizSelectSymbolsPage::OnItemchangedAvailSymbols(NMHDR* pNMHDR, LRESULT* pResult)
{
UNREFERENCED_PARAMETER(pNMHDR);
UNREFERENCED_PARAMETER(pResult);
if (GetAvailableSymbolCount(TRUE) > 0)
{
SetMode(SEL_MODE_ADD);
}
else
{
SetMode(SEL_MODE_NONE);
}
}
void CRenumWizSelectSymbolsPage::OnItemchangedSelectedSymbols(NMHDR* pNMHDR, LRESULT* pResult)
{
UNREFERENCED_PARAMETER(pNMHDR);
UNREFERENCED_PARAMETER(pResult);
if (GetSelectedSymbolCount(TRUE) > 0)
{
SetMode(SEL_MODE_REMOVE);
}
else
{
SetMode(SEL_MODE_NONE);
}
}
/******************************************************************************
* Called when one of the list controls receives the input focus
*
******************************************************************************/
void CRenumWizSelectSymbolsPage::OnSetfocusAvailSymbols(NMHDR* pNMHDR, LRESULT* pResult)
{
UNREFERENCED_PARAMETER(pNMHDR);
UNREFERENCED_PARAMETER(pResult);
if (GetAvailableSymbolCount(TRUE) > 0)
{
SetMode(SEL_MODE_ADD);
}
}
void CRenumWizSelectSymbolsPage::OnSetfocusSelectedSymbols(NMHDR* pNMHDR, LRESULT* pResult)
{
UNREFERENCED_PARAMETER(pNMHDR);
UNREFERENCED_PARAMETER(pResult);
if (GetSelectedSymbolCount() > 0)
{
SetMode(SEL_MODE_REMOVE);
}
}
void CRenumWizSelectSymbolsPage::OnDblClickAvailableSymbols(NMHDR* pNMHDR, LRESULT* pResult)
{
UNREFERENCED_PARAMETER(pNMHDR);
UNREFERENCED_PARAMETER(pResult);
CResourceSymbolList listSymbols;
m_ctrlAvailableSymbols.GetSelection(listSymbols);
if (listSymbols.GetCount() > 0)
{
m_ctrlSelectedSymbols.SetRedraw(FALSE);
m_ctrlAvailableSymbols.SetRedraw(FALSE);
POSITION pos = listSymbols.GetHeadPosition();
while (NULL != pos)
{
CResourceSymbol* pSymbol = listSymbols.GetNext(pos);
if (NULL != pSymbol)
{
Select(pSymbol);
}
}
m_ctrlAvailableSymbols.SetRedraw(TRUE);
m_ctrlSelectedSymbols.SetRedraw(TRUE);
}
}
void CRenumWizSelectSymbolsPage::OnDblClickSelectedSymbols(NMHDR* pNMHDR, LRESULT* pResult)
{
UNREFERENCED_PARAMETER(pNMHDR);
UNREFERENCED_PARAMETER(pResult);
CResourceSymbolList listSymbols;
m_ctrlSelectedSymbols.GetSelection(listSymbols);
if (listSymbols.GetCount() > 0)
{
m_ctrlAvailableSymbols.SetRedraw(FALSE);
m_ctrlSelectedSymbols.SetRedraw(FALSE);
POSITION pos = listSymbols.GetHeadPosition();
while (NULL != pos)
{
CResourceSymbol* pSymbol = listSymbols.GetNext(pos);
if (NULL != pSymbol)
{
Deselect(pSymbol);
}
}
m_ctrlSelectedSymbols.SetRedraw(TRUE);
m_ctrlAvailableSymbols.SetRedraw(TRUE);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -