★ wanayoo — archive 1999 http://codeguru.developer.com/controls/datatip.shtmlNouvelle recherche | Portail wanayoo
EarthWeb
Developer.com Click Here!
Click Here!
Find:
 

EXPERT SEARCH
SEARCH THE IT WEB -----
Site
windows 2000
visual c++
java
visual basic
javascripts
recommend it
 
Contest
mfc codeguru
submission guidelines
 
Book
thinking in c++
stl programmer's guide
reviews
 
Interact
forums
newsgroups
guest book
jobs
jokes
open faq
what's new
 
Other
about
links
newsletters
privacy
tools
 

-----
Visual C++ by E-mail:

Get the weekly e-mail highlights on
Visual C++!
-----



EarthWeb Sites:
IT Management
Networking & Telecommunications
IT Jobs
Software Development
Hardware & Systems
Commerce
Community

EarthWeb Worldwide

   

DataTip


This article was contributed by Simon Wilson.

This class shows how I went about implementing my own tooltip window when I had trouble getting the standard Tooltips to provide the functionality I wanted. The attached code readily demonstrates the concepts of defining your own windows for use with MFC, installing keyboard hooks, and handling the correct clean-up of the system on completion (note the static methods and instance counting). The windows use the same colour scheme as Tooltips under Win95/NT (COLOR_INFOBK + COLOR_INFOTEXT) but you can choose your own colours should you wish (see the OnPaint method).

The class uses the standard two-stage MFC creation process. You use the class by defining an instance of the class in your view/dialog/etc and then calling the Create method passing it a pointer to the parent window (normally in your OnInitialUpdate or OnInitDialog methods).

You then handle the OnMouseMove event and call the Set method passing it a display point and display string. If the mouse remains static for the pre-defined delay time (set via SetDelay) then a tip window will be displayed at the appropiate point. Pressing a key, pressing a mouse button, or moving the mouse outside of a pre-defined are will remove the tip window from the display.

Example:


class CMyView : public CView
{
	:
	SIMDataTip m_datatip;
	:
};

void CMyView::OnInitialUpdate()
{
	CView::OnInitialUpdate();

	// enable datatips for this window
   	m_datatip.Create(this);
        :
        :
}

void CMyView::OnMouseMove(UINT nFlags, CPoint point)
{
	CView::OnMouseMove(nFlags, point);

	// intialise the datatip for this point
	m_datatip.Set(point, "message");
}

The tip window can be turned on and off by calling the On method. It's current status is available via the IsOn method, and the display offset position (from the passed cursor position in Set) can be set using the overloaded SetOffset method.

The class maintains a pointer to the active tip window ensuring that a single tip window is visible at a time.

Please bear in mind that it hasn't been designed for extending but does readily demonstrate the concepts behind getting it to work. If you wanted to change it so that you could use multi-line tips, then the Display and OnPaint methods can be changed to change the window size and display the text over the correct number of lines respectively. Please let me know if you find this class useful. If there is sufficient interest then I may update the class to enable it to be more easily extendable.

The class was developed and tested under Visual C++ v4.1 but should work equally well under VC5. (Note that with a few minor changes the class will work under VC1.5)

Download Files

Comments:

Add Comment

   

Give them a visit Click Here!

Click Here!

INSTANT EXPERTS!
Savvy IT Pros report on SupportSource. Take a look inside the largest vault of multi-vendor computing specs ever assembled. Click here for an In-depth Report,.

For tons of Windows technology resources, check out the Windows Programming directory.

Searching the Web for tech topics just got better with
TechCrawler where all results come only from popular technical sites.

WINNER!!!
Congratulations to James Hole, of New Mexico! The grand prize winner of EarthWeb's Flatten the Obstacles Sweepstakes and now a proud Hummer(R) owner.

Give them a visit Click Here!

Click Here!

Click Here!

Click Here!

Home About Us Search Subscribe Advertising Info Contact Us FAQs
Use of this site is subject to certain Terms & Conditions.
Earthweb's statement regarding our users' right to privacy.
Copyright ©1996-2000 EarthWeb Inc.. All rights reserved. Reproduction in whole or in part in any form or medium without express written permission of EarthWeb is prohibited.