JoyStick 当top-level IE window active 的时候,系统没有接受设备信息
作了一个ATL 的控件用在IE里面,用下面的方法得到IE的窗口句柄,用DirectInput8 的 SetCooperativeLevel 去设置信息,返回值是正确的,但是IE为ACTIVE的时候,没有Joystick的设备触发信息。请问是IE的窗口句柄不对吗?
IOleClientSite* pClientSite = NULL;
pXNetComm->GetClientSite(&pClientSite); // pXnetcomm is the activex control
HRESULT hr = S_OK;
IServiceProvider *isp, *isp2 = NULL;
IWebBrowser2 *browser = NULL;
HWND pHWnd = NULL;
hr = pClientSite->QueryInterface(IID_IServiceProvider, reinterpret_cast<void **>(&isp));
if (FAILED(hr))
{
goto cleanup;
}
hr = isp->QueryService(SID_STopLevelBrowser, IID_IServiceProvider, reinterpret_cast<void **>(&isp2));
if (FAILED(hr))
{
goto cleanup;
}
hr = isp2->QueryService(SID_SWebBrowserApp, IID_IWebBrowser2, reinterpret_cast<void **>(&browser));
if (FAILED(hr))
{
goto cleanup;
}
browser->get_HWND((SHANDLE_PTR*)&pHWnd);
SAFE_RELEASE(isp);
SAFE_RELEASE(isp2);
SAFE_RELEASE(browser);
g_pJoystick->SetCooperativeLevel(pHWnd, DISCL_EXCLUSIVE|DISCL_FOREGROUND );