我想在VB6中使用后期绑定调用Word,但是我还想使用Word返回的事件:DocumentBeforePrint,不知道该怎么弄?
前期绑定,用Withevents关键字就可以了,可是后期绑定声明为Object就不让用Withevents关键字了,该怎么办呢?
前期绑定,用Withevents关键字就可以了,可是后期绑定声明为Object就不让用Withevents关键字了,该怎么办呢?
解决方案 »
- 使用VB设计学生信息显示界面,并实现添加,删除和按成绩排序功能 ,并在子类中重写第二个方法。生成一个子类的对象,并将其塑型为基类,调用第一个方法,解释会发生什么
- 在WebBrowser控件中浏览Ms Project文件时,如何可以使用左边的“视图栏”的按钮
- 问个很BC的问题!还请大家支持!
- 能不能用vb作一个网络搜索引擎?
- 怎样在listbox的每一个item前加一个类似checkbox的方框,用来表识该项是否被选中
- 多道VB问题!急需回答,谢谢
- 关于数据库查询的问题,一个数据库中有两条相同的纪录,怎样把他们查找出来。
- 为什么窗口会自动出现?
- 如何从含有特定的分割符的字符串中提取指定的字符串?
- 还是这里高手多啊!清在帮忙回答一下如下内容!谢谢
- 加载第三方控件出错
- 连接SQL数据库时出错,提示:未找到提供程序,该程序可能未正确安装。为什么?
我的问题是:我编了一个dll,可是要兼容word2000,就必须要在word2000环境下编译,否则,dll就可能挂了。而采用后期绑定,就word2000以上通吃了,毫无问题。所以想来个后期绑定,但是有几个Word事件还想用,怎么办呢?各路大虾费心了,500分奖励!
时间: 2004-07-30
感谢好人,提供了一种可以代替传统事件处理的方法。如此 PowerXP 中动态加载Activex DLL后事件无法触发的问题就迎刃而解了。传统的事件处理,是通过RaiseEvent触发的,但是,如果一个Activex DLL被动态加载 [CreateObject(DLL Porject's Name.ClassName)],就无法通过RaiseEvent触发,这样也就无法在工程中使用Activex DLL提供的事件了。这个替代办法是使用CallWindowProc API我现在假设有这么一个问题:我编写一个Activex DLL,通过其中一个Timer的Timer触发在另一个EXE工程中的DoMe事件,我该怎么做?在Activex DLL中,我编写如下代码:工程名:EVENT ,类模块名:SetEvent, 模块名:MainIn Class SetEvent:Public Function SetEventAdd(Address as long) as long EventAdd=AddressEnd FunctionIn Module Main:Public EventAdd as longPublic Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongIn Timer's Event Timer:Private Sub Timer_Timer(...)'Add the judgment here.(If...Then...,Select Case...)CallWindowProc EventAdd,0,0,0,0End Sub在EXE工程中:模块名:ForEvents, 窗体:FormIn Module ForEvents:Public Function DoMe()'TODO.End FunctionIn Form's Event:Dim Example as ObjectPrivate Sub Form_Load()Set Example=CreateObject(EVENT.SetEvent)Example.SetEventAdd AddressOf DoMe End Sub至此,当Activex DLL中Timer事件中的代码通过条件判断,便可随时触发DoMe。在这里,我们必须注意的是,CallWindowProc函数的参数有许多限制,具体请参阅MSDN中的信息。AddressOf 只能返回一个放在模块中的函数的地址,同时AddressOf只能放在参数中使用。在使用AddressOf返回函数地址时,函数中必须有实际可执行的代码,否则出错。更多信息,可以参阅好人的文章:http://www.blogbus.com/blogbus/blog/diary.php?diaryid=284978