Показать сообщение отдельно

  #41  
Старый 02.11.2019, 16:27
ImPasha
Познавший АНТИЧАТ
Регистрация: 28.10.2017
Сообщений: 1,778
С нами: 4495573

Репутация: 183


По умолчанию

Простенькая функция, которая позволяет рисовать поле для ввода в ImGUI с текстовой подсказкой на нём. Подсказка пропадает, если пользователь выделяет поле для ввода нажатием на него, либо вводит какую-либо информацию. Может быть проблема с Y-смещением, рекомендуется использовать стандартный стиль ImGUI.

C++:





Код:
static
bool
InputTextWithPH
(
const
char
*
placeholder
,
const
char
*
text
,
char
*
buf
,
size_t buf_size
,
ImGuiInputTextFlags flags
=
0
,
ImGuiInputTextCallback callback
=
(
ImGuiInputTextCallback
)
0
,
void
*
user_data
=
(
void
*
)
0
)
{
ImVec2 cursor
[
2
]
;
cursor
[
0
]
=
ImGui
::
GetCursorPos
(
)
;
bool
result
=
ImGui
::
InputText
(
text
,
buf
,
buf_size
,
flags
,
callback
,
user_data
)
;
if
(
placeholder
!=
NULL
&&
strlen
(
placeholder
)
>
0
)
{
if
(
!
ImGui
::
IsItemActive
(
)
&&
strlen
(
buf
)
==
0
)
{
cursor
[
1
]
=
ImGui
::
GetCursorPos
(
)
;
ImGui
::
SetCursorPos
(
ImVec2
(
cursor
[
0
]
.
x
+
5
,
cursor
[
0
]
.
y
+
2
)
)
;
ImGui
::
Text
(
placeholder
)
;
ImGui
::
SetCursorPos
(
cursor
[
1
]
)
;
}
}
return
result
;
}
// Пример использования
InputTextWithPH
(
u8
"Любой текст"
,
"##t1"
,
testText
,
sizeof
testText
)
;


В новых версиях ImGUI есть стандартная функция InputTextWithHint, использовать лучше её!
 
Ответить с цитированием