【漆天编程】Powerbasic语言读写ini配置文件的例子

我们编写程序的时候,经常会要求快速读取数据和写入数据,下面这个例子演示了使用winApi操作ini配置文件的过程。

主要用到了两个函数:

Getprivateprofilestring     获取数据字符串,函数用法请看例子。

WritePrivateProfileString     写入数据节点字符串,函数用法请看例子。

请看完整的例子,首选说明下,这个例子程序运行后就是显示一个窗口,显示窗口之前,从ini文件获取数据,然后按照读取的数据显示确定的位置,大小的窗口。关闭程序的时候,将窗口位置,大小数据保存到配置文件。

'可用的程序例子:
#Compiler PBWin 10
#Compile Exe
#Dim All
%Unicode = 1
#Include "Win32API.inc"

Global hDlg,Zoomed As Dword

Function PBMain() As Long
   '创建窗口
   Dialog New Pixels, 0, "PowerBASIC",300,300,200,200, %WS_OverlappedWindow To hDlg
   '显示模态窗口
   Dialog Show Modal hDlg Call DlgProc
End Function

CallBack Function DlgProc() As Long
   Select Case Cb.Msg
      Case %WM_InitDialog
        '程序初始化事件中,从ini配置文件中获取窗口大小和位置数据
         Settings_INI "get"
         If Zoomed = %SW_ShowMaximized Then Dialog Maximize hDlg
         If Zoomed = %SW_ShowMinimized Then Dialog Minimize hDlg
      Case %WM_Destroy
         '程序窗口毁灭事件中,将窗口大小和位置数据保存到ini配置文件中。
         Settings_INI "save"
   End Select
End Function


Sub Settings_INI(Task$)
   Local WinPla As WindowPlacement, xResult, yResult, temp, INIFileName As WStringZ*%Max_Path
   INIFileName = Exe.Path$ + Exe.Name$ + ".ini"
   If Task$ = "get" Then
      '获取left和top数据之后,设置窗口左边和上面距离
      Getprivateprofilestring "All", "Left", "300", xResult, %Max_Path, INIFileName
      Getprivateprofilestring "All", "Top", "300", yResult, %Max_Path, INIFileName
      Dialog Set Loc hDlg, Val(xResult), Val(yResult)   'left/top
      '获取width和height数据,设置窗口的宽度和高度
      GetPrivateProfileString "All", "Width", "400", xResult, %Max_Path, INIFileName
      GetPrivateProfileString "All", "Height", "200", yResult, %Max_Path, INIFileName
      Dialog Set Size hDlg,Val(xResult), Val(yResult)   'width/height
      Getprivateprofilestring "All", "Zoomed", Str$(%SW_ShowNormal), temp, %Max_Path, INIFileName: Zoomed = Val(temp)
   End If

   If Task$ = "save" Then
      '保存窗口的位置和快读高度数据,还有是否最小化状态数据
      WinPla.Length = SizeOf(WinPla)
      GetWindowPlacement hDlg, WinPla
      WritePrivateProfileString "All", "Left", Str$(WinPla.rcNormalPosition.nLeft), INIFileName
      WritePrivateProfileString "All", "Top", Str$(WinPla.rcNormalPosition.nTop), INIFileName
      WritePrivateProfileString "All", "Width", Str$(WinPla.rcNormalPosition.nRight - WinPla.rcNormalPosition.nLeft), INIFileName
      WritePrivateProfileString "All", "Height", Str$(WinPla.rcNormalPosition.nBottom - WinPla.rcNormalPosition.nTop), INIFileName
      WritePrivateProfileString "All", "Zoomed",Str$(WinPla.showCmd), INIFileName
   End If
End Sub 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漆学军

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值