Index: src/ch/FolderDialog.cpp =================================================================== diff -u -r8422e5787e56453d78c7270066c3e8d1743ca757 -r926b1177cffa2face218fabb3d8af71910d1b8e5 --- src/ch/FolderDialog.cpp (.../FolderDialog.cpp) (revision 8422e5787e56453d78c7270066c3e8d1743ca757) +++ src/ch/FolderDialog.cpp (.../FolderDialog.cpp) (revision 926b1177cffa2face218fabb3d8af71910d1b8e5) @@ -150,8 +150,6 @@ CFolderDialog::CFolderDialog(CWnd* /*pParent*/ /*=NULL*/) :ictranslate::CLanguageDialog() { - //{{AFX_DATA_INIT(CFolderDialog) - //}}AFX_DATA_INIT m_hImages=NULL; m_hLargeImages=NULL; m_bIgnoreUpdate=false; @@ -456,7 +454,7 @@ CShortcut sc; for(size_t stIndex = 0; stIndex < m_bdData.cvShortcuts.size(); ++stIndex) { - sc = CString(m_bdData.cvShortcuts.at(stIndex)); + sc = CShortcut(m_bdData.cvShortcuts.at(stIndex)); sfi.iIcon = -1; SHGetFileInfo(sc.m_strPath, FILE_ATTRIBUTE_NORMAL, &sfi, sizeof(sfi), SHGFI_SYSICONINDEX | SHGFI_LARGEICON); m_ctlShortcuts.InsertItem(boost::numeric_cast(stIndex), sc.m_strName, sfi.iIcon); @@ -625,12 +623,14 @@ || shdi.dwDescriptionId == SHDID_COMPUTER_DRIVE525 ) ) bSkipFreeSpace=true; + const size_t BufferSize = 2048; + std::unique_ptr upBuffer(new wchar_t[ BufferSize ]); // some about network bool bNet; CString strData; - NETRESOURCE* pnet=(NETRESOURCE*)m_szBuffer; - if ( (bNet=m_ctlTree.GetItemShellData(pit->hItem, SHGDFIL_NETRESOURCE, pnet, 2048)) == true) + NETRESOURCE* pnet=(NETRESOURCE*)upBuffer.get(); + if ( (bNet=m_ctlTree.GetItemShellData(pit->hItem, SHGDFIL_NETRESOURCE, pnet, BufferSize)) == true) { if (pnet->lpRemoteName && _tcscmp(pnet->lpRemoteName, _T("")) != 0) m_strTip+=GetResManager().LoadString(IDS_BDREMOTENAME_STRING)+CString(pnet->lpRemoteName)+_T("\n"); @@ -646,7 +646,6 @@ // try to get path CString strPath, strMask; - TCHAR szSizeFree[32], szSizeTotal[32]; bool bPath; if ( (bPath=m_ctlTree.GetPath(pit->hItem, strPath.GetBuffer(_MAX_PATH))) == true ) { @@ -657,11 +656,11 @@ if (!bSkipFreeSpace) { // get disk free space - ull_t ullFree, ullTotal; + unsigned long long ullFree, ullTotal; if (GetDynamicFreeSpace(strPath, &ullFree, &ullTotal)) { - m_strTip+=GetResManager().LoadString(IDS_BDFREESPACE_STRING)+CString(GetSizeString(ullFree, szSizeFree, 32, false))+_T("\n"); - m_strTip+=GetResManager().LoadString(IDS_BDCAPACITY_STRING)+CString(GetSizeString(ullTotal, szSizeTotal, 32, false))+_T("\n"); + m_strTip += GetResManager().LoadString(IDS_BDFREESPACE_STRING) + GetSizeString(ullFree, false) + _T("\n"); + m_strTip += GetResManager().LoadString(IDS_BDCAPACITY_STRING) + GetSizeString(ullTotal, false) + _T("\n"); } } } @@ -692,15 +691,15 @@ if (pit->iItem < 0 || pit->iItem >= boost::numeric_cast(m_bdData.cvShortcuts.size())) return; // out of range - CShortcut sc=CString(m_bdData.cvShortcuts.at(pit->iItem)); + CShortcut sc=CShortcut(m_bdData.cvShortcuts.at(pit->iItem)); m_strTip=sc.m_strName+_T("\r\n")+CString(GetResManager().LoadString(IDS_BDPATH2_STRING))+sc.m_strPath; // get disk free space - ull_t ullFree, ullTotal; + unsigned long long ullFree, ullTotal; if (GetDynamicFreeSpace(sc.m_strPath, &ullFree, &ullTotal)) { - m_strTip+=CString(_T("\r\n"))+GetResManager().LoadString(IDS_BDFREESPACE_STRING)+CString(GetSizeString(ullFree, m_szBuffer, 2048, false))+_T("\n"); - m_strTip+=GetResManager().LoadString(IDS_BDCAPACITY_STRING)+CString(GetSizeString(ullTotal, m_szBuffer, 2048, false)); + m_strTip+=CString(_T("\r\n"))+GetResManager().LoadString(IDS_BDFREESPACE_STRING) + GetSizeString(ullFree, false) + _T("\n"); + m_strTip+=GetResManager().LoadString(IDS_BDCAPACITY_STRING) + GetSizeString(ullTotal, false); } pit->pszText=(LPTSTR)(LPCTSTR)m_strTip; @@ -730,11 +729,14 @@ if (m_bIgnoreTreeRefresh) return; + const size_t BufferSize = 32768; + std::unique_ptr upBuffer(new wchar_t[ BufferSize ]); + COMBOBOXEXITEM cbi; - cbi.mask=CBEIF_TEXT; - cbi.iItem=-1; - cbi.pszText=m_szBuffer; - cbi.cchTextMax=_MAX_PATH; + cbi.mask = CBEIF_TEXT; + cbi.iItem = -1; + cbi.pszText = upBuffer.get(); + cbi.cchTextMax = BufferSize; if (!m_ctlPath.GetItem(&cbi)) return; @@ -763,27 +765,29 @@ COMBOBOXEXITEM cbi; - cbi.mask=CBEIF_TEXT | CBEIF_IMAGE; - cbi.iItem=-1; - _tcscpy(m_szBuffer, lpszPath); - cbi.pszText=m_szBuffer; - SHGetFileInfo(cbi.pszText, FILE_ATTRIBUTE_NORMAL, &sfi, sizeof(sfi), SHGFI_SMALLICON | SHGFI_SYSICONINDEX); - cbi.iImage=sfi.iIcon; - m_bIgnoreTreeRefresh=true; + cbi.mask = CBEIF_TEXT | CBEIF_IMAGE; + cbi.iItem = -1; + cbi.pszText = (LPTSTR)lpszPath; + SHGetFileInfo(lpszPath, FILE_ATTRIBUTE_NORMAL, &sfi, sizeof(sfi), SHGFI_SMALLICON | SHGFI_SYSICONINDEX); + cbi.iImage = sfi.iIcon; + m_bIgnoreTreeRefresh = true; m_ctlPath.SetItem(&cbi); - m_bIgnoreTreeRefresh=false; + m_bIgnoreTreeRefresh = false; } ////////////////////////////////////////////////////////////////////////// // updates icon in comboex void CFolderDialog::UpdateComboIcon() { + const size_t BufferSize = 32768; + std::unique_ptr upBuffer(new wchar_t[ BufferSize ]); + // get text from combo COMBOBOXEXITEM cbi; - cbi.mask=CBEIF_TEXT; - cbi.iItem=m_ctlPath.GetCurSel()/*-1*/; - cbi.pszText=m_szBuffer; - cbi.cchTextMax=_MAX_PATH; + cbi.mask = CBEIF_TEXT; + cbi.iItem = m_ctlPath.GetCurSel()/*-1*/; + cbi.pszText = upBuffer.get(); + cbi.cchTextMax = BufferSize; if (!m_ctlPath.GetItem(&cbi)) return; @@ -800,9 +804,9 @@ cbi.mask |= CBEIF_IMAGE; cbi.iItem=-1; - CString str=(LPCTSTR)m_szBuffer; - if (str.Left(2) != _T("\\\\") || str.Find(_T('\\'), 2) != -1) - SHGetFileInfo(cbi.pszText, FILE_ATTRIBUTE_NORMAL, &sfi, sizeof(sfi), SHGFI_SMALLICON | SHGFI_SYSICONINDEX); + CString str = cbi.pszText; + if(str.Left(2) != _T("\\\\") || str.Find(_T('\\'), 2) != -1) + SHGetFileInfo(str, FILE_ATTRIBUTE_NORMAL, &sfi, sizeof(sfi), SHGFI_SMALLICON | SHGFI_SYSICONINDEX); cbi.iImage=sfi.iIcon; @@ -827,7 +831,7 @@ // current selection if (plv->iItem >= 0 && plv->iItem < boost::numeric_cast(m_bdData.cvShortcuts.size())) { - CShortcut sc=CString(m_bdData.cvShortcuts.at(plv->iItem)); + CShortcut sc=CShortcut(m_bdData.cvShortcuts.at(plv->iItem)); m_ctlTree.SetPath(sc.m_strPath); SetComboPath(sc.m_strPath); } @@ -839,12 +843,15 @@ // adding shortcut void CFolderDialog::OnAddShortcut() { + const size_t BufferSize = 32768; + std::unique_ptr upBuffer(new wchar_t[ BufferSize ]); + // get current text COMBOBOXEXITEM cbi; - cbi.mask=CBEIF_TEXT; - cbi.iItem=m_ctlPath.GetCurSel()/*-1*/; - cbi.pszText=m_szBuffer; - cbi.cchTextMax=_MAX_PATH; + cbi.mask = CBEIF_TEXT; + cbi.iItem = m_ctlPath.GetCurSel()/*-1*/; + cbi.pszText = upBuffer.get(); + cbi.cchTextMax = _MAX_PATH; if (!m_ctlPath.GetItem(&cbi)) { @@ -915,7 +922,7 @@ } // std editing - success - CShortcut sc=CString(m_bdData.cvShortcuts.at(pdi->item.iItem)); + CShortcut sc=CShortcut(m_bdData.cvShortcuts.at(pdi->item.iItem)); sc.m_strName=pdi->item.pszText; m_bdData.cvShortcuts[pdi->item.iItem] = (CString)sc; @@ -1020,7 +1027,7 @@ // settings const int iMargin=7; // dialog units - const int iTextCount=3; // ilo�� linii textu w staticu + const int iTextCount=3; // count of lines in static // small buttons const int iBmpMargin=1; // margin between button and a bitmap within @@ -1177,7 +1184,7 @@ pWnd->Invalidate(); } - // buttony - ok & cancel + // buttons - ok & cancel rcButton=CRect(iMargin+2*iLargeButtonWidth+3, iMargin+iLargeButtonHeight, iMargin+iLargeButtonWidth+3, iMargin); MapDialogRect(&rcButton); rcButton.left=cx-rcButton.left;