vb6程序中的一个过程的调用问题!

PrivateSubcmdOpen_Click()'打开文件dialog.DialogTitle="打开一个声音文件"'标题为打开dialog.Filter="mp3fi... Private Sub cmdOpen_Click() '打开文件
dialog.DialogTitle = "打开一个声音文件" '标题为打开
dialog.Filter = "mp3file(*.mp3)|*.mp3|wavfile(*.wav)|*.wav|All Files(*.*)|*.*" '确定显示的文件类型
dialog.ShowOpen '对话框被指定为打开类型
dialog.FilterIndex = 1
myTimer.Enabled = True '启动
end sub
Private Sub drawSpec()
Call SetDIBitsToDevice(Pic1.hdc, 0, 0, WIDTH_, HEIGHT_, 0, 0, 0, HEIGHT_, wavebuf(-(WIDTH_ / 2)), bh, 0)
End Sub
Private Sub myTimer_Timer()
Call drawSpec
End Sub
我想不用计时器控件,直接把上述“ myTimer.Enabled = True '启动”句用“ Call drawSpec”替代,按“启动”按钮编译程序时提示“实时错误 9.下标越界”。为什么
Call SetDIBitsToDevice(Pic1.hdc, 0, 0, WIDTH_, HEIGHT_, 0, 0, 0, HEIGHT_, wavebuf(-(WIDTH_ / 2)), bh, 0) 过程的调用必须在计时器事件中才正常,否则就下标越界?这种情况下能否不用计时器控件而让程序编译正常(下标不越界)?
展开
 我来答
ljl88900
2011-07-19 · TA获得超过2661个赞
知道大有可为答主
回答量:2197
采纳率:100%
帮助的人:2640万
展开全部
一、由于你提供的代码不完整,以致不明白数组wavebuf()及变量WIDTH_、HEIGHT_、bh是怎么来的,所以出现编译程序时提示“实时错误 9.下标越界”现象也不好判断。
二、给你提供一个调试方法:
当你把上述“ myTimer.Enabled = True '启动”句用“ Call drawSpec”替代后,在此处按F9设置断点,然后按F5运行,当程序运行到断点处停下来时,看看数组wavebuf()及变量WIDTH_、HEIGHT_、bh是否已经获取完毕,如果没有,则应完善代码,使程序正确运行。
刀成朝1
2011-07-19 · TA获得超过1334个赞
知道大有可为答主
回答量:763
采纳率:0%
帮助的人:700万
展开全部
WIDTH_是在哪里赋值的?出错时,你看看他的值是多少。用Timer时,他又是多少(用debug.print)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
织梦猫
2011-07-19 · TA获得超过441个赞
知道小有建树答主
回答量:375
采纳率:0%
帮助的人:234万
展开全部
可能是打开的音频文件太大了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式