Что нового

При смене стиля окна исчезает иконка

joiner

Модератор
Локальный модератор
Сообщения
3 036
Репутация
504
Как это победить?
пример кода
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
$Form1 = GUICreate('Form1', 528, 358, -1, -1, $WS_POPUP)
$Button1 = GUICtrlCreateButton('Стиль', 24, 240, 75, 25)
$Button2 = GUICtrlCreateButton('Иконка', 240, 248, 75, 25)
GUISetState(@SW_SHOW)
Local $stl

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			If Not $stl Then
				GUISetStyle(BitOR($WS_POPUP, $WS_THICKFRAME))
				$stl = 1
			Else
				GUISetStyle($WS_POPUP)
				$stl = 0
			EndIf
		Case $Button2
			$pic = GUICtrlCreateIcon('', -1, 50, 50, 32, 32)
			GUICtrlSetImage($pic, 'icon.ico')
	EndSwitch
WEnd
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3 036
Репутация
504
решил проблему. у меня настройка ресайза элемента шла перед установкой иконки.
вот решение
Код:
$pic = GUICtrlCreateIcon('', -1, 50, 50, 32, 32)
			GUICtrlSetImage($pic, 'icon.ico')
			GUICtrlSetResizing(-1, BitOR($GUI_DOCKWIDTH, $GUI_DOCKLEFT, $GUI_DOCKTOP, $GUI_DOCKHEIGHT))

если указать сразу поведение элемента при ресайзе окна, то она будет видима в любом случае. а стиль $WS_THICKFRAME приводит к изменению окна. поэтому и исчезает икона.
что на самом деле - я не знаю. это мои рассуждения. а может просто баг языка

или сразу создавать элемент с иконкой
Код:
$pic = GUICtrlCreateIcon('icon.ico', -1, 50, 50, 32, 32)

тогда можно не указывать ресайз и менять динамически иконку и стиль окна.
короче, только с этим элементом такая проблема. с элементом Pic все норм
 
Верх