Что нового

Как УБРАТЬ стиль с помощью GUICtrlSetStyle?

Suppir

Продвинутый
Сообщения
967
Репутация
62
При создании GUICtrlCreateEdit я добавил ему свойство $ES_MULTILINE (поддержка мультистрок). В некоторый момент времени я хочу отключить этот стиль и "распрямить" строки. Я понял, что изменение стилей делается через функцию GUICtrlSetStyle. Но у меня получается только установить новые стили, в то время как я хочу удалить уже установленный стиль $ES_MULTILINE. Как это сделать?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Код:
Func _SetStyle($hWnd, $iStyle, $fSet)

	If Not IsHWnd($hWnd) Then
		$hWnd = GUICtrlGetHandle($hWnd)
		If $hWnd = 0 Then
			Return
		EndIf
	EndIf

	Local $Style = _WinAPI_GetWindowLong($hWnd, $GWL_STYLE)

	If $fSet Then
		If Not BitAND($Style, $iStyle) Then
			$Style += $iStyle
		EndIf
	Else
		If BitAND($Style, $iStyle) Then
			$Style -= $iStyle
		EndIf
	EndIf
	_WinAPI_SetWindowLong($hWnd, $GWL_STYLE, $Style)
EndFunc   ;==>_SetStyle
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Для того, чтобы убрать какой-то определенный стиль (определенный бит), нужно сперва получить значения стилей, а функции GUICtrlGetStyle() нет.
 

ynbIpb

Скриптер
Сообщения
399
Репутация
110
как вариант: применить дефолтный стиль?
 

Acid Burn

Новичок
Сообщения
11
Репутация
0
Ув. Yashied, подскажите пожалуйста, я не совсем понял вашу функцию.
Есть к примеру
Код:
$Input = GUICtrlCreateInput("", 230, 117, 341, 21, $ES_READONLY)
, в нем стоит для инпута только чтение, как его убрать(тоесть сделать доступным на запись)?
 

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
Acid Burn
Код:
$Input = GUICtrlCreateInput("", 230, 117, 341, 21)
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
Не работает GUICtrlSetStyle, не могу разобраться.
Пример http://pastebin.com/7gqQ3DsM
 
Верх