我有一个用 C++ 编写的 dll。它的主要目的是通过 OLE 调用 Word 上的方法。我尝试调用一个方法“SaveAs”:
HRESULT hr;
szFunction = OLESTR("SaveAs");
hr = doc->GetIDsOfNames(IID_NULL, &szFunction, 1,
LOCALE_USER_DEFAULT,
&dispid_Cap);
hr = doc->Invoke(dispid_Cap, IID_NULL,
LOCALE_USER_DEFAULT, DISPATCH_METHOD,
&dpCap, NULL, NULL, NULL);
它失败了,我不知道为什么。hr 的值为 -2146823135。我将它转换为十六进制,如下所示:
sprintf(hex_buff, "%x", (unsigned int)hr);
这给了0x800a1421
我试图找出这段代码对这个程序的含义:http: //www.microsoft.com/en-us/download/details.aspx?id=985 但结果是:
as an HRESULT: Severity: FAILURE (1), Facility: 0xa, Code 0x1421
NOT FOUND: 800a1421
这是什么意思?我应该如何继续找出我的方法失败的原因?