ATL ActiveX控件一般在方法(包括属性)和事件反馈中使用枚举常量

可以在控件的IDL文件中编写代码,见彩色部分代码。

import "oaidl.idl";
import "ocidl.idl";
[
 object,
 uuid(A0A2E087-0A96-4861-BED2-549F9A0AC2C2),
 dual,
 nonextensible,
 helpstring("IHLMessage Interface"),
 pointer_default(unique)
]
interface IHLMessage : IDispatch{

//在方法中使用枚举

[id(1), helpstring("method A")] HRESULT A([in] enum HL_MSG_STYLE style);
 [id(2), helpstring("method B")] HRESULT B([in] LONG i);
 };
[
 uuid(5181C89F-A37F-4632-8241-92F152A8D426),
 version(1.0),
 helpstring("ActiveX for HuaLong Message Component 1.0")
]
library HuaLongALib
{

 importlib("stdole2.tlb");

//定义枚举
  enum HL_MSG_STYLE
 {  
  HL_MSG_INFOMATION = 0,
  HL_MSG_ERROR = 1
 } ;

 [
  uuid(D8EC72C0-6018-4572-88C2-AC9D2F3873AC),
  helpstring("_IHLMessage Event Interface")
 ]
 dispinterface _IHLMessageEvents
 {
  properties:
  methods:

//在事件中使用枚举
  [id(1), helpstring("Event OnA")] HRESULT OnA([in] enum HL_MSG_STYLE style);

 };
 [
  uuid(414A7FDA-F1C4-438F-98D0-abA598827D7F),
  helpstring("HLMessage Class")
 ]
 coclass HLMessage
 {
  [default] interface IHLMessage;
  [default, source] dispinterface _IHLMessageEvents;
 };
};

posted @ 2011-03-23 12:45  银翼的魔术师  阅读(376)  评论(0编辑  收藏  举报