C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[25325] [질문] 자석 효과를 가지는 폼에 대해서 조금 자세히 질문드립니다.
최민우 [minw428] 804 읽음    2003-04-24 09:50
안녕하세요.

부모창 외곽 영역에 달라붙는 자석효과를 가진 자식폼을 만들고 있는데요.

잘 안되는 부분이 있어서 이렇게 질문을 드립니다.

제가 사용한 방법은, 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;
}

+ -

관련 글 리스트
25325 [질문] 자석 효과를 가지는 폼에 대해서 조금 자세히 질문드립니다. 최민우 804 2003/04/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.