正文

VB插件-创建一个内部的窗体2005-09-30 15:59:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/mysticboy/5481.html

分享到:

你也许使用过我的 CoderHelper 后,会发现,VB中多了好多窗体.怎么实现的呢.呵呵上,告诉你个小秘密,我用一个微软提供的函数,这个函数就时 VBI.Windows.CreateToolWindow,它时Windows对象的方法.创建当然建议也时在 OnConnection 里.Dim aitmp As AddIn'定义一个AddinSet VBI = ApplicationSet MVBI = VBISet aitmp = MVBI.Addins("CoderHelper.Connect")然后在模块中PUblic winCmdLine as Window添加一个用户文档.ContinuousScroll 属性为False .命名为 ucCmdLine 在模块中 Public docCmdLine as ucCmdLine这样时为了方便你在整个工程内使用他们.你也可以放在Connect元件中.     最后,也时最为关键的 Set winCmdLine = VBI.Windows.CreateToolWindow(aitmp, App.ProductName + ".docCmdLine", LoadResString(10), "c_m_d_l_i_n_e", docCmdLine)aitmp参数很明显它是你Addin的实例,App.ProductName + ".docCmdLine"是ProgID.LoadResString(10)从资源中加载了标题,当然你也可以直接写为字符串.     "c_m_d_l_i_n_e"是很麻烦的东西.它是GUID.GUID在MSDN和其它一些资料中说是在某目录下有这么个工具,但是似乎在VS.Net的菜单里才有.其它地方我是没有找到.在这里我是偷懒了.管它三七二十一.就用"c_m_d_l_i_n_e"代替吧,其中的"_"的也可以部要,但是MSDN带的一个示例中是这么写的.我尝试着去掉"_"但是,和这样写没什么区别.但是有一点,如果你不加"_",大家看到你代码的时候不知道那是什么参数,以为是字符串,而事实上是GUID.所以加上"_"能让你明白,那不是一般字符串.不管GUID是要干吗的.至少,现在我们是用不着的.那是它在注册表中的事情.除非你要操作它在注册表中的数据,才会用到这个该死的GUID.     docCmdLine是你刚才定义的用户文档对象.这可是必须的.不能马虎.到这里,运行后你的VB里就会多个窗体.这个窗体本质不和其它窗体一样,它是 vbext_wt_ToolWindow类型,是不能象对象浏览器一样在窗体里对大化的.也不会有最小化和最大化按钮.它的右键菜单是无效的.我非常希望是有效的.但是,非常让我失望.     提醒你一点,创建后,你必须要 winCmdLine.Visible = Ture,才能显示出来.它的位置和大小最好不要理会.是由VB自己来控制的.用户在使用了后,关闭VB前,它是什么样的,那么下次启动时依然是什么样的.你的操心是没必要的.而且如果你的窗体和其它窗体连在一起时,调整大小可能会造成错误.有很长一段时间我试图控制它.但是非常麻烦.其实控制它的位置,目的就是关闭时的位置和下次启动位置一样.但后来才知道.这时没必要的.     关于用户文档,你可以自己创建,也可以转换一个窗体到用户文档.这里将不阐述这些事情.

阅读(2439) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册