c++ - 在 Windows mmeapi 中将 LPHMIXER 转换为 HMIXER
问题描述
我试图弄清楚如何在 Windows 10 平台上使用 C++调用mixerOpen()
和函数。mixerClose()
我cl.exe
用作编译器。
该函数用一个混合器对象的句柄mixerOpen()
填充一个。LPHMIXER
当我调用该mixerClose()
函数时,它需要 aHMIXER
而不是LPHMIXER
.
问题:如何正确地将 anLPHMIXER
转换为 an HMIXER
,以便调用该mixerClose()
函数?
我尝试使用static_cast
and dynamic_cast
,但它们都失败了。例如:
UINT retval;
LPHMIXER mixer;
retval = mixerOpen(mixer, 0, NULL, 0, MIXER_OBJECTF_AUX);
cout << endl << "Return value: " << retval;
HMIXER hmixer = dynamic_cast<HMIXER>(mixer);
mixerClose(hmixer);
...显示错误:
指针 dynamic_cast 的操作数必须是指向完整类类型的指针
解决方案
LPHMIXER
只是HMIXER *
. 打开/使用/关闭混音器对象的顺序是:
HMIXER hmixer;
MMRESULT retval = mixerOpen(&hmixer, 0, NULL, 0, MIXER_OBJECTF_AUX);
if(retval != MMSYSERR_NOERROR) { /* error */ }
/* use hmixer */
retval = mixerClose(hmixer);