- Сообщения
- 8,673
- Репутация
- 2,486
Пример:
а теперь пробуем закрыть GUI крестиком в заголовке...
не закрывается, верно? а если добавить к стилю $WS_SIZEBOX, то и размер нельзя будет изменить...
это видимо разработчики при добавлении этого стиля (ведь как я понимаю это не стандартный стиль), забыли проверять область управления, вот пример который делает тоже самое:
а нужно так:
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$hGUI = GUICreate("Test Script", 300, 200, -1, -1, -1, $WS_EX_CONTROLPARENT)
GUISetState(@SW_SHOW, $hGUI)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
а теперь пробуем закрыть GUI крестиком в заголовке...
не закрывается, верно? а если добавить к стилю $WS_SIZEBOX, то и размер нельзя будет изменить...
это видимо разработчики при добавлении этого стиля (ведь как я понимаю это не стандартный стиль), забыли проверять область управления, вот пример который делает тоже самое:
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$hGUI = GUICreate("Test Script", 300, 200, -1, -1, BitOr($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU, $WS_SIZEBOX))
GUISetState(@SW_SHOW, $hGUI)
GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam)
Return 2
EndFunc
а нужно так:
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
$hGUI = GUICreate("Test Script", 300, 200, -1, -1, BitOr($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU, $WS_SIZEBOX))
GUISetState(@SW_SHOW, $hGUI)
GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam)
Local $iRet = _WinAPI_DefWindowProc($hWnd, $iMsg, $iwParam, $ilParam)
If $iRet = 1 Then
Return 2
EndIf
Return $iRet
EndFunc