MFC 버튼에 이미지를 넣는 예제 입니다.
소스는 테스트 용이라 공개하지 않고요 (캡쳐만 뜨고 지워버린;)
초보자분도 이대로 따라만 하시면 충분히 할 수 있을 거라 생각합니다.
Ctrl + Shift + E
를 누르시면 다음과 같은 리소스 뷰가 나타난다.
dialog 에 가면
IDD_DIALOG 이라는 친구가 있는데
야를 더블클릭하면
이런 창을 만날수 있슴.
여기서 도구상자에 가서 Button을 생성해준다.
그냥 드레그로 다가 살짝 끌어당겨 줌 만들어 진다.
그럼 이러한 버튼이 생성된다.
버튼을 누르고 오른쪽 버튼을 눌러주면 이러한창이 나타나고
[변수추가]라는 버튼을 살며시 눌러준다.
그럼
이러한 창이 나타나고
여기서 중요한게 두가지가 있다.
1. 변수 형식을 꼭 CBitmapButton
2. 변수 이름을 꼭 입력해준다.
잘 안보이겠지만 난 test 라고 입력했다.
그리고 마침~.
그러면 헤더에 CBitmapButton test;라는 변수가 만들어 진다.
다음은 미리 가지고 있는 bmp파일을 불러올 차례이다.
아까와같이 컨트롤 + 시프트 + E 를 누르면 리소스뷰 창이 나타나고
오른쪽 버튼을 누른후 보기와 같이 리소스 추가 버튼을 누른다.
그럼 이러한 창이 나오고 여기서 가져오기 버튼을 눌러준다.
그리고 내가 저장한 bmp 파일을 가지고 온다.
그냥 파일 불러오는건 다 똑같다.
참고로 .bmp 파일만 불러와야 한다.(png 등등을 사용하려면 새로운 정의를 내려야 되서;;)
리소스 뷰 창에 Bitmap 부분에 IDB_BITMAP1 이라는 이름과 내가 불러온 이미지가 들어가 있을것이다.
속성창과 비교한 모습이다.
물론 IDB_BITMAP1 의 이름은 바꿔줄수 있다.
난 임의로 IDB_OK라고 바꿔줬다.
(참고로 이미지를 추가하면 IDB_BITMAP1, IDB_BITMAP2, IDB_BITMAP3, ... 이순서대로 늘어가기 때매 구분하기 좋게 사용할 ID를 지정해주는 것이 좋다.)
이제 가장 중요한 소스 코딩 부분.
OnInitDialog(){
}
이부분은 F5로 프로그램을 시작할때 가장먼저 시작하는 초기화 부분이다.
내가 소스로 추가한 부분은
////////////12.01.26//////////////
test.LoadBitmaps(IDB_OK, NULL, NULL, NULL);
test.SizeToContent();
////////////12.01.26//////////////
이부분이다.
앞에 나온 test.<<이놈은 아까 첨에 변수로 추가해준놈.
그리고 test.LoadBitmaps(A, B, C,D); (A,B,C,D는 Bitmap 이름이 들어간다.)
4개 들어가는데 내가 테스트를 해본결과
A = 첫화면
B = 버튼을 눌렀을 때 움푹 들어가면서 나오는 부분
C = 버튼을 잠궈 났을때 // GetDlgItem(IDC_OK)->EnableWindow(FALSE);
D = ?! 까먹었다.
이런 식으로 사용하는 것이다.
또한 test.SizeToContent(); 얘는 버튼의 크기를 자동으로 크기에 맞게 조정해주는 역할을 한다.
다음으로 할일은 리소스 뷰의 dialog로 다시 돌아가서
버튼의 오른쪽을 눌러서 속성을 띄우고
아래와 같이 Owner Draw를 Ture로 바꿔주면 된다.
True 로 바꿔줬을 때 5개 정도가 바뀌는 것을 볼수 있다.
아 실수로 실행화면을 캡쳐를 못했다.
여튼 이렇게 하면 문제 없이 동작할 것이다.
[출처] [MFC]버튼만들기, 버튼에 이미지(.bmp) 입히기.|작성자 클로드모네
'old drawer > C, C++, MFC' 카테고리의 다른 글
[MFC] SDI 환경에서 버튼의 동적 생성과 메시지를 처리하는 방법 (0) | 2012.07.12 |
---|---|
[MFC] 컨트롤 동적 생성 (3) | 2012.07.11 |
[MFC] CWnd 유용한 매소드들 (0) | 2012.07.10 |
[MFC] GetStyle(), ModifyStyle()을 사용한 윈도우 스타일 변경 (0) | 2012.07.10 |
[C/C++] 문자열 컨트롤 함수 : strlen, strcpy, strcat, strstr, strchr, strtok, atoi 등 (0) | 2012.06.04 |