Change tooltips at runtime

This example demonstrates the various aspects of changing the text of the tool tips at runtime. It is far from perfect but does the job and has been stable in several application where I use it.

Need to override the OnToolTipText()

virtual afx_msg BOOL OnToolTipText(UINT nID, NMHDR* pNMHDR, LRESULT* pResult );
Add message handlers for
    ON_NOTIFY_EX_RANGE( TTN_NEEDTEXTW, 0, 0xFFFF, OnToolTipText)
    ON_NOTIFY_EX_RANGE( TTN_NEEDTEXTA, 0, 0xFFFF, OnToolTipText)
This is the handler.Also does UNICODE.
BOOL CToolTipView::OnToolTipText(UINT nID, NMHDR* pNMHDR, LRESULT* pResult )
{
    ASSERT ( pNMHDR->code == TTN_NEEDTEXTA || TTN_NEEDTEXTW );
	
    TOOLTIPTEXTA* pTTTA = ( TOOLTIPTEXTA *)pNMHDR;
    TOOLTIPTEXTW* pTTTW = ( TOOLTIPTEXTW *)pNMHDR;
	
    CString strTipText;
    CString strMessage;
	
    if( GetToolText(pNMHDR->idFrom, strTipText, strMessage))
    {
#ifndef _UNICODE
        if(pNMHDR->code == TTN_NEEDTEXTA)
            lstrcpyn(pTTTA->szText,strTipText,_countof(pTTTA->szText));
        else
            _mbstowcsz(pTTTW->szText,strTipText,_countof(pTTTW->szText));
#else
        if(pNMHDR->code == TTN_NEEDTEXTA)
            _wcstombsz(pTTTA->szText,strTipText,_countof(pTTTA->szText));
        else
            lstrcpyn(pTTTW->szText,strTipText,_countof(pTTTW->szText));
		
#endif
		
		// change status bar message here, need a pointer to CMainFrame
		// SetMessageText(strMessage);
		
		// ok we handled the message, return TRUE
		return TRUE;
	}
	
	// we did NOT handle the message, pass it on, this is important, don't miss it!
	return CToolTipView::OnToolTipText(nID,pNMHDR,pResult);
	
}

Here we do the actual work of changing the text. Each Item must be handled and can be done by a switch.

BOOL CToolTipView::GetToolText( UINT nID, CString& strTipText, CString& /*strMessage*)
{
    CString strFullString;
	
    switch( nID )
    {
	case ID_FILE_NEW:  // have to handle all toolbar tool tip messages here
	case ID_FILE_OPEN:
	case ID_FILE_SAVE:
	case ID_EDIT_CUT:
	case ID_EDIT_COPY:
	case ID_EDIT_PASTE:
	case ID_FILE_PRINT:
	case ID_APP_ABOUT:
		if (strFullString.LoadString(nID))
			AfxExtractSubString ( strTipText, strFullString, 1,'\n');
		break;
		
        // demonstrates how to change the tool tip for a specific button 
	case ID_CHANGE_TOOL_TIP:
		// local CString containg the new text, which you can set anytime at runtime
		// and will be displayed here when the user puts the mouse on the button.
		strTipText = m_strNewToolTipText;
		
		// if the user tried to enter a zero legth string, it could
		// cause confusion, so put the default sring back in
		if ( strTipText.GetLength()  ==  0 )  // then  put back the default string
		{
			if (strFullString.LoadString (ID_CHANGE_TOOL_TIP))
				AfxExtractSubString ( strTipText, strFullString, 1,'\n' );
		}
		break;
    }
	
    return TRUE;
}

A Note!

I wrote this code with the help of these mfc-l members about a year ago.
Michael Hupp, Kostya Sebov, Tim Hodgson, Thibault Mangold, Dicky Singh, David Little and David Elliot.

Download Zip File



Comments

  • the colorful felicity in my memoirs because of Beats By means of Dr. Dre Studio

    Posted by motherdhmm on 06/04/2013 11:08am

    [url=http://www.headphonescheaponlineaustralia.com/dre-beats-studio-c-66_68_71.html]beats studio[/url] Heinousness headphones in Australia more and more non-professional, more people throw away thebeats before Dre, a feature that was seen beside some lawbreakers affair opportunities, hence, followed by advertisement of hoax and poor products and markets, to manyconsumers in sadness, to spend a portion of shin-plasters to corrupt is not authentic beats through dre beats by Dre. Now, if you¡¯re reading this, then you are providential, the contemplating that the next wish be to present, purchase authentic beats by dre should be respected that the understanding of these later in the acquiring of a monstrosity headphones you can buy veritable the. [url=http://www.headphonescheaponlineaustralia.com/]beats by dre Australia[/url] We recollect the Monster Radio is the leading brand in the out of sight which developed the invigorated Audio and Video equipments union, the theatre troupe was established by means of before Chinese American Mr. Lee Mr Noel in 1979. And this name brand won lots of reputations from the music lovers recompense the chic originate and superb quality. Fully mining market demand and deepening benefit consciousness, establishing the care standard, in neatness to get the affirmation from the consumers. [url=http://blog.cheapbeatsbydre.co.nz/]beats by dre nz[/url] Some people say that to parrot Jordan, Kobe Bryant, this is not fake, but if the theory of the rare of their own accessories, and Bryant drink their own inimitable perception, which has a eximious relationship and he was Europe¡¯s fashion funds Milan grew up, from minuscule monasteriesBryant has been wearing all kinds of taste sunglasses, and occasionally there is a disconcerted diamond stud earrings, there is a distinguished ¡°Monster¡± consideration cups in their noggin ¨C ordered the Fiend headphones. he drive also own peculiar colors, standard innocent, there are violet and gold with the Lakers.

    Reply
  • hva vi fÃ¥r fra beats hodetelefoner

    Posted by mantouhmmm on 06/04/2013 05:11am

    [url=http://www.beatsdrenorge.webgarden.com/]beats by dre norge[/url] Musikk og filmer er også et godt valg for mødre som er interessert i det. Den aller beste av de og CDer kan passe inn i hennes gave kurv. Klassiske samlinger og også sanger annonse filmer fra barndommen kan faktisk gjøre henne oppriktig glad og gjøre henne gå tilbake igjen til tidligere tider. Du kan også bestemme sanger eller filmer som du har et minne med henne. Eller bare, gave henne med et utvalg av hennes favoritt movies.Chocolates og søtsaker er også et godt valg. For den saks skyld, kan du fylle gave kurv med hennes favoritt måltider stuffs eller en ting som hun ofte ønsket å ha og kunne aldri ha det. For mødre som liker hagearbeid, ikke nøl. Gå for de fineste frø eller gå for stiklinger av vakre blomster eller grønnsaker som gjør hennes hage fantastisk. [url=http://www.drebeatsbysnorge.blinkweb.com/]beats by dre norge[/url] Bestem deg for hva din mor ville elske den største og å pynte gaven kurv pakk den opp pent med noen gave papirer og sette på noen blomster og bånd på den. Sett også et bilde av deg og din mor innrammet i den. Hun er bare overskriften å virkelig liker det. For å toppe det hele, også inneholde beats by Dr Dre solo hd personlig kort, og det er på vei til å være utmerket gave til en ideell billige beats av Dre på Mors day.AKG-produsent av high-end hodetelefoner, mikrofoner og høyttalere i over 60 år, kunngjorde i dag tilgjengeligheten av sin K551 håndsett. De lukkede tilbake bokser har en massiv drivere og realistisk lyd Passiv støyisolering for pue nedsenking. [url=http://www.beatsdrenorge.webgarden.com/]Monster Beats norge[/url] En av de viktigste funksjonene i denne musikken maker er den har gratis video tutorials som viser deg hvordan du bruker musikk maker programvare. Veiledningene vil veilede deg om vennlig brukergrensesnitt av programvaren. Vil du være godt på vei til å lage beats på et blunk. Det eneste som holder deg tilbake er deg, så la de kunstneriske ferdigheter kommer out.Dub Turbo vil hjelpe alle som er seriøse om å lage beats, eller for den personen som er bare ute etter noe å fordrive tiden. Hovedsakelig er det for omtrent alle som er interessert i å lage musikk.

    Reply
  • kategorier:chi fladjern

    Posted by motherdhmm on 05/30/2013 12:26pm

    [url=http://www.blog.cheapbeatsbydre.co.nz/]beats by dre nz[/url] Til personlige kommer tilbage igen inde i det vilde hår direkte gør et forsøg på GHD låser hår-styling metalliske, skal du gøre brug af et par tiltalende tiltrækkende ønskeligt, forstørre spejle og også masser af svip i et forsøg på at område af dit vilde hår. Det er vigtigt at har tendens til at arbejde med i specifikke biceps samt hænder og håndled kontrolelementet håndled og hænder fingre side afspejler ud over din aktuelle toilet eller måske dybest set blot kun madras model kontrol hænder og håndled palms side hånd spejl, beliggende i du faktisk finde ud til at i masser af situationer er inden for din egen ejendom for alle der har hairstyling frizzy hår. Modtage den GHD Straightner klar til at udføre generelt region dit vilde hår derfor den førende funktionalitet klassen bliver faktisk helt forskellige under position tilbage lige så som foran. Efterfølgende tage i betragtning 3 facetter fra den specifikke kick ud placering hår generelt video hver bestemt én af disse typer, så de kan ofte være en række. [url=http://www.buy-beatsdrdre.com/category/new-beats-dr-dre-headphones]Beats By Dr Dre[/url] Ved hjælp af magi magi ghd glattejern, kan du oprette en stor bølge af hår. Meget velegnet til off bryst hår pige. Brug er meget enkel, først ghd håret varme, hvis man kan operere mere anstrengende omvej first hår ghd håret på genopvarmning, men dette er ikke god temperaturregulering, først med en ghd fladjern hår for klemmer bor, og hår rundt om s-gerne på det, ville det tage at være stor, er du nødt til at cirkel rundt om et par mindre punkter, hvis du ønsker at tilbringe et lille sår på multi-point Best Buy keramik, færre skader ens hår! [url=http://www.buy-beatsdrdre.com/]beats by dre australia[/url] Alle de bedste Glattejern lidelse artikler kan blive akklimatiseret med hårudglatningsmiddel at tilpasse hair.Another en masse fantastiske amore af GHD Glattejern Sale sin slå vilkårlig spænding fordel, der giver dig mulighed for at bruge håret i ethvert land og få ovenstående kølige GHD realisering bagefter eventuelle ophør på grund af spændingen complication.Many organer vil købe ghd, så vil de spare mere, på ovennævnte tidspunkt, de vil opnå selv bliver tilføjet charmerende.

    Reply
  • C4244 Warning

    Posted by mfcbug on 05/29/2006 03:50am

    Hi Hans, I am getting following warning while calling function GetToolText(pNMHDR->idFrom, strTipText) warning C4244: 'argument' : conversion from 'UINT_PTR' to 'UINT', possible loss of data. I am running it on WinXP and VS.NET. Regards Abhi

    Reply
  • Boh^!^!

    Posted by Legacy on 02/10/2004 12:00am

    Originally posted by: Andrea

    Io 'un c'ho capito una sega! Boh.. fate vobis!

    Reply
  • I like the way U did this, I can use this.

    Posted by Legacy on 09/18/2002 12:00am

    Originally posted by: Conrad Braam

    I was wondering if writting a little stip function like U did that actually looked at the ID anddecided at runtime what to do was the only way, this is even better since U used a member variable, thus saving the problems with doing a LoadString here at runtime.
    Cool.

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • You probably have several goals for your patient portal of choice. Is "community" one of them? With a bevy of vendors offering portal solutions, it can be challenging for a hospital to know where to start. Fortunately, YourCareCommunity helps ease the decision-making process. Read this white paper to learn more. "3 Ways Clinicians can Leverage a Patient Portal to Craft a Healthcare Community" is a published document owned by www.medhost.com

  • It's time high-level executives and IT compliance officers recognize and acknowledge the danger of malicious insiders, an increased attack surface and the potential for breaches caused by employee error or negligence. See why there is extra emphasis on insider threats.

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds