Viktor1703
AutoIT Гуру
- Сообщения
- 1,535
- Репутация
- 413
AutoIt: 3
Версия: 1.0
Категория: Вспомогательные функции, Окна и диалоги, Элементы GUI
Описание: Позволяет обработать все сообщения окна или контрола в одной зарегистрированной функции.
Код/Пример:
Файл: ISubclass.rar
Снимок:
История версий:
Список функций:
Источник: autoit-script.ru
Автор(ы): Viktor1703
Версия: 1.0
Категория: Вспомогательные функции, Окна и диалоги, Элементы GUI
Описание: Позволяет обработать все сообщения окна или контрола в одной зарегистрированной функции.
Код/Пример:
Код:
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <WinAPIEx.au3>
#include 'ISubclass.au3'
If (Not ISubclassStartup()) Then
Exit
EndIf
$tProc = DllCallbackRegister('Subclass', 'ptr', 'hwnd;ulong;wparam;lparam')
$hForm = GUICreate('', 400, 300, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX, $WS_CLIPCHILDREN, $WS_CLIPSIBLINGS))
$iSubclass = ISubclassRegister($hForm, DllCallbackGetPtr($tProc))
$iButton1 = GUICtrlCreateButton('1', 0, 0, 0, 0)
$iButton2 = GUICtrlCreateButton('2', 0, 0, 0, 0)
$iButton3 = GUICtrlCreateButton('3', 0, 0, 0, 0)
$iButton4 = GUICtrlCreateButton('4', 0, 0, 0, 0)
$iButton5 = GUICtrlCreateButton('5', 0, 0, 0, 0)
$iButton6 = GUICtrlCreateButton('6', 0, 0, 0, 0)
$iButton7 = GUICtrlCreateButton('7', 0, 0, 0, 0)
$iButton8 = GUICtrlCreateButton('8', 0, 0, 0, 0)
$iButton9 = GUICtrlCreateButton('9', 0, 0, 0, 0)
GUISetState()
While 1
Switch GUIGetMsg()
Case -3
ExitLoop
EndSwitch
Wend
ISubclassUnregister($iSubclass)
DllCallbackFree($tProc)
ISubclassShutdown()
Func Subclass($hWnd, $iMsg, $wParam, $lParam)
Switch $hWnd
Case $hForm
Switch $iMsg
Case $WM_COMMAND
Switch _WinAPI_LoWord($wParam)
Case $iButton1
Switch _WinAPI_HiWord($wParam)
Case $BN_CLICKED
MsgBox(0, '', 'Button 1')
EndSwitch
Case $iButton2
Switch _WinAPI_HiWord($wParam)
Case $BN_CLICKED
MsgBox(0, '', 'Button 2')
EndSwitch
Case $iButton3
Switch _WinAPI_HiWord($wParam)
Case $BN_CLICKED
MsgBox(0, '', 'Button 3')
EndSwitch
Case $iButton4
Switch _WinAPI_HiWord($wParam)
Case $BN_CLICKED
MsgBox(0, '', 'Button 4')
EndSwitch
Case $iButton5
Switch _WinAPI_HiWord($wParam)
Case $BN_CLICKED
MsgBox(0, '', 'Button 5')
EndSwitch
Case $iButton6
Switch _WinAPI_HiWord($wParam)
Case $BN_CLICKED
MsgBox(0, '', 'Button 6')
EndSwitch
Case $iButton7
Switch _WinAPI_HiWord($wParam)
Case $BN_CLICKED
MsgBox(0, '', 'Button 7')
EndSwitch
Case $iButton8
Switch _WinAPI_HiWord($wParam)
Case $BN_CLICKED
MsgBox(0, '', 'Button 8')
EndSwitch
Case $iButton9
Switch _WinAPI_HiWord($wParam)
Case $BN_CLICKED
MsgBox(0, '', 'Button 9')
EndSwitch
EndSwitch
Case $WM_ACTIVATE, $WM_SIZING, $WM_SIZE
Local $iPos = _WinAPI_GetPosFromRect(_WinAPI_GetClientRect($hWnd))
GUICtrlSetPos($iButton1, 0, 0, 80, 20)
GUICtrlSetPos($iButton2, 0, 20, 80, $iPos[3] - 40)
GUICtrlSetPos($iButton3, 0, $iPos[3] - 20, 80, 20)
GUICtrlSetPos($iButton4, 80, 0, $iPos[2] - 160, 20)
GUICtrlSetPos($iButton5, 80, 20, $iPos[2] - 160, $iPos[3] - 40)
GUICtrlSetPos($iButton6, 80, $iPos[3] - 20, $iPos[2] - 160, 20)
GUICtrlSetPos($iButton7, $iPos[2] - 80, 0, 80, 20)
GUICtrlSetPos($iButton8, $iPos[2] - 80, 20, 80, $iPos[3] - 40)
GUICtrlSetPos($iButton9, $iPos[2] - 80, $iPos[3] - 20, 80, 20)
EndSwitch
EndSwitch
EndFunc
Файл: ISubclass.rar
Снимок:
История версий:
1.0
Список функций:
ISubclassStartup - Открывает Dll
ISubclassRegister - Регистрирует функцию для обработки сообщений окна
ISubclassRegisterEx - Регистрирует функцию для обработки сообщений контрола
ISubclassUnregister - Закрывает зарегистрированную функцию
ISubclassShutdown - Закрывает Dll
ISubclassRegister - Регистрирует функцию для обработки сообщений окна
ISubclassRegisterEx - Регистрирует функцию для обработки сообщений контрола
ISubclassUnregister - Закрывает зарегистрированную функцию
ISubclassShutdown - Закрывает Dll
Источник: autoit-script.ru
Автор(ы): Viktor1703