gpt4 book ai didi

c++ - IStorage::OpenStorage OLECHAR *pwcsName for MS Project 2010

转载 作者:行者123 更新时间:2023-11-30 17:12:49 26 4
gpt4 key购买 nike

我找不到任何有关如何使用 IStorage::OpenStorage 打开 MS Project 2010 文件的文档。我不知道要为 msproject 2010 的 OLECHAR *pwcsName 参数传递什么。

以下代码打开 MS Project 2007 文件,但无法打开 MS Project 2010 文件:

hr = pStorage->OpenStorage(L"   212",NULL,STGM_READ | STGM_SHARE_EXCLUSIVE,
NULL,0,&pAuxStorage);

打开 MS Project 2010 文件的第一个参数必须传递什么?

最佳答案

L"foo" 不能传递给需要 OLECHAR 的函数。

您必须传递一个已由 SysAllocString 分配的字符串函数族。

这些字符串具有特殊的内存布局,并使用 COM 分配器进行分配。尽管两种情况下的数据类型均为 wchar_t,但使用名称 OLECHAR 表明所调用的函数需要这些特殊字符串之一。 Link to related question

在 C 语言中,您的代码可能是:

BSTR b = SysAllocString(L"   212");
hr = pStorage->OpenStorage(b, NULL, ......);
SysFreeString(b);

在 C++ 中,您可以使用 RAII 包装器来分配和释放字符串,尽管这不是跨编译器的标准。 See herehere供讨论。

关于c++ - IStorage::OpenStorage OLECHAR *pwcsName for MS Project 2010,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31261203/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com