Страница: 1 |
Страница: 1 |
Вопрос: как узнать, есть ли фокус на форме?
Добавлено: 08.12.05 12:07
Автор вопроса: Trusishka | ICQ: 229751913
Люди, как узнать есть ли в данный момент фокус на форме? VB6
Ответы
Всего ответов: 11
Номер ответа: 1
Автор ответа:
Dushes
ICQ: 249195431
Вопросов: 8
Ответов: 110
Профиль | | #1
Добавлено: 08.12.05 12:22
Public Declare Function GetActiveWindow Lib "user32" Alias "GetActiveWindow" () As Long
И если возвращаемое значение = Твоя_Форма.hwnd ,то форма активна...
Номер ответа: 2
Автор ответа:
Trusishka
ICQ: 229751913
Вопросов: 36
Ответов: 48
Профиль | | #2
Добавлено: 13.12.05 10:46
VB ругается на первую строчку, очевидно в скобочки надо чего-нибудь всунуть?
Номер ответа: 3
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #3
Добавлено: 13.12.05 11:50
Как ругается то? Небось в форму всунуть пытаешься, а она у тя как Public. Объяви как Private.
Номер ответа: 4
Автор ответа:
Trusishka
ICQ: 229751913
Вопросов: 36
Ответов: 48
Профиль | | #4
Добавлено: 13.12.05 12:43
отлично на первую строку теперь не ругается, но вторая строка не работает! вот мой пример второй строки
If MainFrm.hWnd = 1 Then
Text3.SetFocus
End If
Номер ответа: 5
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #5
Добавлено: 13.12.05 12:50
А чего это вдруг hWnd будет равно 1?
hWnd - число достаточно случайное, и присваивается окнам виндой.
Номер ответа: 6
Автор ответа:
Trusishka
ICQ: 229751913
Вопросов: 36
Ответов: 48
Профиль | | #6
Добавлено: 13.12.05 12:51
вот меня поправили, но теперь процедура срабатывает, даже когда нет фокуса на форме
Private Sub Frame7_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If MainFrm.hWnd = Me.hWnd Then
Text3.SetFocus
End If
End Sub
Номер ответа: 7
Автор ответа:
Trusishka
ICQ: 229751913
Вопросов: 36
Ответов: 48
Профиль | | #7
Добавлено: 13.12.05 13:04
всем спасибо мне подсказали
Private Sub Frame7_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If CLng(MainFrm.hWnd) = CLng(GetActiveWindow) Then
Text3.SetFocus
End If
End Sub
Номер ответа: 8
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #8
Добавлено: 13.12.05 14:22
If CLng(MainFrm.hWnd) = CLng(GetActiveWindow)
Это где ж такое тебе подсказали? Небось на vbstreets?
Имхо только там hWnd другой размерности, чем long, и приходится его преобразовывать с CLng ))
Номер ответа: 9
Автор ответа:
User Unknown
Вечный Юзер!
ICQ: uu@jabber.cz
Вопросов: 120
Ответов: 3302
Профиль | | #9
Добавлено: 13.12.05 14:31
Это я подсказал.
Я привык всё явно преобразовывать.
Главное работает
Номер ответа: 10
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #10
Добавлено: 13.12.05 14:56
Преобразованiе жрет скорость в цiклах
___
Млiн, у меня клавiша В(русская I) не работает =(((((
Номер ответа: 11
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #11
Добавлено: 13.12.05 16:39
UU
Ну вот, а я-то подумал, что Trusishka налево ходит