header file
CBitmap m_bmpMainBG;
int m_nMainWidth;
int m_nMainHeight;
InitDialog
// Main 배경 화면
BITMAP bmpInfo; // 비트맵 정보
m_bmpMainBG.LoadBitmap(IDB_UNSPYCURE_BG2); // Main 배경 이미지 Load
m_bmpMainBG.GetBitmap(&bmpInfo); // Main 배경 비트맵 정보 읽기
m_nMainWidth = bmpInfo.bmWidth; // Main 윈도우 폭
m_nMainHeight = bmpInfo.bmHeight; // Main 윈도우 높이
SetWindowPos(NULL, 0, 0, m_nMainWidth, m_nMainHeight,
SWP_NOZORDER | SWP_NOMOVE);
OnPaint
// Main 배경 그림 그리기
CDC cdc;
cdc.CreateCompatibleDC(&dc);
cdc.SelectObject(m_bmpMainBG);
dc.BitBlt(0, 0, m_nMainWidth, m_nMainHeight, &cdc, 0, 0, SRCCOPY);
cdc.DeleteDC();
BOOL CDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_KEYDOWN)
{
switch(pMsg->wParam)
{
case VK_RETURN:
case VK_ESCAPE:
case VK_SPACE:
::TranslateMessage(pMsg);
::DispatchMessage(pMsg);
return TRUE;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
Create
m_pModalessDlg = new CModalessDlg(this);
m_pModalessDlg->Create(CModeless::IDD, this);
// Modalless.h
CWnd * m_pParent
// Modalless.cpp
// Constructor
m_pParent = pParent;
Show
m_pModalessDlg->MoveWindow(rect);
m_pModalessDlg->ShowWindow( SW_SHOW );
Destroy
//Modalless.cpp
ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel)
void CModeless::OnBnClickedCancel()
{
DestroyWindow();
}
void CModeless::PostNcDestroy()
{
CDialog::PostNcDestroy();
if(m_pParent)
{
((CParentDialog*)m_pParent)->m_pmodeless = NULL;
}
delete this;
}