如何屏蔽选择listview item时, 系统发出的“叮”的声音???????

pigsanddogs 2008-09-07 03:57:48
用sdk编程的时候, 在一个对话框里面放一个listview,
设置成report模式, 并且添加了几个item
最后,dialogbox出来后, 发现选择其中的item
系统会发出万恶的“叮”的声音, MessageBeep(1)的声音,


但是, 用MFC做的程序, 里面的listview是不会发出这种奇怪的声音的,
包括系统的listview, 比如目录里面文件详细列表, 桌面等,
怎么选都不会有这种古怪的声音,
我现在的解决方法就是吧声音关了, 我被这个声音快折磨死了。

google,baidu了N久, 也查了MSDN,跟踪了MFC的代码,
找不到对策, 谁来帮帮我?
...全文
189 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
MICStudio 2011-01-26
  • 打赏
  • 举报
回复
谢谢楼主……我用的是 VB,为了实现主题效果必须用 Common Controls 5.0(即 comctl32 啦),每个用到 ListView 的 Style=lvwReport 时都出现了这个问题。
不过要用 SendMessage(ListView.hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE, GetWindowLong(ListView.hWnd, GWL_EXSTYLE) Or LVS_EX_FULLROWSELECT) 将 ListView 设置为整行选中时才会有这个问题。如果是普通样式也不会有“叮”声。
至于 Common Controls 6.0 则没有任何问题,不过不接受 InitCommonControls。
schlafenhamster 2008-09-07
  • 打赏
  • 举报
回复
Vista问题?
猞猁狲 2008-09-07
  • 打赏
  • 举报
回复
没有这么做过,都用的MFC的CListctrl ,学习
pigsanddogs 2008-09-07
  • 打赏
  • 举报
回复
经过晚上调试发现是是comctl32的一个bug, 具体表现在:


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天后结贴
jixingzhong 2008-09-07
  • 打赏
  • 举报
回复
MessageBeep(-1) 试试
内容概要:本文围绕内置式永磁同步电机(IPMSM)的宽速域控制问题,提出了一种最大转矩电流比(MTPA)与基于解析法的弱磁控制协同策略,旨在实现电机在全速域范围内的高效、稳定运行。研究基于电压饱和判据,设计了精确的分区切换机制,确保在不同转速区间内MTPA与弱磁控制策略的无缝衔接与平滑过渡。通过Simulink搭建了完整的电机控制系统模型,对所提出的协同控制策略进行了详细的仿真验证,重点分析了其在动态加速、减速及负载突变等工况下的宽速域动态特性,证明了该方法在提升系统响应速度、抑制转矩脉动和维持电压稳定方面的优越性能。; 适合人群:从事电机控制、电力电子、新能源汽车或自动化领域的研究生、科研人员及工程技术人员。; 使用场景及目标:① 掌握永磁同步电机在全速域范围内的先进控制策略;② 学习如何设计基于物理约束(如电压饱和)的多模式控制切换逻辑;③ 利用Simulink进行电机控制系统的建模、仿真与性能验证; 其他说明:该资源不仅提供了完整的理论分析和控制框图,还包含了可直接运行的Simulink仿真模型,便于读者复现结果、修改参数并进行二次开发,是深入理解电机高性能控制算法的理想实践材料。
内容概要:本研究聚焦于永磁同步电机(PMSM)在无位置传感器控制下的启动性能优化,提出了一种将模型预测控制(MPC)与模型参考自适应系统(MRAS)相融合的观测器设计方案。该融合观测器充分利用MPC的多步前瞻预测能力和MRAS的强鲁棒性,构建协同机制,旨在解决电机在零速和极低速工况下因反电动势微弱而导致的传统观测器收敛困难、稳定性差的问题。研究通过Simulink仿真实验,深入分析了融合观测器的动态响应特性、收敛速度及其在零速启动过程中的稳定性,验证了该方案相较于单一观测器在提升系统收敛性和平滑启动方面的优越性。; 适合人群:具备电机控制理论基础和Simulink仿真经验,从事电机驱动、电力电子或自动化领域研发工作的工程师及研究生。; 使用场景及目标:① 解决永磁同步电机在零低速区的精确转子位置观测难题;② 设计并验证融合型观测器以提升系统在启动阶段的动态性能和鲁棒性;③ 为高性能无传感器驱动系统的设计提供仿真依据和技术参考。; 阅读建议:此资源以Simulink仿真实现为核心,读者应在理解MPC和MRAS基本原理的基础上,重点学习其融合架构的设计思路与协同机制的实现方法,并通过动手复现仿真模型来深入掌握观测器的参数整定、性能评估与优化技巧。

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧