Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » Extra libraries, Code snippets, applications etc. » U++ users applications in progress and useful code snippets, including reference examples! » Mouse over button example -"catch me if you can..."
Mouse over button example -"catch me if you can..." [message #1908] Sun, 26 March 2006 13:48 Go to previous message
fudadmin is currently offline  fudadmin
Messages: 1321
Registered: November 2005
Location: Kaunas, Lithuania
Ultimate Contributor
Administrator
#include <CtrlLib/CtrlLib.h>
//this demonstrates how to install some useful callbacks... :)

class MoButton : public Button {
    bool wasHere;
public:
	typedef MoButton CLASSNAME;
	Callback WhenMouseEnter, WhenMouseLeave;
	virtual void   MouseEnter(Point p, dword f) {wasHere=true; WhenMouseEnter();}
	virtual void   MouseLeave();
	void SetWasNotHere() {wasHere=false;}
	
	MoButton(){;}
	~MoButton(){;}    
};

void  MoButton::MouseLeave() {
	if (wasHere){
		ReleaseCapture(); //do I really need this?
		wasHere=false;
		WhenMouseLeave();
	}
}


class App : public TopWindow {
	MoButton opener;
	TopWindow info;
public:
	typedef App CLASSNAME;
	void openerIn();
	void openerOut();
	void openerFix();
	
	App();
};

void App::openerIn(){
	info.BottomPosZ(5, 200).HSizePos(200, 200); //use it here if you want to adjust according to button pos...

	if(!info.IsOpen()) { info.Open(); opener.SetFocus(); }
}

void App::openerOut(){
	if(info.IsOpen()) { info.Close(); }
}

void App::openerFix(){
	if(info.IsOpen()) { info.SetFocus(); opener.SetWasNotHere(); }
}
	
App::App() {
	Add(opener.TopPosZ(5, 50).LeftPos(10, 250));
	opener.SetLabel("opener test Button Mouse-In Mouse-Out");
	
	info.Title("Catch me if you can!... :)");
	
	opener.WhenMouseEnter = THISBACK(openerIn);
	opener.WhenMouseLeave = THISBACK(openerOut);
	opener.WhenPush = THISBACK(openerFix);

	OpenMain();
	Sizeable().Zoomable();
	Title("Mouse Over Button");
}


GUI_APP_MAIN
{
	App().Run();
}


feel free to critisize and improve...

[Updated on: Tue, 18 April 2006 01:26]

Report message to a moderator

 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Slider and "Dynamic rectangle" example
Next Topic: How to combine two widget-class in the topwindow
Goto Forum:
  


Current Time: Sat Apr 27 20:37:12 CEST 2024

Total time taken to generate the page: 0.06993 seconds