Implementace bublinových popisků
Popisy bublin se podobají standardním popisům, ale zobrazují se v kresleném stylu "bublina" se stopou ukazující na nástroj. Popisy bublin můžou být jednoduché nebo víceřádkové. Vytvářejí se a zpracovávají stejným způsobem jako standardní popisy.
Výchozí umístění kmene a obdélníku je znázorněno na následujícím obrázku. Pokud je nástroj příliš blízko horního okraje obrazovky, zobrazí se popisek níže a vpravo od obdélníku nástroje. Pokud je nástroj příliš blízko pravé straně obrazovky, platí podobné principy, ale popis se zobrazí nalevo od obdélníku nástroje.
se zobrazí bublinový popis s jedním řádkem textu.
Výchozí umístění můžete změnit nastavením příznaku TTF_CENTERTIP v uFlags parametru struktury TOOLINFO. V takovém případě kmen obvykle odkazuje na střed dolního okraje obdélníku nástroje a textový obdélník se zobrazí přímo pod nástrojem. Kmen se připojí k textovému obdélníku uprostřed horního okraje. Pokud je nástroj příliš blízko dolní části obrazovky, je obdélník textu vystředěn nad nástrojem a stopka se připojí ke středu dolního okraje.
Následující obrázek znázorňuje popis, který je na nástroji zarovnaný na střed.
Chcete-li určit, kam míří stopka, nastavte příznak TTF_TRACK v členu uFlags struktury popisu nástroje TOOLINFO. Souřadnice pak zadáte odesláním TTM_TRACKPOSITION zprávy se souřadnicemi x a y v hodnotě lParam. Pokud je nastavena i TTF_CENTERTIP, kmen stále odkazuje na pozici určenou TTM_TRACKPOSITION zprávou.
Co potřebujete vědět
Technologie
Požadavky
- C/C++
- Programování uživatelského rozhraní systému Windows
Instrukce
Implementujte bublinové popisky
Následující příklad kódu ukazuje, jak implementovat vycentrovanou bublinovou nápovědu pomocí stylu ovládacího prvku 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 );
}
Související témata