Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Активная часть окна (http://forum.oszone.net/showthread.php?t=133843)

morgan1991 04-03-2009 23:03 1055183

Активная часть окна
 
Здравствуйте!
Есть окно со стилем $WS_POPUPWINDOW на Autoit 3.2.8.1
Как сделать чтобы в за определённую часть окна его можно было двигать мышкой?

Creat0R 05-03-2009 18:32 1055875

Создаём Label, и присваиваем ему стиль $GUI_WS_EX_PARENTDRAG:

Код:

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>

$GUI = GUICreate("Test Script", 300, 200, -1, -1, $WS_POPUPWINDOW)

GUICtrlCreateLabel("Drag me", 0, 10, 300, 20, $SS_CENTER, $GUI_WS_EX_PARENTDRAG)
GUICtrlSetFont(-1, 12, 800)

$Close_Button = GUICtrlCreateButton("Close", 20, 170, 60, 20)

GUISetState(@SW_SHOW, $GUI)

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE, $Close_Button
            Exit
    EndSwitch
WEnd


beve 05-03-2009 19:27 1055920

Цитата:

Цитата morgan1991
Как сделать чтобы в за определённую часть окна его можно было двигать мышкой? »

Вот есть скрипт CreatOR-a:
Код:

#include <WindowsConstants.au3>

Global $GUI = GuiCreate("Drag using any place on GUI", -1, -1, -1, -1, $WS_POPUPWINDOW)
$Close_Button =
GUICtrlCreateButton("Close", 5, 375, 60, 20)
GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")

GUISetState()

While 1
$Msg =
GUIGetMsg()
Switch $Msg
Case $Close_Button
Exit
EndSwitch
WEnd

Func
WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam)
If $hWnd = $GUI And $iMsg = $WM_NCHITTEST Then
Local
$id =
_API_DefWindowProc($hWnd, $iMsg, $iwParam, $ilParam)
If $id = 1 Then
Return
2
Else
Return
$id
EndIf
EndIf
EndFunc

Func
_API_DefWindowProc($hWnd, $iMsg, $iwParam, $ilParam)
Local $aResult
$aResult
=
DllCall("User32.dll", "int", "DefWindowProc", "hwnd", $hWnd, "int", $iMsg, "int", $iwParam, "int", $ilParam)
Return $aResult[0]
EndFunc

Я только кнопку добавил...

Еще есть код Diamond-а:
Код:

#include <GuiConstants.au3>
#include <WindowsConstants.au3>

Global
Const $WM_LBUTTONDOWN = 0x0201
$HWnd = GUICreate("DRAG_COMMAND",240,180,-1,-1,$WS_POPUPWINDOW)
$Close_Button =
GUICtrlCreateButton("Close", 5, 160, 60, 20)
GUIRegisterMsg($WM_LBUTTONDOWN,"DRAG_COMMAND")
GUISetState()

While 1
$msg =
GUIGetMsg(0)
Switch $msg
Case $GUI_EVENT_CLOSE,$Close_Button
Exit
EndSwitch
WEnd

Func
DRAG_COMMAND($HWnd,$command,$wParam,$lParam)
If BitAND(WinGetState($HWnd),32) Then Return
DllCall("user32.dll","long","SendMessage","hwnd",$HWnd,"int",$WM_SYSCOMMAND,"int",0xF009,"int",0)
EndFunc


Creat0R 05-03-2009 19:34 1055926

Цитата:

Цитата beve
есть скрипт CreatOR-a »

Есть, но в вопросе указано:

Цитата:

Цитата morgan1991
Как сделать чтобы в за определённую часть окна его можно было двигать мышкой? »

Т.е не повсюду :).

morgan1991 05-03-2009 23:09 1056100

Спасибо огромное, в очередной раз помогли! ОСЗоне форевер!!!


Время: 09:46.

Время: 09:46.
© OSzone.net 2001-