Есть такой код:
Суть в том, что окно с какими-то элементами(занимающими большую часть площади) "накрыто" другим прозрачным окном, поддерживающим перетаскивание.
В Win 7 работает, а в XP нет.
Хотелось бы, чтобы и в XP можно было перемещать окно за любую часть, независимо от того, что находится под курсором.
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
$hGUI_1 = GUICreate('Test Script', 300, 200, -1, -1, $WS_POPUP)
GUIRegisterMsg($WM_NCHITTEST, 'WM_NCHITTEST')
$oIE = _IECreateEmbedded()
GUICtrlCreateObj($oIE, 0, 0, 200, 200)
GUICtrlSetBkColor(-1, 0xFF0000)
$hGUI_2 = GUICreate('Test Script', 300, 200, -1, -1, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOOLWINDOW), $hGUI_1)
GUIRegisterMsg($WM_NCHITTEST, 'WM_NCHITTEST')
GUIRegisterMsg($WM_MOVE, 'WM_MOVE')
GUISetState(@SW_SHOW, $hGUI_2)
GUISetState(@SW_SHOW, $hGUI_1)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func WM_NCHITTEST($hWnd, $iMsg, $wParam, $lParam)
Switch $hWnd
Case $hGUI_2
Return $HTCAPTION
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NCHITTEST
Func WM_MOVE($hWnd, $iMsg, $wParam, $lParam)
Switch $hWnd
Case $hGUI_2
Local $aPos = WinGetPos($hGUI_2)
If IsArray($aPos) Then
WinMove($hGUI_1, '', $aPos[0], $aPos[1])
EndIf
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_MOVE
Суть в том, что окно с какими-то элементами(занимающими большую часть площади) "накрыто" другим прозрачным окном, поддерживающим перетаскивание.
В Win 7 работает, а в XP нет.
Хотелось бы, чтобы и в XP можно было перемещать окно за любую часть, независимо от того, что находится под курсором.