• 북마크
  • 추가메뉴
어디로 앱에서 쉽고 간편하게!
애플 중고 거래 전문 플랫폼
오늘 하루 보지 않기
KMUG 케이머그

팁사용기

[팁] Custom Window 만들기-1

  • - 첨부파일 : CustomWindow_1.zip (5.7K) - 다운로드

본문

안녕하세요? 미쉐린 김성준입니다.
오늘은 커스텀 윈도우(Custom Window)를 한번 만들어 보려고 합니다.
즉 사용자 정의의 윈도우인데요.
별것은 아니고 가끔 윈도우를 보다보면 맨날 똑같은 윈도우를 보기 때문에 너무 식상하거나 나만의 윈도우를 만들어서
버튼 위치도 배치해주고픈 것이 사람의 마음(?) 인것 같습니다.
그래서 저도 자주 커스텀 윈도우를 만들어서 프로그램을 만드는데요.
이것에 대해서 1탄을 해보려고 합니다.
1탄은 테두리 없애기와 리사이즈 기능 넣기를 하도록 할께요..^^;;

먼저 테두리 없애기 입니다.
리얼베이직의 윈도우 클래스의 속성(Property)을 보면 MacProcID 라는 것이있는데요.
이것이 뭐냐하면 윈도우의 모양을 바꾸어주는 아이디값입니다.
물론 Metal 이나 Sheet 윈도우등 별도의 설정 부분이 있지만 기본 틀을 벗어날 수는 없습니다.
하지만 MacProcID 를 이용하면 조금 벗어나서 만들 수도 있죠. 이는 클래식 오에스에서 지원하던 기능을 계속 계승해오던거인데요. 도움말에서 MacProcID 를 찾으시면 사용 가능 값이 나옵니다.
그 중에서 1104 번이라고 설정을 하면 테두리가 아무것도 나오지 않게 됩니다.
물론 이 1104번은 도움말에는 없습니다.^^;;
이렇게 하면 끝입니다...^^;; 간단하죠?
그럼 이제 리사이즈 기능을 넣어볼께요..

테두리를 다 없앤다는 것은 주변의 기본적인 윈도우 기능을 하는 버튼들도 모두 사라진다는 것입니다.
따라서 닫기 버튼이나 리사이즈 버튼등 모두 사라지고 윈도우만 남게 되는거죠.
따라서 몇가지 코드를 작성해서 리사이즈를 해주면 됩니다.
이는 윈도우 속성에서 리사이즈 설정과는 상관없이 동작을 할 것 입니다.

먼저 Window 에 새로운 속성 4개를 만들어 줍니다.
속성 만드는 법은 아시죠? 코드 에디터 상에서 Command+Option+P 키를 누르면 됩니다.

xx as integer
yy as integer
OldWidth as Integer
OldHeight as Integer

위와 같이 설정후에 MouseDown 이벤트에 다음과 같이 넣습니다.

xx = x
yy = y

OldWidth = Width
OldHeight = Height

if x >= me.Width-15 and y>=me.Height-15 then
Return true
end if

마우스 버튼이 다운될 때 x, y 좌표의 값을 기억하고, 윈도우의 사이즈를 기억하도록 작성되어있습니다.
그리고 보통 리사이즈 버튼이 위치한 맨 오른쪽 하단에서 15픽셀 값 정도에서 동작이 수행되도록 if 문을 써서 사용했습니다.
그리고 이제 MouseDrag 이벤트 부분에 다음과 같은 코드를 작성합니다.

Self.Width = OldWidth+ (X - xx)
Self.Height = OldHeight + (Y-yy)
if Self.Width <= self.MinWidth then
Self.Width = self.MinWidth
end if
if Self.Height <= self.MinHeight then
Self.Height = self.MinHeight
end if

위와 같이 하면 사이즈가 조절 됩니다.
자세한 코드 작성 화면과 동작은 예제를 참조해 주세요.
그리고 예제에는 멋드러진 Resize 아이콘도 넣었으니 쉽게 확인 가능할거에요.
그럼 다음에는 윈도우를 드래그하여 움직여 위치를 이동시키는 것을 넣고, Close 버튼도 넣어보도록 하겠습니다.
그럼 좋은 하루 되세요~!

from michelin

0 0
로그인 후 추천 또는 비추천하실 수 있습니다.
포인트 5,044
가입일 :
2004-01-25 23:38:19
서명 :
미입력
자기소개 :
미입력

최신글이 없습니다.

최신글이 없습니다.

댓글목록 1

김성준님의 댓글

ps. 코드는 Realbasic 2007 r5 버젼으로 만들어진 것입니다.^^;;

전체 48 건 - 1 페이지