请hygsxy进来一下好吗?(包括其他热心的dfw。。。)(20分)

  • 主题发起人 主题发起人 Solid_Snake
  • 开始时间 开始时间
S

Solid_Snake

Unregistered / Unconfirmed
GUEST, unregistred user!
当时关于我得发的“关于资源文件内置较大wav的问题“的帖子,您说的:<br>“MCISendString(pchar('play '+ ExtractFilePath(Application.ExeName)+'ir_begin.wav'), nil, 0, handle);//play后面缺少一个空格。“<br>以及“MCISendString('play abc', nil, 0, hinstance);//资源加载怎么能用窗体handle,改用applicatino实例句柄“<br>我试了一下,第一个问题还是不能播放,他返回错误代码263,但是如果是MCISendString(pchar('play ir_begin.wav'), nil, 0, handle);是正常的,这是为什莫?<br>第2个问题,我使用了hInstance,但是还是播放不出。。。。<br>我的帖子结的快了,真是抱歉。。。。。。。。。。。。能帮我看一下吗?<br>帖子原文:http://www.delphibbs.com/delphibbs/dispq.asp?lid=2631867
 
先说第一个问题。<br>MCISendString(pchar('play '+ ExtractFilePath(Application.ExeName)+'ir_begin.wav'), nil, 0, handle);ir_begin.wav波形文件你要放到你的程序目录下,按你上面说的,你的波形文件是放到了系统默认目录下。<br>
 
但是第2个问题,仍然是返回263,我已经引用了{$R xxx.res}了,也使用hInstance参数,仍旧不行。
 
我现在手头没有内含.wav资源的res文件。把它发到hygks@163.com我帮你测试。<br>另:第一个问题解决了吧?我这好的呀。
 
第一个问题解决了,如果将项目文件目录放在桌面上,就会出错,播放不了声音(我跟踪过他的全部路径,没有错),放到磁盘目录上就正常;<br>好的,我发两个(一大一小)的发到你邮箱上。
 
发好了。
 
其实你放那都无所谓啊。只要程序和波形文件在一起就行了,没这么复杂。<br>要不这样吧,我先去上班,回来在给你调吧,在不去,领导要。。。。。。呵呵。。。理解一下。
 
好的,您去啊,没事的。<br>我只是想搞明白,感到奇怪而已。
 
不好意思,我的电脑好象中毒了,你得等等
 
。。。。。。。。。。。。。。。。。。。。。。。。
 
电脑至今还没有修复,我重新安装了WIN2K,WINXP,现在还仍然有问题,不妨你也来看看....<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=2633859
 
&nbsp; 一般窗体的的close对象方法是hide(隐藏),不是关闭.如果是二级窗体的话,你close,它会调用onclose事件,处理完后隐藏.你拦截wm_close消息,那可是对所有窗体的关闭消息进行了拦截,最好不要这样做.如果不让它关闭,在 close事件中action:=canone;就行了.<br>&nbsp; &nbsp; 机器恢复好了,我在把关系好好理顺一下.<br><br>&nbsp;
 
hygsxy:又给你在系统相关的帖子里提了些帮助方法,不知道有没有用。<br><br>如果拦截了WM_CLOSE消息,在里面ShowMessage('bu neng guan bi');于是左上角的关闭按钮不能用来关闭;但是在程序中有一个按钮,内容为Close; 却可以关闭程序,后来我在OnClose事件里面SendMessage(Handle,WM_CLOSE,0,0);仍旧可以关闭程序,请问delphi的OnClose事件难道不是通过WM_CLOSE消息来关闭窗体并析构的?他是通过怎样的流程,绕开传递其他关闭消息?<br>因为只是自己正好碰到了这个情况,所以很想搞清楚,平时也不经常这样拦截来处理关闭消息的。
 
我们这要分情况的:<br>1:主窗体,你点右上角的关闭按钮,你可以用wm_close拦截到。而你采用close 方法为什么可以关闭,原因是form1.close---&gt;application.terminate---&gt;PostQuitMessage---&gt;wm_quit---&gt;处理后关闭。两个产生的消息不一样。你可以拦截wm_quit.<br>2:子窗体的close方法,只是隐藏。点击右上角关闭按钮,你可以拦截wm_close消息而不做处理。<br>总结一下:<br>凡是点击了右上角的关闭按牛,都会产生wm_close消息。而close方法要区别对待,若是主窗体close,那产生 wm_quit消息,关闭窗体,释放资源。若是子窗体,就HIDE隐藏。<br>好了,给你解释完了。关于你的那个声音的事,麻烦你给我发一个wav做到资源文件res的,我不是要wav文件,我要的是你的res文件。<br><br>
 
谢谢你,hygsxy,你说得非常清楚,我明白了。<br>那个资源文件的事情我放弃使用mciSendString了,改用PlaySound了,可以正常调入了,帖子的分不太多,先收着。
 
后退
顶部