Lovec
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору И второй вопрос. Вот есть код, позволяющий перетаскивать форму за любую ее часть. Код: ; Скрипт создает форму, которую можно перетаскивать за любую ее часть #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Opt ("MustDeclareVars", 1) Global $MouseCoordsOld[2] ; "старые" координаты мыши, т.е. ее координаты в момент нажатия ее левой кнопки Global $MouseCoordsNew[2] ; "новые" координаты мыши, т.е. ее координаты в момент отпускания ее левой кнопки Global $WinPos[4] ; текущие координаты окна Dim $fDragging = False ; флаг, показывающий, что форму тянут мышью Dim $nMsg, $h_HWND $h_HWND = GUICreate("", 268, 91, -1, -1, BitOR($WS_POPUP,$WS_CLIPSIBLINGS), $WS_EX_TOPMOST) GUISetBkColor(0x0A246A) GUICtrlCreateLabel("Нажми и тащи!", 70, 35, 170) GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0xA6CAF0) GUICtrlSetCursor (-1, 0) GUISetCursor (0) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $GUI_EVENT_MOUSEMOVE if $fDragging Then ; начинаем перетаскивать форму $MouseCoordsNew = MouseGetPos() $WinPos = WinGetPos ($h_HWND) WinMove($h_HWND, "", $WinPos[0] + $MouseCoordsNew[0] - $MouseCoordsOld[0], $WinPos[1] + $MouseCoordsNew[1] - $MouseCoordsOld[1]) $MouseCoordsOld[0] = $MouseCoordsNew[0] $MouseCoordsOld[1] = $MouseCoordsNew[1] EndIf Case $GUI_EVENT_PRIMARYDOWN $fDragging = True $MouseCoordsOld = MouseGetPos() Case $GUI_EVENT_PRIMARYUP ; отпустили левую кнопку мыши - закончили перетаскивание формы $fDragging = False EndSwitch WEnd | Вопрос. Нельзя ли сделать так, чтобы форма так не дергалась при перетаскивании? Чтобы как то плавнее все это было ... |