Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
CODE PROJECT For Those Who Code
  • Home
  • Articles
  • FAQ
Community
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. color of button control

color of button control

Scheduled Pinned Locked Moved C / C++ / MFC
help
12 Posts 4 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A ashish dogra

    hi please help me tell me how i can change the color of a button control and text on it which are differ from dialog box. A button is on a dialog box Ashish Dogra MCA Noida

    H Offline
    H Offline
    Hamid Taebi
    wrote on last edited by
    #3

    You can use a class derived CButton and use WM_DRAWITEM of course you need to set OwnerDraw in property button in property window_**


    **_

    whitesky


    1 Reply Last reply
    0
    • A anothervip

      I think you can change the button color in CWnd::OnCtlColor (WM_CTLCOLOR) of the parent window and change the text color by SetTextColor().

      A Offline
      A Offline
      ashish dogra
      wrote on last edited by
      #4

      thanks form reply but sir i use this one but it does not change the color HBRUSH CButtoncolorDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if(nCtlColor == CTLCOLOR_BTN) { hbr=CreateSolidBrush(RGB(0,100,0)); pDC->SetTextColor(RGB(0,0,255)); pDC->SetBkColor(RGB(0,100,0)); } return hbr; } Ashish Dogra MCA Noida

      _ A 2 Replies Last reply
      0
      • A ashish dogra

        thanks form reply but sir i use this one but it does not change the color HBRUSH CButtoncolorDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if(nCtlColor == CTLCOLOR_BTN) { hbr=CreateSolidBrush(RGB(0,100,0)); pDC->SetTextColor(RGB(0,0,255)); pDC->SetBkColor(RGB(0,100,0)); } return hbr; } Ashish Dogra MCA Noida

        _ Offline
        _ Offline
        _AnsHUMAN_
        wrote on last edited by
        #5

        Did you set the BS_OWNERDRAW property of the button's to TRUE. I guess not.Do it and then you will see the button color change. To change the property of the button to owner draw right click on the button . Open the property window and just set the OWNER Draw property to true. IS it OK? Somethings seem HARD to do, until we know how to do them. ;-) _AnShUmAn_

        A 2 Replies Last reply
        0
        • A ashish dogra

          thanks form reply but sir i use this one but it does not change the color HBRUSH CButtoncolorDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if(nCtlColor == CTLCOLOR_BTN) { hbr=CreateSolidBrush(RGB(0,100,0)); pDC->SetTextColor(RGB(0,0,255)); pDC->SetBkColor(RGB(0,100,0)); } return hbr; } Ashish Dogra MCA Noida

          A Offline
          A Offline
          anothervip
          wrote on last edited by
          #6

          HBRUSH CButtoncolorDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if(nCtlColor == CTLCOLOR_BTN) { if( pWnd == "Your specific button pointer" ) return CreateSolidBrush(RGB(0,100,0)); } return hbr; } I wonder maybe you need to use new font ( by SelectObject() ) to change the font color.

          1 Reply Last reply
          0
          • _ _AnsHUMAN_

            Did you set the BS_OWNERDRAW property of the button's to TRUE. I guess not.Do it and then you will see the button color change. To change the property of the button to owner draw right click on the button . Open the property window and just set the OWNER Draw property to true. IS it OK? Somethings seem HARD to do, until we know how to do them. ;-) _AnShUmAn_

            A Offline
            A Offline
            ashish dogra
            wrote on last edited by
            #7

            THANKS Ashish Dogra MCA Noida

            1 Reply Last reply
            0
            • _ _AnsHUMAN_

              Did you set the BS_OWNERDRAW property of the button's to TRUE. I guess not.Do it and then you will see the button color change. To change the property of the button to owner draw right click on the button . Open the property window and just set the OWNER Draw property to true. IS it OK? Somethings seem HARD to do, until we know how to do them. ;-) _AnShUmAn_

              A Offline
              A Offline
              ashish dogra
              wrote on last edited by
              #8

              hi again i am sorry to disturb you again but i make an application in which many dialog boxes are there now when i make ownerdraw property true the application does not run and if i make ownerdraw property false the application runs i dont understand the problem so plz tell me what is the problem thanks Ashish Dogra MCA Noida

              H 1 Reply Last reply
              0
              • A ashish dogra

                hi please help me tell me how i can change the color of a button control and text on it which are differ from dialog box. A button is on a dialog box Ashish Dogra MCA Noida

                H Offline
                H Offline
                Hamid Taebi
                wrote on last edited by
                #9

                I think you need to one code so see this you need to insert this code in your project for one start

                m_Button.ModifyStyle(0,BS_OWNERDRAW); //in your main class insert this code
                m_Button is CMyButton1
                //////////////////
                
                ///////////in header file
                class CMyButton1 : public CButton
                {
                	DECLARE_DYNAMIC(CMyButton1)
                
                public:
                	CMyButton1();
                	virtual ~CMyButton1();
                protected:
                	DECLARE_MESSAGE_MAP()
                public:
                	virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
                };
                
                
                IMPLEMENT_DYNAMIC(CMyButton1, CButton)
                CMyButton1::CMyButton1()
                {
                }
                
                CMyButton1::~CMyButton1()
                {
                }
                
                
                BEGIN_MESSAGE_MAP(CMyButton1, CButton)
                	
                END_MESSAGE_MAP()
                
                void CMyButton1::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
                {
                CDC dc;
                dc.Attach(lpDrawItemStruct->hDC);
                CRect rt;
                rt = lpDrawItemStruct->rcItem;
                
                
                dc.SetBkMode(0);
                
                CString str;
                GetWindowText(str);
                
                if ( (lpDrawItemStruct->itemState & ODS_SELECTED) )
                {
                dc.FrameRect(&rt,&CBrush(RGB(110,170,210)));
                dc.SetTextColor(RGB(0,0,0));
                dc.FillRect(&rt,&CBrush(RGB(190,210,210)));
                }
                else
                {
                dc.FrameRect(&rt,&CBrush(RGB(0,0,0)));
                dc.SetTextColor(RGB(255,255,255));
                dc.FillRect(&rt,&CBrush(RGB(100,170,210)));
                }
                dc.DrawText(str,rt,DT_CENTER|DT_VCENTER|DT_SINGLELINE);
                dc.Detach();
                }
                

                _**


                **_

                whitesky


                1 Reply Last reply
                0
                • A ashish dogra

                  hi again i am sorry to disturb you again but i make an application in which many dialog boxes are there now when i make ownerdraw property true the application does not run and if i make ownerdraw property false the application runs i dont understand the problem so plz tell me what is the problem thanks Ashish Dogra MCA Noida

                  H Offline
                  H Offline
                  Hamid Taebi
                  wrote on last edited by
                  #10

                  whats error you get one error when you set Ownerdraw,right?_**


                  **_

                  whitesky


                  A 1 Reply Last reply
                  0
                  • H Hamid Taebi

                    whats error you get one error when you set Ownerdraw,right?_**


                    **_

                    whitesky


                    A Offline
                    A Offline
                    ashish dogra
                    wrote on last edited by
                    #11

                    application does not run it simply show an message that application has encountreda problem and need to close Ashish Dogra MCA Noida

                    H 1 Reply Last reply
                    0
                    • A ashish dogra

                      application does not run it simply show an message that application has encountreda problem and need to close Ashish Dogra MCA Noida

                      H Offline
                      H Offline
                      Hamid Taebi
                      wrote on last edited by
                      #12

                      see my example i hope you find why when you use ownerdraw you get error. in MSDN you see: "BS_OWNERDRAW Creates an owner-drawn button. The owner window receives a WM_DRAWITEM message when a visual aspect of the button has changed. Do not combine the BS_OWNERDRAW style with any other button styles."_**


                      **_

                      whitesky


                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • World
                      • Users
                      • Groups