心有

知其所以然,方可大道至简。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

[摘自ActivX Faqs]
说明:
只需在idl文件的类库声明中,定义枚举常量,就可以将atl常量暴露给客户程序。

例子:
import "oaidl.idl";
import "ocidl.idl";
#include "olectl.h"
 

 [
  object,
  uuid(D6719E8B-B2F3-49A6-B985-E30ED36E472B),
  dual,
  helpstring("Iqqq Interface"),
  pointer_default(unique)
 ]
 interface Iqqq : IDispatch
 {
 };

[
 uuid(A78593FE-FAF1-4491-BBC1-128D12021769),
 version(1.0),
 helpstring("test6 1.0 Type Library")
]
library TEST6Lib
{
 importlib("stdole32.tlb");
 importlib("stdole2.tlb");

   typedef enum NoteItControlStatus
  {
     STATUS_SUCCESS = 1,
     STATUS_INFORMATIONAL = 2,
     STATUS_WARNING = 4,
     STATUS_FAILURE = 8
  } NOTEIT_CONTROL_STATUS;

 [
  uuid(152EF1F9-E2B6-4AF6-978C-4253B38227EC),
  helpstring("qqq Class")

  

 ]
 coclass qqq
 {
  [default] interface Iqqq;
 };
};

原文:
How can I expose constants from my controls?
 
 

--------------------------------------------------------------------------------
 
You can use the standard IDL enum keyword. The trick is to make sure the declaration is inside the library section. Here's an example:

typedef enum NoteItControlStatus
{
   STATUS_SUCCESS = 1,
   STATUS_INFORMATIONAL = 2,
   STATUS_WARNING = 4,
   STATUS_FAILURE = 8
} NOTEIT_CONTROL_STATUS;
 

posted on 2005-11-08 10:02  心有  阅读(376)  评论(0)    收藏  举报