Что нового

Увеличение элемента Pic со стилем $SS_SUNKEN после GUICtrlSetImage

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Пример:

Код:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

$hGUI = GUICreate("Test Script", 300, 200)

$sImage = @AutoItExe & "\..\Examples\GUI\mslogo.jpg"
$iPic = GUICtrlCreatePic($sImage, 20, 40, 100, 30, $SS_SUNKEN)
;$iPic = GUICtrlCreatePic($sImage, 20, 40, 100, 30, -1, $WS_EX_DLGMODALFRAME)

GUISetState(@SW_SHOW, $hGUI)

For $i = 1 To 10
	GUICtrlSetImage($iPic, $sImage)
	Sleep(100)
Next

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


как видно с примера, размер элемента постоянно увеличивается. Это происходит если использовать стиль $SS_SUNKEN или расширенный стиль $WS_EX_DLGMODALFRAME (и ещё некоторые другие).

Баг или... что?
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
CreatoR
Пробуйте со стилем $SS_CENTERIMAGE, мне помогло.
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
CreatoR
Вероятно баг, с моей UDF все нормально:

http://autoit-script.ru/index.php?topic=18418.0
Код:
#Include "imWindow.au3"

$hImage = _GDIPlus_ImageLoadFromFile( @AutoItExe & "\..\Examples\GUI\mslogo.jpg" )

If _imWnd_Create( $Wnd, 300, 164 ) Then
	$hPic = _imCtrlPic_Create( $Wnd, $hImage, 5, 5, 0, 0, 0x0000000E, $WS_EX_DLGMODALFRAME ) ;SS_BITMAP
    ; ---
    $Wnd[$im_fInit] = True
    _imWnd_SetState( $Wnd )

	For $i = 1 To 5 Step 1
		_imCtrl_SetBitmap( $hPic, $hImage )
		Sleep( 100 )
	Next

    While Sleep( 10 )
        Switch $Wnd[$im_iMsg]
            Case -3
                ExitLoop

            Case 0
                ContinueLoop
        EndSwitch
        _imWnd_FreeMsg( $Wnd )
    WEnd
EndIf
_imWnd_Destroy( $Wnd )
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
CreatoR сказал(а):

Вероятно баг, т.к. если свернуть и развернуть окно, то все восстановится. Несколько тем на этот счет есть на официальном форуме, но, видимо, ничего не изменилось.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
CreatoR [?]
Мне тоже кажется, что это баг. Размеры реально увеличиваются и восстанавливаются. :smile:
Код:
#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$hGUI = GUICreate("Test Script", 300, 200)

$sImage = @AutoItExe & "\..\Examples\GUI\mslogo.jpg"
$iPic = GUICtrlCreatePic($sImage, 20, 40, 100, 30, $SS_SUNKEN)
$iBtn = GUICtrlCreateButton('Click me', 100, 150, 100, 30)

GUISetState()
$aPos = ControlGetPos($hGUI, '', $iPic)
ConsoleWrite('Create: ' & $aPos[2] & 'x' & $aPos[3] & @LF)

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
		Case $GUI_EVENT_RESTORE
			$aPos = ControlGetPos($hGUI, '', $iPic)
			ConsoleWrite('RESTORE: ' & $aPos[2] & 'x' & $aPos[3] & @LF)
		Case $GUI_EVENT_MINIMIZE
			$aPos = ControlGetPos($hGUI, '', $iPic)
			ConsoleWrite('MINIMIZE: ' & $aPos[2] & 'x' & $aPos[3] & @LF)
		Case $iBtn
			For $i = 1 To 10
				GUICtrlSetImage($iPic, $sImage)
				$aPos = ControlGetPos($hGUI, '', $iPic)
				ConsoleWrite($i & @TAB & $aPos[2] & 'x' & $aPos[3] & @LF)
				Sleep(100)
			Next
	EndSwitch
WEnd
 
Верх