精华内容
下载资源
问答
  • 上面的classid在控件成功注册后也可以通过注册表查找,具体方法是win+R键,输入regedit命令,就会弹出“注册表编辑器”,位置在“HKET_CLASSES_ROOT”中,根据你控件的名称,快速按下前三个字母,然后就可以定位到...

    1.ActiveX的基本概念

             ActiveX控件可以看作是一个极小的服务器应用程序,它不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行。这个容器包括WEB网页,应用程序窗体等。。。

             ActiveX控件的后缀名是OCX或者DLL。一般是以OCX和动态库共存的形式打包成cab或者exe的文件放在服务器上,客户端下载后运行安装cab或exe解压成OCX和动态库共存的文件,然后注册ocx文件。

             ActiveX控件是基于com标准,使得软件部件在网络环境中进行交互的技术集。它与具体的编程语言无关。作为针对Internet应用开发的技术,ActiveX被广泛应用于WEB服务器以及客户端的各个方面。同时,ActiveX技术也被用于方便地创建普通的桌面应用程序,此外ActiveX一般具有界面。

     

    2.三个概念:ActiveX、OLE和COM

            从时间的角度讲,OLE是最早出现的,然后是COM和 ActiveX;从体系结构角度讲,OLE和ActiveX是建立在COM之上的,所以COM是基础;单从名称角度讲,OLE、ActiveX是两个商标名称,而COM则是一个纯技术名词,这也是大家更多的听说ActiveX和OLE的原因。COM是应OLE的需求而诞生的,所以虽然COM是OLE的基础,但OLE的产生却在COM之前。COM的基本出发点是,让某个软件通过一个通用的机构为另一个软件提供服务。ActiveX最核心的技术还是COM。ActiveX和OLE的最大不同在于,OLE针对的是桌面上应用软件和文件之间的集成,而 ActiveX则以提供进一步的网络应用与用户交互为主。COM对象可以用C++、Java和VB等任意一种语言编写,并可以用DLL或作为不同过程工作的执行文件的形式来实现。使用COM对象的浏览器,无需关心对象是用什么语言写的,也无须关心它是以DLL还是以另外的过程来执行的。从浏览器端看,无任何区别。这样一个通用的处理技巧非常有用。

     

    3.ActiveX控件工程的创建

           使用VS2010有两种方式可以创建ActiveX工程,

    第一种:创建“MFC ActiveX 控件”工程;

    第二种:创建“ATL 项目”。由于使用ATL开发ActiveX控件需要了解com技术,对程序员的要求也较高,开发时间也较长,所以如果ActiveX只在windows操作系统下运行,那么就使用“MFC ActiveX 控件”工程来快速建立ActiveX控件。但是这里要注意了:使用“MFC ActiveX 控件”工程来快速建立ActiveX控件,他不仅要建立在windows操作系统下,还必须在windows操作系统下安装c++依赖库安装包,因为MFC是建立在微软的c++动态库的基础上的。所以这两种方式各有优缺点,根据项目需求来选择适合的方式。

     

    4.使用VS2010创建MFC ActiveX工程项目步骤

             由于使用ATL进行ActiveX工程的创建难度比较大,所以这里先使用“MFC ActiveX 控件”工程来创建一个简单的ActiveX控件。

           第一:新建项目-》选择“MFC ActiveX 控件”工程,给项目命名TestMfcAtlDebug,点击确定,弹出“控件向导”对话框

     

            第二:在概述,应用程序设置,控件名称和控件设置都可以选择默认,然后点击“完成”,这样“MFC ActiveX 控件”工程创建完成

     

     

    5.分析“MFC ActiveX 控件”工程的三个重要的类以及对外接口定义文件idl

    使用向导创建完工程可以看到自动生成了三个类,TestMfcAtlDebug,TestMfcAtlDebugCtrl和TestMfcAtlDebugPropPage

     

    可以打开上面三个类的头文件及cpp文件,发现它们都是派生类。

    TestMfcAtlDebug:cpp文件中定义了DllRegisterServer和DllUnregisterServer,可以发现ActiveX的注册和反组册都与该类有关。

    TestMfcAtlDebugCtrl:可以发现该头文件中声明了消息映射(让ActiveX控件程序可以接受系统发送的事件通知,如窗体创建和关闭事件),调度映射(让外部调用程序(包含ActiveX的容器)可以方便地访问ActiveX控件的属性和方法),事件映射(让ActiveX控件可以向外部调用程序(包含ActiveX的容器)发送事件通知)。也就是说对ActiveX控件的窗口操作都将在这个类中完成,包括ActiveX控件的创建,重绘,以及在此类中创建可视MFC窗体。

    TestMfcAtlDebugPropPage:显示ActiveX控件的属性页的

     

    让我们来看看最重要的部分:对外接口定义文件TestMfcAtlDebug.idl,代码如下:

    [cpp]  view plain copy
     
    1. #include <olectl.h>   
    2. #include <idispids.h>   
    3.   
    4. uuid(69EE37F4-8B36-495F-9F60-5E3AAF2FB494), version(1.0),  
    5.   control ]  
    6. library TestMfcAtlDebugLib  
    7. {  
    8.     importlib(STDOLE_TLB);  
    9.   
    10.     //  CTestMfcAtlDebugCtrl 的主调度接口   
    11.     [   
    12.         uuid(6B60346D-5CCD-4907-83F4-51938558A9B7)    
    13.     ]  
    14.     dispinterface _DTestMfcAtlDebug  
    15.     {  
    16.         properties:  
    17.         methods:  
    18.   
    19.             [id(DISPID_ABOUTBOX)] void AboutBox();  
    20.     };  
    21.   
    22.     //  CTestMfcAtlDebugCtrl 的事件调度接口   
    23.   
    24.     [   
    25.         uuid(E26ECC46-9BA2-4C25-A4DD-A690560A5113)    
    26.     ]  
    27.     dispinterface _DTestMfcAtlDebugEvents  
    28.     {  
    29.         properties:  
    30.             //  事件接口没有任何属性   
    31.   
    32.         methods:  
    33.     };  
    34.   
    35.     //  CTestMfcAtlDebugCtrl 的类信息   
    36.     [  
    37.         uuid(DD0CF7EF-A181-428C-B5FC-C44A1C13CA43)  
    38.     ]  
    39.     coclass TestMfcAtlDebug  
    40.     {  
    41.         [default] dispinterface _DTestMfcAtlDebug;  
    42.         [default, source] dispinterface _DTestMfcAtlDebugEvents;  
    43.     };  
    44.   
    45. };  
    [cpp]  view plain  copy
     
    1. #include <olectl.h>  
    2. #include <idispids.h>  
    3.   
    4. uuid(69EE37F4-8B36-495F-9F60-5E3AAF2FB494), version(1.0),  
    5.   control ]  
    6. library TestMfcAtlDebugLib  
    7. {  
    8.     importlib(STDOLE_TLB);  
    9.   
    10.     //  CTestMfcAtlDebugCtrl 的主调度接口  
    11.     [   
    12.         uuid(6B60346D-5CCD-4907-83F4-51938558A9B7)    
    13.     ]  
    14.     dispinterface _DTestMfcAtlDebug  
    15.     {  
    16.         properties:  
    17.         methods:  
    18.   
    19.             [id(DISPID_ABOUTBOX)] void AboutBox();  
    20.     };  
    21.   
    22.     //  CTestMfcAtlDebugCtrl 的事件调度接口  
    23.   
    24.     [   
    25.         uuid(E26ECC46-9BA2-4C25-A4DD-A690560A5113)    
    26.     ]  
    27.     dispinterface _DTestMfcAtlDebugEvents  
    28.     {  
    29.         properties:  
    30.             //  事件接口没有任何属性  
    31.   
    32.         methods:  
    33.     };  
    34.   
    35.     //  CTestMfcAtlDebugCtrl 的类信息  
    36.     [  
    37.         uuid(DD0CF7EF-A181-428C-B5FC-C44A1C13CA43)  
    38.     ]  
    39.     coclass TestMfcAtlDebug  
    40.     {  
    41.         [default] dispinterface _DTestMfcAtlDebug;  
    42.         [default, source] dispinterface _DTestMfcAtlDebugEvents;  
    43.     };  
    44.   
    45. };  

    这个就是对外接口定义文件,如果外部程序想要调用ActiveX的方法,属性以及在注册表注册的classid(WEB网页调用需要使用),就必须了解这个文件,这个文件可以分为四个部分来看:

    首先是TestMfcAtlDebug.Lib这个库信息

     

    这个就不做详解

    第二部分是调度映射的接口信息,该接口信息包含了属性(如控件背景色)和对外方法

    里面定义了一个方法AboutBox(),该方法就可以被外部程序调用,在该接口里定义的函数都是纯虚函数,这些函数的实现都是在TestMfcAtlDebugCtrl中完成的,MFC通过底层的封装,让TestMfcAtlDebugCtrl类继承这个接口,实现函数。

    第三部分是事件映射的接口信息

     

    第四部分是类的信息,其中uuid就是ActiveX控件注册到注册表的classid,它是ActiveX注册后在系统内的唯一标识,WEB网页就是使用这个ID加载ActiveX控件的

     

    6.定义调度映射和事件映射方法,提供给外部调用者使用
    那么怎么定义新的调度映射和事件映射方法呢,如果手动定义很不方便,当然使用编译器进行定义,步骤是打开类视图:

    可以看到TestMfcAtlDebugLib中有_DTestMfcAtlDebug和_DTestMfcAtlDebugEvents,在_DTestMfcAtlDebug项中可以右键-》添加方法(或属性),该操作是完成调度映射的方法和属性的添加;在_DTestMfcAtlDebugEvents项中可以右键-》添加方法(或属性),该操作是完成事件映射的方法和属性的添加。

    举个例子,如果要添加一个调度映射的方法Fuck2(),使得外部可以调用:

    在_DTestMfcAtlDebug项中可以右键-》添加方法,设置框

    填写完信息后点击完成,外部就可以调用方法Fuck2,同时ActiveX控件项目代码的内部将会在三个文件中新增代码:

    1.在

    2.在

    3.在

     

     

     

    7.注册ActiveX控件

    按照上面的步骤已经完成简单ActiveX控件(无窗体界面的控件)的编写,重新生成后会在Debug下生成一个TestMfcAtlDebug.ocx的文件,使用windows的dos窗口可以注册这个ActiveX控件

    步骤:

    首先win+R键打开运行,然后输入注册命令:regsvr32  c:\.......\TestMfcAtlDebug.ocx(反注册命令:regsvr32  c:\.......\TestMfcAtlDebug.ocx -u)

    有两种情况会导致控件注册失败:

    第一种:使用非Administrator用户登入系统会由于权限不足而无法注册com组件,这时候就必须使用Administrator用户登入操作系统

    第二种:ActiveX控件所依赖的dll库被程序给占用,就会导致注册失败,解决办法是将正在运行的程序关闭就可以

     

     8.测试ActiveX控件的方法

    按照上面的步骤已经完成ActiveX控件的编写,也将这个控件注册成功了,那么怎么测试这个控件呢,有三种方式:

    第一种:使用html网页来测试

    在TestMfcActiveX.htm的文件中编写代码如下:

    [html]  view plain copy
     
    1. <HTML>  
    2. <HEAD>  
    3. <TITLE>Test ActiveX</TITLE>  
    4. </HEAD>  
    5. <OBJECT ID="TestMfcAtl Control" WIDTH=528 HEIGHT=545 classid="CLSID:DD0CF7EF-A181-428C-B5FC-C44A1C13CA43">  
    6.     <PARAM NAME="_Version" VALUE="65536">  
    7.     <PARAM NAME="_ExtentX" VALUE="12806">  
    8.     <PARAM NAME="_ExtentY" VALUE="1747">  
    9.     <PARAM NAME="_StockProps" VALUE="0">  
    10. </OBJECT>  
    11. </HTML>  
    [html]  view plain  copy
     
    1. <HTML>  
    2. <HEAD>  
    3. <TITLE>Test ActiveX</TITLE>  
    4. </HEAD>  
    5. <OBJECT ID="TestMfcAtl Control" WIDTH=528 HEIGHT=545 classid="CLSID:DD0CF7EF-A181-428C-B5FC-C44A1C13CA43">  
    6.     <PARAM NAME="_Version" VALUE="65536">  
    7.     <PARAM NAME="_ExtentX" VALUE="12806">  
    8.     <PARAM NAME="_ExtentY" VALUE="1747">  
    9.     <PARAM NAME="_StockProps" VALUE="0">  
    10. </OBJECT>  
    11. </HTML>  

    注意上面的classid就是在idl文件中类的uuid,然后打开这个网页就会显示ActiveX控件。上面的classid在控件成功注册后也可以通过注册表查找,具体方法是win+R键,输入regedit命令,就会弹出“注册表编辑器”,位置在“HKET_CLASSES_ROOT”中,根据你控件的名称,快速按下前三个字母,然后就可以定位到比较好找的位置,如下图

    第二种:建立Mfc应用程序,在Mfc窗口右键-》插入“ActiveX”控件,然后就会在MFC的窗体上显示ActiveX控件

    第三种:也是最方便的一种方法,就是使用vs自带的ActiveX Control Test Container来测试ActiveX控件,但是VS2010在“工具”中没有这一项,那么我们首先可以手动把这个工具添加到VS2010里,首先找到C:\Program Files\Microsoft Visual Studio 10.0\Samples\2052\C++\MFC\ole\TstCon\TstCon.sln,然后使用VS2010打开解决方案TstCon.sln,编译项目TCProps和TstCon,编译完成后会在C:\Program Files\Microsoft Visual Studio 10.0\Samples\2052\C++\MFC\ole\TstCon\Debug\中生成TstCon.exe执行程序,这个执行程序就是ActiveX Control Test Container,接下来我们就在VS2010中的工具中添加这个TstCon.exe,在VS2010中的“工具”菜单项中选择“外部工具”,在弹出的窗体中添加一个新的工具,标题为ActiveX Control Test Container,命令为C:\Program Files\Microsoft Visual Studio 10.0\Samples\2052\C++\MFC\ole\TstCon\Debug\TstCon.exe,然后点击确定就可以完成工具的添加了。

     

     这样,在“工具”中就有了一个ActiveX Control Test Container,点击它就会弹出测试ActiveX的容器,如下图

     

    点击Edit->Insert New Control->选择TestMfcAtlDebug Control,点击OK

    然后就会显示这个注册后的AcitveX控件,如果要测试这个控件的调度映射的方法Fuck2,就先选中控件,然后点击Control-》Invoke Methods,在Methods Name下拉框中选择Fuck2这个方法,点击Invoke按钮就可以测试这个方法了,如下图:

     

    我们可以看到上面的ActiveX控件是一个空白的背景和一个圈组成的,并没有窗体界面,那么怎么添加窗体呢?

     

    9.向ActiveX控件中添加一个Mfc窗体,就是一个带界面的ActiveX控件

     步骤:

    第一:在资源视图中新建一个对话框资源

     

    去掉上边的“确定”和“取消”按钮,然后修改对话框属性:Border改为None,Control改为Ture,ID改为IDD_MAIN_DIALOG,Style改为Child,System改为False,Visible改为True,然后在对话框中双击,为对话框添加一个类,如下图:

     

    点击“完成”。在解决方案资源管理器中新增了一个ViewDialog.h和ViewDialog.cpp这个ViewDialog类就是刚刚我们建立的对话框类

    然后拖一个Edit Control到对话框上,修改其ID为IDC_EDIT_OUTPUT,再拖一个Button到对话框上,此时对话框效果为:

     对话框建立完成,接下来就是要把它添加到ActiveX控件中去

     

    第二:在TestMfcAtlDebugCtrl.h中定义对话框实例m_VideoDlg

     

     然后在TestMfcAtlDebugCtrl类中定义两个消息映射:窗体创建完成消息映射和窗体改变大小消息映射

    在VS2010的菜单项“项目”--》“类向导”中,选择要添加到的项目和类中,选择“消息”选项卡,选择WM_CREATE后点击”添加处理程序“按钮和选择WM_SIZE

    后点击”添加处理程序“,这样在“现有的处理程序”中就有OnCreate和OnSize这两个函数,点击确定,完成消息映射函数的添加,如图:

     在TestMfcAtlDebugCtrl.cpp中自动添加下列代码,如图:

     在OnCreate函数中编写如下代码(Create是在ActiveX控件中创建一个窗体对话框,IDD_VIEW_DIALOG就是刚刚新建的对话框):

     

     在OnSize函数编写代码如下(MoveWindow是确定窗体对话框在ActiveX中的大小):

     

     第三:重新编译,注册ocx,使用ActiveX Control Test Container再次测试该控件

     可以发现这个ActiveX控件中已经有了界面了

    展开全文
  • 查找替代字符串的函数 ★ VB 换行气泡提示类 ★ VB/VBA 通用路径选择对话框 ★ ASCII 码表 0-255 完整版 附详细注释 ★ VB 的 KeyAscii ★ VB 取得 TextBox 、 RichTextBox 光标所在的行和列...

    'MOD2
    Option Explicit
    Private Type BROWSEINFO
        hOwner As Long
        pidlRoot As Long
        pDisplayName As String
        lpTitle As String
        ulFlags As Long
        lpfn As Long
        lParam As Long
        iImage As Long
    End Type

    Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias _
                              "SHGetPathFromIDListA" (ByVal pidl As Long, _
                              ByVal pPath As String) As Long

    Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias _
                              "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) _
                              As Long

    Private Const BIF_RETURNONLYFSDIRS = &H1
    ' *******************************************************************
    ' 函数名: BrowseFolder
    ' 功能: 浏览及选择文件夹通用对话框
    ' 使用方法:(1)将mdlBrowseFolder.bas模块添加到当前工程中;
    ' (2)在当前工程中使用
    ' dim strMyPath as String
    ' strMyPath=BrowseFolder("请选择目录")
    ' 代码段进行调用,用户选择的目录将保存在strPath字符串变量下;
    ' (3) 如果用户选择"取消"按钮,则strPath的值为空;
    ' *******************************************************************

    Public Function BrowseFolder(strDialogTitle As String) As String
        Dim X As Long
        Dim bi As BROWSEINFO
        Dim dwIList As Long
        Dim strPath As String
        Dim wPos As Integer

        With bi
            .hOwner = 0& 'hWndAccessApp
            .lpTitle = strDialogTitle
            .ulFlags = BIF_RETURNONLYFSDIRS
        End With

        dwIList = SHBrowseForFolder(bi)
        strPath = Space$(512)
        X = SHGetPathFromIDList(ByVal dwIList, ByVal strPath)

        If X Then
            wPos = InStr(strPath, Chr$(0))
            BrowseFolder = Left$(strPath, wPos - 1)
        Else
            BrowseFolder = vbNullString
        End If

        ' 确保返回的路径字符串的最后一个字符为"\"
        If BrowseFolder <> "" And Right$(Trim$(BrowseFolder), 1) <> "\" Then
            BrowseFolder = BrowseFolder & "\"
        End If

    End Function

     

    ' 测试示例  

    Sub Main()

        Dim strMyPath As String

        strMyPath = BrowseFolder("请选择目录")

        MsgBox "你选择的路径是: " & strMyPath

    End Sub

    摘自:网络整理

    相关参考


    VB查找替代字符串的函数

    VB换行气泡提示类

    VB/VBA通用路径选择对话框

    ASCII码表0-255完整版 附详细注释

    VBKeyAscii

    VB取得TextBoxRichTextBox光标所在的行和列(支持汉字)

    VB取得TextBoxRichTextBox光标所在的行和列(支持汉字)

    VB如何实现Undo(撤消)功能

    VB计算文本文件的行数

    VB获取快捷方式原文件路径

    微软 Small Basic 简体中文版 已经发布了

    VB操作Excel 非常详细 [网摘]

    VB如何判断文件正被占用/已被打开

    VB添加listbox 的水平卷动轴

    VB打开资源管理器并指定文件

    VB根据窗体自动调整窗体内控件大小 注:实用,可以直接引用

    VB中的指针技术

    Visual Basic编程常见问题及解答(1

    Visual Basic编程常见问题及解答(2

    Visual Basic编程常见问题及解答(3

    VisualBasic变量、常数和数据类型及过程概述

    VB6的后期绑定和前期绑定

    VB用户控件制作讲解与实例

    VB制作OCX控件的步骤

    VBFSO的调用的两种方法

    VB操作EXCEL

    VB判断文件及目录的存在性

    VB网站(最新、经典源代码、技术文章、基础知识)

    VB得到指定文件夹下的文件列表

    VB产生随机任意大小文件挤满硬盘

    VB文件的读写操作

    VB创建超链接 打开指定网站的几种方法

    VB 源码 删除重复行程序 函数

    VB 计算自己程序段所用时间

    VB 获取路径名各部分 (获取文件路径,获取文件名,获取文件扩展名)自编

    几行VB代码拿下注册表

    VB 在浏览器中打开指定网址

    VB窗口置顶

    vb ListBox 之中点击右键弹出菜单

    展开全文
  • VB 创建MS OFFICE的 COM 加载项

    千次阅读 2009-01-15 16:54:00
    过此演练,可以用 VB 创建 COM 加载项。COM 加载项可以在不给用户增加...虽然可以将加载项编写成可执行文件 (.exe),但 DLL 通常会比 .exe 文件提供更好的性能。此演练将使用 VB 创建并运行一个自定义工具
    过此演练,可以用 VB 创建 COM 加载项。COM 加载项可以在不给用户增加复杂性的情况下扩展应用程序的功能。究其实质,COM 加载项是一个动态链接库 (DLL),需要进行注册才能供 Microsoft® Office XP 应用程序加载和使用。虽然可以将加载项编写成可执行文件 (.exe),但 DLL 通常会比 .exe 文件提供更好的性能。

    此演练将使用 VB 创建并运行一个自定义工具栏 COM 加载项。本主题中的任务假定您熟悉 Office 应用程序、VB 工程,以及调试和运行代码。

    引言

    创建 COM 加载项时可以使用任何支持 COM 的语言,如 VBA、Visual Basic 和 Microsoft® Visual C++®。用 Office Developer 创建的加载项将自动打包成 DLL,并由宿主应用程序注册后进行加载。可以创建一个加载项但能用于多个应用程序中。有关详细信息。请参阅为多个应用程序创建 COM 加载项。

    此演练将完成一系列步骤,从而用 VB 创建一个 COM 加载项。创建 COM 加载项的基本步骤包括: 

    1.配置外接程序设计器。 
    2.在外接程序设计器中编写代码。 
    3.将命令条控件集成到加载项中。 
    4.对 COM 加载项进行调试和测试。 
    5.为 COM 加载项生成 DLL。 
    6.解决 COM 加载项的开发问题。
     
    配置外接程序设计器

    用外接程序设计器创建的工程为开发加载项提供工作区域。使用外接程序设计器可以创建用于 VBA 或任何 Office 应用程序的 COM 加载项。工程中的每个外接程序设计器都表示一个单独的、只能在一种 Office 应用程序中运行的加载项。创建的 DLL 可包含多个加载项,它们使用相同的窗体、模块和类模块,但面向的却是不同的应用程序。此演练使用 Excel 作为宿主 Office 应用程序。

    如果希望加载项可供多个应用程序使用,就必须为每个宿主应用程序各自添加一个外接程序设计器。可以通过模块共享代码;但在每个工程中,必须引用每个宿主应用程序所特定的对象模型。

    配置外接程序设计器 

    1.打开 VB
    2.在“文件”菜单中,选择“新建工程”,然后选择“外接程序”。
    3.把窗体移除,双击设计器中的Connect. 
    3.在“外接程序显示名称”文本框中键入名称 Greeting Toolbar,在“外接程序描述”文本框中键入说明 Toolbar add-in that launches a Hello World message in Excel。 
    4.从“应用程序”列表中选择 Microsoft Excel。 
    5.从“应用程序版本”列表中选择 Microsoft Excel 10.0。 
    6.从“初始化加载行为”列表中选择 "Startup"。有关各种不同类型初始加载行为的详细信息,请参阅指定加载行为。 

    此主题相关图片如下:
    screen.width-333)this.width=screen.width-333" border=0>
    7.在“工程”菜单中,选择“引用”,确保让工程引用下列类型库。(该引用列表是此演练所必需的。对于您的加载项,要确保选择每个可以使用加载项的 Office 应用程序所需的类型库。) 
    ●Visual Basic for Applications 
    ●OLE Automation 
    ●Microsoft Add-in Designer 
    ●Microsoft Office 10.0 Object Library 
    ●Microsoft Excel 10.0 Object Library 
    9.在“文件”菜单中选择“保存 Connect”。 
    10.在“工程另存为”对话框中,输入名称 Greetings.Dsr,选择要将其保存到的文件夹,然后单击“保存”。
     
    在外接程序设计器中编写代码

    在创建工程并为外接程序设计器赋值后,可以添加代码将加载项与宿主应用程序连接起来。此演练将向您展示将加载项与宿主应用程序连接起来所需的典型过程和事件。IDTExtensibility2 接口提供连接这二者所需的 COM 对象和事件。然后,加载项可以使用宿主应用程序所展示的对象模型与宿主应用程序接合。可以在对象浏览器中查看特定应用程序的对象模型。

    外接程序设计器中的代码可处理加载项与宿主应用程序的集成。例如,加载或卸载加载项时运行的代码驻留在“外接程序设计器”的模块中。如果加载项中包含窗体,则外接程序设计器还可以包含用于显示窗体的代码。

    声明变量和设置过程存根 

    1.在“工程资源管理器”窗口中,选择 Connect,然后打开“视图”菜单,单击“代码”。清除原来有的代码. 
    2.在“通用声明”部分,引用可扩展性接口。 
    Implements IDTExtensibility2
    3.添加用于在加载项和宿主之间提供通讯的模块级变量。只要加载了 COM 加载项,赋值为 As Excel.Application 的变量就一直存在,因此,所有过程都可以确定加载项当前正在哪个应用程序中运行。因为 WithEvents 关键字指派给 cbbButton 变量,所以菜单项的 Click 事件过程将在用户单击新菜单项时触发。 
    ´Global object references
    Public appHostApp As Excel.Application
    Private WithEvents cbbButton As Office.CommandBarButton
    4.在“代码”窗口中,从“对象”列表中选择 IDTExtensibility2,从“事件”列表中选择 OnConnection。这将创建 OnConnection 事件过程存根。 
    注意   您必须使由 IDTExtensibility2 界面提供的每个事件中都包括事件过程存根。如果您删除了任何事件过程,工程就无法编译。
    5.为下列每个事件添加事件过程存根: 
    ●OnDisconnection 
    ●OnStartupComplete 
    ●OnBeginShutdown 
    ●OnAddinsUpdate 
    现在就可以为您的加载项添加功能了。

    将命令条控件集成到加载项中

    如果您的 COM 加载项有一个用户界面,就可以添加用于显示命令条的代码,以方便用户运行您的加载项。此演练将显示如何在宿主应用程序中包含用于创建新命令条控件(工具栏按钮或菜单项)的代码。加载您的加载项时,会同时加载控件,用户可以通过单击按钮或菜单项打开并使用加载项。

    创建命令条控件 

    1.查找 OnConnection 事件过程。在 Private Sub 和 End Sub 行之间,添加代码以创建新的命令条控件并将其指派给支持事件的 CommandBarButton 对象变量。整个过程将显示如下: 
    Private Sub IDTExtensibility2_OnConnection(ByVal _
       Application As Object, ByVal ConnectMode As _
       AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst _
       As Object, custom() As Variant)

       ´ 存储启动引用
       Set appHostApp = Application

       ´ 添加命令条
       Set cbbButton = CreateBar()
    End Sub
    如果您熟悉使用 Visual Basic 创建加载项,就可能注意到,在 VBA 中创建加载项时,不用设置命令条按钮 OnAction 属性的值。这是因为事件自动为您挂起。 

    2.查找 OnDisconnection 事件过程。在 Private Sub 和 End Sub 行之间,添加代码以便在卸载加载项时删除命令条控件。整个过程将显示如下: 
    Private Sub IDTExtensibility2_OnDisconnection(ByVal _
       RemoveMode As AddInDesignerObjects.ext_DisconnectMode, _
       custom() As Variant)

       RemoveToolbar
       ´ 移除要关闭的引用
       Set appHostApp = Nothing
       Set cbbButton = Nothing
    End Sub
    3.通常,只要在代码中存储函数,就会在 OnConnection 过程中添加您调用的函数对应的代码。该函数将创建命令条,设置命令按钮的属性,并提供错误信息的处理。 
    Public Function CreateBar() As Office.CommandBarButton
       ´ 指定命令条
       Dim cbcMyBar As Office.CommandBar
       Dim btnMyButton As Office.CommandBarButton

       On Error GoTo CreateBar_Err

    Set cbcMyBar = appHostApp.CommandBars.Add(Name:="GreetingBar") 

     

       ´ 指定命令条按钮
       Set btnMyButton = cbcMyBar.Controls.Add(Type:=msoControlButton, _
          Parameter:="Greetings")
       With btnMyButton
          .Style = msoButtonCaption
          .BeginGroup = True
          .Caption = "&Greetings"
          .TooltipText = "Display Hello World Message"
          .Width = "24"
    End With

       ´ 显示并返回命令条
       cbcMyBar.Visible = True
       Set CreateBar = btnMyButton
       Exit Function

       CreateBar_Err:
       MsgBox Err.Number & vbCrLf & Err.Description
    End Function
    4.在 OnDisconnection 过程中添加您调用的函数对应的代码。该函数在加载宏被卸载时会删除命令条。 
    Private Function RemoveToolbar()
       appHostApp.CommandBars("GreetingBar").Delete
    End Function
    5.为 CommandBarButton 对象添加一个单击事件过程。该过程将在单击新的命令条按钮时被调用。下面的代码将显示一条消息以表明单击事件正在进行: 
    Private Sub cbbButton_Click(ByVal Ctrl As _ 
       Office.CommandBarButton, CancelDefault As Boolean)
       MsgBox ("Hello World!")
    End Sub
    6.保存您的工程。 
    现在,COM 加载项完成。其余的步骤就是调试和测试代码以确保它运行顺利,然后将加载项放入 DLL 文件中,该文件可以在其他装有 Office XP 的计算机上进行分发和使用。

    对加载项进行调试和测试

    当您在 VB 中开发 COM 加载项时,可以通过将工程置于运行模式而调试加载项。如果工程处于运行模式,就可以从 Office 应用程序中加载 COM 加载项并使用它,通过使用任何 VB 调试工具而对它进行测试和调试。

    使用 VB 调试和测试 COM 加载项 

    1.将任何所需的断点、Stop 语句或监视放在代码中。(可先不做这步)
    2.在“工程”菜单上,单击“属性”,在“调试”对话框中,选择“等待要创建的部件”,单击“确定”
    2.在“运行”菜单上,单击“全编译执行”。这将对工程进行编译(当出现任何编译错误时将提出警告),然后将工程置于运行模式。 
    3.检查“[运行]”是否出现在VB的标题栏中。 
    注意   必须发布加载项,宿主应用程序才能使用它。
    4.启动一个新的 Excel 实例。因为将加载项的加载行为设为 "Startup",所以只要启动应用程序,加载项就会加载,OnConnection 事件就会发生,于是出现 Greetings 按钮。现在,您可以使用为调试代码而添加的断点和 Stop 语句了。 
    如果单击 Greetings 按钮,则只要在 VB 中运行工程,Hello World 消息就会出现在编辑器之前(不在 Excel 之前)。在将工程生成为 DLL 文件后,该消息就会出现在 Excel 之前。 

    5.当完成调试和测试后,打开“运行”菜单,单击“终止工程”。这会清除临时文件和注册表项,并将工程置于正确的状态以生成 DLL 文件。
     
    为 COM 加载项生成 DLL

    编写并调试代码后,可以使您的加载项成为一个 DLL 以将其部署到其他装有 Office XP 的计算机上。

    在 VB 中将 COM 加载项打包为 DLL 

    1.从“文件”菜单上,选择“生成 myAddin.DLL”。 
    2.在“生成工程”对话框中保存文件名 Greetings,并选择要用于保存工程的位置。 
    3.单击“确定”。 (此时,加载项可在本机正式使用)
    这一步骤将创建 COM 加载项,添加适当的注册表项,并使COM 加载项可用于 Office 宿主中。创建加载项 DLL 时,VB 使用给外接程序设计器提供的信息,将 DLL 注册为 COM 加载项。VB 向注册表中写入加载项的名称、说明和初始加载行为设置。加载项的宿主应用程序读取这些注册表项并加载相应的加载项。

    有关分发部署 COM 加载项的信息,请参阅部署应用程序和部署 COM 加载项。

    常见加载项开发问题疑难解答

    当在开发环境中工作并在应用程序之间进行切换时,可能会遇到某些错误信息或意外行为。下面是一些常见问题及其解决方案。

    出现编译错误或语句结束在编辑器中无效

    要确保为工程引用了适当的对象库。

    运行工程并打开新的宿主应用程序实例时没有任何反应

    ●要确保字“已发布的”出现在所运行的加载项的标题栏中。如果不如此,就必须运行工程。 
    ●单击每个打开的应用程序窗口。您的对象可能正在运行,但只有在您单击所打开的应用程序的第一个实例时,它才是可见的。 
    ●要确保正确地指定并设置模块级变量。 
    ●在宿主应用程序中,要确保在“COM 加载项”对话框中选中了您的加载项。可以通过向工具栏中添加 COM 加载项命令而对宿主应用程序进行自定义。此命令将打开“COM 加载项”对话框。
     
    将 COM 加载项对话框添加到工具栏中 

    1.打开EXCEL“工具”菜单,单击“自定义”,选择“命令”选项卡。在“类别”下,选择“工具”。沿“命令”列表向下滚动,以查找“COM 加载项”。将“COM 加载项”拖动到工具栏中,以创建新的按钮,然后关闭“自定义”对话框。 
    2.在该工具栏上,单击刚添加的“COM 加载项”按钮。 
    3.在“COM 加载项”对话框中,确认选中您的加载项旁边的复选框。若要卸载加载项,请清除该复选框。 

    对象出现在宿主应用程序中但没有响应

    可能是有多个对象实例在运行。用于检测和移除已有的具有该名称的代码可能没在运行。检查并调试您的 OnDisconnection 代码。

    展开全文
  • <!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--><script type="text/javascript"
    <script type="text/javascript">
     </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
    
    <script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

    (作者:甘冀平 2000年12月21日 17:46)

      Windows系统给我们提供了许多非常实用的功能,而且都是以对话框的形式展现在用户眼前,比如:查找文件、浏览选择后执行程序,等等 ... 如果我们能在程序中以简练的代码快速调用它们,就可以移花接木般地达到需要的目的。这样,既省却了再次编写繁琐代码的过程,又能让程序快速执行(调用系统内核模块,能不快吗^_^)。以下就列举几个这样的例子:  

      ●快速调用“查找文件对话框”

      ●快速调用“系统重新启动对话框”

      ●快速调用“程序运行对话框”

      ●快速调用“文件属性对话框”

      ●快速调用“软盘格式化对话框”

      ●快速调用“网络资源映射对话框”

      ●快速调用“查找文件对话框”

    快速调用“查找文件对话框”
      在Windows环境中,如果要查找一个文件,通常情况下采取的步骤是:

      1、确定查找文件所在的文件夹范围

      2、按热键F3

      3、在出现的“查找:所有文件”窗口中,输入各个项目。


      是不是有点复杂。在VB程序中,能否通过点击一个按钮,就出现第3步的“查找:所有文件”?答案是肯定的!代码如下:

      '声明API函数

      Declare Function ShellExecute Lib "shell32.dll" Alias _

        "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation _

        As String, ByVal lpFile As String, ByVal lpParameters _

        As String, ByVal lpDirectory As String, ByVal nShowCmd _

        As Long) As Long

      '定义常量参数

      Const SW_SHOW = 5

      '通用调用查找对话框函数

      Public Sub ShowFindDialog(Optional InitialDirectory As String)

      ShellExecute 0, "find", _

       IIf(InitialDirectory = "", "", InitialDirectory), _

       VBNullString, VBNullString, SW_SHOW

      End Sub

      '调用查找对话框例程

      Call ShowFindDialog("C:Program Files")

      调用的代码ShowFindDialog("C:Program Files"),非常简练。注意:如果括号中的参数不是一个合法的目录名,这一行调用命令将不会产生任何结果。如果参数为空,就等于选择了当前目录。

    快速调用“系统重新启动对话框”
      我们在安装应用软件时,经常遇到安装结束时要求用户重新启动机器的确认对话框,这时系统将根据用户的选择重新启动,或者暂时退出安装,等待用户手工重新启动机器。其实,在我们的应用程序中,可以用很少的代码就调用出系统本身的重新启动对话框,真的是非常的快捷!代码是:

      '声明API函数

      Private Declare Function SHRestartSystemMB Lib _

      "shell32" Alias "#59" (ByVal hOwner As Long, ByVal _

      sExtraPrompt As String, ByVal uFlags As Long) As Long

      '定义系统重新启动常量参数

      Private Const SystemChangeRestart = 4

      '通用系统启动过程

      Public Sub SettingsChanged(FormName As Form)

        SHRestartSystemMB FormName.hWnd, VBNullString, SystemChangeRestart

      End Sub

      '调用例程

      SettingsChanged Form1

      运行一下,看看实际的效果图:


      直接使用系统内在的功能,省得自己去绘制表单了,不仅实现的功能可以很严谨,而且样子还很专业呢!

    快速调用“程序运行对话框”
      一般情况下,当我们需要在VB程序中调用一个外部.exe或者.com程序时,一般要用到shell命令。它提供了一种非常简捷的方式让我们执行一个确定的外部程序。但缺点也显现出了,就是它不提供用户选择执行程序的功能。你也许还记得这样的经历:我们用鼠标点击桌面左小角的“开始”,在选择“运行”,这时,就出现了一个“运行”对话框:


      你可以在这里直接输入要执行的程序全路径,或者,点击“浏览”按钮,选择一个程序。

      要达到同样的效果,请使用下面的代码:

      '声明API函数

      '引用了未公开的DLL文件shell32

      Private Declare Function SHRunDialog Lib "shell32" _

        Alias "#61" (ByVal hOwner As Long, ByVal UnknownP1 _

        As Long, ByVal UnknownP2 As Long, ByVal szTitle _

        As String, ByVal szPrompt As String, ByVal uFlags _

        As Long) As Long

      '通用调用运行对话框过程

      '参数Title表示对话框的标题,参数Description表示对话框中的描述文字

      Public Sub ShowRunDialog(ByRef CallingForm As Form, _

        Optional Title As String, _

        Optional Description As String)

        If Title = "" Then Title = "Run"

        If Description = "" Then Description = _

        "Type the name of a program to open, " & _

          "then click OK when finished."

        SHRunDialog CallingForm.hWnd, 0, 0, _

          Title, Description, 0

      End

      '调用例程

      Call ShowRunDialog(Me, "Run Dialog", "Choose a program and press OK")

      怎么样,输入完以上代码了吗?执行一下看看效果,是不是很满意:


    快速调用“文件属性对话框”
      为了查看一个文件的大小、创建时间、存取属性(只读、归档、隐藏)等等情况,采取的步骤一般是:

      1、定位文件

      2、用鼠标右键单击文件

      3、在出现的菜单中选择“属性”

      这时,就出现了文件属性对话框。比如,对于c:autoexec.bat实施上面的操作后,图示如下:


      这时,我们就能对它的各种属性值进行修改。

      在VB开发中,为了实现上面的功能,要应用到ShellExecuteEX函数,具体如下:

      '声明结构变量

      Private Type SHELLEXECUTEINFO

        cbSize As Long

        fMask As Long

        hwnd As Long

        lpVerb As String

        lpFile As String

        lpParameters As String

        lpDirectory As String

        nShow As Long

        hInstApp As Long

        lpIDList As Long

        lpClass As String

        hkeyClass As Long

        dwHotKey As Long

        hIcon As Long

        hProcess As Long

      End Type

      '定义常量参数

      Const SEE_MASK_INVOKEIDLIST = &HC

      Const SEE_MASK_NOCLOSEPROCESS = &H40

      Const SEE_MASK_FLAG_NO_UI = &H400

      '引用API函数

      Private Declare Function ShellExecuteEX Lib "shell32.dll" Alias _

      "ShellExecuteEx" (SEI As SHELLEXECUTEINFO) As Long

      '通用调用文件属性对话框过程

      '第一个参数为欲操作的文件全路径,第二个参数为窗口句柄

      Public Sub ShowProps(FileName As String, OwnerhWnd As Long)

        Dim SEI As SHELLEXECUTEINFO

        Dim r As Long

        With SEI

          .cbSize = Len(SEI)

          .fMask = SEE_MASK_NOCLOSEPROCESS Or _

           SEE_MASK_INVOKEIDLIST Or SEE_MASK_FLAG_NO_UI

          .hwnd = OwnerhWnd

          .lpVerb = "properties"

          .lpFile = FileName

          .lpParameters = VBNullChar

          .lpDirectory = VBNullChar

          .nShow = 0

          .hInstApp = 0

          .lpIDList = 0

        End With

        r = ShellExecuteEX(SEI)

      End Sub

      Use

      '例程:调用c:autoexec.bat的属性对话框

      Call ShowProps("c:autoexec.bat", Me.hwnd)

    快速调用“软盘格式化对话框”
      我们都已经熟悉了在Windows中格式化软盘的过程,操作步骤一般是:

      1、打开“我的电脑”

      2、用鼠标右键点击图标“3.5英寸软盘A”

      3、在出现的菜单中,选择“格式化”

      接着,就出现了下图所示的对话框:


      在这个窗口中,再依次选择你对软盘格式化的要求参数。

      在VB开发中,通过简捷的代码就能快速地调用这个系统对话框,并且,通过设置不同的调用参数,能够直接选择对话框出现的形式。下面就详细介绍:

      '声明API函数

      '第2个参数表示调用对话框的具体形式

      Private Declare Function GetWindowsDirectory Lib "kernel32" _

      Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, _

      ByVal nSize As Long) As Long

      '调用通用软盘格式化对话框

      Private Sub cmdFormat(ByVal mystyle As Integer)

      Dim rtn As String

      Dim Buffer As String

      Dim WinPath As String

      Buffer = String$(255, 0)

      rtn = GetWindowsDirectory(Buffer, Len(Buffer))

      WinPath = Left(Trim(Buffer), rtn)

      rtn = Shell(WinPath + "undll32.exe shell32.dll,SHFormatDrive", mystyle)

      End Sub

      '调用例程

      Private Sub Command2_Click()

      Call cmdFormat(1)

      End Sub

      请注意:上面调用例程中有一个参数,这里是1。根据你的要求不同,可以设置不同数值从而得到初始页面不同的格式化对话框。以下做一个对照:

      参数为1的情况:Call cmdFormat(1)


      参数为2的情况:Call cmdFormat(2)


      参数为4的情况:Call cmdFormat(4)


    快速调用“网络资源映射对话框”
      在局域网上,我们经常将服务器上的一个共享目录映射为本地一个盘符,从而能否方便快速地访问网络资源。在VB中,可以用很少的代码就调出映射对话框,请看下面的代码:

      '声明API函数

      Private Declare Function WNetConnectionDialog Lib "mpr.dll" _

      (ByVal hWnd As Long, ByVal dwType As Long) As Long

      '网络资源映射对话框

      Private Sub ShowMapDrives(hWnd As Long)

       WNetConnectionDialog hWnd, 1

      End Sub

      '调用例程

      Private Sub Command2_Click()

       Call ShowMapDrives(Me.hWnd)

      End Sub

      运行程序,下面就是最终的结果:


      我们注意到,在上面的代码中,如果将“WNetConnectionDialog hWnd, 1”一行中的1修改为2,执行后将出现打印端口映射对话框:


      没有想到吧!竟然能如此方便的获取网络资源!

    总结
      以上列举了几个调用系统对话框的例子,大家可以看到,全部都使用到了windows的API函数。的确,要善于发现并应用API海洋中的浪花,有了她们,我们的程序开发就不会枯燥,新奇的感觉将不断地涌现!



    <script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
    <script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
    展开全文
  • VB==快速调用系统对话框(全) (转)[@more@](作者:甘冀平 2000年12月21日 17:46) windows系统给我们提供了许多非常实用的功能,而且都是以对话框的形式展现在用户眼前,比如:查找文件、浏览选择后执...
  • 使用VB6创建COM加载宏

    千次阅读 2011-07-17 22:00:15
    使用VB6创建COM加载宏 摘要:本文通过示例详细描述了如何使用VB6创建COM加载宏的过程,以及如何在Excel中加载和使用。 创建一个COM加载宏的步骤 1、打开VB6应用程序,在“新建工程”中选择“外接程序”,打开新...
  • 查找替代字符串的函数 ★ VB 换行气泡提示类 ★ VB/VBA 通用路径选择对话框 ★ ASCII 码表 0-255 完整版 附详细注释 ★ VB 的 KeyAscii ★ VB 取得 TextBox 、 RichTextBox 光标所在的行和列...
  • VB6创建纯资源DLL(图片教程)

    千次阅读 2011-06-08 10:41:00
    虽然vb可以把资源存在*.RES的资源文件里,一起编译成exe。但如果要换肤、多语言支持,显然DLL更方便 如何把图片、图标、自定义资源存放在DLL里面?下面我Step by Step教大家。 VB只能创建Activex DLL,所以用VC++...
  • 常用数学函数、导出的数学函数、类型转换函数、对象函数、对话框函数、数组函数、 路径函数、 文件函数、 颜色函数、 财政函数、判断函数、 系统函数、 格式化函数、 字符串函数、 时间日期函数、程序函数、图形函数...
  • 使用VB6创建COM加载宏2006-12-26 14:10

    千次阅读 2009-01-15 16:56:00
    摘要:本文通过示例详细描述了如何使用VB6创建COM加载宏的过程,以及如何在Excel中加载和使用。创建一个COM加载宏的步骤1、打开VB6应用程序,在“新建工程”中选择“外接程序”,打开新工程。2、在右侧工程资源管理...
  • 对话框概述[MSDN]

    2013-12-04 10:17:34
    对话框概述 .NET Framework 4.5  其他版本  .NET Framework 4.NET Framework 3.5.NET Framework 3.0  1(共 1)对本文的评价是有帮助 - 评价此主题 独立应用程序通常有...
  • 数据源管理器”对话框,完成数据源创建操作   设计记录浏览窗体  注:最底下的那个文本框的locked的属性设置为true   建立ADO引用 工程->引用 选择Microsoft ActiveX Data Objects 2.5 ...
  • VB基础

    万次阅读 多人点赞 2008-03-06 09:52:00
    VB入门1.1 知识要点1.VB的特点、安装和启动了解VB面向对象、可视化、事件驱动的特点。2.VB集成开发环境初学...创建VB应用程序的过程5.掌握窗体、标签、文本框、命令按钮控件的常用属性、方法和事件的使用6.VB应用
  • 快速调用系统对话框(全)

    千次阅读 2006-11-17 10:14:00
    (作者:甘冀平 2000年12月21日 17:46) Windows系统给我们提供了许多非常实用的功能,而且都是以对话框的形式展现在用户眼前,比如:查找文件、浏览选择后执行程序,等等 ... 如果我们能在程序中以简练的代码快速...
  • vb6.0程序设计》教学进度表华侨大学 20 --- 20 学年 第 学期 VB 6.0程序设计 课程教学进度表主讲教师:范慧琳 班级: 学生数 学分 3 总学时 54+18 周学时 4周次教学内容,作业布置及考试安排周次教学内容...创建V...
  • vb源码

    千次阅读 2012-03-22 23:10:01
    VB源码:HOOK 万能网游密码截取技术之(诛仙)  ... ...VB源码:IP地址输入框控件  下载地址:http://www.2e3.org/down.asp?url=lelecode_2 VB源码:生成MD5码  下载地址:http://www.2e3.
  • VB程序破解

    千次阅读 2016-04-02 16:03:34
    VB程序的破解思路总结、编译方式vs破解工具 比较 把一个简单的VB计时器程序研究透了,对于VB破解应有较大帮助,如有错误欢迎指出。 VB程序也是一个非常有趣的东西,你去看VB的主程序,是用Microsoft Visual ...
  • vb/vb.net开发精粹(21)

    2011-11-29 08:49:12
    vb用copymemory 读取内存数据问题 vb中 Len(Str(15))应该等于多少? 请问该语句是什么意思??? 求一断开外网连接的思路 谁有VB调用 7-ZIP 动态连接库实现解压缩的代码? 发个试题测试系统(适合新手,纯自制...
  • vb6 轉 vb.net

    千次阅读 2009-10-20 14:17:00
    从 Visual Basic 6.0 到 Visual Basic.NET 的转换(1) ... 的后续版本,它是基于 .NET 框架重新设计的,您可以用它来轻松地创建用于 Microsoft Windows? 操作系统和 Web 的下一代应用程序。使用 Visual Basic.NE
  • 用汇编写基于对话框的程序,可以和写VB程序一样清晰简单,并且相当多的程序都是这样的结构。用VB写的所以程序几乎都是这样的。 设计程序界面 和在VC中一样,界面(对话框已经各种控件)一般是以资源的方式存在的。编辑...
  • 为防止在非简体中文的VBIDE中出现乱码,将设计器中的插件名称和介绍改为英文. 为发布向导脚本增加了自动压缩和自动上传的功能. 增加了新功能需要用到的dll文件 4.22.0.142 增加对繁体中文的支持. 4.21.0.141 修改:单...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,755
精华内容 2,302
关键字:

vb创建查找对话框