Click here to Skip to main content
Click here to Skip to main content

CColorChooser an IDE style Color Picker

, 4 Oct 2001
Rate this:
Please Sign up or sign in to vote.
CColorChooser an IDE style Color Picker

Motivation

Visual Basic is certainly not my cuppa tea, but the Visual Basic IDE does have some good ideas which applications can benefit from. One these is the Color Chooser popup window which allows the user to select a desired color. I've extended the control to include the Web Colors which are found on the new Visual Studio .NET IDE.

During a recent project I needed to design a color chooser and I turned to the VB IDE for 'help'.

Design

The window components contained in the project are show below:

Due to the lose coupling of the design CPaletteWnd, CSysColorWnd or CWenColorWnd can be used in isolation if so required in another project. The CColorChooser contains all the functionality and routes specific user messages back to the parent via PostMessage. Custom colors are persistent to the application and are serialized during CColorChooser construction and destruction (stored in the registy).

The project covers owner draw controls and have to create a custom control.

Implementation

  1. Include the add the following files to the project.
  2. ColorChooser.h & ColorChooser.cpp
    PaletteWnd.h & PaletteWnd.cpp
    WebColorWnd.h & WebColorWnd.cpp
    SysColorWnd.h & SysColorWnd.cpp
    
  3. Where the CColorChooser is to be implemented add the include file.
    #include "ColorChooser.h"
    <!------------------------------- That's it! --------------------------->
  4. Create a placeholder for the CColorChooser in the class
    class CYourView : public CView...
    {
    public:
    	CColorChooser*	m_pWndColorChooser;
  5. Initialize in the constructor
    CYourView:: CYourView()
    {
    	m_pWndColorChooser = NULL;
    
  6. My example pops the chooser up when the user right mouse clicks.
    void CPaletteTestView::OnRButtonUp(UINT nFlags, CPoint point) 
    {
    	if (m_pwndChooser == NULL)
    	{
    		ClientToScreen(&point);
    		m_pwndChooser = new CColorChooser(point, this, m_crCurr);
    
    	}
    
  7. When the user selects or loses focus I destroy the window and 'catch' the selected color respectively.
    LRESULT CPaletteTestView::OnColorChanged(WPARAM wParam, LPARAM lParam)
    {
    	m_crCurr = lParam; // Color is contained in lParam
    	delete m_pwndChooser;
    	m_pwndChooser = NULL;
    
    	RedrawWindow();
    	return 0;
    }
    
    LRESULT CPaletteTestView::OnColorChooserClose(WPARAM wParam, LPARAM lParam)
    {
    	delete m_pwndChooser;
    	m_pwndChooser = NULL;
    	return 0;
    }
    

This article forms a small part of the future article covering a property list control.

Any bugs,  enhancements or suggestions please don't hesitate to contact me.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

Share

About the Author

NormDroid
Software Developer (Senior) Software Kinetics
United Kingdom United Kingdom



Software Kinetics
are experts in developing customised and bespoke applications and have expertise in the development of desktop, mobile and internet applications on Windows.

We specialise in:

  • User Interface Design
  • Desktop Development
  • Windows Phone Development
  • Windows Presentation Framework
  • Windows Forms
  • Windows Communication Framework
  • Windows Services
  • Network Applications
  • Database Applications
  • Web Development
  • Web Services
  • Silverlight
  • ASP.net
 
Visit Software Kinetics
Follow on   Twitter

Comments and Discussions

 
BugDeprecation Fix PinmemberTosaka Kawashita24-Dec-13 15:23 
QuestionHow can I... PinmemberDarren Schroeder29-Mar-03 6:18 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web04 | 2.8.140827.1 | Last Updated 5 Oct 2001
Article Copyright 2001 by NormDroid
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid