GuiControl

GUI 창 안의 콘트롤을 다양하게 변경합니다.

GuiControl, SubCommand, ControlID , Value

매개변수

SubCommand, Value
These are dependent upon each other and their usage is described below.
ControlID

목표 콘트롤에 연관 배열이 있으면, 그 변수의 이름을 ControlID로 지정하십시오 (이 방법은 다음이 기술한 방법보다 우선 순위가 높습니다). 이런 이유 때문에, 보통 변수를 콘트롤에 할당하는 것이 가장 좋습니다. 나중에 그 콘트롤에 GuiControl 또는 GuiControlGet을 통하여 접근합니다. 그 콘트롤이 ((GroupBox나 Text 같이) 입력-가능 유형이 아닐지라도 접근할 수 있습니다.

그렇지 않으면, ControlID는 ClassNN (콘트롤의 클래스이름과 실체 번호) 또는 그 콘트롤의 텍스트일 수 있습니다. 둘 모두 Window Spy를 통하여 알아낼 수 있습니다. 텍스트를 사용할 때, 부합 행위는 SetTitleMatchMode에 의하여 결정됩니다.

주의: 그림 콘트롤의 파일 이름이 (그 콘트롤이 생성되는 순간에 지정된 대로 ) 그의 ControlID로 사용될 수도 있씁니다.

[v1.1.04+]: ControlID는 콘트롤의 HWND일 수 있습니다.

If the control is not on the default GUI, the name or HWND of the GUI must also be specified -- except on [v1.1.20+] when ControlID is a HWND, since each HWND is unique. 자세한 것은 논평을 참조하십시오.

부-명령어

For SubCommand, specify one of the following:

(Blank)

Puts new contents into the control.

GuiControl,, ControlID , Value

SubCommand를 비워두면 Value을 통하여 새로운 내용을 콘트롤에 넣을 수 있습니다. 구체적으로 말해:

Picture: Value should be the filename (or handle) of the new image to load (see Gui Picture for supported file types). 바로 그 파일이름 앞에 다음 옵션을 지정할 수 있습니다: *wN (너비 N), *hN (높이 N), 그리고 *IconN (DLL 또는 EXE 파일 안에서 아이콘 그룹 번호 N). 다음 예제에서, 두 번째 아이콘 그룹의 기본 아이콘이 너비 100 그리고 높이 자동으로 "화면 비율 유지"를 통하여 적재됩니다: GuiControl,, MyPic, *icon2 *w100 *h-1 C:\My Application.exe. *w0 *h0을 지정하면 그 이미지의 실제 너비와 높이를 사용할 수 있습니다. *w*h를 생략하면, 이미지는 콘트롤의 현재 크기에 맞게 조절됩니다. 여러-아이콘 .ICO 파일로부터 적재할 때, 너비와 높이를 지정해도 어느 아이콘을 적재할지 결정됩니다.

주의: 마지막 옵션과 파일이름 사이에 탭이나 스페이스는 하나만 사용하십시오; 나머지 스페이스와 탭은 파일이름의 일부로 간주됩니다.

Text/Button/GroupBox/StatusBar/Link: Value에 콘트롤의 새 텍스트를 지정하십시오. 콘트롤은 자동으로 확대되지 않기 때문에, 콘트롤의 크기를 키울 필요가 있다면 GuiControl, Move, MyText, W300를 사용하십시오. StatusBar에 대하여, 이렇게 하면 텍스트에서 오직 앞 부분만 설정됩니다 (더 유연하려면 SB_SetText()를 사용하십시오).

Edit: Value 안에서 앞에 캐리지 리턴이 없는 (`r) 라인피드는 (`n) 자동으로 CR+LF (`r`n)로 변환되어서 올바르게 표시되도록 만듭니다. 그렇지만, 이것은 보통 신경쓸 필요가 없습니다. Gui SubmitGuiControlGet OutputVar 명령어가 CR+LF를 LF (`n)로 교체해서 자동으로 이 변환을 환원하기 때문입니다.

Hotkey: Value을 비우면 콘트롤을 청소할 수 있습니다. 즉 수식키와 키 이름을 비울 수 있습니다. 예제: ^!c, ^Numpad1, +Home. 지원되는 유일한 수식키는 ^ (Ctrl), ! (Alt), 그리고 + (Shift)입니다. 사용 가능한 키 이름은 키 목록을 참조하십시오.

Checkbox: Value가 0이면 버튼의 체크표식을 지울 수 있습니다. 1이면 체크 표식을 합니다. 또는 -1이면 회색 체크가 표식됩니다. 그렇지 않으면, Value은 콘트롤의 새 캡션/텍스트로 간주됩니다. See the Text sub-command below for how to override this behavior.

Radio: 위의 Checkbox와 동일합니다. 그렇지만, 라디오 버튼이 체크되어 (켜져) 있고 그리고 여러-라디오 그룹의 멤버라면, 그 그룹에서 다른 라디오 버튼은 자동으로 체크 표식이 해제됩니다. 변수가 하나만 있는 라디오 그룹 안에서 새 버튼에 체크 표시를 하려면, ControlID에 버튼의 이름/텍스트를 지정하십시오. 단, 그 변수가 직접적으로 연관되어 있는 버튼이 아니어야 합니다.

DateTime/MonthCal: ValueYYYYMMDDHH24MISS 형식으로 날짜-시간 도장을 지정하십시오. %A_Now%를 지정하면 현재 날짜와 시간을 사용할 수 있습니다 (오늘). DateTime 콘트롤에 대하여, Value을 생략하면 (만약 이 능력을 가지고 생성되었을 경우) 콘트롤에 날짜/시간이 선택되지 않을 수도 있습니다. MonthCal 콘트롤에 대하여, 콘트롤이 다중-선택이 된다면 범위를 지정할 수도 있습니다.

UpDown/Slider/Progress: Value은 콘트롤의 새 위치가 되어야 합니다. Value의 첫 문자가 플러스 사인이면, 그 숫자는 현재 위치로부터의 오프셋(상대거리)로 간주됩니다. 예를 들어, +10이면 위치가 10만큼 증가하고 +-10이면 (플러스 마이너스 10) 위치가 10만큼 감소합니다. 새 위치가 콘트롤의 범위 밖이면, 그 콘트롤은 일반적으로 그 근처의 유효한 값이 설정됩니다.

Tab/DropDownList/ComboBox/ListBox: Value에는 콘트롤의 리스트 끝에 추가될 엔트리 리스트가 파이프 문자로 구분되어 들어 있어야 합니다. 대신에 그 리스트를 교체하려면 (덮어쓰려면) 파이프 문자를 첫 문자로 포함시키십시오 (예, |Red|Green|Blue). 콘트롤을 비우려면, 파이프 문자만 지정하십시오 (|). 미리-선택된 엔트리 중 하나를 얻으려면, 두 개의 파이프를 그 다음에 포함시키십시오 (예, Red|Green||Blue). 필드 사이의 가름자는 파이프 말고 다른 것으로 바꿀 수 있습니다. 예를 들어, Gui +Delimiter`n이면 라인피드로 바뀌고 Gui +DelimiterTab이면 탭으로 바뀝니다 (`t).

탭 콘트롤: 위의 문단에서 기술한 행위 이외에도, 탭의 부-콘트롤은 여전히 자신의 원래의 탭 번호와 연관되어 있습니다; 즉, 절대로 탭의 실제 표시-이름과 연관되지 않습니다. 이런 이유로, 탭의 이름을 바꾸거나 이동을 해도 부-콘트롤이 속한 탭 번호는 바뀌지 않습니다. 예를 들어, 세 개의 탭 "Red|Green|Blue"가 있고 GuiControl,, MyTab, |Red|Blue를 수단으로 두 번째 탭을 제거하면, 원래 Green과 연관되어 있던 부-명령어는 이제 Blue와 연관됩니다. 이런 행위 때문에, 보통 끝에 있는 탭만 제거해야 합니다. 이런 식으로 제거된 탭들은 나중에 다시 추가할 수 있습니다. 그 때 원래 콘트롤 세트를 다시 요구할 것입니다.

ListView 그리고 TreeView: 이들은 SubCommand가 비어 있으면 지원되지 않습니다. 대신에 내장 ListView 함수TreeView 함수를 사용하십시오.

Text

Changes the text/caption of the control.

GuiControl, Text, ControlID , Value

Behaves the same as the blank sub-command above except for:

Checkbox/Radio: Value은 새 텍스트/캡션으로 간주됩니다. -1, 0, 또는 1일지라도 마찬가지입니다.

DateTime: Value은 콘트롤이 보여주는 새 날짜/시간 형식으로 간주됩니다. Value을 생략하면, 맞춤 포맷은 모두 제거되고 짧은-날짜 형식이 효력을 발휘합니다.

ComboBox: Value은 ComboBox의 Edit 콘트롤 안에 직접적으로 넣을 텍스트로 간주됩니다.

Move

콘트롤을 이동하거나 크기를 바꿉니다.

GuiControl, Move, ControlID, Options

다음 옵션 기호 중 하나 이상을 Options에 지정하십시오: X (GUI 창의 클라이언트 구역에 상대적인 x-좌표, 클라이언트 구역에서 제목 바, 메뉴 바, 그리고 테두리는 제외됩니다); Y (y-좌표), W (Width), H (Height). (각 숫자는 십육진수가 아니라 십진수로 지정하십시오.) 예를 들어:

GuiControl, Move, MyEdit, x10 y20 w200 h100
GuiControl, Move, MyEdit, % "x" VarX+10 "y" VarY+5 "w" VarW*2 "h" VarH*1.5 ; "% " 접두 심볼을 통하여 표현식을 사용합니다.

MoveDraw

Moves and/or resizes the control and repaints the region of the GUI window occupied by the control.

GuiControl, MoveDraw, ControlID , Options

See the Move sub-command (above) for details. 이 때문에 반복적으로 빨리 호출하면 원하지 않는 깜빡거림이 발생할 수 있지만, GroupBoxes와 같은 콘트룰 유형에 그림 잔상이 남는 문제가 해결됩니다. [v1.0.48.04+]: The last parameter may be omitted to redraw the control without moving or resizing it.

Focus

키보드 초점을 콘트롤에 설정합니다.

GuiControl, Focus, ControlID

효과가 있으려면, 창은 일반적으로 최소화되어 있거나 숨어 있으면 안됩니다.

Disable

Disables (grays out) the control.

GuiControl, Disable, ControlID

For Tab controls, this will also disable all of the tab's sub-controls. 단어 Disable 다음에 즉시 선택적으로 0 또는 1이 따라올 수 있습니다. 0이면 반대로 뒤집어지는 효과가 있습니다. For example, Disable and Disable%VarContainingOne% would both disable the control, but Disable%VarContainingZero% would enable it.

Enable

Enables the control.

GuiControl, Enable, ControlID

For Tab controls, this will also enable all of the tab's sub-controls. However, any sub-control explicitly disabled via the Disable sub-command (above) will remember that setting and thus remain disabled even after its Tab control is re-enabled. 단어 Enable 다음에 즉시 선택적으로 0 또는 1이 따라올 수 있습니다. 0이면 반대로 뒤집어지는 효과가 있습니다. 예를 들어, Enable 그리고 Enable%VarContainingOne%이면 둘 모두 콘트롤을 활성화 하지만, Enable%VarContainingZero%는 콘트롤을 불능화 시킵니다.

Hide

Hides the control.

GuiControl, Hide, ControlID

For Tab controls, this will also hide all of the tab's sub-controls. If you additionally want to prevent a control's shortcut key (underlined letter) from working, disable the control via the Disable sub-command. 단어 Hide는 다음에 바로 선택적으로 0 또는 1이 따라올 수 있습니다. 0이면 반대로 뒤집어지는 효과가 있습니다. For example, Hide and Hide%VarContainingOne% would both hide the control, but Hide%VarContainingZero% would show it.

Show

Shows the control.

GuiControl, Show, ControlID

For Tab controls, this will also show all of the tab's sub-controls. 단어 Show는 다음에 바로 선택적으로 0 또는 1이 따라올 수 있습니다. 0이면 반대로 뒤집어지는 효과가 있습니다. 예를 들어, Show 그리고 Show%VarContainingOne%는 둘 다 콘트롤을 보여주지만, Show%VarContainingZero%는 콘트롤을 감춥니다.

Delete

Not yet implemented: 이 부-명령어는 아직 존재하지 않습니다. As a workaround, use the sub-commands Hide and/or Disable (above), or destroy and recreate the entire window via Gui Destroy.

Choose

ListBox, DropDownList, ComboBox, 또는 Tab 콘트롤 안의 선택이 N번 째 엔트리가 되도록 설정합니다.

GuiControl, Choose, ControlID, N

N은 첫 엔트리에 대하여 1이 되고 두 번째 엔트리는 2가 됩니다. 등등. If N is not an integer, the ChooseString sub-command (below) will be used instead. [v1.1.06+]: N이 0이면, ListBox, DropDownList 또는 ComboBox의 현재 선택이 제거됩니다.

Control Choose와 다르게, 이 부-명령어는 콘트롤에 연관된 어떤 g-label도 촉발시키지 않습니다. 단, N 앞에 파이프 문자가 있는 경우는 예외입니다 (그렇다고 하도라도, g-label은 새 선택이 이전 선택과 다를 경우에만 촉발됩니다. 적어도 Tab 콘트롤은 그렇습니다.). 예를 들어: GuiControl, Choose, MyListBox, |3.

또 종료 이벤트를 일어나도록 만들려면 (ListBox의 경우 더블 클릭), 앞에 파이프를 하나 대신에 두 개 포함하십시오 (이것은 Tab 콘트롤에는 지원되지 않습니다).

다중-선택 ListBox에서 모든 항목을 선택하거나 해제하려면, 다음 예제를 따르십시오:

Gui +LastFound  ; 아래에서 WinTitle을 지정할 필요가 없습니다.
PostMessage, 0x0185, 1, -1, ListBox1  ; 모든 항목을 선택합니다. 0x0185가 LB_SETSEL입니다.
PostMessage, 0x0185, 0, -1, ListBox1  ; 모든 항목을 선택 해제합니다.
GuiControl, Choose, ListBox1, 0  ; 모든 항목을 선택 해제합니다 ([v1.1.06+] 필요).

ChooseString

ListBox, DropDownList, ComboBox, 또는 Tab 콘트롤에서 앞쪽 부분이 String에 부합하는 엔트리가 선택이 되도록 설정합니다.

GuiControl, ChooseString, ControlID, String

검색은 대소문자를 구분하지 않습니다. For example, if a control contains the item "UNIX Text", specifying GuiControl, ChooseString, ControlID, unix would be enough to select it. The pipe and double-pipe prefix are also supported (see the Choose sub-command above for details).

Font

콘트롤의 글꼴을 모양, 크기, 색 그리고 현재 효과가 있는 스타일에 대하여 변경합니다.

GuiControl, Font, ControlID

예를 들어:

Gui, Font, s18 cRed Bold, Verdana  ; 원한다면, 이와 같은 줄을 사용하여 창에 새로운 기본 글꼴을 설정할 수 있습니다.
GuiControl, Font, MyEdit  ; 위의 글꼴을 콘트롤에 적용합니다.

Options

다양한 콘트롤-종속적 또는 일반적 옵션과 스타일을 추가하거나 제거합니다.

GuiControl, +/-Option1 +/-Option2 ..., ControlID , Value

다음 예제에서, AltSubmit 옵션은 활성화되지만 콘트롤의 g-label은 제거됩니다:

GuiControl, +AltSubmit -g, MyListBox

다음 예제에서, OK 버튼에 새 기본 버튼이 주어집니다:

GuiControl, +Default, OK

스타일 그리고 확장 스타일도 인식하지만, 그 중 어떤 것은 콘트롤이 생성된 후에 적용하거나 제거할 수 없습니다. ErrorLevel은 지정된 변경이 적어도 하나라도 성공하면 0이 설정됩니다. 그렇지 않으면, 1로 설정되어 아무 변경도 적용할 수 없었음을 알려줍니다. 변경이 성공적으로 적용되었다 할지라도, 콘트롤은 그 변경을 무시하기로 결정할 수도 있습니다.

[v1.1.20+]: 콘트롤의 이벤트를 처리하기 위해 함수 객체를 설정하려면, Value은 반드시 다음 두 예 중 하나와 같이하나의 변수 참조가 되어야 합니다. 함수 객체를 돌려주는 다른 표현식은 현재 지원하지 않습니다.

GuiControl +g, ControlID, %FuncObj%
GuiControl +g, ControlID, % FuncObj

에러 처리

[v1.1.04+]: 이 명령어는 실패하면 예외를 던질 수 있습니다. 더 자세한 정보는 실행시간 에러를 참조하십시오.

ErrorLevel은 지정된 창/콘트롤이 존재하지 않거나 또는 다른 어떤 문제 때문에 명령어가 작동하지 못하면 1이 설정됩니다. 그렇지 않으면 0이 설정됩니다.

논평

기본 창 말고 다른 창을 처리하려면, 그의 이름 또는 번호 (또는 [v1.1.03+]이라면, 그의 HWND) 그리고 다음에 쌍점을 두고 부-명령어를 다음 예제와 같이 포함하십시오:

GuiControl, MyGui:Show, MyButton
GuiControl, MyGui:, MyListBox, Item1|Item2

변수 하나가 여러 GUI 창에 사용될 수 있기 때문에 ControlID가 콘트롤의 연관 배열이라고 할지라도 꼭 이렇게 해야 합니다. [v1.1.20+]에서는 GUI 이름을 생략할 수 있습니다. ControlID가 콘크롤의 HWND일지라도 마찬가지입니다.

GUI 쓰레드는 GUI 행위의 결과로 기동된 쓰레드로 정의됩니다. GUI 행위에는 GUI 창이 메뉴 바로부터 항목을 선태하는 것, 또는 그의 g-labels중 하나를 (버튼을 눌러서) 촉발 시키는 것이 포함됩니다.

GUI 쓰레드에 대하여 기본 창 이름은 그 쓰레드를 기동한 창의 이름입니다. 비-GUI 쓰레드는 1을 기본값으로 사용합니다.

Gui, GuiControlGet, Control

예제

현재 리스트를 새 리스트로 교체합니다.

GuiControl,, MyListBox, |Red|Green|Blue

Puts new text into an Edit control.

GuiControl,, MyEdit, New text line 1.`nNew text line 2.

Turns on a radio button and turns off all the others in its group.

GuiControl,, MyRadio2, 1

Moves an OK button to a new location.

GuiControl, Move, OK, x100 y200

Sets keyboard focus to a control whose variable or text is "LastName".

GuiControl, Focus, LastName