Табуляция контролов созданных через CreateWindowEx

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Naked
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 27.10.2004 (Ср) 3:16
Откуда: Дальнегорск столица мира

Табуляция контролов созданных через CreateWindowEx

Сообщение Naked » 11.11.2005 (Пт) 2:35

Насколько мне известно, контролы созданные через CreateWindowEx, не поддерживают автоматическую табуляцию.
Пришлось писать ручками, но..., есть небольшая проблема.

Значит так, пишу в обработчике событий WM_KEYDOWN вновь созданного контрола.

case WM_KEYDOWN
If wParam = VK_TAB And GetKeyState(VK_SHIFT) < 0 Then
If GetFocus = GetNextWindow(hwnd, GW_HWNDFIRST) Then
HwndNext = GetNextWindow(hwnd, GW_HWNDLAST)
Else
HwndNext = GetNextWindow(hwnd, GW_HWNDPREV)
End If
Call SetFocusA(HwndNext)
ElseIf wParam = VK_TAB Then
If GetFocus = GetNextWindow(hwnd, GW_HWNDLAST) Then
HwndNext = GetNextWindow(hwnd, GW_HWNDFIRST)
Else
HwndNext = GetNextWindow(hwnd, GW_HWNDNEXT)
End If
Call SetFocusA(HwndNext)
End If

Все нормально до тех пор, пока один из контролов не имеет стиль WS_DISABLED, т.е при переходе фокуса окно имеющее стиль WS_DISABLED тормозит весь процесс табуляции

шо делать как быть?

Alex Mals
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 11.12.2004 (Сб) 18:09

Сообщение Alex Mals » 11.11.2005 (Пт) 2:59

Идельный способ - поставить WH_GETMESSAGE хук
и юзать в обработчике функцию IsDialogMessage, она все
сделает за тебя.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот, SemrushBot и гости: 43

    TopList