본문 바로가기

개발/mfc

mfc, image 보이기, sample source

반응형

Mfc 에서 이미지 보이기 ( VS 2010 )

 

여기서는 static 을 만들어 이미지를 보인다..   근데 써보니 button 을 만들어 이미지 하는게 더 좋을듯

 

순서

1. Toolbox 에서 Pictire Control 추가

2. 특성 ( Property ) 설정

3. 이미지 추가

4. 이미지 연동 하기

 

 

================================

1. Toolbox 에서 Pictire Control 추가

>  View-Toolbax ( Ctrl-Alt-X) - [Picture Control] 선택 - 다이알 로그 창에 적당한 크기로 그리기

>

 

2. 특성 ( Property ) 설정

> 그린 Pic Control 에서 마우스 오른쪽 버튼 -> Property

> ID 가 IDC_STATIC 인데 적당한 것으로 변경 , 여기서는 "IDC_m_STA_st1" 로 한다. 

> Type 가 Frame 으로 되어 있는데 이를 Bitmap 으로 바꾼다.

 

3. 이미지 추가

> Resource View 창의 Bitmap 에서 마우스 오른쪽 버튼  -> [Insert Bitmap] 선택 하면 

> bitMap 이 하나 추가 된다 여기서는 기존에 3개 가 있어서  IDB_BITMAP4 와 같이 나타 난다. 

> bitmap4.bmp 가 자동으로 만들어 진다.

> 원하는 파일명 (여기서는 res\img-ing.bmp) 로 바꾸면 img-ing.bmp 이 만들어 지며, 

>  이미지 파일 res\img-ing.bmp 을 수정 한다, 뭐 사실 만들어 놓은 파일을 로 바꾼다.

 

 

4. 이미지 연동 하기

void CDlg_main::SetImg(  )
{
	CStatic * m_pPic ;
	CBitmap new_image;  // 리소스에 있는 비트맵 이미지를 읽기 위해서 CBitmap 클래스 객체를 선언한다.
	HBITMAP h_old_bitmap;

	m_pPic = (CStatic *)GetDlgItem(IDC_m_STA_st1);
	GetDlgItem(IDC_m_STA_st1)->ShowWindow(SW_SHOW); 
	new_image.LoadBitmap(IDB_BITMAP4 ); 

	h_old_bitmap = m_pPic->SetBitmap(new_image);	// p_old_ bitmap 변수에 저장한다.
	if(h_old_bitmap != NULL) ::DeleteObject(h_old_bitmap);		// Picture 컨트롤이 이전에 사용하던 이미지가 있었다면 제거한다.
	//사용하기 때문에 lamp_image 객체가 종료되면서 삭제되지 않도록 연결을 해제한다.
	// 이 코드를 사용하지 않아도 되는 것처럼 보이지만 해당 Picture 컨트롤이 가려졌다가
	// 다시 보이게 되는 경우 그림이 그려지지 않는다. 따라서 꼭 사용해야 합니다. 
	new_image.Detach();
}

 

위 함수를 부르면 이미지를 그려 준다.

반응형