写了个MFC程序来控制系统音量,我在程序中拖动滚动条,系统音量也跟着变化。
我去拖动系统音量条,程序这边反而没有变化,
我记得XP系统下是捕获MM_MIXM_CONTROL_CHANGE这个消息,然后做个回调函数,WIN7下面怎么做呢?我捕获MM_MIXM_CONTROL_CHANGE貌似没有用,求解。。
就剩20分了
以后会补上的。。

解决方案 »

  1.   

    你用貌似该是用的哪个SETXXXX的函数更改的音量吧,那有可能找到GETXXXXX的函数,找到的这个就应该是检测音量的函数,需要跟你的程序配合,就能做出你想要的功能,如开一线程不停检测,有变化,就通知主线程作相应的动作。
    你所说的那个捕获的消息估计是要加个相关的控件才能捕获到。基础的程序里不该有这个消息。
      

  2.   

    关于机制问题,XP下面会影响系统音量,WIN7下面已经做了处理,程序中控制此消息不会影响系统音量,建议使用DirectSound
      

  3.   

    我08年就做过这个。xp和 vista/win7 下音量管理采用完全不同的方式。xp下用MCI, vista/win7下采用WASAPI,你用xp的方式在win7下会完全不起作用。开发win7下的音量监控和控制,必须用vs2008以上版本,否则你找不到相关的结构体和接口声明。你可以在msdn2008以上版本里搜索WASAPI。vista/win7采用WASAPI主要是可以实现对每个进程的音量控制,而不像xp下,只能控制全局音量。在msdn20008以上版本里查
    IAudioSessionControl::RegisterAudioSessionNotification从这个问题我也再次想起好多初学者还用vc6,说vc6比vs2008,vs2010好用,我只能说vc6面对系统编程是无解的,或者说很麻烦。
      

  4.   


    这个我WIN7音量控制以及搞定了 是通过core audio api的,我现在想要的是和XP下环境下通过捕获消息MM_MIXM_CONTROL_CHANGE,来实现MFC程序音量跟系统音量变化实时同步。