100分来了,vb6引用接口,最后的难点...
微软对于office中的 CustomTaskPane,已经把VB6抛弃了,没有可视化的操作 ,甚至连示例说明都没有一个..,就仅仅在帮助文档里有那么几句话,如下:
Office 开发人员参考
ICustomTaskPaneConsumer.CTPFactoryAvailable 方法
将 CTPFactory 对象传递给随后可在创建自定义任务窗格时使用的 Microsoft ActiveX 加载项。
可以用任何支持 COM 并允许创建动态链接库 (DLL) 文件的语言创建自定义任务窗格。例如,Microsoft Visual Basic? 6.0、Microsoft Visual Basic .NET、Microsoft Visual C++?、Microsoft Visual C++ .NET 和 Microsoft Visual C#?。但是,Microsoft Visual Basic for Applications (VBA) 不支持创建自定义任务窗格。
按照C#示例的代码进行翻译,还是不行,望MVP出手,来解决这个问题..
public class Connect : Object, Extensibility.IDTExtensibility2, ICustomTaskPaneConsumer
...
object missing = Type.Missing;
public CustomTaskPane CTP = null;
public void CTPFactoryAvailable(ICTPFactory CTPFactoryInst)
{
CTP = CTPFactoryInst.CreateCTP("SampleActiveX.myControl", "Task Pane Example", missing);
sampleAX = (myControl)CTP.ContentControl;
sampleAX.InsertTextClicked += new InsertTextEventHandler(sampleAX_InsertTextClicked);
CTP.Visible = true;
}
VB6代码如下,这里我并没有创建自己的AX控件,只是想建一个任务窗..
创建后没任何反应,也没报错,强烈要求MVP出来弥补这个空白..
Option Explicit
Implements ICustomTaskPaneConsumer
Implements IDTExtensibility2
Dim oWD As Word.Application
Dim ctp As CustomTaskPane
Private Sub ICustomTaskPaneConsumer_CTPFactoryAvailable(ByVal CTPFactoryInst As Office.ICTPFactory)
Set ctp = CTPFactoryInst.CreateCTP("SampleActiveX.myControl", "mytest")
ctp.Visible = True
End Sub
Private Sub IDTExtensibility2_OnAddInsUpdate(custom() As Variant)
End Sub
Private Sub IDTExtensibility2_OnBeginShutdown(custom() As Variant)
End Sub
Private Sub IDTExtensibility2_OnConnection(ByVal Application As Object, ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As Object, custom() As Variant)
Set oWD = Application
End Sub
[解决办法]
不懂,学习中,呵呵
[解决办法]
100呀,可惜我不懂,帮顶。。。
[解决办法]
请问你的SampleActiveX.myControl控件创建了吗?SampleActiveX.myControl应该是指向你自己的ActiveX控件代码的
个人看法,如果是COM的,没理由VB6的ActiveX就不行了。C#也要设置成COM可见才行。
[解决办法]
没有可视化编辑? 不明白你的意思。
VB ActiveX控件在类模块内你可以声明任意窗体,其他自定的控件,可以做Form做的任何事情,什么才叫可视化操作呢?