- 我们在上一节中实现了invoke函数,可以看到里面的一些函数还是非常有用的,这一节我们把invoke的DISPID的其它参数拿出来讲一下吧
| DISPID | 触发时机 |
|---|
| 0x0001 | 关闭文件时 |
| 0x0002 | 另存为时 |
| 0x0003 | 打印时 |
| 0x0004 | 导出时 |
| 0x0005 | 关闭CDR时 |
| 0x0006 | 打开外部实体文件时 |
| 0x0007 | 新建CDR文件时 |
| 0x0008 | 关闭CDR |
| 0x0009 | 关闭外部实体文件时 |
| 0x0010 | 窗口被激活时 |
| 0x0011 | 鼠标点击CDR任意位置时 |
| 0x0012 | 打开CDR时 |
| 0x0013 | 关闭CDR时 |
| 0x0014 | 点击面板铵钮时 |
| 0x0015 | 每秒触发上千次判断插件的显隐状态 |
- 我们在进行编写的时候可以写成如下方式即可,其它的功能还有待测试
HRESULT __stdcall CongLingKaiShi::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr) {
switch (dispIdMember) {
case 0x0001:
break;
case 0x0002:
break;
case 0x0003:
break;
case 0x0004:
break;
case 0x0005:
break;
case 0x0006:
break;
case 0x0007:
break;
case 0x0008:
break;
case 0x0009:
break;
case 0x0010:
break;
case 0x0011:
break;
case 0x0012:
break;
case 0x0013:
break;
case 0x0014:
break;
case 0x0015:
break;
}
return S_OK;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35