diff --git a/Charu3Tree.cpp b/Charu3Tree.cpp index 3b38dfe..2960117 100644 --- a/Charu3Tree.cpp +++ b/Charu3Tree.cpp @@ -235,24 +235,6 @@ void CCharu3Tree::setImageList(POINT posSize, CString strFileName, CString strPa } } -//--------------------------------------------------- -//関数名 checkRedundancyID(int nID) -//機能 重複IDをチェック -//--------------------------------------------------- -bool CCharu3Tree::checkRedundancyID(int nID) -{ - bool isRet = false; - std::list::iterator it; - - for (it = m_MyStringList.begin(); it != m_MyStringList.end(); it++) { - if (it->m_nMyID == nID) { - isRet = true; - break; - } - } - return isRet; -} - //--------------------------------------------------- //関数名 checkMyChild(HTREEITEM hChildItem,int nMyID) //機能 自分の子孫フォルダか調べる @@ -754,6 +736,33 @@ bool CCharu3Tree::LoadDataWithPlugin(CString strFileName, CString strPlugin, std return isRet; } +int CCharu3Tree::makeNewID() +{ + (*m_pMaxID)++; + while (checkRedundancyID(*m_pMaxID)) { + *m_pMaxID += 10; + } + return *m_pMaxID; +} + +//--------------------------------------------------- +//関数名 checkRedundancyID(int nID) +//機能 重複IDをチェック +//--------------------------------------------------- +bool CCharu3Tree::checkRedundancyID(int nID) +{ + bool isRet = false; + std::list::iterator it; + + for (it = m_MyStringList.begin(); it != m_MyStringList.end(); it++) { + if (it->m_nMyID == nID) { + isRet = true; + break; + } + } + return isRet; +} + //--------------------------------------------------- //関数名 normalizationID(list* pList,int nParentID) //機能 IDを正規化(ほとんどCharu2Proのデータ専用) diff --git a/Charu3Tree.h b/Charu3Tree.h index 193b334..fbe34f3 100644 --- a/Charu3Tree.h +++ b/Charu3Tree.h @@ -158,9 +158,8 @@ class CCharu3Tree : public CTreeCtrl bool loadDataFileDef(CString strFileName, CString strPlugin); bool loadDataFile(CString strFileName, CString strPlugin, std::list* tmplist); - bool convertMacroPlugin(STRING_DATA* SourceData, CString* strRet, CString strSelect, CString strClip, CString strSoftName); - bool saveDataToFile(CString strFileName, CString strPlugin, HTREEITEM hStartItem); + bool convertMacroPlugin(STRING_DATA* SourceData, CString* strRet, CString strSelect, CString strClip, CString strSoftName); void setInitInfo(int* pMaxID, int* pSelectID, int* pRecNumber) { m_pMaxID = pMaxID; @@ -194,18 +193,10 @@ class CCharu3Tree : public CTreeCtrl std::list::iterator findData(STRING_DATA* dataPtr); int mergeList(std::list* pMainList, std::list* pList, int nParent); - int makeNewID() { - (*m_pMaxID)++; - while (checkRedundancyID(*m_pMaxID)) { - *m_pMaxID += 10; - } - return *m_pMaxID; - } - void setSelectID(int nID) { - *m_pSelectID = nID; - } - void normalizationID(std::list* pList, int nParentID); + int makeNewID(); + void setSelectID(int nID) { *m_pSelectID = nID; } bool checkRedundancyID(int nID); + void normalizationID(std::list* pList, int nParentID); int getChildCount(HTREEITEM hTreeItem, bool isBrotherOnly = false); HTREEITEM getFirstFolder(HTREEITEM hStartItem); diff --git a/MyTreeDialog.cpp b/MyTreeDialog.cpp index d667b24..0eb8fc4 100644 --- a/MyTreeDialog.cpp +++ b/MyTreeDialog.cpp @@ -680,23 +680,28 @@ BOOL CMyTreeDialog::PreTranslateMessage(MSG* pMsg) if (theApp.m_ini.m_bSelectByTypingAutoPaste) KillTimer(CHARU_QUICK_TIMER); HTREEITEM hTreeItem = m_pTreeCtrl->GetSelectedItem(); if (hTreeItem) { - if (::GetKeyState(VK_CONTROL) < 0) {//CTRLが押されている - HTREEITEM hSelItem = m_pTreeCtrl->GetSelectedItem(); - m_pTreeCtrl->ToggleItemCheck(hSelItem); - hSelItem = m_pTreeCtrl->GetNextVisibleItem(hTreeItem); - if (hSelItem) hTreeItem = hSelItem; + bool goBackwards = ::GetKeyState(VK_SHIFT) < 0; + if (::GetKeyState(VK_CONTROL) < 0) { + m_pTreeCtrl->ToggleItemCheck(m_pTreeCtrl->GetSelectedItem()); + hTreeItem = goBackwards ? m_pTreeCtrl->GetPrevSiblingItem(hTreeItem) : m_pTreeCtrl->GetNextSiblingItem(hTreeItem); } - else if (::GetKeyState(VK_SHIFT) < 0) {//シフトが押されている - hTreeItem = m_pTreeCtrl->GetPrevVisibleItem(hTreeItem);//前のアイテムを取得 - if (!hTreeItem) { - hTreeItem = m_pTreeCtrl->getLastVisibleItem();//一番上まで行ったら最後にループ + else { + if (goBackwards) { + hTreeItem = m_pTreeCtrl->GetPrevVisibleItem(hTreeItem); + if (!hTreeItem) { + hTreeItem = m_pTreeCtrl->getLastVisibleItem(); + } + } + else { + hTreeItem = m_pTreeCtrl->GetNextVisibleItem(hTreeItem); + if (!hTreeItem) { + hTreeItem = m_pTreeCtrl->GetRootItem(); + } } } - else { - hTreeItem = m_pTreeCtrl->GetNextVisibleItem(hTreeItem); - if (!hTreeItem) hTreeItem = m_pTreeCtrl->GetRootItem(); + if (hTreeItem) { + m_pTreeCtrl->SelectItem(hTreeItem); } - m_pTreeCtrl->SelectItem(hTreeItem); } else {//選択されてなかったら0番目を選択 m_pTreeCtrl->Select(m_pTreeCtrl->GetRootItem(), TVGN_FIRSTVISIBLE); @@ -752,8 +757,7 @@ BOOL CMyTreeDialog::PreTranslateMessage(MSG* pMsg) } //TABキーでチェック else if (VK_TAB == pMsg->wParam && !m_pTreeCtrl->IsDragging() && !m_isModal) { - HTREEITEM hSelItem = m_pTreeCtrl->GetSelectedItem(); - m_pTreeCtrl->ToggleItemCheck(hSelItem); + m_pTreeCtrl->ToggleItemCheck(m_pTreeCtrl->GetSelectedItem()); return true; } //上下 @@ -1097,8 +1101,7 @@ void CMyTreeDialog::OnListSearch() void CMyTreeDialog::OnCheckItem() { - HTREEITEM hSelItem = m_pTreeCtrl->GetSelectedItem(); - m_pTreeCtrl->ToggleItemCheck(hSelItem); + m_pTreeCtrl->ToggleItemCheck(m_pTreeCtrl->GetSelectedItem()); m_bCheckbox = true; }