//class CMainFrame에서
CModeless *m_pDlg; //선언
///////////////////////////////////////////////////////////////////
void CMainFrame::OnMenuitem() //메뉴를 클릭했을때
{
if( m_pDlg != NULL )
{
m_pDlg->SetFocus();
}
else
{
m_pDlg = new Modeless;
m_pDlg->Create(IDD_DIALOG1, this);
m_pDlg->ShowWindow(SW_SHOW);
}
}
void Modeless::OnCancel() //취소 버튼 눌렀을 때
{
DestroyWindow();
//CDialog::OnCancel(); //주석 처리 해야함
}
void Modeless::OnClose() //확인 버튼 눌렀을때
{
DestroyWindow();
//CDialog::OnClose(); //주석 처리 해야함
}
void Modeless::PostNcDestroy() //PostNcDestroy추가
{
delete this;
((CMainFrame *)AfxGetMainWnd())->m_pDlg = NULL;
}
//////////////////////////////////////////////////////////////////////
//더 쉬운 방법
//class CTestView에서
CModeless m_Dlg; //선언
void TestView::OnInitialUpdate()
{
CRect rect, winRect;
CString str;
if( m_Dlg.GetSafeHwnd() == NULL )
{
m_Dlg.Create(IDD_DIALOG1);
}
AfxGetMainWnd()->GetWindowRect( &winRect );
m_Dlg.GetWindowRect( &rect );
m_Dlg.SetWindowPos( NULL, winRect.right - rect.Width() - 10, winRect.top + 75, rect.Width(), rect.Height(), 0 );
m_Dlg.ShowWindow(SW_SHOW);
}
'Programming > MFC' 카테고리의 다른 글
클래스들 간의 상호참조 (0) | 2010.11.16 |
---|---|
뷰 및 객체간의 상호참조 (0) | 2010.11.16 |
컨트롤에서 데이터값 가져오기, 삽입하기 (0) | 2010.11.16 |
라디오버튼 기본값 설정 (0) | 2010.11.16 |
생성될 윈도우의 위치, 크기, 스타일 변경, 뷰 배경색 변경 (0) | 2010.11.16 |