050205.htm

来自「提供一个VB学习教程,入门级。来源于网上」· HTM 代码 · 共 140 行

HTM
140
字号
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>vb study</title>
<style>
<!--
td {font-size: 9pt}
A:link {text-decoration: none; color: #0033cc;font-size: 9pt}
A:visited {text-decoration: none; color: #0066CC;font-size: 9pt}
A:active {text-decoration: none; color: #ff0000; font-size: 9pt}
A:hover {text-decoration: underline; color: #000000;font-size: 9pt}
-->
</style>
</head>
<body>
<div align="center">
  <center>
  <table border="0" cellpadding="0" cellspacing="0" width="98%">
    <tr>
      <td width="100%"><a href="#">你的位置</a>:<a href="http://www.xxby.com" target="_blank">华生小屋</a>--<a href="#">VB学习</a>--<a href="#">代码</a></td>
    </tr>
    <tr>
      <td width="100%">
        <p align="center">代码</td>
    </tr>
    <tr>
      <td width="100%"><br>
 在VB中使用Windows的注册表:先介绍一下注册表,注册表有什么用?主要用来在程序初始化时保存某些以前由用户进行的设置。在windows文件夹下有一个Regedit.exe注册表编辑器,先打开它,左边一栏列出的多级&quot;文件夹&quot;样子的叫主键,每一个&quot;文件夹&quot;就是一个主键。右边一栏列出主键中包含的多个键,每个键包含&quot;键名称&quot;与&quot;键数据&quot;两部分:每个键都有&quot;名称&quot;,键&quot;数据&quot;中存储的就是我们需要存入的内容。这样理解:&quot;主键&quot;就相当于文件夹,&quot;键名称&quot;就相当此文件夹下某文件名,&quot;键数据&quot;就相当此文件内容。<br>
 1,向注册表写入一行文字:SaveSetting语句,其格式简单讲就是带4个字符串,而且这四个字符串确实可以是任意的,但是:注册表不是垃圾桶,而是有着很重要作用的程序管理功能,禁止乱写。<br>
 SaveSetting 字符串1,字符串2,字符串3,字符串4<br>
 SaveSetting &quot;lxn56&quot;,&quot;startup&quot;,&quot;文件&quot;,&quot;这句话写到注册表里&quot;<br>
 前二个字符串表示在注册表中要创建的&quot;主键&quot;以存放文字,第3个字符串表示&quot;键名称&quot;,第4个字符串表示&quot;键数据&quot;,也就是需要存入注册表的文字内容。而正规的格式是:<br>
 SaveSetting 程序名(主键),区域名(下级主键),注册表项的名称,注册表项 <br>
 SaveSetting &quot;lxn56&quot;,&quot;startup&quot;,&quot;recentfile&quot;,&quot;c:\windows\RegEdit.exe&quot; <br>
 运用多个savesetting语句,贯以不同的&quot;注册表项的名称&quot;和&quot;注册表项&quot;,则可在同一主键下创建多个键。<br>
 2,读取注册表中的数据内容,一,GetSetting函数,读取1个键值,格式:<br>
 变量=GetSetting(程序名,区域名,注册表项名)<br>
 lxn=GetSetting(&quot;lxn56&quot;,&quot;startup&quot;,&quot;recentfile&quot;)<br>
 变量就等于先前写入的&quot;名称&quot;为recentfile的注册表项。 <br>
 二,GetAllSettings函数,读取1个主键内所有键值,注意:它返回一个包含各键&quot;名称&quot;和&quot;数据&quot;的二维数组,格式:<br>
 数组名=GetAllSettings(程序名,区域名)<br>
 如先Dim lxn(20,1) as string<br>
 lxn=GetAllSettings(App.title,&quot;startup&quot;)<br>
 那么,lxn(n,0)将表示一个键名称,lxn(n,1)将表示一个键数据。 <br>
 如下例:<br>
 varFiles = GetAllSettings(App.Title, reckey) reckey是变量,不是字符串<br>
 For i = 0 To UBound(varFiles, 1)<br>
 mnulist(i).Caption = varFiles(i, 1)<br>
 mnulist(i).Visible = True<br>
 Next i<br>
 3,删除注册表中1个主键或主键中1个注册表项:DeleteSetting语句,格式:<br>
 DeleteSetting 程序名,区域名,注册表项名称<br>
 如果参数中省略&quot;注册表项名称&quot;,则将删除整个&quot;区域名&quot;下级主键。<br>
 当对一个对象进行多项属性设置时,可用简略格式With…End With…格式,如:<br>
 with command1<br>
 .caption=&quot;退出&quot;<br>
 .style=1<br>
 .picture=loadpicture(&quot;e:\dmt\ico\face3.ico&quot;) <br>
 end with<br>
 照样即可。<br>
 当我们用Dim 对象变量 as object: set 对象变量=(textbox等等)来引用对象时,在引用完后,应将对象卸载,可用Unload语句或--Set 对象变量=Nothing<br>
 类模块:类模块的初始事件只有两个:initialize事件:加载模块时的初始化代码;Terminate事件:卸载模块时的代码。 <br>
 一,向类中添加属性:一种方法是定义public变量(在类模快中通用或任何sub过程中都可以),第二种方法是使用Property属性过程.我们在一个程序中,使用对象属性,无非是设置属性值(如label1.caption=&quot;李新宁&quot;)或引用属性值(如lxn=text1.text),设置属性值时,我们让它调用prorerty let过程,设置的属性值用参数传递,如:<br>
 在程序中:<br>
 Dim lxn as new class1<br>
 Private Sub Form_Load()<br>
 lxn.volume=500 500传递到vNewValue参数中。<br>
 End Sub<br>
 在类模块中:<br>
 private vol as string 类模块自身的变量<br>
 Public Property Let volume(ByVal vNewValue As String) 在程序中设置的属性值 vol= vNewValue 通过vNewValue参数传过来 <br>
 End Property<br>
 而引用属性值时,我们让它调用Property Get过程,如:<br>
 在程序中:<br>
 if lxn.volume&gt;=500 then unload me<br>
 在类模块中:<br>
 Public Property Get volume() As String<br>
 volume = vol vol是类模块中用来传递属性值的局部变量<br>
 End Property <br>
 总之,property属性过程包括:1,向调用的程序返回属性值:Property Get过程;2,向调用的程序设置属性值:Property Let过程;3,Property Set过程。当属性的值为一个对象时,取代Let过程,设置对象变量的属性值。用属性过程设置类的属性是一个比较全面的方法(如需要设置只读属性等)。<br>
 另外,也可以给一般的窗体Form增加自定义的属性,只要在窗体模块代码区域用public结合Property Let和Property Get就行了,注意要用public来声明属性过程。如:<br>
 Dim a As Long 内部变量<br>
 Public Property Let lxn(ByVal vNewValue As Long) 设置属性值的属性过程<br>
 a = vNewValue<br>
 End Property<br>
 Public Property Get lxn() As Long 引用属性值时的属性过程 <br>
 lxn = a<br>
 End Property
 <p>Private Sub Command1_Click() 设置属性值<br>
   Form1.lxn = 500<br>
   End Sub<br>
   Private Sub Command2_Click()<br>
   Print Form1.lxn 引用属性值<br>
   End Sub<br>
   二,向类中添加方法:方法是类的主体,我们通过sub过程或function过程,并用参数的传递(程序中表现为方法的参数),返回值,属性的改变等来达到各种各样的目的<br>
   三,向类中添加事件:用RaiseEvent语句, <br>
   集合:建立集合:Dim 集合名 as new collection<br>
   集合的通用属性方法:add方法,向集合中添加一项;<br>
   append方法,向集合中附加一项;<br>
   refresh方法:刷新集合中的数据;<br>
   remove方法:从集合中删除一项;<br>
   count属性:返回集合中元素的项数;<br>
   item属性:在集合中标识某一个项,可省略;<br>
   parent属性:返回代表集合父对象的对象。<br>
   有时候,DLL过程的一个参数可能接受不确定数据类型,如果需要传递多种类型的数据,可将参数声明为as Any.这时,前面的ByVal也不要了,如uFlug as Any.<br>
   一个程序的界面窗体在每次开始运行时总是一样的,如果想让窗体样式保持用户作的修改,在下次启动时能按用户的调整显示,就需要将窗体的left,top和windowstate等属性值另写入到一个ini文件里面。可用open语句另创建一个ini文件。<br>
   编写DLL文件:在新建工程时选ActiveX DLL,其写法就和普通类模块写法一模一样(连缺省名class1都一样),自编属性与方法甚至事件,编写完后,在&quot;文件&quot;菜单中选&quot;生成某某名.dll&quot;进行编译即可。怎样使用编好的DLL文件呢?要在&quot;工程&quot;菜单&quot;引用&quot;中找到那个&quot;某某名&quot;(在保存DLL工程时自定的名字)选中复选框,然后就象创建word,excel等对象库引用那样创建对象变量,进行属性方法引用。(--怎么创建的&quot;DLL&quot;说来说去还是对象?不能象人家的system文件夹下的那样?我不明白。)<br>
   举一个最简单的例子吧,说明一下:在新建工程中选ActiveX DLL-&gt;打开属性窗口,将模块class1更名为lxndll,再看看它的instancing属性是否为5(允许同时创建此&quot;类&quot;的多个实例)-&gt;写以下代码(求两个数中的大数)<br>
   Public one As ingeger, two As Integer one和two是&quot;lxndll&quot;类的两个属性<br>
   Public Function max(ByVal one As Integer, ByVal two As Integer) As Integer<br>
   If one &gt; two Then 类lxndll的max方法<br>
   max = one<br>
   Else<br>
   max = two<br>
   End If<br>
   End Function<br>
   -&gt;编译成DLL文件-&gt;另创建一个标准EXE工程-&gt;&quot;工程&quot;菜单&quot;引用&quot;中找到&quot;工程1&quot;,选中复选框(如果有名称冲突,在&quot;工程1属性&quot;中将现工程改名)-&gt;在代码中写:<br>
   Dim lxn As New lxndll<br>
   Private Sub Command1_Click()<br>
   x = 50<br>
   y = 41<br>
   z = lxn.Max(x, y)<br>
   Print z<br>
   End Sub<br>
   就进行了&quot;DLL&quot;的引用。<br>
   [问题:我听说在&quot;工程&quot;菜单中的&quot;引用&quot;都是在注册表中对项进行注册了,就会在&quot;引用&quot;的表中出现,我在注册表编辑器中进行&quot;查找&quot;,却发现是在HKEY_CLASSES_ROOT中CLSID中某&quot;两&quot;个好长好长名称的主键里,象这样:{80405424-73E2-11D5-BA9A-E53E2E553305}真象天文数字一样,在CLSID下有两个键同时保存了同一个&quot;引用&quot;项的信息,而在CLASSES-ROOT下也有一个很好找的主键存储了这个&quot;引用&quot;项的信息,也就是:一个新添的&quot;引用&quot;项共在注册表中三处进行了写入。<br>
   但是,这里面的规律是什么?}</p>
 <p align="center">
        <br>
        &lt; <a href="050204.htm">上一页</a>--<a href="http://www.xxby.com" target="_blank">华生小屋</a>--<a href="050206.htm">下一页</a>     
        &gt;<br>
      </td>
    </tr>
  </table>
  </center>
</div>
</body>
</html>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?