音量调节的问题,在线等候 当其它程序调节系统中设备的音量时,Windows自带的音量调节器Slider会即时出现相应变化。它是用了callback还是用message? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 应该消息,不然不会同步改变的—————————————————————————————————┏━★━━◆━━★━┓ ♂欢|◢CSDN◣|使♂ ▲自由保存帖子,浏览,关注检测┃迎|◥论坛助手◤|用┃ ▲完善的CSDN客户端工具┗━☆━━◇━━━☆┛ ▲自动添加签名......让你更快,更爽,更方便地上CSDN...http://www.csdn.net/expert/topic/573/573604.xmlhttp://www.chinaok.net/csdn/csdn.zip BOOL setVol(BOOL up){ HMIXER m_HMixer; INT m_iMixerControlID; MMRESULT mmr; DWORD m_dwChannels; BOOL m_bSuccess; DWORD SrcType,DstType,ControlType; MIXERLINE mxl; MIXERCONTROL mxc; MIXERLINECONTROLS mxlc; MIXERCONTROLDETAILS mxcd; MIXERCONTROLDETAILS_UNSIGNED mxcd_u[2]; UINT nconn; DWORD DstIndex; UINT j; HWND hwnd;// CHAR aaa[123]; SrcType=NO_SOURCE; DstType=MIXERLINE_COMPONENTTYPE_DST_SPEAKERS; ControlType=MIXERCONTROL_CONTROLTYPE_VOLUME; m_HMixer = NULL; m_iMixerControlID = 0; mmr = MMSYSERR_NOERROR; m_dwChannels = 0; m_bSuccess = FALSE; if(mixerGetNumDevs() < 1) return 0; mmr = mixerOpen(&m_HMixer, 0, 0, 0L, CALLBACK_NULL); if (mmr != MMSYSERR_NOERROR) return 0;// get dwLineID mxl.cbStruct = sizeof(MIXERLINE);// DstType mxl.dwComponentType = DstType; if (mixerGetLineInfo((HMIXEROBJ)m_HMixer, &mxl, MIXER_OBJECTF_HMIXER | MIXER_GETLINEINFOF_COMPONENTTYPE) != MMSYSERR_NOERROR) return 0;// SrcType if( SrcType != NO_SOURCE ) { nconn = mxl.cConnections; DstIndex = mxl.dwDestination; for(j = 0; j < nconn; j++ ) { mxl.cbStruct = sizeof( MIXERLINE ); mxl.dwSource = j; mxl.dwDestination = DstIndex; if(mixerGetLineInfo( ( HMIXEROBJ )m_HMixer, &mxl, MIXER_GETLINEINFOF_SOURCE ) != MMSYSERR_NOERROR) return 0; if( mxl.dwComponentType == SrcType ) break; } }// get dwControlID mxlc.cbStruct = sizeof(MIXERLINECONTROLS); mxlc.dwLineID = mxl.dwLineID; mxlc.dwControlType = ControlType; mxlc.cControls = 1; mxlc.cbmxctrl = sizeof(MIXERCONTROL); mxlc.pamxctrl = &mxc; if (mixerGetLineControls((HMIXEROBJ)m_HMixer, &mxlc, MIXER_OBJECTF_HMIXER | MIXER_GETLINECONTROLSF_ONEBYTYPE) != MMSYSERR_NOERROR) return 0; m_iMixerControlID = mxc.dwControlID; m_dwChannels = mxl.cChannels; m_bSuccess = TRUE; if (!m_bSuccess) return m_bSuccess; m_bSuccess = FALSE; mxcd.cbStruct = sizeof(mxcd); mxcd.dwControlID = m_iMixerControlID; mxcd.cChannels = m_dwChannels; mxcd.cMultipleItems = 0; mxcd.cbDetails = sizeof(MIXERCONTROLDETAILS_UNSIGNED); mxcd.paDetails = mxcd_u; mmr = mixerGetControlDetails((HMIXEROBJ)m_HMixer, &mxcd, 0L); if (MMSYSERR_NOERROR != mmr) return m_bSuccess;// wsprintf(aaa,"%d",mxcd_u[0].dwValue);// MessageBox(NULL, aaa, "l", MB_OK); hwnd=FindWindow(PROGRESS_CLASS, NULL);// SetFocus(hwnd); ShowWindow(hwnd, SW_SHOW);// ShowWindow(hwnd, SW_SHOWNA); if (!isWin2000) { if (up) { if (mxcd_u[0].dwValue > (65535-1024)) mxcd_u[0].dwValue=65535; else mxcd_u[0].dwValue = mxcd_u[0].dwValue + 1024;// if (mxcd_u[0].dwValue < 1024) mxcd_u[0].dwValue=65435; mxcd_u[1].dwValue = mxcd_u[0].dwValue; } else { if (mxcd_u[0].dwValue < 1024) mxcd_u[0].dwValue=0; else mxcd_u[0].dwValue = mxcd_u[0].dwValue - 1024; mxcd_u[1].dwValue = mxcd_u[0].dwValue; } mxcd.paDetails = mxcd_u; mmr = mixerSetControlDetails((HMIXEROBJ)m_HMixer, &mxcd, 0L);// wsprintf(aaa,"%d",mmr);// MessageBox(NULL, aaa, "l", MB_OK); if (MMSYSERR_NOERROR != mmr) return m_bSuccess; }/***********************************************************************************/// FindWindow("","Change Volume"); dwVolValue = mxcd_u[0].dwValue; hwnd=FindWindow(myKTREXE_WNDCLASS_NAME,myKTREXE_APPWND_NAME); if (hwnd) SendMessageCallback(hwnd,WM_COMMAND,22222,dwVolValue,0,0);// SendMessage(hwnd,WM_COMMAND,22222,dwVolValue); /***********************************************************************************/ if (m_HMixer) mixerClose(m_HMixer); if (MMSYSERR_NOERROR != mmr) return m_bSuccess; m_bSuccess = TRUE; return m_bSuccess;} 请问如何制作一个可缩放的图像列表(类似explorer那样) 急求解决mschart控件的几个问题 VC6中Combo控件简单问题请教 断开本地连接 请问 气人!查找某一字段为空的SQL语句在SQL SERVER中可用,到ORACLE中就不灵了。 在线求救!怎样给对象传递参数? 在向CListCtrl类添加Item时出现的问题 这段代码有什么问题吗? 怎样把title上的icon去掉 请问如何发行使用MS TTS 5.1的程序? 关于单文档滚动条一问
不然不会同步改变的—————————————————————————————————
┏━★━━◆━━★━┓
♂欢|◢CSDN◣|使♂ ▲自由保存帖子,浏览,关注检测
┃迎|◥论坛助手◤|用┃ ▲完善的CSDN客户端工具
┗━☆━━◇━━━☆┛ ▲自动添加签名......让你更快,更爽,更方便地上CSDN...
http://www.csdn.net/expert/topic/573/573604.xml
http://www.chinaok.net/csdn/csdn.zip
{ HMIXER m_HMixer;
INT m_iMixerControlID;
MMRESULT mmr;
DWORD m_dwChannels;
BOOL m_bSuccess;
DWORD SrcType,DstType,ControlType;
MIXERLINE mxl;
MIXERCONTROL mxc;
MIXERLINECONTROLS mxlc;
MIXERCONTROLDETAILS mxcd;
MIXERCONTROLDETAILS_UNSIGNED mxcd_u[2];
UINT nconn;
DWORD DstIndex;
UINT j;
HWND hwnd;
// CHAR aaa[123]; SrcType=NO_SOURCE;
DstType=MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
ControlType=MIXERCONTROL_CONTROLTYPE_VOLUME;
m_HMixer = NULL;
m_iMixerControlID = 0;
mmr = MMSYSERR_NOERROR;
m_dwChannels = 0;
m_bSuccess = FALSE;
if(mixerGetNumDevs() < 1) return 0;
mmr = mixerOpen(&m_HMixer, 0, 0, 0L, CALLBACK_NULL);
if (mmr != MMSYSERR_NOERROR) return 0;
// get dwLineID
mxl.cbStruct = sizeof(MIXERLINE);
// DstType
mxl.dwComponentType = DstType;
if (mixerGetLineInfo((HMIXEROBJ)m_HMixer, &mxl, MIXER_OBJECTF_HMIXER | MIXER_GETLINEINFOF_COMPONENTTYPE)
!= MMSYSERR_NOERROR) return 0;
// SrcType
if( SrcType != NO_SOURCE )
{
nconn = mxl.cConnections;
DstIndex = mxl.dwDestination;
for(j = 0; j < nconn; j++ )
{
mxl.cbStruct = sizeof( MIXERLINE );
mxl.dwSource = j;
mxl.dwDestination = DstIndex;
if(mixerGetLineInfo( ( HMIXEROBJ )m_HMixer,
&mxl, MIXER_GETLINEINFOF_SOURCE ) != MMSYSERR_NOERROR) return 0;
if( mxl.dwComponentType == SrcType ) break;
}
}
// get dwControlID
mxlc.cbStruct = sizeof(MIXERLINECONTROLS);
mxlc.dwLineID = mxl.dwLineID;
mxlc.dwControlType = ControlType;
mxlc.cControls = 1;
mxlc.cbmxctrl = sizeof(MIXERCONTROL);
mxlc.pamxctrl = &mxc;
if (mixerGetLineControls((HMIXEROBJ)m_HMixer, &mxlc, MIXER_OBJECTF_HMIXER | MIXER_GETLINECONTROLSF_ONEBYTYPE) != MMSYSERR_NOERROR) return 0;
m_iMixerControlID = mxc.dwControlID;
m_dwChannels = mxl.cChannels;
m_bSuccess = TRUE; if (!m_bSuccess) return m_bSuccess;
m_bSuccess = FALSE;
mxcd.cbStruct = sizeof(mxcd);
mxcd.dwControlID = m_iMixerControlID;
mxcd.cChannels = m_dwChannels;
mxcd.cMultipleItems = 0;
mxcd.cbDetails = sizeof(MIXERCONTROLDETAILS_UNSIGNED);
mxcd.paDetails = mxcd_u;
mmr = mixerGetControlDetails((HMIXEROBJ)m_HMixer, &mxcd, 0L);
if (MMSYSERR_NOERROR != mmr) return m_bSuccess;// wsprintf(aaa,"%d",mxcd_u[0].dwValue);
// MessageBox(NULL, aaa, "l", MB_OK); hwnd=FindWindow(PROGRESS_CLASS, NULL);
// SetFocus(hwnd);
ShowWindow(hwnd, SW_SHOW);
// ShowWindow(hwnd, SW_SHOWNA);
if (!isWin2000)
{
if (up)
{
if (mxcd_u[0].dwValue > (65535-1024))
mxcd_u[0].dwValue=65535;
else
mxcd_u[0].dwValue = mxcd_u[0].dwValue + 1024;
// if (mxcd_u[0].dwValue < 1024) mxcd_u[0].dwValue=65435;
mxcd_u[1].dwValue = mxcd_u[0].dwValue;
}
else
{
if (mxcd_u[0].dwValue < 1024)
mxcd_u[0].dwValue=0;
else
mxcd_u[0].dwValue = mxcd_u[0].dwValue - 1024;
mxcd_u[1].dwValue = mxcd_u[0].dwValue;
}
mxcd.paDetails = mxcd_u;
mmr = mixerSetControlDetails((HMIXEROBJ)m_HMixer, &mxcd, 0L);
// wsprintf(aaa,"%d",mmr);
// MessageBox(NULL, aaa, "l", MB_OK);
if (MMSYSERR_NOERROR != mmr) return m_bSuccess;
}
/***********************************************************************************/// FindWindow("","Change Volume");
dwVolValue = mxcd_u[0].dwValue;
hwnd=FindWindow(myKTREXE_WNDCLASS_NAME,myKTREXE_APPWND_NAME);
if (hwnd)
SendMessageCallback(hwnd,WM_COMMAND,22222,dwVolValue,0,0);
// SendMessage(hwnd,WM_COMMAND,22222,dwVolValue);
/***********************************************************************************/ if (m_HMixer) mixerClose(m_HMixer);
if (MMSYSERR_NOERROR != mmr) return m_bSuccess;
m_bSuccess = TRUE;
return m_bSuccess;}