본문 바로가기

개발/mfc

mfc. diaog 위치 가져오기, 부모 옆에 설정하기 source example

반응형

dialog 를 만드는데, 위치를

부모 옆구리, 아래쪽, 위쪽에 붙여보고 싶었다

 

1. 다이알 로그 위치 가져 오기

2. 다이알로그 위치 설정 하기 이다

 

 

 

main.h 에서 자식 다이알 로그 변수

public:
	CDlg_Log *pDlgLog;	// 자식 다이알로그 부르기 위한 변수

 

main.cpp 에서 자식 다이알 로그 만들기

BOOL CDlg_main::OnInitDialog()
{
	CDialog::OnInitDialog();
:
:
///////////////////////////////////////////////////////// 자식 Dialog  만들기
	pDlgLog = new  CDlg_Log(this);	
	pDlgLog->Create(CDlg_Log::IDD, this); //pDlgLog->Create(CDlg_Set::IDD);	//pDlgLog->Create(CDlg_Log::IDD, CWnd::GetDesktopWindow());		//
//	pDlgLog->CenterWindow(); 
	pDlgLog->ShowWindow(SW_SHOW);		// SW_SHOW:보이게, SW_HIDE: 안보이게
:
:
}

 

 

자식다이알 로그에서 변수 설정

DLG_Log.h

public:		// 다른 다이알 로그 부르기 위한 변수
	CDlg_main *m_pDlg;

 

 

자식 다이알로그에서 부모 연결

CDlg_Log::CDlg_Log(CWnd* pParent /*=NULL*/)
	: CDialog(CDlg_Log::IDD, pParent)
{
	m_pDlg =  (CDlg_main*) pParent;
}

 

자식 다이알 로그에서 버튼 누르면 부모 다이알 로그 주위 에 붙게 만들기

버튼 하나 만드시고, 그거 누르면 동작 하도록 하였읍니다.

void CDlg_Log::OnBnClickedLogButChkpos()
{
	static unsigned char n=0;
	CRect rectPWin, rectParent, rectMyWin, rectMyClient;
	CPoint pos;

	m_pDlg->GetWindowRect(&rectPWin);	// 부모 다이알 로그 위치 가져오기
	m_pDlg->GetClientRect(&rectParent);  // 부모 다이알 로그 크기 가져오기
	GetWindowRect(&rectMyWin);		// 내 위치
	GetClientRect(&rectMyClient);	// 내 크기
	
	switch(n){
	case 0: pos.x=rectPWin.right-12; pos.y=rectPWin.top; break;	// 부모 오른쪽으로 붙이기
	case 1: pos.x=rectPWin.left-10; pos.y=rectPWin.bottom; break;	// 부모 아래쪽으로 "
	case 2: pos.x=rectPWin.left-rectMyClient.right-10; pos.y=rectPWin.top; break;	// 왼쪽으로 "
	case 3: pos.x=rectPWin.left-10; pos.y=rectPWin.top-rectMyClient.bottom-40; break; // 위쪽 "
	}
	SetWindowPos(NULL, pos.x, pos.y, 0, 0, SWP_NOSIZE);	// 내 dialog 위치 지정하기
	n = (n+1) % 4;
}

이 함수 부를 때 마다 부모 다이알 로그의 오른쪽, 아래쪽, 왼쪽, 위쪽에 돌아가며 붙이게 해 놓았다.

 

 

반응형

'개발 > mfc' 카테고리의 다른 글

mfc, Project 만들기  (0) 2024.10.31
mfc, combobox 만들기, 고치기  (0) 2024.10.29
mfc AfxMessageBox 응답 받기  (0) 2024.05.24
mfc button 에 image 올리기, sample source  (0) 2024.05.21
mfc, image 보이기, sample source  (0) 2024.05.21