Как называется, а главное, как вызвать это окошко через C++
Здравствуйте. Я столкнулся c задачей, которая требует вывод такого окна со своим текстом. Но, к своему стыду, я даже не знаю, как оно называется, не говоря уже о вызове его. Так что, я спрашиваю у Вас:
Как его вызвать и как оно называется? Спасибо за то, что решили посмотреть вопрос и спасибо за ответы :)
Ответы (1 шт):
Автор решения: Павел Ериков
→ Ссылка
Если через WinApi, то вот пример создания такого окна (которое называется ToolTip):
// Описание:
// Создает всплывающую подсказку для элемента в диалоговом окне
// Параметры:
// idTool - идентификатор элемента диалогового окна.
// nDlg - дескриптор диалогового окна
// pszText - текст в сплывающей подсказке.
// Возвращает:
// Дескриптор самой всплывающей подсказки
//
HWND CreateToolTip(int toolID, HWND hDlg, LPSTR pszText) {
//Проверка входных аргументов
if (!toolID || !hDlg || !pszText)
{
return FALSE;
}
//Получаем дескриптор окна у которой будет подсказка
HWND hwndTool = GetDlgItem(hDlg, toolID);
//Создаем дескриптор самой подсказки указывая родителя hDlg
HWND hwndTip = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL,
WS_POPUP | TTS_ALWAYSTIP | TTS_BALLOON,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
hDlg, NULL,
hInst, NULL);
//Проверка что был получен дескриптор и создан дескриптор подсказки
if (!hwndTool || !hwndTip) {
return (HWND)NULL;
}
//Заполняем информацию о подсказке
//прикрепляя ее к hDlg
TOOLINFO toolInfo = { 0 };
toolInfo.cbSize = sizeof(toolInfo);
toolInfo.hwnd = hDlg;
toolInfo.uFlags = TTF_IDISHWND | TTF_SUBCLASS;
toolInfo.uId = (UINT_PTR)hwndTool;
toolInfo.lpszText = pszText;
SendMessage(hwndTip, TTM_ADDTOOL, 0, (LPARAM)&toolInfo);
//Возвращаем дескриптор
return hwndTip;
}
Дальше остается только создать например кнопку и привязать к ней эту подсказку.
Например в case WM_CREATE:
case WM_CREATE: {
hBtn = CreateWindow("button", "Test",
WS_CHILD | WS_VISIBLE | WS_BORDER,
50, 100, 120, 30, hWnd, (HMENU)101, hInst, NULL);
ShowWindow(hBtn, SW_SHOWNORMAL);
hTool = CreateToolTip(101, hWnd, (char*)"Test ToolTip");
break;
}
Результат:
Основа была взята от сюда
Замечание:
В проекте я указал использование многобайтовой кодировки и подключил библиотеку #include <CommCtrl.h>

