В моем приложении C ++ MFC у меня есть элемент управления ActiveX на форме. В какой-то момент я создаю и показываю новый диалог. Я не хочу, чтобы пользователь мог щелкнуть элемент управления ActiveX, когда этот второй диалог включен, поэтому я попытался создать его как дочерний диалог. Однако элемент управления ActiveX всегда отображается над дочерним диалогом в Z-порядке. Я попытался отправить сообщение о создании, чтобы изменить порядок Z, но ничего не помогло.
Я пытался использовать Windows Hooks для перехвата щелчка мышью, используя следующий код:
GetWindowsHookEx(WH_MOUSE_LL, (HOOKPROC)CDWFDLG::ClickProc, GetModuleHandle(NULL), 0)
LRESULT CALLBACK CDWFDLG::ClickProc(int ncode, WPARAM wparam, LPARAM lparam)
{
if(wparam == WM_LBUTTONDOWN)
{
Beep(110, 30);
return TRUE;
}
return CallNextHookEx(0, ncode, wparam, lparam);
}
Это блокирует все щелчки левой кнопкой мыши, что я и хочу. Тем не менее, он делает это на всем, а не только на моем приложении. Я попытался установить идентификатор потока, используя
GetCurrentThreadId()
и
GetWindowThreadProcessId(this->m_hWnd, &threadId )
Однако ни один из них не сработал. Что я должен использовать, чтобы просто запустить приложение в моем приложении? Как только это заработало, я планировал использовать координаты щелчка, чтобы проверить, есть ли в новом диалоге, и обработать его оттуда.
Спасибо