Newsgroup: it.comp.programmare.win32
Titolo: [API] ToolTip, come funzionano?

Volevo aggiungere i ToolTip alla mia client area (che si trova in una
finestra client MDI). Tramite la funzione CreateToolTip inizializzo i
miei vari ToolTip (chiamo la funzione durante WM_CREATE) e poi passo
tutti i messaggi del mouse al tooltip con TTM_RELAYEVENT. Pero' non
accade nulla (InitCommonControls e' gia' inizializzato, librerie e
include sistemati).
Grazie.
***
HWND CreateToolTip (HWND hwnd) {
	HWND hwndTT;
	TOOLINFO ti;
	InitCommonControls(); //inizializza controlli 
   	 hwndTT = CreateWindow (TOOLTIPS_CLASS, (LPSTR) NULL,
		 TTS_ALWAYSTIP, CW_USEDEFAULT, CW_USEDEFAULT,
		 CW_USEDEFAULT, CW_USEDEFAULT, NULL, (HMENU) NULL, 	
		 hInst, NULL); //crea la tooltip 	
	//aggiunge i tooltip
	ti.cbSize = sizeof (TOOLINFO);
	 ti.uFlags = 0; 
        	ti.hwnd = hwnd; 
       	 ti.hinst = hInst; 
       	 ti.uId = (UINT) 0; 
       	 ti.lpszText = (LPSTR)TEXT("TOOLTIP DI PROVA"); 
       	 ti.rect = //specifico le coordinate dell'area client
        	SendMessage (hwndTT, TTM_ADDTOOL, 0, (LPARAM)
		 (LPTOOLINFO) &ti);
	SendMessage (hwndTT, TTM_ACTIVATE, (WPARAM)(BOOL) TRUE, 0);
	return hwndTT;  }
-- 
Scritto da Gordon
E-mail: 
tbe...@avpu.vg

Prima del TTM_RELAYEVENT prova a mandare anche un messaggio
TTM_UPDATETIPTEXT
SendMessage(hwndTT, TTM_UPDATETIPTEXT, 0, (LPARAM)(LPTOOLINFO)&ti);
"gordon" </*
cgo...@genie.com
*/> ha scritto nel messaggio
news:fmg4lvc9iqs244ob7...@4ax.com...


SendMessage(hwndTT, TTM_UPDATETIPTEXT, 0, (LPARAM)(LPTOOLINFO)&ti);
ma se io aggiungo piu' TOOLTIP in hwndTT, non salvo i vari TOOLINFO ti
(uso un ciclo dove riciclo sempre ti). Devo quindi salvarli tutti?


Io mi salvo i vari TOOLINFO in un array e poi li accedo da li'. Se non li
vuoi salvare puoi usare i vari messaggi relativi ai tooltip, li trovi sulla
guida SDK come TTM_xxxxx e TTN_xxxxx.
"gordon" </*
cgo...@genie.com
*/> ha scritto nel messaggio
news:s356lv8lpge152v37...@4ax.com...


guida SDK come TTM_xxxxx e TTN_xxxxx.
usero' anche io un comodo array.
provo se funziona.


guida SDK come TTM_xxxxx e TTN_xxxxx.
Non funziona ancora.
Ma qui e' corretto?
***
case WM_LBUTTONDOWN:
case WM_LBUTTONUP:
case WM_MBUTTONDOWN:
case WM_MBUTTONUP:
case WM_MOUSEMOVE: 
case WM_RBUTTONDOWN: 
case WM_RBUTTONUP: 
	SendMessage (hwndTT, TTM_UPDATETIPTEXT, 0,
		 (LPARAM)(LPTOOLINFO) ti [0]); //ti [0] dove ho
				//salvato il TOOLTIP creato
	SendMessage (hwndTT, TTM_RELAYEVENT, 0,
		 (LPARAM)(LPMSG) &message);
return 0;


Io prima di richiamare i SendMessage ho anche questo codice:
     MSG msg;
     msg.lParam = lParam;
     msg.wParam = wParam;
     msg.message = uMsg;
     msg.hwnd = hwnd;
Dove i parametri lParam, wParam, uMsg, hwnd sono quelli della window
procedure.
Poi, ma non so se va bene anche il tuo sistema, al messaggio
TTM_UPDATETIPTEXT non passo ti[0], ma prima copio il contenuto di ti[0] (o
ti[1], ecc) in una nuova variabile TOOLINFO tiInfo e passo &tiInfo.
"gordon" </*
cgo...@genie.com
*/> ha scritto nel messaggio
news:4vk6lvcpkfiv3f0em...@4ax.com...


ti[1], ecc) in una nuova variabile TOOLINFO tiInfo e passo &tiInfo.
provero' anche queste soluzioni.


ti[1], ecc) in una nuova variabile TOOLINFO tiInfo e passo &tiInfo.
penso di rinunciare a inserire un ToolTip nella mia applicazione,
visto che anche adesso non funziona.
Non e' che hai qualche link di qualche listato (o tutorial, o
qualsiasi altra cosa) dove mostra un'utilizzo del ToolTip?


 e risponde:
tutto a posto, ora.
Grazie :D
