将 LPHMIXER 转换为 Windows mmeapi 中的 HMIXER

Cast LPHMIXER to HMIXER in Windows mmeapi

本文关键字:mmeapi 中的 HMIXER Windows LPHMIXER 转换      更新时间:2023-10-16

我正在尝试弄清楚如何在Windows 10平台上使用C++调用mixerOpen()mixerClose()函数。我使用cl.exe作为编译器。

mixerOpen()函数使用混音器对象的句柄填充LPHMIXER。当我调用mixerClose()函数时,它需要一个HMIXER而不是LPHMIXER

:如何正确地将LPHMIXER转换为HMIXER,以便调用mixerClose()函数?

我尝试使用static_castdynamic_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 *的typedef。打开/使用/关闭混音器对象的顺序为:

HMIXER hmixer;
MMRESULT retval = mixerOpen(&hmixer, 0, NULL, 0, MIXER_OBJECTF_AUX);
if(retval != MMSYSERR_NOERROR) { /* error */ }
/* use hmixer */
retval = mixerClose(hmixer);