|
안녕하세요.
부모창 외곽 영역에 달라붙는 자석효과를 가진 자식폼을 만들고 있는데요.
잘 안되는 부분이 있어서 이렇게 질문을 드립니다.
제가 사용한 방법은, WM_WINDOWPOSCHANGING, WM_MOVE 이 두가지 메세지를 가로채는것이었습니다.
그 결과, 효과는 비슷하게 나지만 화면이 계속 껌벅인다는 단점이 있었습니다.
메세지 자체가 윈도우가 옮겨진 다음에 발생하는 것이기 때문에 옮겨진 윈도우를 다시 강제적으로 옮기는 과정에서 화면 깜박임, 혹은 떨림이 발생하는것 같습니다.
이것을 부드럽게 표현할 수 있는 방법이 없을까요?
조언 부탁드리겠습니다.
소스는 아래와 같습니다.
void __fastcall TSheafManagerForm::WMMOVE(TMessage & msg)
{
int left, right, top, bottom;
left = SheafManagerForm->Left;
right = SheafManagerForm->Left + SheafManagerForm->Width;
top = SheafManagerForm->Top;
bottom = SheafManagerForm->Top + SheafManagerForm->Height;
if(left < 30) // 왼쪽 좌표가 일정 영역 안에 들어갔을 때 폼 강제 이동
SheafManagerForm->Left = 2;
else if(right > MainForm->ClientWidth - 30) // 오른쪽 좌표
SheafManagerForm->Left = MainForm->ClientWidth - SheafManagerForm->Width - 3;
if(top < 80) // TOP
SheafManagerForm->Top = 30;
else if(bottom > MainForm->ClientHeight - 80) // BOTTOM
SheafManagerForm->Top = MainForm->ClientHeight - SheafManagerForm->Height - 20;
}
|