请教下:像电视屏幕下方不停的滚动字幕效果,要求给定一个文本(INI),然后读取里面内容,在窗体最下方不停的滚动,从文本的第一个到最后一个字读完后,又从第一个字开始滚动。

解决方案 »

  1.   


    '这是一个示例 请增加一个Label1的标签。一个Timer1的时间控件Option Explicit
    Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal pFileName As String) As Long'*************************************
       '目的:从Ini文件中读取数据
       
       '输入: FileName 文件名
       '      AppName  项目名
       '      In_Key   键名
       
       '返回: 取得给定键名上的数据
       
    '*************************************Public Function GetIniStr(ByVal FileName As String, ByVal AppName As String, ByVal in_Key As String) As String
    On Error GoTo GetIniStrErr
    If VBA.Trim(in_Key) = "" Then
       GoTo GetIniStrErr
    End If
    Dim GetStr As String
      GetStr = VBA.String(128, 0)
      GetPrivateProfileString AppName, in_Key, "", GetStr, 256, FileName
      GetStr = VBA.Replace(GetStr, VBA.Chr(0), "")
    If GetStr = "" Then
       GoTo GetIniStrErr
    Else
       GetIniStr = GetStr
       GetStr = ""
    End If
    Exit Function
    GetIniStrErr:
       Err.Clear
       GetIniStr = ""
       GetStr = ""
    End FunctionPrivate Sub Form_Load()
      '设定有一个ini文件。
      '文件名为 C:\Data.ini
      '里面的内容为
      '[Key]
      'Data=这里是示例文本
      
      
      Dim FileName As String
      Dim AppName As String
      Dim in_Key As String
      
      
      FileName = "C:\Data.ini"
      AppName = "Key"
      in_Key = "Data"
      Label1.Caption = GetIniStr(FileName, AppName, in_Key)
      Label1.AutoSize = TrueEnd SubPrivate Sub Form_Resize()
      Label1.Top = 0  '此处设置在上方.你可以通过它的值来设置位置
      Label1.Left = Me.Width
      Timer1.Enabled = True
      Timer1.Interval = 200
    End SubPrivate Sub Timer1_Timer()
       Label1.Left = Label1.Left - 100
       
       If Label1.Left < -Label1.Width Then
         Label1.Left = Me.Width
       End If
    End Sub
      

  2.   

    感谢你的帮助,但是DATA里面的文字还是没能全部显示出来
      

  3.   

    给你一个简单的加两个label、1个timer
    命名oLblBack、oLblDisplay、oTimMove
    设oLblDisplay的backstyle 0,boderstyle 0,
      oTimMove的interval 200Private Sub Form_Load()    Me.Hide
        Me.Top = 400
        Me.Left = Screen.Width / 3 * 2
        Me.Show
       
    End SubPrivate Sub oTimMove_Timer()    If oLblDisplay.Left + oLblDisplay.Width < 0 Then
            oLblDisplay.Left = oLblBack.Width
        Else
            oLblDisplay.Left = oLblDisplay.Left - 20
        End If
        
    End Sub
      

  4.   

    我有个源代码 可以达到想MTV那样 扣字效果 而且可以叠加到视频上
      

  5.   

    参考一楼代码,没能全部显示DATA,说明DATA数据比较长,你将label1的尺寸属性设置自动
      

  6.   

    1楼的大虾给你的代码完全正确,我测试过了.我估计可能是你的ini文件方式错了.按1楼的方式去做首先在C盘建一个data.ini的文件,里面的内容为:
    [Key]
    data = adkfjgfjgjgjdfjd
    这样做就完全显示出来了.