Picture Control 활용기본. Bitmap 표현하기.

 

1. 대화상자에 ToolBox 에서 Picture Control 선택하여 배치.


2. 배치된 Picture Control 의 속성창에서 ID 값 지정하기.

3. BMP 를 표현하기 위하여 Picture Control 속성중 Type 을 Bitmap 으로 선택.
- Bitmap 으로 선택하면 대화상자에 배치한 Picture Control 의 모양이 아래처럼 변경된다.


4. Picture Control 속성창의 Image 에서 비트맵 아이디 선택한다. 

- 비트맵 아이디란 프로젝트 Resource View 의 Bitmap 으로 등록된 것의 아이디를 의미한다.
상세정보 : MFC 프로젝트 리소스에 Bitmap 추가하기 -> http://igotit.tistory.com/751

- 비트맵 아이디 기록하면 해당 이미지가 Picture Control 에 표현된다.

코드에서 Picture Control 핸들링하기.

1. 코드에서 Pciture Control 접근하기 위한 Variable 추가.

예 : m_PCMyImage

2. 코드내에서 비트맵 이미지 지정하기.

m_PCMyImage.SetBitmap(hBitmap);
<- 여기서 hBitmap 은 자료형 HBITMAP. 이며 표현할 비트맵을 hBitmap 으로 받아둔 것이어야 한다.


 


 


 

Picture Control 발생 이벤트 처리방법

 

1. 속성의 Notify 항목을 True 로 해둔다.
- 이 값이 true여야 picture control에 의한 이벤트 발생 가능.
2. 사용할 이벤트 처리기 추가한다.
아래와 같은 5종의 이벤트가 있다.

 

 


 

 

Picutre Control 에 일반적인 Mouse 이벤트 모두 처리가능하게 하기.

 

앞의 방식으로는 일반적인 마우스 이벤트 처리 불가능하다. 즉, 마우스 왼쪽 버튼 다운/업,  오른쪽 버튼 다운//업 등의 이벤트 처리 못한다.

해결책.
가상함수 PreTranslateMessage 추가하여 아래처럼 코드작성하면 일반적인 마우스 이벤트 모두 처리가능하다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
BOOL CCyChartView::PreTranslateMessage(MSG* pMsg)
{
    switch (pMsg->message)
    {
    case WM_LBUTTONDOWN:
        if (pMsg->hwnd == GetDlgItem(IDC_CHARTDIR_BOT3)->GetSafeHwnd())
            AfxMessageBox(_T("L down in picture control"));
 
        break;
 
    case WM_LBUTTONUP:
        if (pMsg->hwnd == GetDlgItem(IDC_CHARTDIR_BOT3)->GetSafeHwnd())
            AfxMessageBox(_T("L up in picture control"));
 
        break;
    }
 
    // TODO: Add your specialized code here and/or call the base class
 
    return CFormView::PreTranslateMessage(pMsg);
}
 

 
 


 



 본 글이 포함된 상위 정리 장소.

 

 Visual Studio/VC++/C/C# 활용정리 -> http://igotit.tistory.com/11

 

 


///1106.

Posted by 리치굿맨
TAG

댓글을 달아 주세요