# 버튼 이미지
1. 버튼 생성
2. 속성 창에서
- bitmap = True
- Owner Draw = True
3. 다이얼로그에 CBitmapButton 클래스 멤버변수 하나를 추가
- `CBitmapButton m_BitmapButton;`
4. OninitDialog() 함수에서
```c++
m_BitmapButton.Attach(CBitmapButton *)
GetDlgItem(IDC_BITMAP_BUTTON)->m_hWnd;
m_BitmapButton.LoadBitmaps(IDB_BITMAP_BUTTONUP, IDB_BITMAP_BUTTONDOWN, IDB_BITMAP_BUTTONUP, IDB_BITMAP_BUTTONX);
m_BitmapButton.SizeToContent();
```
를 추가해 준다.
---
## 공통
- 버튼에 입힐 이미지를 리소스에 추가하고 ID를 지정한다.
- 버튼을 멤버변수로 추가한다.
### CButton
- 버튼 속성 중 Bitmap 항목을 True로 지정
- 헤더에 CBitmap 멤버변수를 추가한다.
```c++
CBitmap m_bmpOK;
CBitmap m_bmpNO;
```
- 비트맵 변수에 LoadBitmap()으로 리소스에 추가한 비트맵 이미지를 입힌다. (OnInitDiag)
```c++
m_bmpOK.LoadBitmap(IDB_OK1);
```
- 마지막으로 버튼에 비트맵 이미지를 지정한다. (OnInitDiag)
```c++
m_btnOK.SetBitmap(m_bmpOK);
```
> 특징: 간단하다. 이미지가 한개만 있으면 된다. 버튼을 누를 때 이미지 자체가 움푹 들어가면서 눌리는 느낌이 난다.
### CBitmapButton
- 헤더파일에 멤버변수 선언부분을 수정한다.
CButton -> CBitmapButton 으로 수정!
- 버튼 속성중 Owner Draw 항목을 True 로 지정한다.
- OnInitDialog에서 LoadBitmaps()으로 초기화 한다.
```c++
m_btnBmp.LoadBitmaps(OKU, OKD, OKF, NULL);
m_btnBmp.SizeToContent();
```
여기서 OKU는 눌리지 않은 상태 OKD는 눌린 상태, OKF는 포커스를 받은 상태, NULL은 비활성화된 상태의 비트맵 리소스 ID 이다.
> 특징 : 이것도 은근 간단하지만 이미지가 여러개 필요하다. 버튼을 꾸밀 수 있는 정도가 가장 높다.
### MFC Button Control
- 버튼 속성중 캡션을 지운다.(안지워도 되는지는 모름)
- 속성중 Image 속성을 클릭하면 리소스에 추가한 이미지들이 나오는데 그중 입히고 싶은것을 선택한다.
> 특징 : 역시나 간단하다. 버튼을 눌렀을 때 이미지는 움직이지 않고 고정되어있다. 쪼금 성의없어 보임.