void vmsDownloadsGroupsMgr::SaveGroupsTreeToBuffer(LPBYTE& pbtCurrentPos, LPBYTE pbtBuffer, DWORD dwBufferSize, DWORD* pdwSizeRequired, PDLDS_GROUPS_TREE pRoot) { int cGroups = pRoot->GetLeafCount (); putVarToBuffer(cGroups, pbtCurrentPos, 0, dwBufferSize, pdwSizeRequired); int i = 0; for (i = 0; i < cGroups; i++) { PDLDS_GROUPS_TREE pGroupTree = pRoot->GetLeaf (i); SaveGroupToBuffer (pbtCurrentPos, 0, dwBufferSize, pdwSizeRequired, pGroupTree->GetData ()); SaveGroupsTreeToBuffer (pbtCurrentPos, 0, dwBufferSize, pdwSizeRequired, pGroupTree); } if (pbtBuffer == NULL) return; putVarToBuffer(cGroups, pbtCurrentPos, pbtBuffer, dwBufferSize, 0); for (i = 0; i < cGroups; i++) { PDLDS_GROUPS_TREE pGroupTree = pRoot->GetLeaf (i); SaveGroupToBuffer (pbtCurrentPos, pbtBuffer, dwBufferSize, 0, pGroupTree->GetData ()); SaveGroupsTreeToBuffer (pbtCurrentPos, pbtBuffer, dwBufferSize, 0, pGroupTree); } }
BOOL CGroupDlg::OnInitDialog() { CDialog::OnInitDialog(); m_btnChooseFolder.SetIcon (SICO (IDI_CHOOSEFOLDER)); m_wndGroups.Fill (); if (m_pGroup) { PDLDS_GROUPS_TREE p = _DldsGrps.FindGroupInTree (m_pGroup)->GetRoot (); if (p == _DldsGrps.GetGroupsTree ()) m_pParentGroup = NULL; else m_pParentGroup = p->GetData (); m_wndGroups.EnableWindow (FALSE); } m_wndGroups.SelectGroup (m_pParentGroup); CComboBox *pDirs = (CComboBox*) GetDlgItem (IDC_GRPFOLDER); for (int i = 0; i < _LastFolders.GetRecordCount (); i++) pDirs->AddString (_LastFolders.GetRecord (i)); if (m_pGroup == NULL) { m_strBaseFolder = m_pParentGroup == NULL ? _DldsGrps.GetGroupsRootOutFolder () : m_pParentGroup->strOutFolder; SetDlgItemText (IDC_GRPFOLDER, m_strBaseFolder); m_bPathChanged = FALSE; } else { m_bPathChanged = TRUE; if (m_pGroup->strName.GetLength () < m_pGroup->strOutFolder.GetLength ()) { if (lstrcmp (m_pGroup->strOutFolder + m_pGroup->strOutFolder.GetLength () - m_pGroup->strName.GetLength (), m_pGroup->strName) == 0) { m_strBaseFolder = m_pGroup->strOutFolder; m_strBaseFolder.Delete (m_pGroup->strOutFolder.GetLength () - m_pGroup->strName.GetLength (), m_pGroup->strName.GetLength ()); m_bPathChanged = FALSE; } } SetDlgItemText (IDC_GRPFOLDER, m_pGroup->strOutFolder); SetDlgItemText (IDC_GRPEXTS, m_pGroup->strExts); if (m_pGroup->nId == GRP_OTHER_ID) { ((CEdit*) GetDlgItem (IDC_GRPNAME))->SetReadOnly (); GetDlgItem (IDC_GRPFOLDER)->SetFocus (); SetDlgItemText (IDC_GRPNAME, LS (L_OTHER)); } else { SetDlgItemText (IDC_GRPNAME, m_pGroup->strName); GetDlgItem (IDC_GRPNAME)->SetFocus (); } } SetWindowText (m_pGroup == NULL ? LS (L_CREATEGRP) : LS (L_GRPPROP)); ApplyLanguage (); return FALSE; }