티스토리 뷰

목표 : 모달리스 다이얼로그를 띄워서 부모 다이얼로그 안에 부착시키는 작업

소주제 : 생성된 모달리스 다이얼로그 크기를 부모 다이얼로그 안에 맞추기

Visual Studio 2012


1. 부모 다이얼로그 좌표값 찾고 모달리스 다이얼로그 안에 붙이기

//버튼 클릭시 모달리스 다이얼로그를 부모 다이얼로그에 붙임
void CModelessDDlg::OnBnClickedButton1()
{
	// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
	//부모 다이얼로그 좌표 구하기
	CRect rectParent;
	this->GetClientRect(&rectParent);
	
	m_dlg1->SetWindowPos(NULL,rectParent.left+10,rectParent.top+130,rectParent.Width()-20,rectParent.Height()-10-130,NULL);
	m_dlg1->ShowWindow(SW_SHOW);
}


2. 부모 다이얼로그 크기 변경시 모달리스 다이얼로그도 같이 맞춰 변경되게 하기

* 프로젝트 - 클래스 마법사 - 클래스이름(CModelessDDlg) - 메시지탭 - WM_SIZE 처리기 추가

void CModelessDDlg::OnSize(UINT nType, int cx, int cy)
{
	CDialogEx::OnSize(nType, cx, cy);

	// TODO: 여기에 메시지 처리기 코드를 추가합니다.
	//부모 다이얼로그 좌표 구하기
	CRect rectParent;
	this->GetClientRect(&rectParent);
	if(m_dlg1->IsWindowVisible())	//모달리스 다이얼로그 활성화시에만 적용
	{
		if(m_dlg1->GetSafeHwnd())
		{
			m_dlg1->SetWindowPos(NULL,rectParent.left+10,rectParent.top+130,rectParent.Width()-20,rectParent.Height()-10-130,NULL);
		}
	}
}


3. 부모 다이얼로그 창 이동시 모달리스 다이얼로그도 같이 맞춰 이동하기

* 프로젝트 - 클래스 마법사 - 클래스이름(CModelessDDlg) - 메시지탭 - WM_MOVE 처리기 추가

void CModelessDDlg::OnMove(int x, int y)
{
	CDialogEx::OnMove(x, y);

	// TODO: 여기에 메시지 처리기 코드를 추가합니다.
	CRect rectParent;
	if(isDlgInit==TRUE)
	{
		this->GetClientRect(&rectParent);
		
		if(m_dlg1->IsWindowVisible())	//모달리스 다이얼로그 활성화시에만 적용
		{
			if(m_dlg1->GetSafeHwnd())
			{
				m_dlg1->SetWindowPos(NULL,rectParent.left+10,rectParent.top+130,rectParent.Width()-20,rectParent.Height()-10-130,NULL);
			}
		}
	}
}



댓글