C/C++/MFC
Dialogs Dialog 에 bmp 파일 출력
2008.06.05 12:19
전체 소스 : WATbmpdisplay.zip
다이어로그에 bmp파일을 출력하고,
다이어로그 크기를 bmp 크기에 자동으로 맞추고,
다이어로그를 마우스로 이동할수 있게 한다.
void CtestDlg::OnPaint() 함수에서
CPaintDC dc(this); // 그리기를 위한 디바이스 컨텍스트
// bmp 핸들어 얻기
HBITMAP hBmp = (HBITMAP)LoadImage( AfxGetInstanceHandle(), "fnd.bmp",
IMAGE_BITMAP, 0, 0,
LR_LOADFROMFILE );
/////////////////////////////////////////////////////////////////
// 그림 사이즈를 얻기 위한 작업
BITMAP bmp = { 0 };
GetObject( hBmp, sizeof(BITMAP), &bmp );
HDC m_dcBkGrnd; // background bitmap dc
m_dcBkGrnd = CreateCompatibleDC( dc);
SelectObject( m_dcBkGrnd, hBmp );
// bmp 출력
BitBlt( dc.m_hDC, 0, 0, bmp.bmWidth, bmp.bmHeight, m_dcBkGrnd, 0, 0, SRCCOPY );
CDialog::OnPaint();
CPaintDC dc(this); // 그리기를 위한 디바이스 컨텍스트
// bmp 핸들어 얻기
HBITMAP hBmp = (HBITMAP)LoadImage( AfxGetInstanceHandle(), "fnd.bmp",
IMAGE_BITMAP, 0, 0,
LR_LOADFROMFILE );
/////////////////////////////////////////////////////////////////
// 그림 사이즈를 얻기 위한 작업
BITMAP bmp = { 0 };
GetObject( hBmp, sizeof(BITMAP), &bmp );
HDC m_dcBkGrnd; // background bitmap dc
m_dcBkGrnd = CreateCompatibleDC( dc);
SelectObject( m_dcBkGrnd, hBmp );
// bmp 출력
BitBlt( dc.m_hDC, 0, 0, bmp.bmWidth, bmp.bmHeight, m_dcBkGrnd, 0, 0, SRCCOPY );
CDialog::OnPaint();
<BMP 를 삽입한 후>
아래 한줄이면 윈도우의 크기가 조절된다.
// 윈도우 크기 조절
// bmp.bmWidth : 그림의 가로 길이
// bmp.bmHeight : 그림의 세로 길이
SetWindowPos( NULL, 0, 0, bmp.bmWidth, bmp.bmHeight, SWP_NOZORDER | SWP_NOMOVE );
// 윈도우 크기 조절
// bmp.bmWidth : 그림의 가로 길이
// bmp.bmHeight : 그림의 세로 길이
SetWindowPos( NULL, 0, 0, bmp.bmWidth, bmp.bmHeight, SWP_NOZORDER | SWP_NOMOVE );
<윈도우 크기가 조절된 이후 >
void CtestDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
if ( !(m_dwMouseFlags & DRAGGING) )
{
m_pntMouse = point;
m_dwMouseFlags |= DRAGGING;
}
CDialog::OnLButtonDown(nFlags, point);
}
void CtestDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
if ( m_dwMouseFlags & DRAGGING )
{
m_dwMouseFlags &= ~DRAGGING;
}
CDialog::OnLButtonUp(nFlags, point);
}
void CtestDlg::OnMouseMove(UINT nFlags, CPoint point)
{
if ( m_dwMouseFlags & DRAGGING )
{
RECT rect;
GetWindowRect( &rect );
rect.left += point.x - m_pntMouse.x;
rect.top += point.y - m_pntMouse.y;
// 윈도우 위치 재설정
SetWindowPos( NULL, rect.left, rect.top, 0, 0, SWP_NOZORDER | SWP_NOSIZE );
}
CDialog::OnMouseMove(nFlags, point);
}
{
if ( !(m_dwMouseFlags & DRAGGING) )
{
m_pntMouse = point;
m_dwMouseFlags |= DRAGGING;
}
CDialog::OnLButtonDown(nFlags, point);
}
void CtestDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
if ( m_dwMouseFlags & DRAGGING )
{
m_dwMouseFlags &= ~DRAGGING;
}
CDialog::OnLButtonUp(nFlags, point);
}
void CtestDlg::OnMouseMove(UINT nFlags, CPoint point)
{
if ( m_dwMouseFlags & DRAGGING )
{
RECT rect;
GetWindowRect( &rect );
rect.left += point.x - m_pntMouse.x;
rect.top += point.y - m_pntMouse.y;
// 윈도우 위치 재설정
SetWindowPos( NULL, rect.left, rect.top, 0, 0, SWP_NOZORDER | SWP_NOSIZE );
}
CDialog::OnMouseMove(nFlags, point);
}
관련 문서가 검색되었습니다.
- [2013/10/30] ZEO-S, CDS로 빛 밝기 -> LED ON/OFF (8920)
- [2013/09/02] ZEO-S PWM 펄스를 Pulse Counter로 읽기, C# (6785)
- [2013/08/29] ZEO-S, Pulse Counter, C# (6380)
- [2013/06/13] ZEO-S, 스위치로 LED ON/OFF, C# (10121)
- [2013/06/08] ZEO-S, LED 연속으로 이동, C# (8860)
- [2013/06/06] ZEO-S, LED 이동 속도 조절, C# (8749)
- [2010/09/29] ListView 아이템 끌어서 이동하기 (17906)
- [2007/11/22] Dialog 형태의 프로그램 만들기 () *1