Balloon Tips

BlitzMax Forums/MaxGUI Module/Balloon Tips

ChristianK(Posted 2006) [#1]
I wanted to add some balloon tooltips to my application
and it worked fine until i used a winxp theme manifest ( http://blitzbasic.com/Community/posts.php?topic=53082#593812 ).

When you click on the tooltip's gadget or point at the gadget
for about four seconds the tooltip won't be shown again.

Just try it with and without a manifest!

There are two separate files:
- a C++ file which contains a function to create the balloon tip
- the sample program
You will need MinGW and MaxGUI to compile it.

The C++ file (balloontip.cpp)
#include <windows.h>

#define _WIN32_IE 0x0500
#include <commctrl.h>

extern "C"
{

HWND tooltip;
int ICON_NOTIFY = 1;
int ICON_WARNING = 2;
int ICON_ERROR = 3;

int AddBalloonTip( HWND hwnd, char* text, char* title )
{
	tooltip = CreateWindowEx( 0, TOOLTIPS_CLASS, 0, WS_POPUP | TTS_NOPREFIX | TTS_BALLOON | TTS_ALWAYSTIP, 
								   0, 0, 0, 0, 
								   hwnd, NULL, GetModuleHandle( 0 ), 0 );
	
	RECT rc;
	GetClientRect( hwnd, &rc );
	
	TOOLINFO ti;
	ti.cbSize   = sizeof ( TOOLINFO );
	ti.hinst    = GetModuleHandle(0);
	ti.hwnd     = tooltip;    // tooltip hwnd 
	ti.lpszText = text; // tooltip for gadget
	ti.rect     = rc;
	ti.uFlags   = TTF_SUBCLASS | TTF_IDISHWND;
	ti.uId = (UINT)hwnd; // gadget hwnd to add tooltip

	SendMessage( tooltip, TTM_SETTITLEA, ICON_WARNING, (LPARAM)title );
	
	SendMessage( tooltip,
				 TTM_ADDTOOL, 
				 0, 
				 (LPARAM)(LPTOOLINFO)(&ti) );

	return 0;
}

}


The sample program
Import "balloontip.cpp"

Extern
	Function AddBalloonTip( hwnd:Int, text:Byte Ptr, title:Byte Ptr )
End Extern

Global window:TGadget = CreateWindow( "BalloonTip test", 100, 100, 300, 200, Null, WINDOW_TITLEBAR )
Global button:TGadget = CreateButton( "Point on me!", 105, 70, 80, 24, window )

AddBalloonTip( QueryGadget( button, QUERY_HWND ), "When you press this button, the tooltip will never come back.", "Warning" )

While True
	WaitEvent
	
	Select EventID( )
	
		Case EVENT_WINDOWCLOSE
			End
	
	End Select
Wend



ChristianK(Posted 2006) [#2]
Can you help me?