两个简单的COM IDL文件问题我似乎无法找到答案,即使搜索MSDN和一般互联网:
是否有一个接口属性允许我指定我的接口仅由STA对象实现,或者这仅仅是我的文档的详细信息?我已经有[object, local]
我认为对于非远程处理(进程中)COM对象是正确的。
我的方法声明(如C中)的括号中是否需要void
来指定无参数? MSDN与此不一致;头文件也是如此。我自己的这个界面的个人实现将在C。
感谢。
答案 0 :(得分:1)
您正在谈论要为COM组件指定的线程模型。不,你不能把它放在IDL中,这太重要了。客户端不必使用您的IDL,例如Javascript之类的脚本语言。它必须放在注册表中,在组件的CLSID键中。你想要ThreadingModel =" Apartment"请求客户端提供STA线程。如果它丢失,则默认情况下COM假定。
请记住,不强制客户端程序员提供一个。如果他出于某种原因赞成MTA,那么COM将提供STA线程以使您的组件成为安全的家。如果您的代理使其太慢而无法使用,那么您确实需要文档。
IDL中没有HRESULT Method(void)
是不必要的,使用HRESULT Method()
就足够了。 Midl.exe并不关心您使用的语言。