1. 모달리스 생성
CModeLess *m_pmodeless = new CModeLess(this);
m_pmodeless->Create(CModeLess::IDD);
m_pmodeless->ShowWindow(SW_SHOW);
2. 현재 메인윈도우 뒤쪽으로 숨기고 싶은경우
m_pmodeless->Create(CModeLess::IDD,GetDesktopWindow());
3. 모달리스로 띄운 다이얼로그의 메모리 해제
/* 1번째 경우 */
// 모달리스 종료시 삭제
void CModeLess::PostNcDestroy()
{
CDialog::PostNcDestroy();
((CMainFrame*)m_parent)->m_pmodeless = NULL;
delete this;
}
/* 2번째 경우 */
// 모달리스 종료시 부모에게 메시지를 날려 처리
void CModeLess::PostNcDestroy()
{
CDialog::PostNcDestroy();
GetParent()->PostMessage(WM_MODELESS_CLOSED,0,0);
delete this;
}
LRESULT CMainFrame::OnMyMethod(WPARAM wParam, LPARAM lParam)
{
m_pmodeless = NULL;
return 0;
}
4. 한개의 인스턴스만 허용하게 할경우
if(m_pmodeless)
{
m_pmodeless->SetForegroundWindow();
}
else
{
m_pmodeless = new CModeLess(this);
m_pmodeless->Create(CModeLess::IDD);
m_pmodeless->ShowWindow(SW_SHOW);
}
5. OnOK(), OnCancle()에서의 문제점
void CModeLess::OnCancel()
{
DestroyWindow();
}