Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


Как заменить оконную процедуру своей?

Поиск:
Вот это напарился. Надо было подменить оконную процедуру, пока вспомнил как это делаеться...
Вот, небольшой примерчик наваял, может кому полезно будет (буду знать где можно быстро найти smile )

Простой пример по подмене старой оконной процедуры новой, и наоборот.
Код
Option Explicit
Dim isChanged As Boolean

Sub ChangeWindowProc()
    If isChanged Then
        hPrevWndProc = SetWindowLong(Me.hWnd, GWL_WNDPROC, AddressOf WindowProc)
    Else
        SetWindowLong Me.hWnd, GWL_WNDPROC, hPrevWndProc
    End If
End Sub

Private Sub Command1_Click()
    isChanged = Not isChanged
    ChangeWindowProc
End Sub

Внимание! Обязательно новый модуль! Т.к. AddressOf может ссылаться только на другой модуль!
Код
Option Explicit
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
    (ByVal hWnd As Long, _
    ByVal nIndex As Long, _
    ByVal dwNewLong As Long) As Long
Public Declare Function CallWindowProc Lib "user32" 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 Const GWL_WNDPROC = (-4)
Public Const GCL_WNDPROC = (-24)
Public Const WM_LBUTTONDOWN = &H201
Public hPrevWndProc&

Public Function WindowProc&(ByVal hWnd&, ByVal iMsg&, ByVal wParam&, ByVal lParam&)
    Select Case iMsg
        Case WM_LBUTTONDOWN
            Beep
            Exit Function
    End Select
    WindowProc = CallWindowProc(hPrevWndProc, hWnd, iMsg, wParam, lParam)
End Function
Автор: Mephisto






Просмотров: 3246

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную