2012-01-10 17 views
0

我發現this關於在C++中使用WIA的教程,但我不明白如何使用它。以下不成功,我不知道這是什麼錯誤。基本上我複製了教程中的代碼。如何在C++中使用WIA?

void init() { 
    IWiaDevMgr2* devMgr; 
    HRESULT hr = createWiaDeviceManager(&devMgr); 

    if(!SUCCEEDED(hr)) 
    { 
     std::cout << "couldn't create WIA Device Manager!\n"; 
     return; 
    } 
    ... 
} 

HRESULT createWiaDeviceManager(IWiaDevMgr2** devMgr) 
{ 
    if(devMgr == 0) return E_INVALIDARG; 

    *devMgr = 0; 

    return CoCreateInstance(CLSID_WiaDevMgr2, 0, CLSCTX_LOCAL_SERVER, IID_IWiaDevMgr2, (void**)devMgr); 
} 

順便說一下,我使用的是Windows 7 64位,所以使用IWiaDevMgr2應該沒問題。

+0

「這將不會成功」是不恰當的問題說明。 – 2012-01-10 18:48:49

+0

createWiaDeviceManager始終返回'-2147221008' – Pedro 2012-01-10 18:57:05

回答

3

createWiaDeviceManager總是返回-2147221008

當你解釋/顯示爲無符號數這是0x800401f0。如你所見,HRESULT不是簽名類型。從WinError.h中SDK文件:

// 
// MessageId: CO_E_NOTINITIALIZED 
// 
// MessageText: 
// 
// CoInitialize has not been called. 
// 
#define CO_E_NOTINITIALIZED    _HRESULT_TYPEDEF_(0x800401F0L) 

此行添加到您的初始化代碼:

CoInitialize(NULL);