차례
가. 이미지 보여주기
나. 버튼 눌러 이미지 바꾸어 보여주기
가. 이미지 보여주기
1. 이미지 지정
- 먼저 image1.bmp, image2.bmp 를 만들어 ~/res 에 가져다 놓는다
- Project - Add - resource - Bitmap - import - 하여 파일 선택 한다.
- 두번 하고, 보면, ~.rc 에 IDB_BITMAP1, IDB_BITMAP2 가 생긴다.
이것을 IDB_BITMAP_CarOUT, IDB_BITMAP_CarIN 으로 바꾼다 ( 맘대로 정하셔요)
2. 다이얼 로그 에서 Ctrl-Alt-X 해서 나오는 Toolbox 에서
- Picture Control 1개 추가,
3. Picture Control 의 Property 변경
- 기본 ID가 IDC_STATIC 으로 나오는 데 이를 .IDC_PIC_Car2 로 바꾼다
~.rc 에 "CONTROL 130,IDC_PIC_Car2,"Static",SS_BITMAP,183,98,33,17" 와 비슷한 줄 추가됨 확
- Type 를 Frame 에서 Bitmap 으로 바꾼다.
- 그럼 활성화 되는 Image 의 값을 위에서 만든 IDB_BITMAP_CarOUT 으로 설정
4. 컴파일 해서 실행 시키면 나온다.
나. 이미지 바꾸기 - 먼저 위에거 를 한다음에,
1. 다이얼 로그 에서 Ctrl-Alt-X 해서 나오는 Toolbox 에서
- 버튼 1개 추가 하면, properties 에서 ID: IDC_BUTTON1 로 보인다.
- 이를 더블 클릭 하면 소스가 보인다 , 거기에 아래 내용을 추가 한다.
void CSeralTermDlg::OnBnClickedButton1() // 버튼을 누를때 마다 들어 온다.
{
static BOOL isState = FALSE;
CStatic * m_pPicture1 = (CStatic *)GetDlgItem(IDC_PIC_Car1); // pointer 할당
CBitmap new_image; // 리소스에 있는 비트맵 이미지를 읽기 위해서 CBitmap 클래스 객체를 선언한다.
if( isState == FALSE ) {
isState = TRUE;
new_image.LoadBitmap(IDB_BITMAP_CarIN); // 리소스에서 IDB_BITMAP_CarIN이미지를 읽는다.
} else {
isState = FALSE;
new_image.LoadBitmap(IDB_BITMAP_CarOUT); // 리소스에서 IDB_BITMAP_CarOUT이미지를 읽는다.
}
// Picture 컨트롤에 새로 읽어들인 이미지를 설정하고 이전에 사용하던 이미지 핸들을
// p_old_ bitmap 변수에 저장한다.
HBITMAP h_old_bitmap = m_pPicture1->SetBitmap(new_image);
// Picture 컨트롤이 이전에 사용하던 이미지가 있었다면 제거한다.
if(h_old_bitmap != NULL) ::DeleteObject(h_old_bitmap);
// Picture 컨트롤에 이미지를 설정하기 위해서 생성했던 이미지는 Picture 컨트롤이
//사용하기 때문에 lamp_image 객체가 종료되면서 삭제되지 않도록 연결을 해제한다.
// 이 코드를 사용하지 않아도 되는 것처럼 보이지만 해당 Picture 컨트롤이 가려졌다가
// 다시 보이게 되는 경우 그림이 그려지지 않는다. 따라서 꼭 사용해야 합니다.
new_image.Detach();
}
2. 실행 시키면 버튼 누를 때 마다.. 바뀐다.