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);
}
С уважением Вадим.