본문 바로가기
IT-개발,DB

[개발/VC] 다이얼로그 바탕화면에서 자석효과 구현

by SB리치퍼슨 2011. 12. 2.
[개발/VC] 다이얼로그 바탕화면에서 자석효과 구현

다이얼로그의 클래스 위저드에서 OnWindowPosChanging 함수를 추가합니다.
그 다음 아래와 같이 코드를 작성합니다.

void CMagnetDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos) 
{
   CDialog::OnWindowPosChanging(lpwndpos);

   CRect rect;
   GetWindowRect ( &rect);
   int cx = GetSystemMetrics(SM_CXSCREEN);
   int cy = GetSystemMetrics(SM_CYSCREEN);

   // 바탕화면 경계에서 자석효과

   if ((lpwndpos->x > 0) && (lpwndpos->x <= 20))
      lpwndpos->x = 0;

   if ((lpwndpos->y > 0) && (lpwndpos->y <= 20))
      lpwndpos->y = 0;

   if ((lpwndpos->x + rect.Width() >= cx-20) && (lpwndpos->x + rect.Width() < cx))
      lpwndpos->x = cx - rect.Width();

   if ((lpwndpos->y + rect.Height() >= cy-20) && (lpwndpos->y + rect.Height() < cy))
      lpwndpos->y = cy - rect.Height();
}

// 숫자를 작게 하여 바탕화면 자석효과 거리를 줄이고 크게 하여 자석효과 거리를 늘립니다. 
반응형

댓글