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 으로 받아둔 것이어야 한다.
코드예. - 이미지 파일 읽어서 표현하기.
CImage c_image;
c_image.Load(L"img_exchange_bybit.png");
HBITMAP h_bmp = (HBITMAP)c_image;
m_PCMyImage.SetBitmap(h_bmp);
Picture Control 이벤트 처리방법
1. 속성의 Notify 항목을 True 로 해둔다.
- 이 값이 true여야 picture control에 의한 이벤트 발생 가능.
2. 사용할 이벤트 처리기 추가한다.
아래와 같은 5종의 이벤트가 있다.
Picutre Control 에 일반적인 Mouse 이벤트 모두 처리가능하게 하기.
앞의 방식으로는 일반적인 마우스 이벤트 처리 불가능하다. 즉, 마우스 왼쪽 버튼 다운/업, 오른쪽 버튼 다운//업 등의 이벤트 처리 못한다.
해결책.
가상함수 PreTranslateMessage 추가하여 아래처럼 코드작성하면 일반적인 마우스 이벤트 모두 처리가능하다.
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
첫 등록 : 2016.11.29
최종 수정 : 2022.04.27
단축 주소 : https://igotit.tistory.com/1106
'VisualStudio.C++.C# > 코딩팁,함수활용,단편' 카테고리의 다른 글
MFC. png 이미지 파일 읽기. (0) | 2017.02.21 |
---|---|
MFC. 마우스. (0) | 2016.11.21 |
def 파일로 lib 파일 만들기. (0) | 2016.10.15 |
memmove. 배열 시프트. (0) | 2016.10.14 |
MFC. User Interface Thread 구현. (0) | 2016.09.22 |
댓글