원본 : http://www.debuglab.com/knowledge/mainframe.html
1.요약
MDI의 메인 프래임 윈도우에 비트맵 파일을 삽입하는 방법을 소개합니다.
2.본문
MDI 환경으로 프로그래밍을 하실 때 회색 빛깔의 딱딱하고 무미 건조한 메인 프래임 윈도우를 많이 보셨을 겁니다. 이러한 무미 건조한 메인 프래임 윈도우에 비트맵 파일을 덮어 씌워서 딱딱한 메인 프래임 윈도우를 포장해 보기로 하겠습니다. 일단, 메인 프래임을 우리가 건드리기 위해서는 우리가 만들어 놓은 application의 mainframe class보다 상위 클래스인 CWnd 클래스에서 상속 받는 클래스를 하나 더 만들어서 이 클래스에서 비트맵 작업을 수행하면 됩니다. 이러한 작업을 하기 위해서 우리가 세워야 하는 전략은 우선 먼저 포토샵이나 페인트 샵 프로와 같은 그래픽 에디팅 프로그램에서 우리가 원하는 영상 처리 작업을 수행하고 이를 비트맵으로 저장을 합니다. 그리고 CWnd 클래스에서 상속 받는 클래스를 하나 더 만들어서 이 클래스에서 비트맵 작업을 수행합니다. 그리고 이 새로 삽입된 클래스에 우리가 영상 처리하여 저장하여 둔 비트맵 파일을 로딩합니다. 그리고 이 새로 삽입된 클래스를 우리가 만들어 놓은 application의 mainframe class에 인클루드 시킨 다음, mainframe class가 생성 되는 시점에서 로딩된 비트맵 파일을 뿌려주면 끝납니다. 아주 간단하지요?? 그럼 소스코드를 보시고 음미해 보시기를 바랍니다.
3.예제
//아래의 IDB_ LEDZEPPLINE은 리소스에 로딩되어 있는 비트맵 파일의 아이디 입니다.
CMyBMPClient::CMyBMPClient()
{
VERIFY(m_bmp.LoadBitmap(IDB_LEDZEPPLINE));
}
BOOL CMyBMPClient::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
CWnd::OnEraseBkgnd(pDC);
BITMAP bm ;
CDC dcMem ;
VERIFY(m_bmp.GetObject(sizeof(bm), (LPVOID)&bm));
dcMem.CreateCompatibleDC(pDC);
CBitmap* pOldBMP = (CBitmap*) dcMem.SelectObject(&m_bmp);
CRect rect;
GetClientRect(rect);
pDC->BitBlt((rect.right-bm.bmWidth) / 2, // centered
(rect.bottom-bm.bmHeight) / 2,
bm.bmWidth,
bm.bmHeight,
&dcMem,
0, 0,
SRCCOPY);
dcMem.SelectObject(pOldBMP) ;
return TRUE;
}
void CMyBMPClient::OnSize(UINT nType, int cx, int cy)
{
CWnd::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
RedrawWindow(NULL, NULL,
RDW_INVALIDATE|RDW_ERASE|RDW_ERASENOW|RDW_ALLCHILDREN);
return ;
}
// 이렇게 코딩하신 뒤에 메임 프래임 클래스의 OnCreate 함수에
// 이를 의 클래스를 삽입시면 됩니다.
// 먼저 mainframe class 해더에 다음과 같이 정의 하시고,
CMyBMPClient m_wndClient;
// cpp 파일에서 메인 프래임 생성을 담당하는 OnCreate 함수에 다음과 같이 코딩합니다.
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndClient.SubclassWindow(m_hWndMDIClient))
{
TRACE("Failed to subclass MDI client window.\n");
return -1;
}
// 생략..
}
- 2001.08.13 Smile Seo -
- 랭귀지 팩을 만들자!! (0)2007/02/23
- 윈도에 포커스가 가지 못하게 하기 (0)2007/02/23
- 메인 프래임 윈도우에 얼굴을 부여하기 (0)2007/02/22
- Explorer처럼 툴바에 Text 넣기 (0)2007/02/22
- 문자열 검색 API (0)2007/02/22

수안이의 컴퓨터 연구실



Leave your greetings.