<div class="doc-indent">
<h2 class="tcldoc">[#name|NAME]</h2>
<div class="doc-indent">
cwind - keyboard and mouse simulation
</div>
<h2 class="tcldoc">[#synopsis|SYNOPSIS]</h2>
<div class="doc-indent">
<strong>package require cwind ?1.5.1?</strong><br>
?<em>args</em> &hellip;?<br>
</div>
<h2 class="tcldoc">[#description|DESCRIPTION]</h2>
<div class="doc-indent">
<strong>[#wlist|::cwind::wlist ?<strong>-exact</strong>?
<strong>[#show|::cwind::show ?<strong>-exact</strong>?
<strong>[#waitwind|::cwind::waitwind <em>window-title</em>
<strong>[#gettext|::cwind::gettext]</strong><br>
<strong>[#top|::cwind::top ?<strong>-exact</strong>?
<strong>[#bottom|::cwind::bottom ?<strong>-exact</strong>?
<strong>[#topmost|::cwind::topmost ?<strong>-exact</strong>?
<strong>[#notopmost|::cwind::notopmost ?<strong>-exact</strong>?
<strong>[#getrect|::cwind::getrect]</strong><br>
<strong>[#getwrect|::cwind::getwrect]</strong><br>
<strong>[#getpos|::cwind::getpos]</strong><br>
<strong>[#setpos|::cwind::setpos <em>coordinates</em>]<br>
<strong>[#getwpos|::cwind::getwpos]</strong><br>
<strong>[#setwpos|::cwind::setwpos <em>coordinates</em>]<br>
<strong>[#minimize|::cwind::minimize]</strong><br>
<strong>[#maximize|::cwind::maximize]</strong><br>
<strong>[#restore|::cwind::restore]</strong><br>
<strong>[#minimizeAll|::cwind::minimizeAll]</strong><br>
<strong>[#state|::cwind::state ?<strong>-exact</strong>?
<strong>[#lclick|::cwind::lclick]</strong><br>
<strong>[#rclick|::cwind::rclick]</strong><br>
<strong>[#mclick|::cwind::mclick]</strong><br>
<strong>[#dragl|::cwind::dragl <em>coordinates</em>]<br>
<strong>[#dragm|::cwind::dragm <em>coordinates</em>]<br>
<strong>[#dragr|::cwind::dragr <em>coordinates</em>]<br>
<strong>[#wdragl|::cwind::wdragl <em>coordinates</em>]<br>
<strong>[#wdragm|::cwind::wdragm <em>coordinates</em>]<br>
<strong>[#wdragr|::cwind::wdragr <em>coordinates</em>]<br>
<strong>[#send|::cwind::send <em>text</em> ...]</strong><br>
[#sendmessage|<strong>::cwind::sendmessage</strong> <em>command</em> ?<em>wparam</em>? ?<em>lparam</em>?]<br>
[#postmessage|<strong>::cwind::postmessage</strong> <em>command</em> ?<em>wparam</em>? ?<em>lparam</em>?]<br>
<strong>[#getcb|::cwind::getcb]</strong><br>
<strong>[#putcb|::cwind::putcb
<strong>[#sleeptime|::cwind::sleeptime
<strong>[#version|::cwind::version]</strong><br>
</div>
<h2 class="tcldoc">[#specialcharacters|SPECIAL CHARACTERS]</h2>
<h2 class="tcldoc">[#windowmanagercommands|WINDOW MANAGER COMMANDS]</h2>
<h2 class="tcldoc">[#requirements|REQUIREMENTS]</h2>
<h2 class="tcldoc">[#installation|INSTALLATION]</h2>
<h2 class="tcldoc" style="margin-bottom: 5mm">[#license|LICENSE]</h2>
</div>
<hr class="doc-hr"><div id="name" class="doc-hr">
<p>cwind - keyboard and mouse simulation</p>
<hr class="doc-hr"><div id="synopsis" class="doc-hr">
<p>
<strong>package require cwind
<p>
?<em>args</em> &hellip;?
</p>
<hr class="doc-hr"><div id="description" class="doc-hr">
<p>The CWind package allows one to simulate keyboard and mouse interactions on windows. Keystrokes, mouse clicks and window manager commands can be sent to arbitrary windows.</p>
<p>
<strong id="wlist">::cwind::wlist</strong> ?<strong>-exact</strong>? ?<em>window-title</em>?
<div class="doc-desc">
If <em>window-title</em> (a glob pattern) is omitted, return a list of all existing window titles.<br>
If <em>window-title</em> is specified, return a list of all the MDI child window names. It appears (2017) that there are very few applications using MDI and the technology is falling out of favor although and make use of it.
</div>

<strong id="show">::cwind::show</strong> ?<strong>-exact</strong>? <em>window-title</em>
<div class="doc-desc">
Search for a window with the given title (a glob pattern) and make it the active window.<br>
The <em>window-title</em> must be a proper Tcl list of one or two elements.
The first element is a parent window title and the optional second element is a MDI child window name. It appears (2017) that there are very few applications using MDI and the technology is falling out of favor although and make use of it.
</div>

<strong id="waitwind">::cwind::waitwind</strong> <em>window-title</em> ?<em>seconds</em>?
<div class="doc-desc">
Wait <em>seconds</em> (default 5) for a window with the given title (a glob pattern) to become the active window.
</div>

<strong id="gettext">::cwind::gettext</strong>
<div class="doc-desc">
Return the active window's title.<br>
</div>

<strong id="top">::cwind::top</strong> ?<strong>-exact</strong>? <em>window-title</em>
<div class="doc-desc">
Places the window with the given title (a glob pattern)
at the top of the Z order. Refer to the microsoft documentation of the <em>SetWindowPos()</em> function for a full description.
</div>

<strong id="bottom">::cwind::bottom</strong> ?<strong>-exact</strong>? <em>window-title</em>
<div class="doc-desc">
Places the window with the given title (a glob pattern)
at the bottom of the Z order. Refer to the microsoft documentation of the <em>SetWindowPos()</em> function for a full description.
</div>

<strong id="topmost">::cwind::topmost</strong> ?<strong>-exact</strong>? <em>window-title</em>
<div class="doc-desc">
Places the window with the given title (a glob pattern)
above all non-topmost windows. The window maintains its topmost position even when it is deactivated. Refer to the microsoft documentation of the <em>SetWindowPos()</em> function for a full description.
</div>

<strong id="notopmost">::cwind::notopmost</strong> ?<strong>-exact</strong>? <em>window-title</em>
<div class="doc-desc">
Places the window with the given title (a glob pattern)
above all non-topmost windows (that is, behind all topmost windows). Refer to the microsoft documentation of the <em>SetWindowPos()</em> function for a full description.
</div>

<strong id="getrect">::cwind::getrect</strong>
<div class="doc-desc">
Return a four-element list containing the coordinates of the client rectangle for the active window. This is effectively the size of the client window since the first two coordinates are always <em>0 0</em>.
</div>

<strong id="getwrect">::cwind::getwrect</strong>
<div class="doc-desc">
Return a four-element list containing the screen coordinates of the active window
</div>

<strong id="getpos">::cwind::getpos</strong>
<div class="doc-desc">
Return a list containing the current mouse coordinates on the screen.
</div>

<strong id="setpos">::cwind::setpos</strong> <em>coordinates</em>
<div class="doc-desc">
Set the mouse position relative to the origin {0 0} at the upper left corner on the screen to <em>coordinates</em> (a list of two elements).
</div>

<strong id="getwpos">::cwind::getwpos</strong>
<div class="doc-desc">
Return a list containing the current mouse coordinates on the screen relative to the active window.
</div>

<strong id="setwpos">::cwind::setwpos</strong> <em>coordinates</em>
<div class="doc-desc">
Set the mouse position in the active window relative to the origin {0 0} at the upper left corner to <em>coordinates</em> (a list of two elements).
</div>

<strong id="minimize">::cwind::minimize</strong>
<div class="doc-desc">
Minimize the active window.
</div>

<strong id="maximize">::cwind::maximize</strong>
<div class="doc-desc">
Maximize the active window.
</div>

<strong id="restore">::cwind::restore</strong>
<div class="doc-desc">
Restore the active window to its original size.
</div>

<strong id="minimizeAll">::cwind::minimizeAll</strong>
<div class="doc-desc">
Minimize all the windows.
</div>

<strong id="state">::cwind::state</strong> ?<strong>-exact</strong>? <em>window-title</em>
<div class="doc-desc">
Return the status of the window with the given title (a glob pattern): Maximized, Minimized or Normal.<br>
The <em>window-title</em> must be a proper Tcl list of one or two elements.
The first element is a parent window title and the optional second element is a MDI (Multiple-Document Interface) child window name. It appears (2017) that there are very few applications using MDI and the technology is falling out of favor although and make use of it.
</div>

<strong id="lclick">::cwind::lclick</strong>
<div class="doc-desc">
Send a left mouse click to the active window.
</div>

<strong id="rclick">::cwind::rclick</strong>
<div class="doc-desc">
Send a right mouse click to the active window.
</div>

<strong id="mclick">::cwind::mclick</strong>
<div class="doc-desc">
Send a middle mouse click to the active window.
</div>

<strong id="dragl">::cwind::dragl</strong> <em>coordinates</em>
<div class="doc-desc">
Drag the mouse with the left-button to screen <em>coordinates</em> (a list of two elements).
</div>

<strong id="dragm">::cwind::dragm</strong> <em>coordinates</em>
<div class="doc-desc">
Drag the mouse with the middle-button to screen <em>coordinates</em> (a list of two elements).
</div>

<strong id="dragr">::cwind::dragr</strong> <em>coordinates</em>
<div class="doc-desc">
Drag the mouse with the right-button to screen <em>coordinates</em> (a list of two elements).
</div>

<strong id="wdragl">::cwind::wdragl</strong> <em>coordinates</em>
<div class="doc-desc">
Drag the mouse with the left-button to <em>coordinates</em> (a list of two elements) within the active window.
</div>

<strong id="wdragm">::cwind::wdragm</strong> <em>coordinates</em>
<div class="doc-desc">
Drag the mouse with the middle-button to <em>coordinates</em> (a list of two elements) within the active window.
</div>

<strong id="wdragr">::cwind::wdragr</strong> <em>coordinates</em>
<div class="doc-desc">
Drag the mouse with the right-button to <em>coordinates</em> (a list of two elements) within the active window.
</div>

<strong id="send">::cwind::send</strong> <em>text</em> &hellip;
<div class="doc-desc">
Send each text argument to the active window.
</div>

<strong id="sendmessage">::cwind::sendmessage</strong> <em>command</em> ?<em>wparam</em>? ?<em>lparam</em>?
<div class="doc-desc">
Send a windows manager <em>command</em> (either the integer value or name &ndash; see [#windowmanagercommands|WINDOW MANAGER COMMANDS]) to the active window via SendMessage.
Wparam and lparam are additional integer values required by the <em>command</em>.
</div>

<strong id="postmessage">::cwind::postmessage</strong> <em>command</em> ?<em>wparam</em>? ?<em>lparam</em>?
<div class="doc-desc">
Send a windows manager <em>command</em> (either the integer value or name &ndash; see [#windowmanagercommands|WINDOW MANAGER COMMANDS]) to the active window via PostMessage.
Wparam and lparam are additional integer values required by the <em>command</em>.
</div>

<strong id="getcb">::cwind::getcb</strong>
<div class="doc-desc">
Return the text content of the clipboard.
</div>

<strong id="putcb">::cwind::putcb</strong> <em>text</em>
<div class="doc-desc">
Put text into the clipboard.
</div>

<strong id="sleeptime">::cwind::sleeptime</strong> ?<em>milliseconds</em>?
<div class="doc-desc">
Return or set the <em>sleep time</em> which is the number of milliseconds to delay before sending each character. The default is zero.
</div>

<strong id="version">::cwind::version</strong>
<div class="doc-desc">
Return a string that identifies the Cwind version, the architecture for which it was built (32- or 64-bit), the date and time compiled and the GNU C compiler version.
</div>
</p>
<hr class="doc-hr"><div id="specialcharacters" class="doc-name-bg"><h2>SPECIAL class="doc-hr">
<p>
Special characters may be included with sent text.  For example ctrl+c, ctrl+o, PF4, ...

To distinguish a normal string from a special character, enclose it between pipes (the character '|').

For example, to send ctrl+c, use the following: <strong>|CTRL+| c |CTRL-|</strong>.  This specifies that you want to hold the CTRL key, type 'c', and then release CTRL.

Since this may not be common knowledge, note that sending <strong>|SNAP|</strong> (Print Screen) will copy the entire screen into the clipboard while <strong>|ALT+| |SNAP| |ALT-|</strong> (Alt-Print Screen) restricts the copy to the active window.
</p>
<hr class="doc-hr"><div class="doc-name-bg"><h2>SPECIAL class="doc-hr">
<p>
<table>
<tr><td>ALT+<td>press ALT<td style="width:25px"><td>PGUP<td>the Page Up key
<tr><td>ALT-<td>release ALT<td style="width:25px"><td>PGDN<td>the Page Down key
<tr><td>ALTL+<td>press left ALT key<td style="width:25px"><td>HOME<td>the Home key
<tr><td>ALTL-<td>release left ALT key<td style="width:25px"><td>END<td>the End key
<tr><td>ALTR+<td>press right ALT key<td style="width:25px"><td>SNAP<td>the Print Screen key
<tr><td>ALTR-<td>release right ALT key<td colspan=2 style="width:25px"><td>&nbsp;
<tr><td colspan=3>&nbsp;<td>F1 - F12<td>Function keys 1-12
<tr><td>CTRL+<td>press CTRL<td colspan=2 style="width:25px"><td>&nbsp;
<tr><td>CTRL-<td>release CTRL<td style="width:25px"><td>NUM0 - NUM9<td>Digits 0-9 on the numeric key pad
<tr><td>CTRLL+<td>press left CTRL key<td colspan=2 style="width:25px"><td>&nbsp;
<tr><td>CTRLL-<td>release left CTRL key<td style="width:25px"><td>NUM*<td>'*' on the numeric keypad
<tr><td>CTRLR+<td>press right CTRL key<td on the numeric keypad
<tr><td>CTRLR-<td>release right CTRL key<td style="width:25px"><td>NUM+<td>'+' on the numeric keypad
<tr><td colspan=3>&nbsp;<td>NUM-<td>'-' on the numeric keypad
<tr><td>SHIFT+<td>press SHIFT<td style="width:25px"><td>NUM.<td>'.' on the numeric keypad
<tr><td>SHIFT-<td>release SHIFT<td style="width:25px"><td>NUM#<td>synonym for NUM.
<tr><td>SHIFTL+<td>press left SHIFT key<td style="width:25px"><td>NUM,<td>apparently the keypad Enter key
<tr><td>SHIFTL-<td>release left SHIFT key<td colspan=2 style="width:25px"><td>&nbsp;
<tr><td>SHIFTR+<td>press right SHIFT key<td style="width:25px"><td>SEL<td>the menu select key (to the right of the space bar)
<tr><td>SHIFTR-<td>release right SHIFT key<td style="width:25px"><td>LWIN<td>the <em>windows</em> key (to the left of the space bar)
<tr><td colspan=3>&nbsp;<td>RWIN<td>the <em>windows</em> key (to the right of the space bar)
<tr><td>TAB<td>the Tab key<td colspan=2 style="width:25px"><td>&nbsp;
<tr><td>RET<td>the Return key<td style="width:25px"><td>KANJI<td>the kanji key (Japanese keyboard)
<tr><td>ESC<td>the Escape key<td style="width:25px"><td>KANA<td>Japanese keyboard only
<tr><td>SPACE<td>the Space key<td style="width:25px"><td>HANGUL<td>Japanese keyboard only
<tr><td colspan=3>&nbsp;<td>JUNJA<td>Japanese keyboard only
<tr><td>BACK<td>the Backspace key<td style="width:25px"><td>FINAL<td>Japanese keyboard only
<tr><td>DEL<td>the Delete key<td style="width:25px"><td>HANJA<td>Japanese keyboard only
<tr><td>INS<td>the Insert key<td style="width:25px"><td>CONV<td>the IME convert key
<tr><td>HELP<td>the help key<td style="width:25px"><td>NCONV<td>the IME nonconvert key
<tr><td colspan=3>&nbsp;<td>ACCEPT<td>the IME accept key
<tr><td>LEFT<td>arrow left<td style="width:25px"><td>CLR<td>Unknown key
<tr><td>RIGHT<td>arrow right<td style="width:25px"><td>PRINT<td>Unknown key
<tr><td>UP<td>arrow up<td style="width:25px"><td>EXEC<td>Unknown key
<tr><td>DOWN<td>arrow down<td style="width:25px"><td>APPS<td>Unknown key
<tr><td colspan=3>&nbsp;<td>MODE<td>Unknown key
</table>
</p>
<hr class="doc-hr"><div id="windowmanagercommands" class="doc-name-bg"><h2>WINDOW MANAGER class="doc-hr">
<p>For a comprehensive list, see the <strong>winuser.h</strong> header file and the microsoft documentation.</p>
<p>
<table>
<tr><td>WM_NULL<td>WM_NCPAINT<td>WM_XBUTTONDBLCLK
<tr><td>WM_CREATE<td>WM_NCACTIVATE<td>WM_MOUSELAST
<tr><td>WM_DESTROY<td>WM_GETDLGCODE<td>WM_PARENTNOTIFY
<tr><td>WM_MOVE<td>WM_SYNCPAINT<td>WM_ENTERMENULOOP
<tr><td>WM_SIZE<td>WM_NCMOUSEMOVE<td>WM_EXITMENULOOP
<tr><td>WM_ACTIVATE<td>WM_NCLBUTTONDOWN<td>WM_NEXTMENU
<tr><td>WM_SETFOCUS<td>WM_NCLBUTTONUP<td>WM_SIZING
<tr><td>WM_KILLFOCUS<td>WM_NCLBUTTONDBLCLK<td>WM_CAPTURECHANGED
<tr><td>WM_ENABLE<td>WM_NCRBUTTONDOWN<td>WM_MOVING
<tr><td>WM_SETREDRAW<td>WM_NCRBUTTONUP<td>WM_POWERBROADCAST
<tr><td>WM_SETTEXT<td>WM_NCRBUTTONDBLCLK<td>WM_DEVICECHANGE
<tr><td>WM_GETTEXT<td>WM_NCMBUTTONDOWN<td>WM_MDICREATE
<tr><td>WM_GETTEXTLENGTH<td>WM_NCMBUTTONUP<td>WM_MDIDESTROY
<tr><td>WM_PAINT<td>WM_NCMBUTTONDBLCLK<td>WM_MDIACTIVATE
<tr><td>WM_CLOSE<td>WM_NCXBUTTONDOWN<td>WM_MDIRESTORE
<tr><td>WM_QUERYENDSESSION<td>WM_NCXBUTTONUP<td>WM_MDINEXT
<tr><td>WM_QUERYOPEN<td>WM_NCXBUTTONDBLCLK<td>WM_MDIMAXIMIZE
<tr><td>WM_ENDSESSION<td>WM_INPUT_DEVICE_CHANGE<td>WM_MDITILE
<tr><td>WM_QUIT<td>WM_INPUT<td>WM_MDICASCADE
<tr><td>WM_ERASEBKGND<td>WM_KEYFIRST<td>WM_MDIICONARRANGE
<tr><td>WM_SYSCOLORCHANGE<td>WM_KEYDOWN<td>WM_MDIGETACTIVE
<tr><td>WM_SHOWWINDOW<td>WM_KEYUP<td>WM_MDISETMENU
<tr><td>WM_WININICHANGE<td>WM_CHAR<td>WM_ENTERSIZEMOVE
<tr><td>WM_SETTINGCHANGE<td>WM_DEADCHAR<td>WM_EXITSIZEMOVE
<tr><td>WM_DEVMODECHANGE<td>WM_SYSKEYDOWN<td>WM_DROPFILES
<tr><td>WM_ACTIVATEAPP<td>WM_SYSKEYUP<td>WM_MDIREFRESHMENU
<tr><td>WM_FONTCHANGE<td>WM_SYSCHAR<td>WM_IME_SETCONTEXT
<tr><td>WM_TIMECHANGE<td>WM_SYSDEADCHAR<td>WM_IME_NOTIFY
<tr><td>WM_CANCELMODE<td>WM_UNICHAR<td>WM_IME_CONTROL
<tr><td>WM_SETCURSOR<td>WM_KEYLAST<td>WM_IME_COMPOSITIONFULL
<tr><td>WM_MOUSEACTIVATE<td>WM_IME_STARTCOMPOSITION<td>WM_IME_SELECT
<tr><td>WM_CHILDACTIVATE<td>WM_IME_ENDCOMPOSITION<td>WM_IME_CHAR
<tr><td>WM_QUEUESYNC<td>WM_IME_COMPOSITION<td>WM_IME_REQUEST
<tr><td>WM_GETMINMAXINFO<td>WM_IME_KEYLAST<td>WM_IME_KEYDOWN
<tr><td>WM_PAINTICON<td>WM_INITDIALOG<td>WM_IME_KEYUP
<tr><td>WM_ICONERASEBKGND<td>WM_COMMAND<td>WM_MOUSEHOVER
<tr><td>WM_NEXTDLGCTL<td>WM_SYSCOMMAND<td>WM_MOUSELEAVE
<tr><td>WM_SPOOLERSTATUS<td>WM_TIMER<td>WM_NCMOUSEHOVER
<tr><td>WM_DRAWITEM<td>WM_HSCROLL<td>WM_NCMOUSELEAVE
<tr><td>WM_MEASUREITEM<td>WM_VSCROLL<td>WM_WTSSESSION_CHANGE
<tr><td>WM_DELETEITEM<td>WM_INITMENU<td>WM_TABLET_FIRST
<tr><td>WM_VKEYTOITEM<td>WM_INITMENUPOPUP<td>WM_TABLET_LAST
<tr><td>WM_CHARTOITEM<td>WM_MENUSELECT<td>WM_CUT
<tr><td>WM_SETFONT<td>WM_MENUCHAR<td>WM_COPY
<tr><td>WM_GETFONT<td>WM_ENTERIDLE<td>WM_PASTE
<tr><td>WM_SETHOTKEY<td>WM_MENURBUTTONUP<td>WM_CLEAR
<tr><td>WM_GETHOTKEY<td>WM_MENUDRAG<td>WM_UNDO
<tr><td>WM_QUERYDRAGICON<td>WM_MENUGETOBJECT<td>WM_RENDERFORMAT
<tr><td>WM_COMPAREITEM<td>WM_UNINITMENUPOPUP<td>WM_RENDERALLFORMATS
<tr><td>WM_GETOBJECT<td>WM_MENUCOMMAND<td>WM_DESTROYCLIPBOARD
<tr><td>WM_COMPACTING<td>WM_CHANGEUISTATE<td>WM_DRAWCLIPBOARD
<tr><td>WM_COMMNOTIFY<td>WM_UPDATEUISTATE<td>WM_PAINTCLIPBOARD
<tr><td>WM_WINDOWPOSCHANGING<td>WM_QUERYUISTATE<td>WM_VSCROLLCLIPBOARD
<tr><td>WM_WINDOWPOSCHANGED<td>WM_CTLCOLORMSGBOX<td>WM_SIZECLIPBOARD
<tr><td>WM_POWER<td>WM_CTLCOLOREDIT<td>WM_ASKCBFORMATNAME
<tr><td>WM_COPYDATA<td>WM_CTLCOLORLISTBOX<td>WM_CHANGECBCHAIN
<tr><td>WM_CANCELJOURNAL<td>WM_CTLCOLORBTN<td>WM_HSCROLLCLIPBOARD
<tr><td>WM_NOTIFY<td>WM_CTLCOLORDLG<td>WM_QUERYNEWPALETTE
<tr><td>WM_INPUTLANGCHANGEREQUEST<td>WM_CTLCOLORSCROLLBAR<td>WM_PALETTEISCHANGING
<tr><td>WM_INPUTLANGCHANGE<td>WM_CTLCOLORSTATIC<td>WM_PALETTECHANGED
<tr><td>WM_TCARD<td>WM_MOUSEFIRST<td>WM_HOTKEY
<tr><td>WM_HELP<td>WM_MOUSEMOVE<td>WM_PRINT
<tr><td>WM_USERCHANGED<td>WM_LBUTTONDOWN<td>WM_PRINTCLIENT
<tr><td>WM_NOTIFYFORMAT<td>WM_LBUTTONUP<td>WM_APPCOMMAND
<tr><td>WM_CONTEXTMENU<td>WM_LBUTTONDBLCLK<td>WM_THEMECHANGED
<tr><td>WM_STYLECHANGING<td>WM_RBUTTONDOWN<td>WM_CLIPBOARDUPDATE
<tr><td>WM_STYLECHANGED<td>WM_RBUTTONUP<td>WM_HANDHELDFIRST
<tr><td>WM_DISPLAYCHANGE<td>WM_RBUTTONDBLCLK<td>WM_HANDHELDLAST
<tr><td>WM_GETICON<td>WM_MBUTTONDOWN<td>WM_AFXFIRST
<tr><td>WM_SETICON<td>WM_MBUTTONUP<td>WM_AFXLAST
<tr><td>WM_NCCREATE<td>WM_MBUTTONDBLCLK<td>WM_PENWINFIRST
<tr><td>WM_NCDESTROY<td>WM_MOUSEWHEEL<td>WM_PENWINLAST
<tr><td>WM_NCCALCSIZE<td>WM_XBUTTONDOWN<td>WM_APP
<tr><td>WM_NCHITTEST<td>WM_XBUTTONUP<td>WM_USER
</table>
</p>
<hr class="doc-hr"><div id="requirements" class="doc-hr">
<p>
CWind requires Tcl 8.1 or higher.

The CWind package is available for Windows
For windows versions prior to vista, you can download the 32-bit version 1.4 from the project home page or the archived ZIP from this site. You might also be able to compile the original source with the appropriate microsoft sdk.

For windows versions vista and beyond, either download the appropriate pre-built binary from this repository or compile it from source. The included was tested with 32- and 64-bit gcc.

Note that I am only able to test the compiled version on a virtual windows XP system and a windows 7 64-bit system. Furthermore, the test is reduced to running the script
</p>
<hr class="doc-hr"><div id="installation" class="doc-hr">
<p>
Edit and update the locations for your Tcl installation and the location (if possible) to the latest <strong>winuser.h</strong> header file.<br>
Run <code>make install</code> to create the directory
Copy that directory to your TCL library.
</p>
<hr class="doc-hr"><div id="license" class="doc-hr">
<p>
CWind is free software copyrighted by Satoshi Imai.
You can redistribute it and/or modify it under the terms of the Lesser General Public License] as published by the Free Software Foundation.<br>
Use this package at your own risk and expense.
</p>
<hr>

Project home page]<br>
Tcl page which discusses the cwind extension