ATL的接口宣言从interface改成了dispinterface,编译就失败了

ATL的接口声明从interface改成了dispinterface,编译就失败了。
我用ATL建立一个工程,创建一个简单对象,如下代码。idl编译没有问题:

[
object,
uuid(B06543F7-D418-43CE-AABB-44B70D817833),
dual,
    oleautomation,
nonextensible,
pointer_default(unique)
]
interface Im : IDispatch{
    [propget] HRESULT m_l([out, retval] LONG* pVal);
    [propput] HRESULT m_l([in] LONG newVal);
};

然后我把interface那句话改成了:

dispinterface Im /*: IDispatch*/{
    [propget] HRESULT m_l([out, retval] LONG* pVal);
    [propput] HRESULT m_l([in] LONG newVal);
};


VC编译错误:
: error MIDL2025: syntax error : expecting } near "["
: error MIDL2026: cannot recover from earlier syntax errors; aborting compilation
这个错误到底是什么意思呢? 不是说dispinterface等于interface : IDispatch吗?

还请指导一下。谢谢。

------解决方案--------------------
一般是事件接口的定义才用这个类型声明的