amel27,
Цитата:
ИМХО от WM_SETREDRAW толку мало - оно не отличается от @SW_LOCK
|
То же самое мне на оф. форуме сказали
Цитата:
Может для установки размера использовать специальное полупрозрачное окно?
|
На своё же удивление, я
написал функцию для отката состояния “Отображать содержимое окна при перетаскивании”, это всего лишь для демонстрации того, что именно мне требуется сделать (видимо мой Английский ещё сыроват, ну или до кое кого медленно доходит

)...
И вот на основе этого примера (полагаю), мне подкинули идею (а точнее готовый пример с решением), ведь на момент растягивания/смещения окна, можно отключать режим “Отображать содержимое окна при перетаскивании”, а потом восстанавливать старое состояние (как я только сам до этого не додумался)...
Код:

#include <GUIConstants.au3>
Global Const $WM_EXITSIZEMOVE = 0x232
Global Const $WM_SYSCOMMAND = 0x0112
Global Const $SC_MOVE = 0xF010
Global Const $SC_SIZE = 0xF000
Global $Old_Param
$Gui = GUICreate("GUI", 200, 400, -1, -1, $WS_SIZEBOX)
GUIRegisterMsg($WM_EXITSIZEMOVE, "WM_EXITSIZEMOVE")
GUIRegisterMsg($WM_SYSCOMMAND, "WM_SYSCOMMAND")
$Button = GUICtrlCreateButton("Button", 50, 100, 100, 21)
GUISetState(@SW_SHOW)
While 1
Switch GUIGetMsg()
Case -3
Exit
EndSwitch
WEnd
Func WM_SYSCOMMAND($hWnd, $Msg, $wParam, $lParam)
Switch BitAND($wParam, 0xFFF0)
Case $SC_MOVE, $SC_SIZE
;Local Const $SPI_SETDRAGFULLWINDOWS = 37
;Local Const $SPI_GETDRAGFULLWINDOWS = 38
;Local Const $SPIF_SENDWININICHANGE = 2
Local $tBool = DllStructCreate("int")
DllCall("user32.dll", "int", "SystemParametersInfo", "int", 38, "int", 0, "ptr", DllStructGetPtr($tBool), "int", 0)
$Old_Param = DllStructGetData($tBool, 1)
DllCall("user32.dll", "int", "SystemParametersInfo", "int", 37, "int", 0, "ptr", 0, "int", 2)
EndSwitch
EndFunc
Func WM_EXITSIZEMOVE()
DllCall("user32.dll", "int", "SystemParametersInfo", "int", 37, "int", $Old_Param, "ptr", 0, "int", 2)
EndFunc
То что нужно! Спасибо!
Я так понял тут возвращается идентификатор контроля? мне просто нужно сравнивать с элементами моего ГУИ, а там как известно обычная нумерация элементов, я конечно использовал
GuiCtrlGetHandle, а на возвращённое значение от функции
_ControlGetHovered() использовал
Hwnd, но вот хотелось бы узнать, возможно ли конвертировать этот самый идентификатор в то же число, как и возвращает элемент GUI? (чтобы можно было просто использовать стандартные функци для чтения данных от GUI, типа
GuiCtrlRead()).