반응형
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 |