我们经常见到一些软件,如office系列,visual家族等等,他们的打开菜单里常常记载了上次所进行的任务,这样就方便了我们的操作,实际我们也能用vb实现这一功能,现在以常见的含有最多五个添加值为例给大家演示这一功能,并且此程序不需要具api 函数调用,直接使用vb自身携带的函数即可,主要使用getsetting,savesetting和 deletesetting函数,具体步骤如下: ---- 1.打开vb,选择标准窗口,在工具菜单里选择编辑菜单器,各项设置如下: ———————————————————————— caption name index visible indentation ——————————————————————— file mnufile 空 true 0 Open mnuopen 空 true 1 - mnudesh 空 true 1 空 mnufilename 1 false 1 空 mnufilename 2 false 1 空 mnufilename 3 false 1 空 mnufilename 4 false 1 空 mnufilename 5 false 1 abc mnufilename 6 false 1
---- (注:一定要在最后一项的caption设一虚值,这样做的原因是为了后面在菜单项未满时添加文件名做判断,并没有实际意义) ---- 2.在窗体中加载一对话框,对话框的name为commongdialog1 ---- 3.源程序如下: ---- 在通用里声明: Const k1 = "记忆菜单" Const k2 = "文件名" Function addfilename(filename)'添加文件名 DIM I,G AS INTEGER For I = 5 To 1 Step -1'从第五项开始向第一项 If mnufilename(1).Caption < > filename And mnufilename(2).Caption < > filename And mnufilename(3).Caption < > filename And mnufilename(4).Caption < > filename And mnufilename(5).Caption < > filename Then '判断所选的文件是否已存在 If mnufilename(I).Caption = "" And mnufilename(I + 1).Caption < > "" Then '此处初使化菜单,利用了虚设菜单项 SaveSetting k1, k2, I, filename'在注册表里保存 Else If mnufilename(1).Caption < > "" Then '表明菜单已满 DeleteSetting k1, k2, 5 '按先入先出规则,删除最后一项 For G = 4 To 1 Step -1 '一至四项依次后移 n = GetSetting(k1, k2, G)'从注册表里取其值 SaveSetting k1, k2, (G + 1), n'顺延到下一项 Next SaveSetting k1, k2, 1, filename Exit Function End If End If End If Next End Function Function display()'显现各项文件名 DIM I AS INTEGER For I = 5 To 1 Step -1 l = GetSetting(k1, k2, I)
If l < > "" Then mnufilename(I).Visible = True mnufilename(I).Caption = l Else mnufilename(I).Visible = False mnufilename(I).Caption = "" End If Next End Function
Private Sub Form_Load()
Call display
End Sub
Private Sub mnuopen_Click() DIM FILENAME Commondialog1.ShowOpen filename = Commondialog1.filename
Call addfilename(filename)
Call display
End Sub ---- 有兴趣的读者还可以把此程序稍加修改加入你的工程,增添你的工程的实用性。利用getsetting,savesetting和deletesetting函数,还可为你的程序加密等  
|