본문으로 바로가기

윈도우 always on top 구현

category Tcl & Tk/팁 (Tip) 2025. 3. 17. 14:47

리눅스의 경우 아래와 같이 합니다.

# -----------------------------------------
# always on top for linux
# -----------------------------------------
proc ontop {W boolean} {
    set bindtags [bindtags $W]
    set index [lsearch $bindtags bind$W]
    if { $boolean } {
        if { $index == -1 } {
            bindtags $W [linsert $bindtags 0 bind$W]
            bind bind$W <Visibility> [list ontop:state %W %s]
        }
    } else {
        if { $index != -1 } {
            bindtags $W [lreplace $bindtags $index $index]
            bind bind$W <Visibility> {}
        }
    }
}
proc ontop:state {W state} {
    #puts "ontop \[$W\] \[$state\]"
    if { ![string equal [winfo toplevel $W] $W] } {
        #puts "  window \[$W\] is not a toplevel"
        return
    }
    if { ![string equal $state VisibilityUnobscured] } { raise $W }
}

# usage: ontop .win 1

윈도즈의 경우 아래아 같이 합니다.

 wm attrib .win -topmost 1

 

두 코드를 동시 지원은 다음과 같이 합니다.

if { $::tcl_platform(platform) == "windows" } {
    wm attrib .win -topmost 1
} else {
    ontop .win 1
}

 

두 플랫폼에서 테스트되었습니다.

'Tcl & Tk > 팁 (Tip)' 카테고리의 다른 글

백터 폰트 출력 예제  (0) 2025.03.19
Tcl의 인코딩에 대하여  (0) 2025.03.19
Jacl을 이용한 SWT 간단 예제  (0) 2025.03.17
에러없는 변수 접근법  (0) 2025.03.17
자신의 IP 알아내기  (0) 2025.03.17