【发布时间】:2016-08-26 16:31:20
【问题描述】:
我正在尝试创建一个自定义 VCL 组件,该组件可以在单击时播放自定义声音。声音是从资源 DLL 访问的。
问题是,声音是使用 Direct X 播放的,并且要创建它需要一个有效的窗口句柄。
我天真的初始测试是在组件构造函数中初始化声音:
__fastcall TArrayBotButton::TArrayBotButton(TComponent* Owner)
: TBitBtn(Owner),
FSoundID("BUTTON_CLICK_1")
{
initABCoreLib();
HWND hWnd = Application->MainFormHandle;
mSound.Create(FSoundID.c_str(), hWnd);
}
但上述方法不起作用,因为此时 MainFormHandle 为 NULL。另外,作为一个组件,在构造函数中使用 Application 变量可能是不安全的(?)。
关于在哪里初始化声音的任何指针?
【问题讨论】:
标签: c++builder vcl