LPDISPATCH该怎么用?

suma1989 2011-03-14 09:23:07
class Selection : public COleDispatchDriver
{
public:
Selection() {} // Calls COleDispatchDriver default constructor
Selection(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {}
Selection(const Selection& dispatchSrc) : COleDispatchDriver(dispatchSrc) {}

// Attributes
public:

// Operations
public:
//....省略
LPDISPATCH GetTables();
LPDISPATCH GetWords();
LPDISPATCH GetSentences();
LPDISPATCH GetCharacters();
LPDISPATCH GetFootnotes();
LPDISPATCH GetEndnotes();

//....省略
--------------------------------------
LPDISPATCH Selection::GetWords()
{
LPDISPATCH result;
InvokeHelper(0x33, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, NULL);
return result;
}
LPDISPATCH:Accesses the underlying IDispatch pointer of the COleDispatchDriver object.
这些个类是定义在msword.h和msword.cpp源自msword.olb文件(严格叫法我也不知道,只把COM看了几天,迷迷糊糊的)

现在我是想得到读取.doc文件里面返回的内容,但是它返回的是LPDISPATCH即IDispatch指针,这个有什么用呢?要怎么样才能得到实际的内容呢?
...全文
488 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
dream-fly 2011-10-13
您好。。请问有关于Selection对象中各个成员函数用法资料么?
另外,就是怎么获取当前的Selection所在的位置呢?
怎么判断当前Selection是不是在Table里面呢?
回复
qq24486838 2011-03-15
楼主不要迷茫:
LPDISPATCH是COM编程中一项重大的接口应用,主要负责支持自动化的接口调用


我们在一般性的编程中,主要用它的两个方法:

GetIDsOfNames

Invoke

前一个你传一个字符串给它,它返回ID,这个ID就是你要调用的功能

如何使用这个ID呢?就是第二个函数了。
呵呵,第二个函数就是通过这个ID调用的。
回复
它是支持自动化的接口
主要的两个方法
GetIDsOfNames
Invoke
可以通过 字符串 获得 一个方法的id
再通过 传入 invoke 调用组件的实际方法,
一般自动化是为了支持脚本
回复
ysjyniiq 2011-03-15
MFC能为COM组件导出很多包装类,而你上面这些代码的包装类导出的LPDISPATCH最重要的目的,或者也可能是组件设计的目的,是要你看着办地强制转换,转换成实际的包装类。
LPDISPATCH的功能一楼二楼都说。
LPDISPATCH,能做很多事情,但你直接赤祼祼地用这个接口,像一楼二楼所说那些函数,一个函数一个函数地调,估计你以后看见LPDISPATCH都害怕。
直接操作LPDISPATCH,最好使用封装类,如CComDispatchDriver,进行简单包装。
回复
相关推荐
发帖
ATL
创建于2007-09-28

3218

社区成员

ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
申请成为版主
帖子事件
创建了帖子
2011-03-14 09:23
社区公告
暂无公告