Exemple #1
0
        public HRESULT Next(uint celt, IntPtr[] rgelt, out uint pceltFetched)
        {
            uint celtFetched = 0;

            HRESULT hr = celt <= 1 ? HRESULT.S_OK : HRESULT.E_INVALIDARG;

            if (hr.Succeeded)
            {
                uint i = 0;
                while (hr.Succeeded && i < celt && m_nItem < m_aData.Length)
                {
                    var fSkip = false;
                    if (!m_grfFlags.IsFlagSet(SHCONTF.SHCONTF_STORAGE))
                    {
                        if (m_aData[m_nItem].fIsFolder)
                        {
                            if (!m_grfFlags.IsFlagSet(SHCONTF.SHCONTF_FOLDERS))
                            {
                                // this is a folder, but caller doesnt want folders
                                fSkip = true;
                            }
                        }
                        else
                        {
                            if (!m_grfFlags.IsFlagSet(SHCONTF.SHCONTF_NONFOLDERS))
                            {
                                // this is a file, but caller doesnt want files
                                fSkip = true;
                            }
                        }
                    }

                    if (!fSkip)
                    {
                        hr = CFolderViewImplFolder.CreateChildID(m_aData[m_nItem].szName, m_nLevel, m_aData[m_nItem].nSize, m_aData[m_nItem].nSides, m_aData[m_nItem].fIsFolder, out PIDL pidl);
                        if (hr.Succeeded)
                        {
                            rgelt[i] = pidl.DangerousGetHandle();
                            celtFetched++;
                            i++;
                        }
                    }

                    m_nItem++;
                }
            }

            pceltFetched = celtFetched;

            return((celtFetched == celt) ? HRESULT.S_OK : HRESULT.S_FALSE);
        }
Exemple #2
0
 public CFolderViewImplEnumIDList(SHCONTF grfFlags, int nLevel, CFolderViewImplFolder pFolderViewImplShellFolder)
 {
     m_grfFlags = grfFlags; m_nLevel = nLevel; m_pFolder = pFolderViewImplShellFolder;
     Initialize();
 }