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

Color Picker Combo Box

By , 18 Oct 2000
 
  • Download demo project (James Twine's version) - 26 Kb
  • Download source files (James Twine's version) - 8 Kb


  • Download demo project (Mark Jackson's version) - 18 Kb
  • Download source files (Mark Jackson's version) - 2 Kb
  • Sample Image - ColourPickerCB.gif

    Introduction

    James Twine originally based this code on earlier work by Baldvin Hansson. Mark Jackson (www.mjsoft.co.uk) has expanded this to add a "Custom..." option at the bottom of the list which displays the standard colour picker dialog, and has also added DDX data exchange. The code has also been improved and tidied up in many other ways.

    The CColorPickerCB class implements a Combobox that displays colors as well as the name of the colors. Colors may be added or removed at runtime, and the control can be queried for the COLORREF value, or the name of the selected color. You can also set the selected color.

    The control correctly handles selection, enabled and disabled drawing. Since the control uses strings for display, the colors can be sorted.

    To use this control, create a Drop List Combobox with the Owner Draw Fixed and Has Strings styles. Attach a CColorPickerCB to the control, and off you go!

    The initialization routine populates the color picker with a color selection that is a subset of the X11 colorset, and are the colors that are recognized by IE.

    Note that the control will use 1/4 (one fourth) of its width for the color block, and the rest, minus a few pixels, for the color text. Be sure you make it wide enough.

    Credits

    Thanks to Marcel Galema for finding a bug with my inverted (selected) color usage, and suggesting a fix for it.

    Thanks also to Paul Wardle for providing DDX routines.

    Public Functions

    Here is a list of public functions in the CColorPickerCB class:

    COLORREF GetSelectedColorValue(void);          // Get Selected Color Value
    CString GetSelectedColorName(void);            // Get Selected Color Name
    void SetSelectedColorValue(COLORREF crColor);  // Set Selected Color Value
    void SetSelectedColorName(PCSTR cpColor);      // Set Selected Color Name
    
    // Initialize The Control With The Default Colorset
    void InitializeDefaultColors( void );          
    
    bool RemoveColor(PCSTR cpColor);               // Remove Color From List
    bool RemoveColor(COLORREF crColor);            // Remove Color From List
    int  AddColor(PCSTR cpName, COLORREF crColor); // Insert A New Color
    

    License

    This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

    About the Author

    James R. Twine
    President JRTwine Software, LLC
    United States United States
    Member
    Programming since the age of 10, started professionally at the age of 17. Currently involved in both Client and Server side development on Win32 platforms for MC/HA/FT financial applications. Development experience with Win32, Win16, Linux and other flavors of Unix.
     
    Extensive multithreaded development experience on Windows platforms using the Win32 SDK, and MFC.
     
    Experience with HA/FT n-tiered Client/Server systems as well as GUI apps of varying complexity. Some experience with Game developement.
     
    Having learned that the stuff you can barely get away with doing Client-side apps just does not cut it in the real "Server World", I am amazed how many 'professionals' cannot tell the difference between "works" and "correct" or try to (mis)use VB and/or MFC on server-side development projects, never considering that just because it RUNS, does not mean it runs WELL.
     
    Lastly, I am also a collector of arcade games, and can perform repairs, conversions, etc. Search for my name, you will find me on lots of arcade-related documents and sites.
     
    Sites of interest(?):
    http://www.jrtwine.com
    http://www.jrtwine.com/jtwine
    http://www.signingtime.com
    http://www.deletefxpfiles.com
    http://www.checkfavorites.com
    http://www.coinop.org

    Sign Up to vote   Poor Excellent
    Add a reason or comment to your vote: x
    Votes of 3 or less require a comment

    Comments and Discussions

     
    Hint: For improved responsiveness ensure Javascript is enabled and choose 'Normal' from the Layout dropdown and hit 'Update'.
    You must Sign In to use this message board.
    Search this forum  
        Spacing  Noise  Layout  Per page   
    Generalexactly what i neededmemberEttore Pancini22 May '12 - 22:00 
    GeneralInitializing dropboxmemberal250022 Jul '07 - 15:01 
    QuestionAsserttion failed!memberjrmd14 Jan '07 - 2:37 
    AnswerRe: Asserttion failed!memberJames R. Twine14 Jan '07 - 7:13 
    GeneralRe: Asserttion failed!memberjrmd15 Jan '07 - 2:22 
    GeneralDoubtmembersruti_p13 Jun '06 - 21:11 
    AnswerFirst Steps... (Was: Re: Doubt)memberJames R. Twine14 Jun '06 - 1:13 
    QuestionChanging the Fontmemberpscholl10 May '06 - 22:17 
    AnswerRe: Changing the FontmemberJames R. Twine14 Jun '06 - 1:15 
    AnswerRe: Changing the Fontmemberpscholl27 Feb '07 - 5:02 
    GeneralDebug assertion failedmemberleft1none6 Feb '06 - 23:22 
    AnswerRe: Debug assertion failedmemberJames R. Twine14 Jun '06 - 1:16 
    GeneralRe: Debug assertion failedmembershvalbo14 Dec '06 - 2:22 
    GeneralOwner draw combobox with CBS_DROPDOWN stylememberG.A.14 Dec '04 - 23:18 
    GeneralRe: Owner draw combobox with CBS_DROPDOWN stylememberJames R. Twine14 Jun '06 - 1:18 
    AnswerRe: Owner draw combobox with CBS_DROPDOWN stylememberMember 426330219 May '09 - 0:12 
    QuestionHow can I use a CComboBox as a Lenght specifier?memberTimawa_6920 Apr '04 - 21:00 
    AnswerRe: How can I use a CComboBox as a Lenght specifier?memberJames R. Twine26 Apr '04 - 14:19 
    QuestionCan this combo box be made FLATmembermangeshb12316 Oct '03 - 18:48 
    AnswerRe: Can this combo box be made FLATmemberJames R. Twine17 Oct '03 - 3:30 
    QuestionHow to initialize with my own colors? I'd add few methods..sussandru1236 Nov '02 - 0:16 
    AnswerRe: How to initialize with my own colors? I'd add few methods..memberJames R. Twine8 Aug '03 - 6:58 
    QuestionHow to Create a ComboBox in toolbar?memberwhite jungle16 Nov '01 - 3:27 
    AnswerRe: How to Create a ComboBox in toolbar?memberCarlos Antollini16 Nov '01 - 3:50 
    GeneralRe: How to Create a ComboBox in toolbar?membertvhead8021 Mar '03 - 17:32 
    GeneralRe: How to Create a ComboBox in toolbar?memberleft1none6 Feb '06 - 23:10 
    GeneralAdd a check boxmemberinchak22 Sep '01 - 17:48 
    GeneralRe: Add a check boxmemberJames R. Twine14 Jun '06 - 1:19 
    GeneralCMYK color supportmemberArthur Guntling22 Mar '01 - 6:27 
    GeneralRe: CMYK color supportmemberErik Thompson22 Mar '01 - 6:59 
    GeneralRe: CMYK color supportmemberArthur Guntling22 Mar '01 - 23:15 
    GeneralCorrected Version Coming...sussJames R. Twine3 Oct '00 - 4:47 
    GeneralRe: Corrected Version Coming...sussJames R. Twine19 Oct '00 - 11:38 
    GeneralGood questions about the Get and Set...sussJames R. Twine24 Sep '00 - 14:39 
    QuestionWhat do you mean when you say 'attach a CColorPickerCB' to the control?sussRon King13 Sep '00 - 5:37 
    AnswerRe: What do you mean when you say 'attach a CColorPickerCB' to the control?sussJames R. Twine24 Sep '00 - 14:40 
    GeneralGood ctrl but where are the SET FunctionssussRoger Sager14 Jun '00 - 23:15 
    QuestionGood but where is the Get Functions???sussAnthony17 May '00 - 2:04 
    AnswerRe: Good but where is the Get Functions???sussMark Jackson13 Jun '00 - 5:21 

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

    Permalink | Advertise | Privacy | Mobile
    Web02 | 2.6.130516.1 | Last Updated 19 Oct 2000
    Article Copyright 2000 by James R. Twine
    Everything else Copyright © CodeProject, 1999-2013
    Terms of Use
    Layout: fixed | fluid