用sdk编程的时候, 在一个对话框里面放一个listview,
设置成report模式, 并且添加了几个item
最后,dialogbox出来后, 发现选择其中的item
系统会发出万恶的“叮”的声音, MessageBeep(1)的声音,
但是, 用MFC做的程序, 里面的listview是不会发出这种奇怪的声音的,
包括系统的listview, 比如目录里面文件详细列表, 桌面等,
怎么选都不会有这种古怪的声音,
我现在的解决方法就是吧声音关了, 我被这个声音快折磨死了。google,baidu了N久, 也查了MSDN,跟踪了MFC的代码,
找不到对策, 谁来帮帮我?
设置成report模式, 并且添加了几个item
最后,dialogbox出来后, 发现选择其中的item
系统会发出万恶的“叮”的声音, MessageBeep(1)的声音,
但是, 用MFC做的程序, 里面的listview是不会发出这种奇怪的声音的,
包括系统的listview, 比如目录里面文件详细列表, 桌面等,
怎么选都不会有这种古怪的声音,
我现在的解决方法就是吧声音关了, 我被这个声音快折磨死了。google,baidu了N久, 也查了MSDN,跟踪了MFC的代码,
找不到对策, 谁来帮帮我?
解决方案 »
- 求助:MFC中List Control中怎样添加数据
- win32 sdk版贪吃蛇
- 拖动界面到屏幕外刷新的问题
- 我想做一个在托盘中定时提示的东西,请各路高手顶一下!(在线等哦^_^)
- ADO跟版本有关系吗?
- 【SOS】将*.idl转换成*.tlb的问题,转换之后接口不全!
- 关于ActiveX控件的问题
- 高分相送!救命啦!救命啦!救命啦!救命啦!兄弟们,超市钱箱驱动!
- 简简单单的问题,如何求一个字符的ASCII码?语法我忘了。
- 在ocx中创建管道失败,creatfile返回值为5,访问失败。如何解决?
- syntax error : identifier 'PAPCFUNC'
- 异步socket中,select模型的客户端连接服务器,如何判断是否连接成功?
comctl32.dll!_CCPlaySound@4 这个函数里面, 伪代码描述如下
comctl32.dll file version 5.82(vista_rtm.061101-2205)char buf[280];
DWORD retsize = 280;if (ERROR_SUCCESS == RegQueryValue(HKEY_CURRENT_USER, "AppEvents\Schemes\Apps\.Default\CCSelect\.current", buf, &retsize))
{
LoadLibrary("wimm.dll");
GetProcAddress("waveOutGetNumDevs");
GetProcAddress("PlaySoundW");
call function waveOutGetNumDevs;
call function PlaySoundW(buf, 0, 1);
}当电脑上存在AppEvents\Schemes\Apps\.Default\CCSelect\.current键值的时候,
并且默认值被删除的情况下, RegQueryValue会返回ERROR_SUCCESS, 并且retsize=0,
buf的内容不做改变。
这时如果buf的内容无效调用PlaySound则会导致一个错误, 于是系统给予ding.wav的声音。
当如果恰巧buf本身就是0,0开头的unicode串, 那么则不会有任何反应。 MFC的程序恰巧碰到这一点。也就是说上面的条件需要改成
if (ERROR_SUCCESS == RegQueryValue(HKEY_CURRENT_USER, "AppEvents\Schemes\Apps\.Default\CCSelect\.current", buf, &retsize)
&& retsize != 0)不知道怎么会反馈给微软,
该问题2天后结贴
不过要用 SendMessage(ListView.hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE, GetWindowLong(ListView.hWnd, GWL_EXSTYLE) Or LVS_EX_FULLROWSELECT) 将 ListView 设置为整行选中时才会有这个问题。如果是普通样式也不会有“叮”声。
至于 Common Controls 6.0 则没有任何问题,不过不接受 InitCommonControls。