Re: немодальный диалог в контроле
|
От: |
lboss
|
|
Дата: | 07.03.03 07:57 |
|
Оценка: |
|
Здравствуйте, Аноним, Вы писали:
А>Как обработать клавиатуру в _немодальном_ диалоге(WTL) в _контроле_
Безотносительно к WTL проще поюзать SetWindowsHookEx(WH_KEYBOARD, keyboardFilterProc, NULL, GetCurrentThreadId());
И
LRESULT CALLBACK GUIManager::keyboardFilterProc(int code, WPARAM wParam, LPARAM lParam)
{
switch (code)
{
case HC_ACTION:
{
MSG msg;
msg.message = (lParam & 0x80000000L) ? WM_KEYUP : WM_KEYDOWN;
msg.hwnd = ::GetFocus();
msg.wParam = wParam;
msg.lParam = lParam;
GetCursorPos(&msg.pt);
msg.time = 0;
for(всех окон)
{
HWND hWnd = *p;
if(IsWindowEnabled(hWnd) && !GetProp(hWnd, IsPymbleTmp))
{
SetProp(hWnd, IsPymbleTmp, (HANDLE)1);
BOOL bRet = IsDialogMessage(hWnd, &msg);
SetProp(hWnd, IsPymbleTmp, (HANDLE)0);
if(bRet)
return (LRESULT)TRUE;
}
}
}
break;
}
return ::CallNextHookEx(m_instance->m_hKeyboardFilterHook, code, wParam, lParam);
}
С уважением Вадим.
Автомодерирование
Пока на собственное сообщение не было ответов, его можно удалить.
Добавить в избранное