visual实现COM接口c++ / vc++ 6.0 / MFC

visual Implement COM interface C++ / VC++ 6.0 / MFC

本文关键字:vc++ MFC c++ 实现 COM 接口 visual      更新时间:2023-10-16

试图实现COM接口的入门级程序员。我正在开发一个与阿罗哈销售点系统相连接的程序。Aloha使用COM与外部程序一起工作。我正试图从磁卡读卡器拦截卡数据,这是一个OPOS读卡器,而不是键盘楔子。我的文档没有解释如何实现这个特定的接口,但是它解释了如何实现一个类似的接口。我曾试图效仿这个例子,但我一无所获。Aloha的支持是不存在的,他们的文档很差,过时,有时甚至是错误的,即使我已经支付了许可证。

我试着做一个简单的应用程序只是为了测试这个功能。以下是我所做的:

1)在vc++ 6.0中使用atlcom应用向导创建一个新项目2)服务器型DLL3)插入新的atl对象->简单对象4)右键单击我的新类,选择实现接口5)浏览类型库,选择Iber。tlb(阿罗哈的tlb)6)选择我要实现的接口

生成。h,。cpp和。rgs文件。

.h文件有:

public:
// IInterceptMagcard
    STDMETHOD(InterceptMagcard)(BSTR bstrAccountNumber, BSTR bstrCustomerName, BSTR bstrExpirationDate, BSTR bstrTrack1Info, BSTR bstrTrack2Info, BSTR bstrTrack3Info, BSTR bstrRawMagcardData, LONG * bWasDataHandled)
    {
        if (bWasDataHandled == NULL)
            return E_POINTER;
        return E_NOTIMPL;
    }

是我在哪里实现我的代码?我在里面放了一些测试代码,然后写入一个txt文件来测试它。然后我使用:

HRESULT hr = CoCreateInstance(CLSID_AlohaMag, NULL, CLSCTX_INPROC_SERVER,
                                IID_IAlohaMag, (void **) &g_pIInterceptMagcard);

其中g_pIInterceptMagcard是一个指针,指向我用上面的向导创建的接口类

当我尝试注册时,我得到以下HRESULT: 0x80040112这是"未被许可使用的类"。

这是否意味着我的程序没有创建必要的注册表项?

这可能意味着在自定义类工厂创建类的实例之前,您必须安装许可证。您是否尝试在一个完全工作的POS系统上运行您的程序,并允许使用磁卡刷卡?也许你需要一些其他的许可证来做这种事情?

如果是类未注册的问题,结果将是"类未注册"。听起来您已经通过向导完成了必要的步骤来实现接口,并让它生成正确的注册表项。