Změna textu v ToolTipu (Win32 API) – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Změna textu v ToolTipu (Win32 API) – C / C++ – Fórum – Programujte.comZměna textu v ToolTipu (Win32 API) – C / C++ – Fórum – Programujte.com

 

Daewoo
~ Anonymní uživatel
6 příspěvků
25. 7. 2010   #1
-
0
-

Zdravím,

chci se optat, zda existuje možnost měnit jednou nastavený text v prvku ToolTip. Zkoušel jsem přes SetWindowText, to nefunguje, následné pokusy přes opětovné volání zprávy TTM_ADDTOOL s novým řetězcem taktéž nepomáhá, v dokumentaci se mi nic nalézt nepodařilo. Za jakékoli nakopnutí díky. Zde předkládám ukázku kódu:

// globalni promenne


TOOLINFO ti;
LPWSTR text;

// kus kodu v inicializacni funkci

hwndToolTip = CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS, NULL, WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP, 0, 0, 0, 0, hwndHlavniOkno, NULL, NULL, NULL);
SetWindowPos(hwndToolTip, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
SendMessage(hwndToolTip, TTM_SETDELAYTIME, TTDT_INITIAL, 0);
SendMessage(hwndToolTip,TTM_SETDELAYTIME , TTDT_RESHOW, 0);
ti.cbSize = sizeof(TOOLINFO);
ti.uFlags = TTF_TRACK;
ti.hwnd = NULL;
ti.hinst = NULL;
text = new wchar_t[100];
text = TEXT("A");
ti.lpszText = text;
SendMessage(hwndToolTip, TTM_ADDTOOL, 0, (LPARAM) (LPTOOLINFO) &ti);

// kus kodu v callback fci

case WM_HSCROLL: {
int hodnota = SendMessage(hwndTrackBar, TBM_GETPOS, 0, 0);
swprintf(text, 100, TEXT("%d"), hodnota);
SetWindowText(hwndStavovyRadek, text); // toto funguje bez problemu
SetWindowText(hwndToolTip, text);
ti.lpszText = text;
SendMessage(hwndToolTip, TTM_ADDTOOL, 0, (LPARAM) (LPTOOLINFO) &ti);
RECT souradnice2;
GetWindowRect(hwndTrackBar, &souradnice2);
SendMessage(hwndToolTip, TTM_TRACKPOSITION, 0, (LPARAM)MAKELPARAM(souradnice2.left + hodnota*9 + 2, souradnice2.top-20));
SendMessage(hwndToolTip, TTM_TRACKACTIVATE,(WPARAM)TRUE,(LPARAM)&ti);
break;
}

Nahlásit jako SPAM
IP: 90.180.240.–
liborb
~ Redaktor
+18
Guru
26. 7. 2010   #2
-
0
-

Jsou 2 možnosti. Tu první ty nechceš :smile1: , a to je nastavení textu pro každé nové zobrazení přes callback. Ve struktuře TOOLINFO místo textu dáš LPSTR_TEXTCALLBACK a následně budeš obsluhovat notifikaci TTN_GETDISPINFO.

Druhá varianta je asi ta, co chceš ty - měnit text v zobrazeném tooltipu. Na to bude asi nejlepší ukázka funkčního kódu změny textu:




TOOLINFO sToolInfo;
wchar_t wzTemp[128]

sToolInfo.cbSize = sizeof(TOOLINFO);
sToolInfo.uFlags = TTF_TRACK;
sToolInfo.hwnd = NULL;
sToolInfo.hinst = NULL;
sToolInfo.uId = 0;
sToolInfo.lpszText = wzTemp;

sToolInfo.rect.left = 0;
sToolInfo.rect.top = 0;
sToolInfo.rect.right = 0;
sToolInfo.rect.bottom = 0;

::SendMessage(m_hIconicTooltip, TTM_UPDATETIPTEXT, 0, (LPARAM)(LPTOOLINFO)&sToolInfo);
::SendMessage(m_hIconicTooltip, TTM_TRACKACTIVATE, true, (LPARAM)(LPTOOLINFO)&sToolInfo);


Jednou při vytvoření musíš samo volat TTM_ADDTOOL atd.

Nahlásit jako SPAM
IP: 85.207.166.–
Daewoo
~ Anonymní uživatel
6 příspěvků
27. 7. 2010   #3
-
0
-

Mockrát díky, problém se mi již však podařilo vyřešit prostřednictvím zprávy TTM_SETTOOLINFO. Funguje tedy více možností.

Nahlásit jako SPAM
IP: 90.180.240.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 94 hostů

Podobná vlákna

Win32 API — založil survik1

Správy v Win32 API — založil Rišo Kakaš

CHECKBOX WIN32 API — založil Loli

Kniha o Win32 Api — založil petris123

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý