You are here

Ontop??의대한 질문입니다.

/더위/
안녕하세요...

always on top의 대해 질문이 있어서 올립니다.

os는 XP구요
tcl ver는 active tcl 8.4.10입니다.

여기에 나와있는 ontop 코드를 그대로 적용하면 안되네요??
Error가 발생합니다.

여기 밑에있는 코드를 전부 다 적었거든요??
다 적으면 안되나요??
아니면 다른것을 받아서 설치후 적용되나요?

=============================================

윈도우즈 상에서..
코드:
wm attributes (window) -topmost 1

코드:
bind . "setontop"
proc setontop {} {wm attributes . -topmost [expr [wm attributes . -topmost] ^ 1]}

코드:
exec WinCtlW.exe -id [wm frame .] topmost &

코드:
load ffidl05.dll
ffidl::callout dll_SetWindowPos {int int int int int int int} int [ffidl::symbol user32.dll SetWindowPos]
ffidl::callout dll_GetWindowLong {int int} int [ffidl::symbol user32.dll GetWindowLongA]
ffidl::callout dll_FindWindowTitle {int pointer-utf8} int [ffidl::symbol user32.dll FindWindowA]
# windowname is based on wm title
# state is 1 to set or anything else to reset, empty returns the current state
proc topmost {windowname {state ""}} {
set hwnd [dll_FindWindowTitle 0 $windowname]
if {$hwnd == 0 } {
return "Not a valid top window"
}
set WS_EX_TOPMOST 0x8
set GWL_EXSTYLE -20
set TOPMOST -1
set NOTOPMOST -2
set SWP_NOACTIVATE 0x10
set SWP_NOMOVE 0x2
set SWP_NOSIZE 0x1
set screenwidth [lindex [split [wm geometry .] x+] 0]
set screenheight [lindex [split [wm geometry .] x+] 1]
set result [expr ([dll_GetWindowLong $hwnd $GWL_EXSTYLE] & $WS_EX_TOPMOST )>>3]
if {$state == "" } {
return $result
}
if {$state == 1} {
dll_SetWindowPos $hwnd $TOPMOST 0 0
$screenwidth $screenheight
[expr $SWP_NOACTIVATE | $SWP_NOMOVE | $SWP_NOSIZE]
} else {
dll_SetWindowPos $hwnd $NOTOPMOST 0 0
$screenwidth $screenheight
[expr $SWP_NOACTIVATE | $SWP_NOMOVE | $SWP_NOSIZE]
}
return [expr ([dll_GetWindowLong $hwnd $GWL_EXSTYLE] & $WS_EX_TOPMOST )>>3]
}

topmost [wm title .] ?boolean?