Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Lost_Focus Добавлено: 28.01.05 14:08  

Автор вопроса:  mayevskyy | ICQ: 1234567890 
Добрый день.
Первый раз понадобилось и не работает.
Кто знает почему не работаем событие Lost_Focus при потере фокуса формой?

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #1 Добавлено: 28.01.05 14:39
Плюнь на lost_focus, не дождёшься его, лови WM_ACTIVATE

Ответить

Номер ответа: 2
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #2 Добавлено: 28.01.05 14:49
При смены активного окна между приложениями события Lost_Focus не наступает. Оно возникает лишь внутри приложения.

Ответить

Номер ответа: 3
Автор ответа:
 mayevskyy



ICQ: 1234567890 

Вопросов: 7
Ответов: 4
 Профиль | | #3 Добавлено: 28.01.05 16:29
Окей, подскажи какие API!?

Ответить

Номер ответа: 4
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #4 Добавлено: 28.01.05 19:01
Например вот эти:

Public Declare Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function DefWindowProc Lib "user32.dll" Alias ";DefWindowProcA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Public Const WM_ACTIVATE As Long = &H6
Public Const GWL_WNDPROC As Long = -4
Public Const WA_INACTIVE As Long = 0

Public NewProc As Long
Public OldProc As Long

Public Function GetProcAddr(lpProc As Long) As Long
    GetProcAddr = lpProc
End Function

Public Function SetNewCallBack(ByVal FormhWnd As Long) As Long
    NewProc = GetProcAddr(AddressOf WndProc)
    OldProc = SetWindowLong(ByVal FormhWnd, GWL_WNDPROC, NewProc)
End Function

Public Function WndProc(ByVal hwnd As Long, ByVal Message As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Dim mask As Long
    If Message = WM_ACTIVATE Then
        mask = wParam And 65535
        If mask = WA_INACTIVE Then
            Beep
        End If
    End If
    WndProc = CallWindowProc(OldProc, ByVal hwnd, ByVal Message, ByVal wParam, ByVal lParam)
End Function


Этот код должен располагаться в модуле.

А вот это впиши в Form_Load():

SetNewCallBack Me.hwnd


Когда форма будет терять фокус, услышишь звук. Не пугайся, это Beep.

Ответить

Номер ответа: 5
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #5
Добавлено: 29.01.05 20:16
Есть кстати событие Deactivate у формы.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам