| Platform SDK: CDO for Windows 2000 |
The _NewEnum property returns an IEnumVARIANT interface on an object that can be used to enumerate the collection.
[Visual Basic] (*Restricted from direct access. Used in For Each In constructs) [C++] HRESULT get__NewEnum(IUnknown** retval); [IDL] [propget, restricted, id(DISPID_NEWENUM)] HRESULT _NewEnum([out, retval] IUnknown** retval);
The _NewEnum property is marked restricted in the Interface Definition Language (IDL) definition for the IMessages interface and is not shown in the Microsoft® Visual Basic® object browser. It is automatically used internally when you use the For Each In construct in Visual Basic.
' Reference to Microsoft ActiveX Data Objects 2.5 Library
' Reference to Microsoft CDO for Windows 2000 Library
Set DropDir as New CDO.DropDirectory
Set Msgs = DropDir.GetMessages("c:\mymail")
For Each Msg in Msgs
' Process each message here
Next
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace raw_interfaces_only
#import <cdosys.dll> no_namespace raw_interfaces_only
#include <iostream.h>
void main()
{
CoInitialize(NULL);
IEnumVARIANT* pEnum = NULL;
CoCreateInstance(
__uuidof(DropDirectory),
NULL,
CLSCTX_SERVER,
__uuidof(IDropDirectory),
(void**)&pDropDir);
pDropDir->GetMessages(L"",&pMsgs);
long count = 0;
pMsgs->get_Count(&count);
cout << count << endl;
pMsgs->get__NewEnum(&pUnk);
pUnk->QueryInterface(__uuidof(IEnumVARIANT),(void**)&pEnum);
ULONG cFetched = 0;
VARIANT var;
VariantInit(&var);
while (1) {
cFetched = 0;
pEnum->Next(1,&var,&cFetched);
cout << "fetched: " << cFetched << endl;
if(cFetched == 0)
break;
IMessage* pMsg = NULL;
var.pdispVal->QueryInterface(__uuidof(IMessage),(void**)&pMsg);
var.pdispVal->Release();
VariantClear(&var);
BSTR to;
pMsg->get_To(&to);
cout << _bstr_t(to) << endl;
SysFreeString(to);
pMsg->Release();
}
CoUninitialize();
}