본문 바로가기
기타_모아/자료실

[MFC] 버튼에 색 넣기

by KANG Stroy 2013. 3. 25.
728x90
728x90



버튼에 색을 넣어 볼려고 합니다.... ^^ 위의 버튼을 클릭하고.. 마우스 오른쪽 클릭... 그리고 Properties를 클릭...위의 창이 하나 생길겁니다...

여기서 위의 그림과 같이 선택을 해주시고... 나온 후


컨트롤+W를 눌러서 아래의 그림처럼 선택을 합니다... 이와 같이 선택을 하게 되면 다음과 같은 함수가 하나 생길것입니다. 



void xxxxxxxxxxxxxxxxxx::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) 

{


}


이 함수에 색상을 넣어줄 버튼을 지정해 주면 됩니다.? 어떻게? 


아래의 소스를 위의 함수안에 에 넣고 버튼의 IDC를 넣어 주시면 끝... 


// if(nIDCtl == 이 부분에 버튼의 IDC를 입력 합니다.   IDC_BUTTON  )

if(nIDCtl == IDC_BUTTON  )

{

CDC dc;

RECT rect;

dc.Attach(lpDrawItemStruct->hDC); //Get the Button DC to CDC


rect = lpDrawItemStruct->rcItem ; //Store the Button rect to local rect

dc.Draw3dRect(&rect, RGB(200,200,200), RGB(20,20,20));

dc.FillSolidRect(&rect, RGB(100,150,100));

//Show the Effect of Click Event

UINT state = lpDrawItemStruct->itemState;

if((state & ODS_SELECTED))

{

dc.DrawEdge(&rect, EDGE_SUNKEN, BF_RECT);

}

else

{

dc.DrawEdge(&rect, EDGE_RAISED, BF_RECT);

}


//Draw Color Text

dc.SetBkColor(RGB(100,150,100)); //Setting the Text Background Color

dc.SetTextColor(RGB(255,100,0)); //Setting the Text Color


TCHAR buffer[MAX_PATH];

ZeroMemory(buffer, MAX_PATH);

::GetWindowText(lpDrawItemStruct->hwndItem, buffer, MAX_PATH);


dc.DrawText(buffer, &rect, DT_CENTER|DT_VCENTER |DT_SINGLELINE);

dc.Detach(); //Detach the Button DC


}


참고 소스로는 http://www.codeguru.com에서 퍼온것을 올려 봅니다... 


btncolor.zip


아래 하트를 꾸욱~~~~~! ^^ 

728x90

댓글