Megosztás:


In-Place tooltippek megvalósítása

A helyben megjelenő leírások a kivágott objektumok szövegének megjelenítésére szolgálnak. Illusztráció: Tudnivalók az elemleírás-vezérlőkről.

A szokásos és a helyben lévő elemleírások közötti különbség a pozicionálás. Alapértelmezés szerint, ha az egérmutató egy olyan régióra mutat, amelyhez elemleírás van társítva, az elemleírás a régió mellett jelenik meg. Az elemleírások azonban ablakok, és bárhol elhelyezhetők, ha meghívja SetWindowPos. Helyben megjelenő eszköztipp létrehozása azt jelenti, hogy az eszköztipp ablakát úgy helyezzük el, hogy az átfedje a szöveget.

Amit tudnia kell

Technológiák

Előfeltételek

  • C/C++
  • Windows felhasználói felület programozása

Előírás

In-Place elemleírás elhelyezése

A helyhez tartozó elemleírások elhelyezésekor három téglalapot kell nyomon követnie:

  1. A teljes címkeszöveget körülvevő téglalap.
  2. Az elemleírás szövegét körülvevő téglalap. Az elemleírás szövege megegyezik a teljes felirat szövegével, és általában azonos méretű és betűtípusú. A két szöveges téglalap így általában azonos méretű lesz.
  3. Az eszköztipp ablak téglalapja. Ez a téglalap valamivel nagyobb, mint a hozzá tartozó elemleírás-szöveg téglalap.

A három téglalap séma szerint jelenik meg az alábbi ábrán. A címkeszöveg rejtett részét szürke háttér jelzi.

diagram egy hosszú karakterláncot ábrázol, amelynek a fele szürke háttérrel rendelkezik, majd ugyanaz a karakterlánc egy nagyobb eszköztipp ablak téglalapban található

Ha helyben szeretne tooltipet létrehozni, úgy kell elhelyeznie az elemleírás szöveg téglalapját, hogy az átfedje a címkeszöveg téglalapját. A két téglalap igazításának eljárása viszonylag egyszerű:

  1. Határozza meg a felirat szövegének téglalapját.
  2. Helyezze az elemleírás ablakát úgy, hogy az elemleírás szöveg téglalapja átfedje a címkeszöveg téglalapját.

A gyakorlatban általában elegendő a két szöveges téglalap bal felső sarkának igazítása. Ha megpróbálja az elemleírás szövegének téglalapját pontosan a felirat szövegének téglalapjához méretezni, az problémákat okozhat az elemleírások megjelenítésekor.

Ezzel az egyszerű sémával az a probléma, hogy az elemleírás szövegének téglalapja nem helyezhető el közvetlenül. Ehelyett az elemleírás ablak téglalapját éppen annyira fölé és balra kell elhelyeznie a felirat szöveg téglalapjától, hogy a két szöveges téglalap sarkai egybeessenek. Más szóval, ismernie kell az "eszköztipp" ablak téglalapja és a benne lévő szöveg téglalapja közötti eltolást. Általánosságban elmondható, hogy ennek az eltolásnak nincs egyszerű meghatározási módja.

In-Place elemleírások implementálása

Az alábbi kódrészlet bemutatja, hogyan használható a TTM_ADJUSTRECT üzenet egy TTN_SHOW kezelőben az eszköztipp helyszíni megjelenítéséhez. Az alkalmazás azt jelzi, hogy a címkeszöveg csonkolva van azzal, hogy a privát fMyStringIsTruncated változót TRUEértékre állítja. A kezelő meghív egy alkalmazás által definiált függvényt, GetMyItemRect, hogy lekérje a címke szövegmezőjét. Ezt a téglalapot a TTM_ADJUSTRECTmetódussal továbbítják a tooltip vezérlőhöz, amely a megfelelő ablak téglalapot adja vissza. SetWindowPos meghívásával az elemleírást a címke fölé helyezheti.

case TTN_SHOW:
            
    if (fMyStringIsTruncated) 
    {
        RECT rc;
        
        GetMyItemRect(&rc);
        
        SendMessage(hwndToolTip, TTM_ADJUSTRECT, TRUE, (LPARAM)&rc);
        
        SetWindowPos(hwndToolTip, NULL, rc.left, rc.top, 0, 0, 
                     SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE);
    }

Ez a példa nem módosítja az elemleírás méretét, csak a pozícióját. A két szöveges téglalap a bal felső sarokban van igazítva, de nem feltétlenül ugyanazokkal a dimenziókkal. A gyakorlatban a különbség általában kicsi, és ez a megközelítés a legtöbb célra ajánlott. Bár elvileg a SetWindowPos használatával átméretezheti és áthelyezheti az eszköztippet, ennek kiszámíthatatlan következményei lehetnek.

Megjegyzések

A gyakori vezérlők 5.80- leegyszerűsíti a beépített eszköztippek használatát egy új üzenet, TTM_ADJUSTRECThozzáadásával. Küldje el ezt az üzenetet annak a címkeszöveg-téglalapnak a koordinátáival, amelyet át szeretne fedni az elemleírással, és visszaadja a megfelelő helyen lévő elemleírás-ablak téglalapjának koordinátáit.

Eszköztipp-vezérlők használata