GuiControl
GUI 창 안의 콘트롤을 다양하게 변경합니다.
GuiControl, Sub-command, ControlID [, Param3]
매개변수
- Sub-command
아래 리스트 참조.
- ControlID
목표 콘트롤에 연관 변수가 있다면, 그 변수의 이름을 ControlID로 지정하십시오 (이 방법은 다음에 기술하는 방법보다 우선 순위가 높습니다). 이런 이유 때문에, 보통 변수를 콘트롤에 할당하는 것이 가장 좋습니다. 나중에 그 콘트롤에 GuiControl 또는 GuiControlGet을 통하여 접근합니다. 그 콘트롤이 ((GroupBox나 Text 같이) 입력-가능 유형이 아닐지라도 접근할 수 있습니다.
그렇지만, ControlID는 ClassNN (콘트롤의 클래스이름과 실체 번호) 또는 콘트롤의 텍스트일 수 있습니다. 둘 모두 Window Spy를 통하여 알아낼 수 있습니다. 텍스트를 사용할 때 부합 행위는 SetTitleMatchMode로 결정됩니다. 주의: 그림 콘트롤의 파일 이름은 (그 콘트롤이 생성되는 순간에 지정된 대로) 그의 ControlID로 사용이 가능합니다.
[v1.1.04+]: ControlID는 콘트롤의 HWND가 될 수 있습니다.
콘트롤이 기본 GUI 위에 있지 않으면, 그 GUI의 이름도 역시 지정해야 합니다 -- 단, [v1.1.20+]에서는 ControlID이 HWND입니다. 각 HWND가 유일하기 때문입니다. 자세한 것은 논평을 참조하십시오.
- Param3
이 매개변수는 생략합니다. 단, 아래의 부-명령어 리스트에서 고지한 경우는 예외입니다.
ErrorLevel
[v1.1.04+] 이 명령어는 실패시 예외를 던질 수 있습니다. 더 자세한 정보는 실행시간 에러를 참조하십시오.
ErrorLevel은 지정된 창/콘트롤이 존재하지 않거나 기타 어떤 문제 때문에 명령어가 작동하지 못했다면 1이 설정됩니다. 그렇지 않으면 0이 설정됩니다.
부-명령어
(Blank): Sub-command를 비워두면 Param3을 통하여 새로운 내용을 콘트롤에 넣을 수 있습니다. 구체적으로 말해:
Picture: Param3은 적재할 새 이미지의 파일이름이어야 합니다 (지원되는 파일 유형은 Gui Picture를 참조하십시오). 바로 그 파일이름 앞에 다음 옵션을 지정할 수 있습니다:
*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: Param3에 콘트롤의 새 텍스트를 지정하십시오. 콘트롤은 자동으로 확대되지 않기 때문에, 콘트롤의 크기를 키울 필요가 있다면 GuiControl, Move, MyText, W300
를 사용하십시오. StatusBar에 대하여, 이렇게 하면 텍스트에서 오직 앞 부분만 설정됩니다 (더 유연하려면 SB_SetText()를 사용하십시오).
Edit: Param3 안에서 앞에 캐리지 리턴이 없는 (`r) 라인피드는 (`n) 자동으로 CR+LF (`r`n)로 변환되어서 올바르게 표시되도록 만듭니다. 그렇지만, 이것은 보통 신경쓸 필요가 없습니다. Gui Submit
와 GuiControlGet OutputVar
명령어가 CR+LF를 LF (`n)로 교체해서 자동으로 이 변환을 환원하기 때문입니다.
Hotkey: Param3을 비우면 콘트롤을 청소할 수 있습니다. 즉 수식키와 키 이름을 비울 수 있습니다. 예를 들어: ^!c
, ^Numpad1
, +Home
. 유일하게 지원되는 수식키는 ^ (Control), ! (Alt), 그리고 + (Shift)입니다. 사용 가능한 키 이름은 키 목록을 참조하십시오.
Checkbox: Param3가 0이면 버튼의 체크표식을 지울 수 있습니다. 1이면 체크 표식을 합니다. 또는 -1이면 회색 체크가 표식됩니다. 그렇지 않으면, Param3은 콘트롤의 새 캡션/텍스트로 간주됩니다. 이 행위를 오버라이드 하는 방법은 아래의 Text를 참조하십시오.
Radio: 위의 Checkbox와 동일합니다. 그렇지만, 라디오 버튼이 체크되어 (켜져) 있고 그리고 여러-라디오 그룹의 멤버라면, 그 그룹에서 다른 라디오 버튼은 자동으로 체크 표식이 해제됩니다. 변수가 하나만 있는 라디오 그룹 안에서 새 버튼에 체크 표시를 하려면, ControlID에 버튼의 이름/텍스트를 지정하십시오. 단, 그 변수가 직접적으로 연관되어 있는 버튼이 아니어야 합니다.
DateTime/MonthCal: Param3에 YYYYMMDDHH24MISS 형식으로 날짜-시간 도장을 지정하십시오. %A_Now%
를 지정하면 현재 날짜와 시간을 사용할 수 있습니다 (오늘). DateTime 콘트롤에 대하여, Param3을 생략하면 (만약 이 능력을 가지고 생성되었을 경우) 콘트롤에 날짜/시간이 선택되지 않을 수도 있습니다. MonthCal 콘트롤에 대하여, 콘트롤이 다중-선택이 된다면 범위를 지정할 수도 있습니다.
UpDown/Slider/Progress: Param3은 콘트롤의 새 위치가 되어야 합니다. Param3의 첫 문자가 플러스 사인이면, 그 숫자는 현재 위치로부터의 오프셋(상대거리)로 간주됩니다. 예를 들어, +10
이면 위치가 10만큼 증가하고 +-10
이면 (플러스 마이너스 10) 위치가 10만큼 감소합니다. 새 위치가 콘트롤의 범위 밖이면, 그 콘트롤은 일반적으로 그 근처의 유효한 값이 설정됩니다.
Tab/DropDownList/ComboBox/ListBox: Param3에는 콘트롤의 리스트 끝에 추가될 엔트리 리스트가 파이프 문자로 구분되어 들어 있어야 합니다. 대신에 그 리스트를 교체하려면 (덮어쓰려면) 파이프 문자를 첫 문자로 포함시키십시오 (예, |Red|Green|Blue
). 콘트롤을 비우려면, 파이프 문자만 지정하십시오 (|). 미리-선택된 엔트리 중 하나를 얻으려면, 두 개의 파이프를 그 다음에 포함시키십시오 (예, Red|Green||Blue
). 필드 사이의 가름자는 파이프 말고 다른 것으로 바꿀 수 있습니다. 예를 들어, Gui +Delimiter`n
이면 라인피드로 바뀌고 Gui +DelimiterTab
이면 탭으로 바뀝니다 (`t).
Tab controls: 위의 문단에서 기술한 행위 이외에도, 탭의 부-콘트롤은 여전히 자신의 원래의 탭 번호와 연관되어 있습니다; 즉, 절대로 탭의 실제 표시-이름과 연관되지 않습니다. 이런 이유로, 탭의 이름을 바꾸거나 이동을 해도 부-콘트롤이 속한 탭 번호는 바뀌지 않습니다. 예를 들어, 세 개의 탭 "Red|Green|Blue"가 있고 GuiControl,, MyTab, |Red|Blue
를 수단으로 두 번째 탭을 제거하면, 원래 Green과 연관되어 있던 부-명령어는 이제 Blue와 연관됩니다. 이런 행위 때문에, 보통 끝에 있는 탭만 제거해야 합니다. 이런 식으로 제거된 탭들은 나중에 다시 추가할 수 있습니다. 그 때 원래 콘트롤 세트를 다시 요구할 것입니다.
ListView 그리고 TreeView: 이것들은 Sub-command가 비어 있을 때 지원되지 않습니다. 대신에, 내장 ListView 함수와 TreeView 함수를 사용하십시오.
GuiControl, Text: 위와 동일하게 행위합니다. 단, 다음은 예외입니다:
Checkbox/Radio: Param3은 새 텍스트/캡션으로 간주됩니다. -1, 0, 또는 1일지라도 마찬가지입니다.
DateTime: Param3은 콘트롤이 보여주는 새 날짜/시간 형식으로 간주됩니다. Param3을 생략하면, 맞춤 포맷은 모두 제거되고 짧은-날짜 형식이 효력을 발휘합니다.
ComboBox: Param3은 ComboBox의 Edit 콘트롤 안에 직접적으로 넣을 텍스트로 간주됩니다.
GuiControl, Move: 콘트롤을 이동하거나 크기를 바꿉니다. 다음 옵션 기호 중 하나 이상을 Param3에 지정하십시오: 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 ; "% " 접두 심볼을 통하여 표현식을 사용합니다.
GuiControl, MoveDraw: (위의)"Move"와 같습니다. 단, 콘트롤이 점유하고 있는 GUI 창을 다시 칠하기도 합니다. 이 때문에 반복적으로 빨리 호출하면 원하지 않는 깜빡거림이 발생할 수 있지만, GroupBoxes와 같은 콘트룰 유형에 그림 잔상이 남는 문제가 해결됩니다. v1.0.48.04+에서, 마지막 매개변수를 생략하면 이동할 필요 없이 다시 그릴 수 있습니다.
GuiControl, Focus: 키보드 초점을 콘트롤에 설정합니다. 효과가 있으려면, 창은 일반적으로 최소화되어 있거나 숨어 있으면 안 됩니다.
GuiControl, Enable / Disable: 콘트롤을 활성화 하거나 불능으로 만듭니다 (회색 처리). 탭 콘트롤에 대하여, 이는 또한 탭의 모든 하위-콘트롤도 켜고 끕니다. 그렇지만, GuiControl Disable
을 통하여 명시적으로 꺼진 하위-콘트롤은 그 설정을 기억합니다. 그래서 그의 Tab 콘트롤이 다시 활성화 되어도 여전히 불능 상태로 있습니다. 단어 Disable 또는 Enable 다음에 즉시 선택적으로 0 또는 1이 따라올 수 있습니다. 0이면 반대로 뒤집어지는 효과가 있습니다. 예를 들어, Enable
그리고 Enable%VarContainingOne%
이면 둘 모두 콘트롤을 활성화 하지만, Enable%VarContainingZero%
는 콘트롤을 불능화 시킵니다.
GuiControl, Hide / Show: 콘트롤을 보여주거나 감춥니다. Tab 콘트롤에 대하여, 이것은 또 탭의 모든 하위 콘트롤도 보여주거나 감춥니다. 또 콘트롤의 단축 키가 (밑줄 기호) 작동하지 못하도록 막고 싶다면, GuiControl Disable
를 통하여 그 콘트롤을 끄십시오. 단어 Hide 또는 Show는 다음에 바로 선택적으로 0 또는 1이 따라올 수 있습니다. 0이면 반대로 뒤집어지는 효과가 있습니다. 예를 들어, Show
그리고 Show%VarContainingOne%
는 둘 다 콘트롤을 보여주지만, Show%VarContainingZero%
는 콘트롤을 감춥니다.
GuiControl, Delete (아직 구현되지 않음): 이 부-명령어는 아직 존재하지 않습니다. 우회책으로서, (위의) Hide 또는 Disable을 사용하거나 또는 Gui Destroy를 통하여 전체 창을 파괴하고 다시 생성하십시오.
GuiControl, Choose, ControlID, N: ListBox, DropDownList, ComboBox, 또는 Tab 콘트롤 안의 선택이 N번 째 엔트리가 되도록 설정합니다. N은 1이면 첫 엔트리, 2이면 두 번째 엔트리, 등등이 되어야 합니다. N이 정수가 아니면, 대신에 아래에 기술한 ChooseString 방법이 사용됩니다. [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, 0x185, 1, -1, ListBox1 ; 모든 항목을 선택합니다. 0x185가 LB_SETSEL입니다. PostMessage, 0x185, 0, -1, ListBox1 ; 모든 항목을 선택 해제합니다. GuiControl, Choose, ListBox1, 0 ; 모든 항목을 선택 해제합니다 (v1.1.06+ 필요).
GuiControl, ChooseString, ControlID, String: ListBox, DropDownList, ComboBox, 또는 Tab 콘트롤에서 앞쪽 부분이 String에 부합하는 엔트리가 선택이 되도록 설정합니다. 검색은 대소문자를 구분하지 않습니다. 예를 들어, 콘트롤 안에 "UNIX Text" 항목이 담겨 있을 경우, 단어 unix (소문자)만 지정해도 충분히 선택할 수 있습니다. 파이프와 이중-파이프 접두 기호도 지원합니다 (자세한 것은 위의 "Choose"를 참조하십시오).
GuiControl, Font: 콘트롤의 글꼴을 모양, 크기, 색 그리고 현재 효과가 있는 스타일에 대하여 변경합니다. 예를 들어:
Gui, Font, s18 cRed Bold, Verdana ; 원한다면, 이와 같은 줄을 사용하여 창에 새로운 기본 글꼴을 설정할 수 있습니다. GuiControl, Font, MyEdit ; 위의 글꼴을 콘트롤에 적용합니다.
GuiControl, +/-Option1 +/-Option2 ...: 다양한 콘트롤-종속적 또는 일반적 옵션과 스타일을 추가하거나 제거합니다.
다음 예제에서, AltSubmit 옵션은 활성화되지만 콘트롤의 g-label은 제거됩니다:
GuiControl, +AltSubmit -g, MyListBox
다음 예제에서, OK 버튼에 새 기본 버튼이 주어집니다:
GuiControl, +Default, OK
스타일 그리고 확장 스타일도 인식하지만, 그 중 어떤 것은 콘트롤이 생성된 후에 적용하거나 제거할 수 없습니다. ErrorLevel은 지정된 변경이 적어도 하나라도 성공하면 0이 설정됩니다. 그렇지 않으면, 1로 설정되어 아무 변경도 적용할 수 없었음을 알려줍니다. 변경이 성공적으로 적용되었다 할지라도, 콘트롤은 그 변경을 무시하기로 결정할 수도 있습니다.
[v1.1.20+]: 콘트롤의 이벤트를 처리하기 위해 함수 객체를 설정하려면, Param3은 반드시 다음 두 예 중 하나와 같이하나의 변수 참조가 되어야 합니다. 함수 객체를 돌려주는 다른 표현식은 현재 지원하지 않습니다.
GuiControl +g, ControlID, %FuncObj% GuiControl +g, ControlID, % FuncObj
논평
기본 창이 아닌 창을 처리하려면 (아래 참조), 그의 이름이나 번호를 지정하고 다음에 쌍점 그리고 부-명령어를 다음 예제와 같이 지정하십시오:
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을 기본값으로 사용합니다.
관련 항목
예제
GuiControl,, MyListBox, |Red|Green|Blue ; 현재 리스트를 새 리스트로 교체합니다. GuiControl,, MyEdit, New text line 1.`nNew text line 2. GuiControl,, MyRadio2, 1 ; 이 라디오 버튼을 켜고 이 그룹의 다른 모든 것들은 끕니다. GuiControl, Move, OK, x100 y200 ; OK 버튼을 새 위치로 이동합니다. GuiControl, Focus, LastName ; 변수나 텍스트의 이름이 "LastName".인 콘트롤에 키보드 초점을 설정합니다.