메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

리스트뷰(그리드) 생성

데브카페
Devcafe (토론 | 기여)님의 2026년 11월 12일 (목) 12:46 판 (개발노트 양식 일괄 적용)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
DEVCAFE NOTE
Autoit
AutoIt에서 Tooltip에 ListView와 같은 복잡한 GUI 요소를 직접 포함할 수는 없음
KEY POINTS · 핵심 정리
작성일2024년 11월 30일

툴팁 처럼 간단한 리스트뷰

  • AutoIt에서 Tooltip에 ListView와 같은 복잡한 GUI 요소를 직접 포함할 수는 없음
  • 유사한 동작을 구현하기 위해 작은 GUI 창을 툴팁처럼 보이도록 설정하고, 그 안에 ListView를 배치하는 방법을 사용할 수 있습니다.
<GUIConstantsEx.au3>
#include <WindowsConstants.au3>

; 메인 GUI 생성
Local $hMainGUI = GUICreate("Main GUI", 400, 300)
Local $hButton = GUICtrlCreateButton("Show Tooltip", 150, 130, 100, 30)

; Tooltip GUI 생성 (숨김 상태로 시작)
Local $hTooltipGUI = GUICreate("", 200, 150, 0, 0, $WS_POPUP, $WS_EX_TOPMOST + $WS_EX_TOOLWINDOW)
Local $hListView = GUICtrlCreateListView("Column 1|Column 2|Column 3", 0, 0, 200, 150)
GUICtrlSetData($hListView, "Item 1|Data 1|Value 1")
GUICtrlSetData($hListView, "Item 2|Data 2|Value 2")

; 메인 GUI 표시
GUISetState(@SW_SHOW, $hMainGUI)

; 메시지 루프
While True
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            ExitLoop

        Case $hButton
            ; 버튼 클릭 시 Tooltip GUI 표시
            Local $aMousePos = MouseGetPos()
            WinMove($hTooltipGUI, "", $aMousePos[0] + 10, $aMousePos[1] + 20)
            GUISetState(@SW_SHOW, $hTooltipGUI)
    EndSwitch

    ; 마우스가 Tooltip GUI 외부로 나가면 숨김
    If GUIGetCursorInfo($hTooltipGUI)[4] = 0 Then
        GUISetState(@SW_HIDE, $hTooltipGUI)
    EndIf
WEnd

GUIDelete($hMainGUI)
GUIDelete($hTooltipGUI)
Exit


assignment {{{1}}}


실행 결과

  1. 메인 GUI에 버튼이 표시됩니다.
  2. 사용자가 버튼을 클릭하면 마우스 위치 근처에 ListView가 포함된 작은 창(툴팁처럼 보이는 창)이 표시됩니다.
  3. 사용자가 마우스를 툴팁 창 외부로 이동하면 창이 자동으로 숨겨집니다.

확장 가능성

1. ListView 데이터 동적 업데이트:

  • GUICtrlSetData를 사용하여 툴팁 창이 표시될 때 데이터를 동적으로 변경할 수 있습니다.
GUICtrlSetData($hListView, "New Item 1|New Data 1|New Value 1")

2. 표시 시간 제한:

  • 툴팁 창이 일정 시간 후에 자동으로 숨겨지도록 타이머를 추가할 수 있습니다.
Sleep(3000) ; 3초 후 숨김
GUISetState(@SW_HIDE, $hTooltipGUI)

3. 사용자 정의 디자인:

  • 툴팁 창의 스타일을 변경하거나 애니메이션 효과를 추가하여 더 사용자 친화적으로 만들 수 있습니다.

이 코드는 ListView를 포함한 툴팁 스타일의 GUI를 구현하며, 다양한 UI 시나리오에 응용할 수 있습니다.


리스트뷰 최적화

  1. AutoIt에서 가장 가볍고 빠른 ListView를 구현하려면, GUI의 크기와 스타일을 최적화하고, 불필요한 옵션을 제거하는 것이 중요합니다.
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

; GUI 생성
Local $hGUI = GUICreate("Optimized ListView", 600, 400)

; 가벼운 스타일의 ListView 생성
Local $hListView = GUICtrlCreateListView("Column 1|Column 2|Column 3", 10, 10, 580, 380, _
                                         $LVS_REPORT + $LVS_NOCOLUMNHEADER + $LVS_SINGLESEL + $WS_BORDER)

; ListView에 데이터 추가
For $i = 1 To 1000 ; 1000개의 항목 추가
    GUICtrlCreateListViewItem("Item " & $i & "|Data " & $i & "|Value " & $i, $hListView)
Next

; GUI 표시
GUISetState(@SW_SHOW, $hGUI)

; 메시지 루프
While True
    If GUIGetMsg() = $GUI_EVENT_CLOSE Then ExitLoop
WEnd

GUIDelete($hGUI)
Exit


assignment {{{1}}}


최적화 팁

1. ListView 스타일 최적화:

  • $LVS_NOSORTHEADER: 컬럼 헤더를 클릭해도 정렬되지 않도록 설정하여 성능을 개선합니다.
  • $LVS_OWNERDRAWFIXED: 사용자 정의 렌더링을 추가하여 더 경량화할 수 있습니다.

2. 대량 데이터 추가 시 성능 최적화:

  • 많은 데이터를 추가하는 경우, GUICtrlSetState($GUI_DISABLE)로 업데이트 중 화면 갱신을 비활성화하고, 완료 후 다시 활성화합니다:
GUISetState(@SW_DISABLE, $hGUI)
For $i = 1 To 10000
    GUICtrlCreateListViewItem("Item " & $i & "|Data " & $i & "|Value " & $i, $hListView)
Next
GUISetState(@SW_ENABLE, $hGUI)

3. 데이터 양 제한:

  • 필요하지 않은 경우 화면에 표시되는 데이터의 양을 제한하여 렌더링 부하를 줄입니다.

4. 이벤트 핸들링 최소화:

  • 불필요한 이벤트 루프를 제거하여 ListView 업데이트 속도를 개선합니다.