WM_WINDOWPOSCHANGING 이벤트 핸들러를 이용하면 된다.
void CMiniMapDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos)
{
CDialog::OnWindowPosChanging(lpwndpos);
// TODO: Add your message handler code here
.........
.........
HWND m_hTaskBar;
CRect m_rtTaskBar;
m_hTaskBar = ::FindWindow("Shell_TrayWnd",NULL);
//태스크바의 크기를 가져온다.
::GetWindowRect(m_hTaskBar,&m_rtTaskBar);
// 바탕화면 영역의 크기를 얻는다.
int cx = GetSystemMetrics(SM_CXSCREEN);
int cy = GetSystemMetrics(SM_CYSCREEN);
// 바탕화면의 경계에서의 자석효과
if ((lpwndpos->x >= -10) && (lpwndpos->x <= 10))
lpwndpos->x = 0;
if ((lpwndpos->x + rect.Width() >= cx-10) && (lpwndpos->x + rect.Width() <= cx+10))
lpwndpos->x = cx - rect.Width();
if ((lpwndpos->y >= -10) && (lpwndpos->y <= 10))
lpwndpos->y = 0;
if ((lpwndpos->y + rect.Height() >= cy-10) && (lpwndpos->y + rect.Height() <=
cy+10))
lpwndpos->y = cy - rect.Height();
..........
}
데브피아 검색을 통해서 알아냄. 방법은 아는데 멀 이용해야는지를 모르니;;;
댓글 없음:
댓글 쓰기