Страница: 1 |
Страница: 1 |
Вопрос: Проверить существует ли фокус на Control'e?
Добавлено: 28.12.05 02:44
Автор вопроса: HACKER
Есть допустим батон, на нём стоит фокус (кнопка обведина, остаётся нажать ентер...) Как проверить стоит ли этот фокус на кнопке, или др. элементе. Кстати кнопка может быть не моя, так что лучше по hwnd как-то...
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
Mihalыch
ICQ: 373-509-101
Вопросов: 56
Ответов: 330
Профиль | | #1
Добавлено: 28.12.05 06:20
Так можно определить имеет окно фокус или нет, ну а батон это или нет определить не сложно.
Private Declare Function GetFocus Lib "user32" () As Long
Private Declare Function GetForegroundWindow Lib "user32.dll" () As Long
Private Declare Function AttachThreadInput Lib "user32.dll" (ByVal idAttach As Long, ByVal idAttachTo As Long, ByVal fAttach As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32.dll" (ByVal hwnd As Long, ByRef lpdwProcessId As Long) As Long
Private Declare Function IsWindow Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Declare Function GetCurrentThreadId Lib "kernel32.dll" () As Long
Private Sub Timer1_Timer()
attach
Me.Caption = "hWnd окна с фокусом - " & Str$(GetFocus())
End Sub
Private Sub attach()
Dim pid As Long
Dim sId As Long
sId = GetWindowThreadProcessId(GetForegroundWindow, pid)
If sId = 0 Or IsWindow(GetForegroundWindow) = 0 Then
'"Error!"
Else
AttachThreadInput sId, GetCurrentThreadId(), True
End If
End Sub
Номер ответа: 2
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #2
Добавлено: 28.12.05 12:08
Me.ActiveControl ?
Номер ответа: 3
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #3
Добавлено: 29.12.05 20:30
Mihalыch, окно я могу и сам определить, и ты совершенно прав, батон от окна я тоже отличку... ну вот твоя бодяга именно батоны и др. эл. неловит ведь... только окна - они мне не нужны...
У кого ещё какие варианты?
Номер ответа: 4
Автор ответа:
SerJ
Вопросов: 24
Ответов: 332
Профиль | | #4
Добавлено: 29.12.05 22:51
Как извесно, когда пользователь наводит фокус на элемент управления TextBox, генерируется событие GotFocus. Когда пользователь убирает фокус с этого элемента управления, генерируется событие LostFocus.
Я думаю, стоит попробовать через сабклассинг (WM_SETFOCUS, WM_KILLFOCUS)
Номер ответа: 5
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #5
Добавлено: 30.12.05 02:41
попробую...
Номер ответа: 6
Автор ответа:
Mihalыch
ICQ: 373-509-101
Вопросов: 56
Ответов: 330
Профиль | | #6
Добавлено: 30.12.05 05:11
Ну не знаю, не знаю, все ловит без проблем. Может у тебя батоны какие-то другие, а может приближение праздника сказывается…?
З.Ы. С НАСТУПАЮЩИМ!!!
Номер ответа: 7
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #7
Добавлено: 30.12.05 06:25
мда... наверное приближения праздника действительно влияет
ок, спасибо, тема закрыта.