Jak zaimplementować etykietki narzędzi balonowych
Etykietki narzędzi balonowych są podobne do standardowych etykietek narzędzi, ale są wyświetlane w stylu kreskówek "balon" z łodygą wskazującą narzędzie. Etykietki narzędzi balonowych mogą być jednowierszowe lub wielowierszowe. Są one tworzone i obsługiwane w podobny sposób jak standardowe etykietki narzędzi.
Na poniższej ilustracji przedstawiono domyślną pozycję łodygi i prostokąta. Jeśli narzędzie jest zbyt blisko górnej części ekranu, etykietka narzędzia pojawi się poniżej i po prawej stronie prostokąta narzędzia. Jeśli narzędzie jest zbyt blisko prawej strony ekranu, mają zastosowanie podobne zasady, ale etykietka narzędzia jest widoczna po lewej stronie prostokąta narzędzia.
Domyślne pozycjonowanie można zmienić, ustawiając flagę TTF_CENTERTIP w członie uFlags struktury TOOLINFO pomocniczej. W takim przypadku łodyga zwykle wskazuje środek dolnej krawędzi prostokąta narzędzia, a prostokąt tekstu jest wyświetlany bezpośrednio pod narzędziem. Łodyga dołącza się do prostokąta tekstowego w środku górnej krawędzi. Jeśli narzędzie jest zbyt blisko dolnej części ekranu, prostokąt tekstu jest wyśrodkowany nad narzędziem, a łodyga jest przymocowana do środka dolnej krawędzi.
Na poniższej ilustracji przedstawiono etykietkę narzędzia, która jest wyśrodkowana na narzędziu.
docelowej
Jeśli chcesz określić, gdzie wskazuje wskaźnik, ustaw flagę TTF_TRACK w członku uFlags struktury podpowiedzi TOOLINFO. Następnie określ współrzędną, wysyłając komunikat TTM_TRACKPOSITION ze współrzędnymi x i y w wartości lParam. Jeśli TTF_CENTERTIP jest również ustawiona, stem nadal wskazuje pozycję określoną przez komunikat TTM_TRACKPOSITION.
Co musisz wiedzieć
Technologie
Warunki wstępne
- C/C++
- Programowanie interfejsu użytkownika systemu Windows
Instrukcje
Implementowanie etykietek narzędzi balonowych
Poniższy przykładowy kod pokazuje, jak zaimplementować wyśrodkowaną wskazówkę balonową przy użyciu stylu kontrolki wskazówki balonowej TTS_BALLOON.
hwndToolTips = CreateWindow(TOOLTIPS_CLASS, NULL,
WS_POPUP | TTS_NOPREFIX | TTS_BALLOON,
0, 0, 0, 0, NULL, NULL, g_hinst, NULL);
if (hwndTooltip)
{
TOOLINFO ti;
ti.cbSize = sizeof(ti);
ti.uFlags = TTF_TRANSPARENT | TTF_CENTERTIP;
ti.hwnd = hwnd;
ti.uId = 0;
ti.hinst = NULL;
ti.lpszText = LPSTR_TEXTCALLBACK;
GetClientRect(hwnd, &ti.rect);
SendMessage(hwndToolTips, TTM_ADDTOOL, 0, (LPARAM) &ti );
}
Tematy pokrewne