Что нового

[Элементы GUI] Не полностью прорисовывается Input при использовании $WS_CLIPCHILDREN

YOgen

Знающий
Сообщения
58
Репутация
5
При использовании $WS_CLIPCHILDREN не полностью прорисовывается GUICtrlCreateInput во второй вкладке, т.е. содержимое отображается, а рамка - нет. $WS_CLIPCHILDREN тут нужен для уменьшения мерцания при переключениях между вкладками.
Можно ли как-то победить эту напасть?

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

$hGUI = GUICreate("GUI", 300, 300, -1,-1, BitOR($GUI_SS_DEFAULT_GUI, $WS_CLIPCHILDREN))
$hTab = GUICtrlCreateTab(10,10, 280, 280)
GUICtrlCreateTabItem("1111")
GUICtrlCreateTabItem("2222")
$hInput = GUICtrlCreateInput("123", 40,120, 45,23)
GUICtrlCreateTabItem("")

GUISetState()

While 1
	$aGUIMsg = GUIGetMsg(1)
	Switch $aGUIMsg[1]
		Case $hGui
			Switch $aGUIMsg[0]
				Case $GUI_EVENT_CLOSE
					Exit
			EndSwitch
	EndSwitch
WEnd
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
Из справки по стилям сказал(а):
$WS_CLIPCHILDREN - Исключает перерисовку областей, занятых дочерними окнами при перерисовке родительского окна. Этот стиль применяется для родительского окна при его создании. Уменьшает мерцание окна при изменении его размера.
Вкладка Tab вероятнее считается как дочернее окно к которому "прикручено". Все же ясно как белый день
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
YOgen [?]
$WS_CLIPCHILDREN тут нужен для уменьшения мерцания при переключениях между вкладками.
Что это значит? Мерцание это многократная перерисовка окна. Как это связано с переключением вкладки?
 
Автор
YOgen

YOgen

Знающий
Сообщения
58
Репутация
5
MnM [?]
Вкладка Tab вероятнее считается как дочернее окно к которому "прикручено". Все же ясно как белый день
Все по-идее так и есть, НО меня интересует как можно было бы убрать эти мерцания и не портить визуально GUICtrlCreateInput (а уж с помощью чего это будет достигнуто - второстепенно).


AZJIO [?]
Что это значит? Мерцание это многократная перерисовка окна. Как это связано с переключением вкладки?
На второй GUICtrlCreateTabItem много элементов (не указывал их в примере) и при переключении на эту вкладку (Tab) или с нее на другую все элементы, как бы это можно было бы выразиться, моргают/мерцают (исчезаю и появляются с опозданием в доли секунды). Если же использовать при создании GUI стиль $WS_CLIPCHILDREN, то все намного красивее выглядит, за исключением пропадания рамки у GUICtrlCreateInput.

Надеюсь более-менее понятно выразился. :stars:


Причем, эти мерцания очень сильно заметны на Win7, а на WinXP все на много лучше...
 
Верх