Что нового

[Элементы GUI] Как отключить возможность перемещения мышью окна GUI?

foxtor

Новичок
Сообщения
3
Репутация
0
Код выдает картинку на переднем плане. Картинку можно перемещать мышью, требуется запретить это действие.
В аналогичную тему заходил, решить проблему не получается. :'(
http://autoit-script.ru/index.php?topic=6682.0

Код:
#Include <GUIConstantsEx.au3>
#Include <WindowsConstants.au3>
#include <Misc.au3>
#Include <GDIPlus.au3>
#Include <WinAPIEx.au3>

Global $hForm

Func1()
Do
Until GUIGetMsg() = -3

Func Func1()
_GDIPlus_Startup()
$hPng = _GDIPlus_ImageLoadFromFile(@ScriptDir&"\Modules.gif")
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hPng)
$hForm = GUICreate('', _GDIPlus_ImageGetWidth($hPng), _GDIPlus_ImageGetHeight($hPng), 200, 200,$WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST))
_WinAPI_UpdateLayeredWindowEx($hForm, 200, 200, $hBitmap, 255, 1)
_GDIPlus_ImageDispose($hPng)
_GDIPlus_Shutdown()
GUIRegisterMsg($WM_NCHITTEST, 'WM_NCHITTEST')
GUISetState()
WinSetOnTop ( $hForm, "", 1 )
EndFunc


Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam)
    Switch $hWnd
        Case $hForm
            Return $HTCAPTION
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NCHITTEST


Например, вот такое окно мышью не двигается, хотя стили одинаковые, $WS_POPUP :stars:
Код:
Func Func1()
$hForm = GUICreate('', 300, 200, 400, 500, $WS_POPUP,$WS_EX_TOPMOST)
$Pic1 = GUICtrlCreatePic(@ScriptDir&"\Modules.gif", 0, 0, 200, 100)
GUISetState()
EndFunc


Решено, спасибо Виктор! :laugh: Тему можно закрыть.
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Код:
#Include <GUIConstantsEx.au3>
#Include <WindowsConstants.au3>
#include <Misc.au3>
#Include <GDIPlus.au3>
#Include <WinAPIEx.au3>

Global $hForm

Func1()
Do
Until GUIGetMsg() = -3

Func Func1()
_GDIPlus_Startup()
$hPng = _GDIPlus_ImageLoadFromFile(@ScriptDir&"\Modules.gif")
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hPng)
$hForm = GUICreate('', _GDIPlus_ImageGetWidth($hPng), _GDIPlus_ImageGetHeight($hPng), 200, 200,$WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST))
_WinAPI_UpdateLayeredWindowEx($hForm, 200, 200, $hBitmap, 255, 1)
_GDIPlus_ImageDispose($hPng)
_GDIPlus_Shutdown()
GUISetState()
WinSetOnTop ( $hForm, "", 1 )
EndFunc
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
foxtor [?]
Картинку можно перемещать мышью, требуется запретить это действие
Если требуется запретить, то зачем изначально было позволять это делать?
WM_NCHITTEST как раз таки за движение и отвечает.
В принципе Viktor1703 это и сделал, он просто убрал функцию (а мог бы код и не клонировать, просто указать на ошибку).
 
Верх