CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 5 of 5
  1. #1
    Join Date
    Sep 2010
    Posts
    29

    Customize CColorDialog

    Hi everyone,
    I must modify the Windows default CColorDialog. I want to put a combobox instead of "define custom colors" pushbutton. I found some explanations, but I did not understand how to use the color.dlg template and CHOOSECOLOR structure.
    Someone could help me?
    Thanks

  2. #2
    VictorN's Avatar
    VictorN is offline Super Moderator Power Poster
    Join Date
    Jan 2003
    Location
    Hanover Germany
    Posts
    20,395

    Re: Customize CColorDialog

    Did you read MSDN?
    Customizing the Color Dialog Box

    To customize a Color dialog box, you can use any of the following methods:

    • Specify values in the CHOOSECOLOR structure when you create the dialog box
    • Provide a custom template
    • Provide a hook procedure

    You can modify the appearance and behavior of the Color dialog box by setting flags in the Flags member of the CHOOSECOLOR structure. For example, you can set the CC_SOLIDCOLOR flag to direct the dialog box to display only solid colors. To cause the dialog box to initially select a color other than black, set the CC_RGBINIT flag and specify a color in the rgbResult member.

    You can provide a custom template for the Color dialog box, for example, if you want to include additional controls that are unique to your application. The ChooseColor function uses your custom template in place of the default template.

    To provide a custom template for the Color dialog box

    Create the custom template by modifying the default template specified in the Color.dlg file. The control identifiers used in the default Color dialog template are defined in the Color.dlg file.
    Use the CHOOSECOLOR structure to enable the template as follows:
    If your custom template is a resource in an application or dynamic link library, set the CC_ENABLETEMPLATE flag in the Flags member. Use the hInstance and lpTemplateName members of the structure to identify the module and resource name.
    -Or-

    If your custom template is already in memory, set the CC_ENABLETEMPLATEHANDLE flag. Use the hInstance member to identify the memory object that contains the template.
    You can provide a CCHookProc hook procedure for the Color dialog box. The hook procedure can process messages sent to the dialog box. It can also use registered messages to control the behavior of the dialog box. If you use a custom template to define additional controls, you must provide a hook procedure to process input for your controls.
    Victor Nijegorodov

  3. #3
    Join Date
    Sep 2010
    Posts
    29

    Re: Customize CColorDialog

    Yes I've read yet, but I don't know how to get hInstance.

  4. #4
    VictorN's Avatar
    VictorN is offline Super Moderator Power Poster
    Join Date
    Jan 2003
    Location
    Hanover Germany
    Posts
    20,395

    Re: Customize CColorDialog

    Example:
    Code:
    	m_cc.Flags |= CC_ANYCOLOR | CC_ENABLETEMPLATE | CC_FULLOPEN | CC_RGBINIT | CC_SHOWHELP;
    	m_cc.lpTemplateName = MAKEINTRESOURCE(IDD_COLOR_DIALOG);;
    	m_cc.hInstance = (HWND)AfxGetResourceHandle();
    Victor Nijegorodov

  5. #5
    Join Date
    Sep 2010
    Posts
    29

    Re: Customize CColorDialog

    Thanks a lot. Just a question: how should I use IDD_COLOR_DIALOG?
    Last edited by symreds; September 8th, 2010 at 08:18 AM.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured