国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

利用INI文件給程序創(chuàng)建動態(tài)菜單

2019-11-18 17:28:39
字體:
供稿:網(wǎng)友
Word那樣,在“文件”菜單中可以找到我們最近打開或編輯過的文件。這是程序在運(yùn)行時創(chuàng)建了動態(tài)菜單的緣故。VB程序?qū)崿F(xiàn)此功能有很多文章探討過,但大都著眼于Windows的注冊表。我們的注冊表早已發(fā)福了,有沒有辦法不讓她再增加負(fù)擔(dān)?
用INI文件!INI文件是系統(tǒng)、應(yīng)用程序的配置文件。它可以使得我們的VB程序更具靈活性,充分地利用它自然也能夠?qū)崿F(xiàn)動態(tài)菜單的創(chuàng)建。下面給個例子。

首先,我們得給程序添加一個模塊,在模塊中申明讀寫INI用的兩個WindowsAPI函數(shù),并在其中封裝自定義的讀取、寫入INI的函數(shù):

OptionExplicit

'讀寫INI的API函數(shù)
PublicDeclareFunctionWriteapplicationNameAsString,ByVallpKeyNameAsAny,ByVallpStringAsAny,ByVallpFileNameAsString)AsLong
PublicDeclareFunctionGetPrivateProfileStringLib"kernel32"Alias"GetPrivateProfileStringA"(ByVallpApplicationNameAsString,ByVallpKeyNameAsAny,
ByVallpDefaultAsString,ByVallpReturnedStringAsString,ByValnSizeAsLong,ByVallpFileNameAsString)AsLong

'自定義寫入INI函數(shù)
PublicFunctionWriteIni(ByValsectionAsString,ByValkeyAsString,ByValvalueAsString)AsBoolean
DimxAsLong,BuffAsString*128,IAsInteger
Buff=value Chr(0)
x=WritePrivateProfileString(section,key,Buff,App.Path "/MenuSetting.ini")
WriteIni=x
EndFunction

'自定義讀取INI函數(shù)
PublicFunctionReadIni(ByValsectionAsString,ByValkeyAsString)AsString
DimxAsLong,BuffAsString*128,IAsInteger
x=GetPrivateProfileString(section,key,"",Buff,128,App.Path "/MenuSetting.ini")
I=InStr(Buff,Chr(0))
ReadIni=Trim(Left(Buff,I-1))
EndFunction

接著,回到主窗體,給主窗體添加若干控件、編輯菜單(控件和菜單名稱詳見代碼),其中,“文件”菜單的動態(tài)菜單要用數(shù)組,其Index號可以從1開始,注意將這些動態(tài)菜單設(shè)為不可見。本例可保存最近打開的三個文件,如需要多一些可自行添加。以下是主窗體代碼:

OptionExplicit
'聲明用于判斷寫入INI中的FileName(n)中的n變量
DimIAsString'為了能添在FileName串的后面,聲明為String

PrivateSubForm_Load()
I=0'初值
Text1.Left=0
Text1.Top=0
Text1=""
Text1.FontSize=12
Me.Caption="txtEditor"
Me.Width=8000
Me.Height=6000
AddMenu'添加動態(tài)菜單
EndSub

PrivateSubForm_Resize()'這個沒什么可說,為了使例程完整而已
Text1.Width=Me.ScaleWidth
Text1.Height=Me.ScaleHeight
EndSub

PrivateSubmnuExit_Click()
End'退出
EndSub

'打開文件
PrivateSubmnuOpen_Click()
DimsFAsString
CommonDialog1.Filter="文檔文件(*.txt)|*.txt|所有文件(*.*)|*.*"
CommonDialog1.ShowOpen
OpenCommonDialog1.FileNameForInputAs#1
Text1.Text=StrConv(InputB$(LOF(1),1),vbUnicode)
Close#1
IfI>=3ThenI=0'如大于等于3則返回原值
I=I 1
sF="FileName" I
'打開后寫進(jìn)INI文件
CommonDialog1.FileName=WriteIni("Open",sF,CommonDialog1.FileName)
AddMenu'立即添加使動態(tài)菜單生效
EndSub

'添加菜單
PrivateSubAddMenu()
DimfN1AsString,fN2AsString,fN3AsString
'從INI文件中讀取數(shù)據(jù)
fN1=ReadIni("Open","FileName1")
fN2=ReadIni("Open","FilEName2")
fN3=ReadIni("Open","FileName3")
'如數(shù)據(jù)存在則令動態(tài)菜單可見并給其Caption屬性賦值
IffN3<>""ThenmnuSep02.Visible=True:mnuAdd(1).Visible=True:mnuAdd(1).Caption=fN1
IffN2<>""ThenmnuSep02.Visible=True:mnuAdd(2).Visible=True:mnuAdd(2).Caption=fN2
IffN1<>""ThenmnuSep02.Visible=True:mnuAdd(3).Visible=True:mnuAdd(3).Caption=fN3
EndSub

本例子演示了利用INI文件實現(xiàn)動態(tài)菜單的創(chuàng)建,若需要移植到你的程序中,應(yīng)作相應(yīng)的改動,使其更具合理性和實用性。有什么看法歡迎大家與我交流!->


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 临海市| 小金县| 铜鼓县| 湾仔区| 宜昌市| 巴青县| 梁平县| 金门县| 麻江县| 库伦旗| 浏阳市| 临桂县| 天柱县| 城口县| 新蔡县| 平果县| 德保县| 临沭县| 枞阳县| 珲春市| 广元市| 梅河口市| 宁夏| 西华县| 泽库县| 龙游县| 眉山市| 翼城县| 容城县| 亚东县| 尼勒克县| 广水市| 梧州市| 齐河县| 法库县| 二手房| 滕州市| 弥渡县| 阿拉善左旗| 浠水县| 武胜县|