中华网通行证
用户名 密码
  科技动态 硬件广场 下载基地 网络教室 网络冲浪 科学博览 移动时代 手机上网 桌面壁纸 科技商情  

利用API函数访问INI文件
冷山述 2000-11-07 15:50:39

  一个完善的Windows应用程序都有其自己的INI初始化文件,专门用于存储系统的配置信息或状态信息。因此,许多编程者都希望在自己的应用程序中引入INI文件。

  下面笔者通过示例说明,在VFP中如何在自己的应用程序中访问INI文件。

  INI文件格式和相关API函数

  首先介绍一下INI初始化文件的通用格式,在Windows中,初始化文件通用格式如下:

  [application name]

  Keyname=String

  …

  在WIN32的API函数集中,专用于访问INI初始化文件的接口函数有许多,笔者将详细介绍GetPrivateProfileString和WritePrivateProfileString两个函数:

  DWORD GetPrivateProfileString(LPTSTR lpAppName,LPTSTR lpKeyName,

  LPTSTR lpDefault,LPTSTR lpReturnedString,

  DWORD dwSize,LPTSTR lpFileName)

  该函数在指定的初始化文件(lpFileName)中查找一个关键字,该关键字与在lpAppName参数给出的应用程序标题下有lpKeyName参数指定的名称匹配。如果找到关键字,相应的字符串被拷贝到缓冲区中,如果关键字不存在,则将lpDefault参数指定的缺省字符串拷贝到缓冲区中。

  BOOL WritePrivateProfileString(LPTSTR lpAppName,LPTSTR lpKeyName,

  LPTSTR lpString,LPTSTR lpFileName)

  该函数在指定的初始化文件(lpFileName)中查找参数lpAppName指定的应用程序标题,并在此标题下查找参数lpKeyName指定的键名,用lpString的值指定该键值;如果初始化文件中没有该标题或键,则函数将自动加入相应内容。

  VFP中API函数的应用

  首先需要对应用的API函数进行引用声明,通常放在程序的主文件中,声明如下:

  DECLARE INTEGER GetPrivateProfileString IN Win32API AS GetPrivStr ;

  String cSection, String cKey, String cDefault, String @cBuffer, ;

  Integer nBufferSize, String cINIFile

  DECLARE INTEGER WritePrivateProfileString IN Win32API AS WritePrivStr ;

  String cSection, String cKey, String cValue, String cINIFile

  引用声明之后,函数就可以以自定义的名称应用了:

  WritePrivStr("Defaults", "Test","This is a test", CURDIR() + "TEST.INI")

  LOCAL lcBuffer, ;

  GetPrivStr("Defaults","Test", "", @lcBuffer, LEN(lcBuffer), CURDIR()+"Test.INI")

  INI在VFP中的应用实例

  下面是在对工具栏进行关闭操作时,用以记忆工具栏的停放位置,以用于下次打开工具栏时停放:

  cToolbar.Destroy

  LOCAL lcValue

  IF this.Docked

  lcValue = ALLT(STR(this.DockPosition))

  ELSE

  lcValue = ALLT(STR(thisform.Top)) + ‘,‘ + ;

  ALLT(STR(thisform.Left))

  ENDIF

  WritePrivStr("WindowPositions", this.Caption, ;lcValue, CURDIR() + "TEST.INI")

  以下代码是当打开工具栏时,自动读取上次关闭时的停放位置,并把工具栏停放到该位置上:

  cToolbar.Init

  IF GetPrivStr("WindowPositions", this.Caption, "", ;

  @lcBuffer, LEN(lcBuffer), ;

  CURDIR() +"TEST.INI") 〉 0

  lnCommaPos = AT(",", lcBuffer)

  IF lnCommaPos 〉 0

  lnTop = VAL(LEFT(lcBuffer, lnCommaPos - 1))

  lnLeft = VAL(SUBSTR(lcBuffer,lnCommaPos + 1))

     ELSE

       lnDockPosition = VAL(lcBuffer)

     ENDIF

       this.Top = lnTop

       this.Left = lnLeft

       this.Dock(lnDockPosition)

    ENDIF

  通过以上程序,我们就成功实现了在VFP应用程序中引入INI文件。

赛迪网
相关报道
VFP6.0中ActiveX控件TreeView 使用实例 (2000-10-25 10:17:52)




本站检索



中华网推荐

·国家级治脑病新药思维源
·中藏药治疗脑病新突破
·治类风湿,强直性脊柱炎
·养肾·痛风·长寿
·肝病泌尿脑萎缩新药介绍
·强直性脊柱炎康复乐园
·让中医辩证不孕不育
·国医治股骨头坏死一绝
·乙肝为何久治不愈?
·二千元垄断批发做老板
·中医中药专治前列腺
·治牛皮癣白癜风已成现实
·专治痛风病的白衣天使
·不孕不育的杏林奇葩
·专卖店零售管理系统





   

网络教室编辑信箱