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

팁사용기

[팁] Custom Window 만들기-2

  • - 첨부파일 : CustomWindow_2.zip (2.3M) - 다운로드

본문

안녕하세요? 미쉐린 김성준입니다.
오늘은 전에 했었던 Custom Window 2번째 시간입니다.
오늘은 이전 예제에 윈도우 전체를 드래그해서 이동하는 기능과 닫기 버튼을 추가하도록 하겠습니다.
그리고 간단한게 Window 내를 Control+Click(마우스 오른쪽 버튼)을 눌러서 ContextualMenu 를 부르는 기능도 간단하게 넣어보도록 하죠.

이번에는 전에 예제를 이어서 하는 것입니다.
우선 전 예제에서는 윈도우를 리사이즈 하는 부분이 들어가 있었죠. 이번에는 드래극 추가 됩니다.
이러한 이벤트가 시작하는 부분은 MouseDown 이벤트이고 동작하는 부분은 MouseDrag 이벤트 입니다.
그럼 우선 메인 윈도우인 Window1 의 이름을 TestWindow 로 바꾸어줍니다.
그리고 속성에 ResizeValue as Boolean 이라는 속성을 하나 추가합니다.
그리고 MouseDown 이벤트의 코드를 다음과 같이 작성(수정)합니다.

if IsCMMClick then

return False
end if


xx = x
yy = y

OldWidth = Width
OldHeight = Height

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


Return true

앞 부분의 IsCMMClick 부분은 잠시뒤 추가할 Contextual 메뉴 부분입니다.
이를 불러오려면 위와 같이 하면 됩니다.
여기에서 리사이즈를 위한 클릭 부분에 클릭을 하게 되면 ResizeValue 속성 값이 True 가 되는 것 입니다.
그럼 이제는 MouseDrag 이벤트의 소스를 다음과 같이 작성(수정)합니다.

if ResizeValue = True then
//Resize Window
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 Window
else
//Drag Window
me.Left = me.Left + (X - xx)
Me.Top = me.Top + (Y-yy)
//Drag Window
end if

위의 소스를 보면 MouseDrag 이벤트에 윈도우를 Drag 하여 이동하기 위한 코드가 추가되었죠.
그 코드가
me.Left = me.Left + (X - xx)
Me.Top = me.Top + (Y-yy)
입니다. 그리고 이 코드 부분은 ResizeValue 값이 False 일 때, 즉 윈도우가 리사이즈 되지 않을 때에만 동작하는 것입니다.
왜냐하면 윈도우의 사이즈가 조정되고 있는데 윈도우의 위치가 같이 움직이면 안되겠죠? 그래서 ResizeValue 값을 이용해서 이를 구분해 준 것 입니다.

그리고 이제는 Close 버튼을 추가하겠습니다. 좀 작은 16*16 사이즈의 붉은색 클로우즈 버튼 아이콘을 구해서 맨 왼쪽 상단에 Canvas 버튼을 이용하여 위치하고 MouseDown 이벤트에는 Return True 를, MouseUp 이벤트에 Close 라고 코드를 작성합니다. 그럼 Close 버튼은 다 만든것입니다.
마지막으로 Contextual Menu 를 추가해보겠습니다.
TestWindow 의 ConstructContextualMenu 이벤트에 다음과 같이 코드를 작성합니다.

base.append( New MenuItem("New Window"))
base.append( New MenuItem(MenuItem.TextSeparator))
base.append( New MenuItem("Quit"))

"New Window" 와 "Quit" 메뉴를 추가해주는 것 입니다.
그리고 ContextualMenuAction 이벤트에 다음과 같이 추가합니다.

Select case hititem.text
case "New Window"
dim t as TestWindow

t = New TestWindow
case "Quit"
Quit
end Select


그럼 "New Window" 메뉴를 선택하면 새로운 윈도우가 생성이 되고, "Quit" 메뉴를 선택하면 종료가 될 것 입니다
생성된 윈도우를 닫으려면 Close 버튼을 클릭하면 되겠죠?
뭐 CustomWindow 의 기본적인 부분은 다 됐습니다.
자세한 부분은 예제 코드를 확인해보시기 바랍니다.
그럼 좋은 하루 되세요~!

ps. 코드는 realbaisic 2007 r5 버젼으로 만들어졌습니다.

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

최신글이 없습니다.

최신글이 없습니다.

댓글목록 0

등록된 댓글이 없습니다.
전체 48 건 - 1 페이지