I'm working on this right now, I currently get an access violation when I try to open a project, not when i try to close one. I've gotten this working fully under Delphi, but I've been having serious problems with VC++. I'm using ISWI 1.52, and I had to get an idl file from OLEView, then edit it a little bit and compile it in my project to create a header and _i.c file. With ISWI 2.03, have you had to edit your .idl at all? Did the OpenProject call work without any monkeying around? Does the interface call from your .idl look anything like this:
[id(0x60030016), helpstring("ISWi Project file")]
HRESULT OpenProject(
[in] BSTR strISWiProjectFile,
[in, optional, defaultvalue(0)] VARIANT_BOOL bReadOnly
[out, retval] long* );
Thanks.