다이얼로그박스를 중앙에 오게 하려면 > MFC Tip

본문 바로가기
사이트 내 전체검색

MFC Tip

다이얼로그박스를 중앙에 오게 하려면

페이지 정보

profile_image
작성자 이즈
댓글 0건 조회 886회 작성일 06-12-26 23:57

본문

다이얼로그박스 함수를 이용해서 리소스에 있는 다이얼로그박스를 하나 띄웠습니다. 이를 부르는 윈도우가 이 다이얼로그박스의 부모 윈도우가 될 줄 알았는데, 해당 다이얼로그 박스의 프로시저에서 GetParent를 해보니까 잘 안됩니다. 다이얼로그박스를 원래 윈도우 위에 한 가운데 띄우려면 어떻게 해야하는지요.

다음과 같은 방법을 통해 다이얼로그박스를 중앙에 오도록 할 수 있습니다.

HWND hwndOwner;
RECT rc, rcDlg, rcOwner;

case WM_INITDIALOG:

if ((hwndOwner = GetParent(hwndDlg)) == NULL)
    hwndOwner = GetDesktopWindow();

GetWindowRect(hwndOwner, &rcOwner);
GetWindowRect(hwndDlg, &rcDlg);
CopyRect(&rc, &rcOwner);

OffsetRect(&rcDlg, -rcDlg.left, -rcDlg.top);
OffsetRect(&rc, -rc.left, -rc.top);
OffsetRect(&rc, -rcDlg.right, -rcDlg.bottom);

SetWindowPos(hwndDlg, HWND_TOP, rcOwner.left + (rc.right / 2), rcOwner.top + (rc.bottom / 2),
    0, 0, // 크기인수를인식한다
    SWP_NOSIZE);

if (GetDlgCtrlID((HWND) wParam) != ID_ITEMNAME) {
    SetFocus(GetDlgItem(hwndDlg, ID_ITEMNAME));
    return FALSE;
}
return TRUE;

댓글목록

등록된 댓글이 없습니다.

Total 172건 10 페이지

검색

회원로그인

회원가입

사이트 정보

컴퓨터 정보,윈도우즈,리눅스,포토샵,3ds
맥스,프로그래밍 강좌팁

접속자집계

오늘
756
어제
724
최대
5,287
전체
637,755
Copyright © www.qdata.co.kr All rights reserved.