응 아니야


메세지박스와 인풋박스에 대해서 알아보도록 하겠습니다. 이것저것 전부 작성할 요량이므로 이 글은 스압이겠습니다. 간단한것부터 응용까지.




메세지박스는, 사용자에게 전달할 내용을 하나의 창을 띄워 보여주는 역할을 합니다.



이런 창 보신적 있으시죠? 이런걸 사용자에게 보여주는 역할을 합니다. 제목과 내용은 무엇으로 어떤 모습으로 나타날지, 옵션에 따라서 어떤 버튼을 눌렀을때 어떻게 처리할지를 선택하게 할 수 도 있습니다. 기본부터 응용까지 익히기 위해서 차근차근 하나하나 모조리 밟아가며 읽어보시기 바랍니다.


기본적으로 함수호출은 msgbox 로 합니다.


MsgBox ""


이렇게만해도 첫 이미지처럼 창이 뜨죠! 하지만 제목이나 내용 아이콘이나 반응은 나타나지를 않습니다. 이건 차차 밑에서 설명하겠습니다.



msgbox를 입력하고 띄어쓰기를 하면 툴팁창을 보고 메세지박스의 구성을 알 수 있습니다. (구분자는 쉼표(,)로 합니다.)


1. prompt (내용)

2. vbmsgboxstyle (아이콘이나 버튼기능)

3. title(제목)

4. helpfile (도움말 경로)

5. context (도움말 목차)


총 다섯가지의 구성이 있는데 필수항목은 prompt입니다. 내용 하나만 넣어줘도 작동을 합니다. 1번부터 차근차근 알아보겠습니다.


1. prompt (내용)

dim a as string

a = "내용인데요..."

msgbox a



프롬프트에는 쌍따옴표(")를 앞뒤로 넣어서 상수를 넣거나 " 없이 변수를 넣어줄 수 있습니다. 이렇게 prompt만 채우고 나머지를 생략했을때 title (제목)은 프로젝트의 이름이 됩니다. 내용에서는 줄넘김(엔터)을 할 수 있습니다. 이전줄과 다음줄 사이에 & vbCrlf & 라고 넣어주시면 됩니다. 그리고(& 또는 and), 개행함수, 그리고를 순서대로 넣되 문자열이나 상수 변수 사이사이에 띄어쓰기를 잘 넣어주시기만 하면 잘 작동합니다.




2. vbmsgboxstyle (아이콘이나 버튼기능)



내용을 알차게 채웠으니 아이콘이나 버튼기능을 넣어보도록 하겠습니다. 내용뒤에 구분자인 쉼표(,)를 넣고 스타일을 지정하면 됩니다. 이때 제목뒤에 쉼표를 넣으면 처음에 띄어쓰기를 했을때 처럼 콤보박스가 나타나면서 지정할 수 있는 스타일들을 보여줍니다. 저 스타일들이 무슨일을 하는지 밑의 표를 보고 알아보겠습니다.


스타일이름

기능

vbOkOnly

0

확인 버튼만 보입니다.

vbOkCancel

1

확인과 취소 버튼이 보입니다.

vbAbortRetryIgnore

2

중단, 재시도, 무시 버튼이 보입니다.

vbYesNoCancel

3

예, 아니오, 취소 버튼이 보입니다.

vbYesNo

4

예, 아니오 버튼이 보입니다.

vbRetryCancel

5

재시도, 취소 버튼이 보입니다.




vbCritical

16

치명적 아이콘입니다.

vbQuestion

32

질문 아이콘입니다.

vbExclamation

48

경고 아이콘입니다.

vbInformation

64

정보 아이콘입니다.




vbDefaultButton1

0

포커스를 첫번째 버튼에 둡니다.

(포커스는 메세지박스가 뜨는줄 모르고 스페이스바나 엔터를 눌렀을 경우

원하지 않는 작업이 실행되지 않도록 하기 위함. 즉, 이용자 보호)

vbDefaultButton2

256

포커스를 두번째 버튼에 둡니다.

vbDefaultButton3

512

포커스를 세번째 버튼에 둡니다.

vbDefaultButton4

1024

포커스를 네번째 버튼에 둡니다.




vbApplicationModal

0

메세지박스를 종료하지 않으면 애플리케이션을 컨트롤할 수 없습니다.

vbSystemModal

4096

메세지박스를 종료하지 않으면 시스템을 컨트롤할 수 없습니다.




vbMsgBoxHelpButton

16384

도움말 버튼이 보입니다.

vbMsgBoxSetForeground

65536

앞에서 보입니다.

vbMsgBoxRight

524288

오른쪽으로 정렬합니다.

vbMsgBoxRtlReading

1048576

오른쪽에서 왼쪽으로 보입니다.


스타일을 지정할때 '스타일이름'을 넣어주면 됩니다. 물론 사용하고 싶은 스타일의 '값'을 넣어줘도 이름과 같은 기능을 합니다. 마찬가지로 제목과 도움말을 생략할 수 있습니다.


※ 여기서 뭔가 발견하신분 계신가요?

 - vbOkOnly, vbDefaultButton1, vbApplicationModal의 값이 모두 0입니다.

 - 모두 기본값으로, 다중 스타일을 사용하지 않았을 경우 적용되는 값들이라는 것입니다.




스타일을 지정할때 하나만 쓸 수는 없으니 구분자를 넣어서 여러개를 쓸수있습니다. 이때 구분자는 연산자 덧셈(+)이나 또는(or)을 사용합니다.


이렇게 스타일에 확인 이외의 버튼을 넣었을 경우, 뚝딱 저 기능이 실행되는것은 아닙니다. 여기서 필요한것이 조건문(if 또는 case)입니다. 조건문과 연산자, 스타일옵션이 합쳐져야 비로소 저 메세지박스에 추가한 버튼이 제기능을 하게됩니다.


스타일옵션

기능

vbok

1

확인 버튼을 눌렀을때의 값

vbcancel

2

취소 버튼을 눌렀을때의 값

vbabort

3

중단 버튼을 눌렀을때의 값

vbretry

4

재시도 버튼을 눌렀을때의 값

vbignore

5

무시 버튼을 눌렀을때의 값

vbyes

6

예 버튼을 눌렀을때의 값

vbno

7

아니오 버튼을 눌렀을때의 값


그러면 조건문을 이용해서 예를 눌렀을때는 "감사합니다.", 아니요를 눌렀을때는 "별로", 도움말을 눌렀을때는 도움말을 띄워보겠습니다. 메세지박스나 인풋박스를 단독으로 사용할때는 괄호()를 빼지만 변수에 대입할때는 괄호를 넣어주어야만 합니다. (배열이기 때문)


Dim 제목 As String
Dim 내용 As String

'제목과 내용이라는 변수를 각각 string 자료형으로 선언합니다.

제목 = "rksotnrhddjq.tistory.com"

'제목 변수에는 블로그 주소를,

내용 = "비주얼 베이직 6.0 메세지와 인풋 강좌용"

'내용 변수에는 강좌용이라는 문자열을 담습니다.

Select Case MsgBox(내용, vbInformation Or vbYesNo Or vbMsgBoxHelpButton Or vbDefaultButton3, , "C:\Users\kim\Desktop\기타 등등\help.hlp", 0)

'조건문을 시작합니다. 메세지박스에 아까 내용변수에 담은 문자열을 나타내고, 정보아이콘을 띄우며 버튼은 예, 아니요, 도움말을 띄웁니다. 메세지박스가 나타났을때 포커스를 3번(도움말)에 맞춰놓고 구분자 두개를 연속으로 넣어 제목을 생략합니다. 도움말을 눌렀을때 이와같은 경로에 있는 도움말 파일을 불러오며, 불러올 도움말의 목차는 0번입니다.

Case vbYes

'예 버튼을 눌렀을때

MsgBox "감사합니다."

'감사합니다를,

Case vbNo

'아니요를 눌렀을때

MsgBox "별로"

'별로를 띄웁니다.

End Select

'조건문을 끝냅니다.


소스 복붙하시라고 따옴표를 넣어서 주석처리했습니다. 여러분의 컴퓨터가 윈도우7 이상이라면 도움말 파일이 없으니 대신 vbAbortRetryIgnore 넣어보셔도 좋습니다.


3. title (제목)

소스에서 계속 제목을 생략해왔습니다. 별다른 이유는 없고 그저 글쓰기 순서에 맞추기 위함입니다. 제목도 마찬가지로 내용처럼 상수나 변수를 넣어줄 수 있습니다. 다만 내용과 다르게 줄넘김(엔터)를 사용할 수 없습니다. 위 소스에서 생략된 , ,를 , 제목, 으로 바꿔주시면 됩니다.


4. helpfile (도움말 경로)

메세지박스에서 도움말을 불러올 수 있습니다. 작업이 진행되다가 먹통이 되거나 중대한 오류가 발생했을때 이 오류를 해결할 방법을 도움말 파일에 담아두면 참 좋겠죠. 일은 엄청나게 많아지겠지만.. 여기서 중요한것은 윈도우 xp를 지나면서 7부터는 도움말파일을 마이크로소프트사에서 더이상 지원하지를 않습니다. 따로 도움말용 프로그램을 다운로드받지 않는다면 아무짝에도 쓸모없는 기능이 되어버리니 참고하시고요. 최근 hlp형식 파일 작성하기라는 강좌를 올려두었습니다. 1장부터 5장까지 준비되어있는데, c++과 도움말 프로그램이 설치되어있지 않은 여러분께서는 알아만 두시고 넘어가시기 바랍니다.


도움말 경로를 쓸 경우 도움말 목차를 반드시 함께 써줘야 합니다. 둘중 하나라도 없으면 무조건 오류가 나오니 둘다 생략을 하거나 둘다 작성하도록 합니다.


5. context (도움말 목차)

목차번호를 넣는 인자입니다. 저는 메세지박스 강좌용으로 급조해서 만든 도움말파일을 불러오기 때문에 목차번호가 당연스럽게도 0번입니다. 상황에 따라서 목차번호를 다르게 불러온다면 상황에 맞는 도움말을 보여줄 수 있겠죠!?


이상으로 메세지박스 강좌를 마치고, 인풋박스 강좌를 시작하겠습니다.




인풋박스는 메세지박스 이전의 행동이라고 보시면 좋을것 같습니다. 사용자로부터 문자열을 입력받아 값을 미리 마련된 변수에 대입하는 과정이기 때문에 메세지박스에 대입된 변수를 불러오게 한다면, 사용자가 입력한대로 문자열을 보게됩니다.



인풋박스는 메세지박스와 비슷하므로 메세지박스에 없는것만 설명드리도록 하겠습니다. 인풋박스도 prompt만 써넣어도 작동을 합니다. 나머진 모조리 생략할 수 있다는 말입니다. 여기서 메세지박스와 다른것은 기본값과 위치값입니다.


default (입력창의 기본값)

xpos (인풋박스의 가로 위치)

ypos (인풋박스의 세로 위치)


한방에 설명해보겠습니다.



기본값은 인풋박스가 실행됐을때 입력창에 미리 써있을 문자열을 말합니다. 드래그되어 있으므로 입력해도 남아있지 않고, 사용자로 하여금 개발자의 의도에 맞게 입력하도록 유도할 수 있는 기능이라고 보시면 되겠습니다. 그리고 x, y pos는 postion의 준말로 인풋박스의 가로세로 위치를 말합니다.



인풋박스 또한 메세지박스와 마찬가지로 변수에 대입할때는 괄호()를 넣어주어야만 합니다. 인풋박스를 변수에 대입하면 변수에 입력창에 써넣은 값이 대입되기 때문에 참으로 유용한 기능이라고 생각합니다. 물론 저는 잘 안씁니다.


메세지박스와 인풋박스를 알아봤습니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band