Что нового

[Элементы GUI] Не отображается текст в Label при использовании стилей

Myxa

Новичок
Сообщения
6
Репутация
0
Хотел сделать Label с красивой рамкой и обломился - текст в ней не отображается, как будто его там нет.

Код:
#include <StaticConstants.au3>

$gui = GUICreate ("Test GUI", 200, 50, 200, 200)
GuiSetState (@SW_SHOW, $gui)

GUICtrlCreateLabel ("TEST Label", 10, 10, 180, 30, BitOR ($SS_NOTIFY, $SS_LEFT, $SS_ETCHEDFRAME))

Sleep (2000)

Убираю $SS_ETCHEDFRAME и текст появляется, но рамки нет.

В чём может быть проблема ?

Среда: AutoIt 3.3.6.1; SciTE Lite 1.79; Windows 7 Premium x64 SP1 русская.
 

Pelerin

Осваивающий
Сообщения
81
Репутация
23
Myxa
Windows 7 Premium x64 SP1 русская
Это отпадает. У меня на XP SP3 32bit тоже не пашет :(
Зато можно поставить трехмерные рамки с помощью расширенных стилей ($WS_EX_DLGMODALFRAME; $WS_EX_OVERLAPPEDWINDOW; $WS_EX_STATICEDGE; $WS_EX_WINDOWEDGE)
Похоже на баг...
 

SECTOR

Продвинутый
Сообщения
399
Репутация
59
Код:
#include <WindowsConstants.au3>
#include <StaticConstants.au3>

$gui = GUICreate ("Test GUI", 200, 50, 200, 200)
GuiSetState (@SW_SHOW, $gui)

GUICtrlCreateLabel ("TEST Label", 10, 10, 180, 30, BitOR ($SS_NOTIFY, $SS_LEFT, $WS_BORDER))

Sleep (2000)
 

Pelerin

Осваивающий
Сообщения
81
Репутация
23
SECTOR, просто фаталити!!! :laugh:

А у меня вот что получилось:
Код:
#include <StaticConstants.au3>
#include <GUIConstants.au3>
#include <ButtonConstants.au3>

$gui = GUICreate ("Test GUI", 200, 50, 200, 200)

GUICtrlCreateGroup ('', 10, 10, 180, 30, $BS_FLAT)
GUICtrlCreateLabel ("TEST Label", 20, 20, 160, 15, $SS_CENTER+$SS_CENTERIMAGE)
GuiSetState (@SW_SHOW, $gui)

Do
Until GUIGetMsg()=$gui_event_close


Конечно не ординарно но тоже выход...И эффект прикольный...
:rofl: :rofl: :rofl: :rofl: :rofl: :rofl:
 
Автор
M

Myxa

Новичок
Сообщения
6
Репутация
0
Pelerin, SECTOR - вы оба правы. Некоторые стили работают.
Основные: $WS_BORDER и $SS_SUNKEN.
Расширенные: $WS_EX_DLGMODALFRAME, $WS_EX_OVERLAPPEDWINDOW, $WS_EX_STATICEDGE.

Но я вообще то хотел $SS_ETCHEDFRAME...
Сейчас я обошёл эту проблему - создаю две Label, наложенные друг на друга. Первая со стилем $SS_ETCHEDFRAME, вторая - обычная и меньше первой на 2 пикселя с каждой стороны.

Как то так:
Код:
GUICtrlCreateLabel ("", 5, 5, 125, 25, $SS_ETCHEDFRAME)
GUICtrlCreateLabel ("Test Label", 7, 7, 121, 21, BitOR ($SS_CENTER, $SS_CENTERIMAGE))

Но хотелось бы на будущее понять - это я глючу или AutoIt ? :smile: Или что-то ещё...?
 

Pelerin

Осваивающий
Сообщения
81
Репутация
23
Myxa, почему именно этот стиль?

Вариант Sector'а правильный. Многие стили действительно работают в нескольких элеметах. Это так и должно обыть, т.к. многие элементы в Autoit являются лишь видоизмениями других (особенно Button). С точки зрения Windows Label - это тот-же Button, но без рамки и обработки клика. :smile:

Еще: код лучше оформлять тегом
Код:
(черная кнопочка). Тогда он будет крассивый и цветной.  8)

PS: если ты используешь русскую справку и последнюю версию Autoit то в новой версии такого стиля $SS_ETCHEDFRAME вообще может не быть.
 
Автор
M

Myxa

Новичок
Сообщения
6
Репутация
0
Почему, почему... Патамушта! :smile: Нравится и всё тут.
В английской версии справки от последней версии AutoIt - этот стиль есть.

Про "черную кнопочку" не знал. Учту. Спасибо!
 
Верх