首页 > 解决方案 > 在 Windows mmeapi 中将 LPHMIXER 转换为 HMIXER

问题描述

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

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

问题:如何正确地将 anLPHMIXER转换为 an HMIXER,以便调用该mixerClose()函数?

我尝试使用static_castand 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 的操作数必须是指向完整类类型的指针

标签: c++windows

解决方案


LPHMIXER只是HMIXER *. 打开/使用/关闭混音器对象的顺序是:

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

/* use hmixer */

retval = mixerClose(hmixer);

推荐阅读