sterro_sasha
Новичок
- Сообщения
- 45
- Репутация
- 1
Доброго времени! Есть пример, при котором окно можно перетянуть за любую точку. Но как сделать так, чтобы это относилось не только к окну, но и к контроллу, например label?
Пока выход нашел такой - при наведении мышки на контролл, проверяю не зажата ли кнопка при помощи _IsPressed, далее определяю координаты и перемещаю окно в след за мышкой... Примерно как-то так. Все работает, но решение все равно не самое лучшее, хотелось бы именно как-то.. как вроде хука или как это называется.
Может есть у кого какие-то идеи? Хотя бы мысли..
Если кому-то интересно, вот приведены способы перемещения окна:
https://www.autoitscript.com/wiki/Moving_and_Resizing_PopUp_GUIs
Пока выход нашел такой - при наведении мышки на контролл, проверяю не зажата ли кнопка при помощи _IsPressed, далее определяю координаты и перемещаю окно в след за мышкой... Примерно как-то так. Все работает, но решение все равно не самое лучшее, хотелось бы именно как-то.. как вроде хука или как это называется.
Может есть у кого какие-то идеи? Хотя бы мысли..
Если кому-то интересно, вот приведены способы перемещения окна:
https://www.autoitscript.com/wiki/Moving_and_Resizing_PopUp_GUIs
OffTopic:
Ссылки странно вставляются.
Ссылки странно вставляются.
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <MenuConstants.au3>
#include <ColorConstantS.au3>
#include <GUIConstantsEx.au3>
Global $bMouseJumpToCaption = False
$hGUI = GUICreate("DRAG GUI", 240, 180, -1, -1)
$iLabel = GUICtrlCreateLabel('Но как учитывать и контролл?', 0, 0, 200, 40)
GUISetBkColor($COLOR_RED, $hGUI)
GUICtrlSetBkColor($iLabel,$COLOR_WHITE)
GUICtrlSetFont($iLabel, 12, Default, Default, 'Tahoma')
GUIRegisterMsg($WM_LBUTTONDOWN, "WM_LBUTTONDOWN")
GUISetState()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam)
If BitAND(WinGetState($hWnd), 32) Then
Return $GUI_RUNDEFMSG
EndIf
;DllCall("user32.dll", "int", "ReleaseCapture")
;DllCall("user32.dll", "int", "SendMessage", "hWnd", $hWnd, "int", 0xA1, "int", 2, "int", 0)
DllCall("user32.dll", "long", "SendMessage", "hwnd", $hWnd, "int", $WM_SYSCOMMAND, "int", ($bMouseJumpToCaption ? $SC_MOVE : 0xF009), "int", 0)
EndFunc ;==>WM_LBUTTONDOWN