Страница: 1 |
|
Вопрос: Lost_Focus
|
Добавлено: 28.01.05 14:08
|
|
Автор вопроса: mayevskyy | ICQ: 1234567890
|
Добрый день.
Первый раз понадобилось и не работает.
Кто знает почему не работаем событие Lost_Focus при потере фокуса формой?
Ответить
|
Номер ответа: 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 " efWindowProcA" ( 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.
Ответить
|
Страница: 1 |
Поиск по форуму