import winim/[ lean
]
import winim/inc/[ windef
]
, ../../wain/[ waindow_object
, keyboard
]
, utils
proc WindowProc*( hwnd: HWND
, message: UINT
, wParam: WPARAM
, lParam: LPARAM
): LRESULT {.stdcall.} =
var
hdc: HDC
bOpened: bool
a_waindow = cast[ptr Waindow]( GetWindowLongPtr( hwnd
, GWLP_USERDATA
)
)
the_struct: LPCREATESTRUCT = cast[LPCREATESTRUCT](lParam)
case message
of WM_NULL:
echo "WM_NULL"
of WM_CREATE:
echo "WM_CREATE"
a_waindow = create(Waindow)
a_waindow = cast[ptr Waindow]( the_struct.lpCreateParams)
SetWindowLongPtr( hwnd, GWLP_USERDATA, cast[LONG_PTR]( a_waindow) )
SetWindowPos(hwnd, hwnd, 0, 0, 0, 0, SWP_NOSIZE)
#[ SetProp( hwnd
, "portal_0"
, cast[HANDLE] (a_waindow)
) ]#
of WM_DESTROY:
PostQuitMessage(0)
return 0
of WM_MOVE:
echo "WM_MOVE"
of WM_SIZE:
echo "WM_SIZE"
of WM_ACTIVATE:
echo "WM_ACTIVATE"
of WM_SETFOCUS:
echo "WM_SET_FOCUS"
of WM_ENABLE:
echo "WM_ENABLE"
of WM_SETREDRAW:
echo "WM_SET_REDRAW"
of WM_SETTEXT:
echo "WM_SET_TEXT"
of WM_GETTEXT:
echo "WM_GET_TEXT"
of WM_GET_TEXTLENGTH:
echo "WM_WM_GET_TEXT_LENGTH"
of WM_PAINT:
var
ps: PAINTSTRUCT
hdc = BeginPaint(hwnd, ps)
defer: EndPaint(hwnd, ps)
var rect: RECT
GetClientRect(hwnd, rect)
#DrawText(hdc, "Hello, Windows!", -1, rect, DT_SINGLELINE or DT_CENTER or DT_VCENTER)
return 0
of WM_CLOSE:
discard DestroyWindow(hwnd)
a_waindow[].relays.window_closed_relay(a_waindow[])
of WM_CHAR: discard
of WM_KEYUP ,WM_SYSKEYUP:
var
virtual_key_code: WORD = LOWORD(wParam)
the_wain_key = wain_keyboard_key_from_windows_virtual_key_code(virtual_key_code)
echo "up: ", virtual_key_code
update_keyboard( the_wain_key
, ord Release
)
a_waindow[].relays.key_relay(a_waindow[]
, the_wain_key.key
, ord Release
)
of WM_KEYDOWN, WM_SYSKEYDOWN:
var
virtual_key_code: WORD = LOWORD(wParam)
key_flags: WORD = HIWORD(lParam)
scan_code: WORD = LOBYTE(keyFlags)
is_extended_key: bool = (keyFlags and KF_EXTENDED) == KF_EXTENDED # true if scancode has 0xE0 prefix
wasKeyDown: bool = (keyFlags and KF_REPEAT) == KF_REPEAT # previous key-state flag, 1 on autorepeat
repeatCount: uint16 = LOWORD(lParam) # repeat count, > 0 if several keydown messages was combined into one message
isKeyReleased: bool = (keyFlags and KF_UP) == KF_UP # transition-state flag, 1 on keyup
if is_extended_key:
scan_code = MAKEWORD(scanCode, 0xE0)
# if we want to distinguish these keys:
case virtual_key_code
# converts to VK_LSHIFT or VK_RSHIFT
# converts to VK_LCONTROL or VK_RCONTROL
# converts to VK_LMENU or VK_RMENU
of VK_SHIFT, VK_CONTROL, VK_MENU:
virtual_key_code = LOWORD( MapVirtualKey( UINT(scan_code)
, UINT(MAPVK_VSC_TO_VK_EX))
)
else: discard
echo "down: ", virtual_key_code
var the_wain_key = wain_keyboard_key_from_windows_virtual_key_code(virtual_key_code)
update_keyboard( the_wain_key
, ord Press
)
a_waindow[].relays.key_relay( a_waindow[]
, the_wain_key.key
, Press.ord
)
of WM_INPUTLANGCHANGE:
# determine the thread that'll receive this event
var
window = GetForegroundWindow()
thread = GetWindowThreadProcessId( window
, nil
)
# get keyboard layout for the thread
hkl: HKL = GetKeyboardLayout(thread)
the_actual_layout_name: LPWSTR = ""
layout_name_bool = GetKeyboardLayoutName(the_actual_layout_name)
LoadKeyboardLayout( $the_actual_layout_name
, KLF_ACTIVATE
)
ActivateKeyboardLayout( hkl
, KLF_ACTIVATE
)
echo "now using: ", $the_actual_layout_name
#[ of WM_QUERYENDSESSION: echo " WM_QUERYENDSESSION"
of WM_QUIT: echo " WM_QUIT"
of WM_QUERYOPEN: echo " WM_QUERYOPEN"
#of WM_ERASEBKGND: echo " WM_ERASEBKGND"
of WM_SYSCOLORCHANGE: echo " WM_SYSCOLORCHANGE"
of WM_ENDSESSION: echo " WM_ENDSESSION"
of WM_SHOWWINDOW: echo " WM_SHOWWINDOW"
#of WM_CTLCOLOR: echo " WM_CTLCOLOR"
of WM_WININICHANGE: echo " WM_WININICHANGE"
of WM_DEVMODECHANGE: echo " WM_DEVMODECHANGE"
of WM_ACTIVATEAPP: echo " WM_ACTIVATEAPP"
of WM_FONTCHANGE: echo " WM_FONTCHANGE"
of WM_TIMECHANGE: echo " WM_TIMECHANGE"
of WM_CANCELMODE: echo " WM_CANCELMODE"
#of WM_SETCURSOR: echo " WM_SETCURSOR"
of WM_MOUSEACTIVATE: echo " WM_MOUSEACTIVATE"
of WM_CHILDACTIVATE: echo " WM_CHILDACTIVATE"
of WM_QUEUESYNC: echo " WM_QUEUESYNC"
#of WM_GETMINMAXINFO: echo " WM_GETMINMAXINFO"
of WM_PAINTICON: echo " WM_PAINTICON"
of WM_ICONERASEBKGND: echo " WM_ICONERASEBKGND"
of WM_NEXTDLGCTL: echo " WM_NEXTDLGCTL"
of WM_SPOOLERSTATUS: echo " WM_SPOOLERSTATUS"
of WM_DRAWITEM: echo " WM_DRAWITEM"
of WM_MEASUREITEM: echo " WM_MEASUREITEM"
of WM_DELETEITEM: echo " WM_DELETEITEM"
of WM_VKEYTOITEM: echo " WM_VKEYTOITEM"
of WM_CHARTOITEM: echo " WM_CHARTOITEM"
of WM_SETFONT: echo " WM_SETFONT"
of WM_GETFONT: echo " WM_GETFONT"
of WM_SETHOTKEY: echo " WM_SETHOTKEY"
of WM_GETHOTKEY: echo " WM_GETHOTKEY"
of WM_QUERYDRAGICON: echo " WM_QUERYDRAGICON"
of WM_COMPAREITEM: echo " WM_COMPAREITEM"
of WM_GETOBJECT: echo " WM_GETOBJECT"
of WM_COMPACTING: echo " WM_COMPACTING"
of WM_COMMNOTIFY: echo " WM_COMMNOTIFY"
of WM_WINDOWPOSCHANGING: echo " WM_WINDOWPOSCHANGING"
of WM_WINDOWPOSCHANGED: echo " WM_WINDOWPOSCHANGED"
of WM_POWER: echo " WM_POWER"
#of WM_COPYGLOBALDATA: echo " WM_COPYGLOBALDATA"
of WM_COPYDATA: echo " WM_COPYDATA"
of WM_CANCELJOURNAL: echo " WM_CANCELJOURNAL"
of WM_NOTIFY: echo " WM_NOTIFY"
of WM_INPUTLANGCHANGEREQUEST: echo " WM_INPUTLANGCHANGEREQUEST"
of WM_TCARD: echo " WM_TCARD"
of WM_HELP: echo " WM_HELP"
of WM_USERCHANGED: echo " WM_USERCHANGED"
of WM_NOTIFYFORMAT: echo " WM_NOTIFYFORMAT"
of WM_CONTEXTMENU: echo " WM_CONTEXTMENU"
of WM_STYLECHANGING: echo " WM_STYLECHANGING"
of WM_STYLECHANGED: echo " WM_STYLECHANGED"
of WM_DISPLAYCHANGE: echo " WM_DISPLAYCHANGE"
#of WM_GETICON: echo " WM_GETICON"
#of WM_SETICON: echo " WM_SETICON"
#of WM_NCCREATE: echo " WM_NCCREATE"
#of WM_NCDESTROY: echo " WM_NCDESTROY"
of WM_NCCALCSIZE: echo " WM_NCCALCSIZE"
#of WM_NCHITTEST: echo " WM_NCHITTEST"
of WM_NCPAINT: echo " WM_NCPAINT"
of WM_NCACTIVATE: echo " WM_NCACTIVATE"
of WM_GETDLGCODE: echo " WM_GETDLGCODE"
of WM_SYNCPAINT: echo " WM_SYNCPAINT"
of WM_NCMOUSEMOVE: echo " WM_NCMOUSEMOVE"
of WM_NCLBUTTONDOWN: echo " WM_NCLBUTTONDOWN"
of WM_NCLBUTTONUP: echo " WM_NCLBUTTONUP"
of WM_NCLBUTTONDBLCLK: echo " WM_NCLBUTTONDBLCLK"
of WM_NCRBUTTONDOWN: echo " WM_NCRBUTTONDOWN"
of WM_NCRBUTTONUP: echo " WM_NCRBUTTONUP"
of WM_NCRBUTTONDBLCLK: echo " WM_NCRBUTTONDBLCLK"
of WM_NCMBUTTONDOWN: echo " WM_NCMBUTTONDOWN"
of WM_NCMBUTTONUP: echo " WM_NCMBUTTONUP"
of WM_NCMBUTTONDBLCLK: echo " WM_NCMBUTTONDBLCLK"
of WM_NCXBUTTONDOWN: echo " WM_NCXBUTTONDOWN"
of WM_NCXBUTTONUP: echo " WM_NCXBUTTONUP"
of WM_NCXBUTTONDBLCLK: echo " WM_NCXBUTTONDBLCLK"
of EM_GETSEL: echo " EM_GETSEL"
of EM_SETSEL: echo " EM_SETSEL"
of EM_GETRECT: echo " EM_GETRECT"
of EM_SETRECT: echo " EM_SETRECT"
of EM_SETRECTNP: echo " EM_SETRECTNP"
of EM_SCROLL: echo " EM_SCROLL"
of EM_LINESCROLL: echo " EM_LINESCROLL"
of EM_SCROLLCARET: echo " EM_SCROLLCARET"
of EM_GETMODIFY: echo " EM_GETMODIFY"
of EM_SETMODIFY: echo " EM_SETMODIFY"
of EM_GETLINECOUNT: echo " EM_GETLINECOUNT"
of EM_LINEINDEX: echo " EM_LINEINDEX"
of EM_SETHANDLE: echo " EM_SETHANDLE"
of EM_GETHANDLE: echo " EM_GETHANDLE"
of EM_GETTHUMB: echo " EM_GETTHUMB"
of EM_LINELENGTH: echo " EM_LINELENGTH"
of EM_REPLACESEL: echo " EM_REPLACESEL"
#of EM_SETFONT: echo " EM_SETFONT"
of EM_GETLINE: echo " EM_GETLINE"
of EM_LIMITTEXT: echo " EM_LIMITTEXT"
#of EM_SETLIMITTEXT: echo " EM_SETLIMITTEXT"
of EM_CANUNDO: echo " EM_CANUNDO"
of EM_UNDO: echo " EM_UNDO"
of EM_FMTLINES: echo " EM_FMTLINES"
of EM_LINEFROMCHAR: echo " EM_LINEFROMCHAR"
#of EM_SETWORDBREAK: echo " EM_SETWORDBREAK"
of EM_SETTABSTOPS: echo " EM_SETTABSTOPS"
of EM_SETPASSWORDCHAR: echo " EM_SETPASSWORDCHAR"
of EM_EMPTYUNDOBUFFER: echo " EM_EMPTYUNDOBUFFER"
of EM_GETFIRSTVISIBLELINE: echo " EM_GETFIRSTVISIBLELINE"
of EM_SETREADONLY: echo " EM_SETREADONLY"
of EM_SETWORDBREAKPROC: echo " EM_SETWORDBREAKPROC"
of EM_GETWORDBREAKPROC: echo " EM_GETWORDBREAKPROC"
of EM_GETPASSWORDCHAR: echo " EM_GETPASSWORDCHAR"
of EM_SETMARGINS: echo " EM_SETMARGINS"
of EM_GETMARGINS: echo " EM_GETMARGINS"
of EM_GETLIMITTEXT: echo " EM_GETLIMITTEXT"
of EM_POSFROMCHAR: echo " EM_POSFROMCHAR"
of EM_CHARFROMPOS: echo " EM_CHARFROMPOS"
of EM_SETIMESTATUS: echo " EM_SETIMESTATUS"
of EM_GETIMESTATUS: echo " EM_GETIMESTATUS"
of SBM_SETPOS: echo " SBM_SETPOS"
of SBM_GETPOS: echo " SBM_GETPOS"
of SBM_SETRANGE: echo " SBM_SETRANGE"
of SBM_GETRANGE: echo " SBM_GETRANGE"
of SBM_ENABLE_ARROWS: echo " SBM_ENABLE_ARROWS"
of SBM_SETRANGEREDRAW: echo " SBM_SETRANGEREDRAW"
of SBM_SETSCROLLINFO: echo " SBM_SETSCROLLINFO"
of SBM_GETSCROLLINFO: echo " SBM_GETSCROLLINFO"
of SBM_GETSCROLLBARINFO: echo " SBM_GETSCROLLBARINFO"
of BM_GETCHECK: echo " BM_GETCHECK"
of BM_SETCHECK: echo " BM_SETCHECK"
of BM_GETSTATE: echo " BM_GETSTATE"
of BM_SETSTATE: echo " BM_SETSTATE"
of BM_SETSTYLE: echo " BM_SETSTYLE"
of BM_CLICK: echo " BM_CLICK"
of BM_GETIMAGE: echo " BM_GETIMAGE"
of BM_SETIMAGE: echo " BM_SETIMAGE"
of BM_SETDONTCLICK: echo " BM_SETDONTCLICK"
of WM_INPUT: echo " WM_INPUT"
#of WM_KEYFIRST: echo " WM_KEYFIRST"
of WM_DEADCHAR: echo " WM_DEADCHAR"
of WM_SYSCHAR: echo " WM_SYSCHAR"
of WM_SYSDEADCHAR: echo " WM_SYSDEADCHAR"
of WM_UNICHAR: echo " WM_UNICHAR"
#of WM_WNT_CONVERTREQUESTEX: echo " WM_WNT_CONVERTREQUESTEX"
#of WM_CONVERTREQUEST: echo " WM_CONVERTREQUEST"
#of WM_CONVERTRESULT: echo " WM_CONVERTRESULT"
#of WM_INTERIM: echo " WM_INTERIM"
of WM_IME_STARTCOMPOSITION: echo " WM_IME_STARTCOMPOSITION"
of WM_IME_ENDCOMPOSITION: echo " WM_IME_ENDCOMPOSITION"
of WM_IME_COMPOSITION: echo " WM_IME_COMPOSITION"
of WM_INITDIALOG: echo " WM_INITDIALOG"
of WM_COMMAND: echo " WM_COMMAND"
of WM_SYSCOMMAND: echo " WM_SYSCOMMAND"
of WM_TIMER: echo " WM_TIMER"
of WM_HSCROLL: echo " WM_HSCROLL"
of WM_VSCROLL: echo " WM_VSCROLL"
of WM_INITMENU: echo " WM_INITMENU"
of WM_INITMENUPOPUP: echo " WM_INITMENUPOPUP"
#of WM_SYSTIMER: echo " WM_SYSTIMER"
of WM_MENUSELECT: echo " WM_MENUSELECT"
of WM_MENUCHAR: echo " WM_MENUCHAR"
of WM_ENTERIDLE: echo " WM_ENTERIDLE"
of WM_MENURBUTTONUP: echo " WM_MENURBUTTONUP"
of WM_MENUDRAG: echo " WM_MENUDRAG"
of WM_MENUGETOBJECT: echo " WM_MENUGETOBJECT"
of WM_UNINITMENUPOPUP: echo " WM_UNINITMENUPOPUP"
of WM_MENUCOMMAND: echo " WM_MENUCOMMAND"
of WM_CHANGEUISTATE: echo " WM_CHANGEUISTATE"
of WM_UPDATEUISTATE: echo " WM_UPDATEUISTATE"
of WM_QUERYUISTATE: echo " WM_QUERYUISTATE"
#of WM_LBTRACKPOINT: echo " WM_LBTRACKPOINT"
of WM_CTLCOLORMSGBOX: echo " WM_CTLCOLORMSGBOX"
of WM_CTLCOLOREDIT: echo " WM_CTLCOLOREDIT"
of WM_CTLCOLORLISTBOX: echo " WM_CTLCOLORLISTBOX"
of WM_CTLCOLORBTN: echo " WM_CTLCOLORBTN"
of WM_CTLCOLORDLG: echo " WM_CTLCOLORDLG"
of WM_CTLCOLORSCROLLBAR: echo " WM_CTLCOLORSCROLLBAR"
of WM_CTLCOLORSTATIC: echo " WM_CTLCOLORSTATIC"
of CB_GETEDITSEL: echo " CB_GETEDITSEL"
of CB_LIMITTEXT: echo " CB_LIMITTEXT"
of CB_SETEDITSEL: echo " CB_SETEDITSEL"
of CB_ADDSTRING: echo " CB_ADDSTRING"
of CB_DELETESTRING: echo " CB_DELETESTRING"
of CB_DIR: echo " CB_DIR"
of CB_GETCOUNT: echo " CB_GETCOUNT"
of CB_GETCURSEL: echo " CB_GETCURSEL"
of CB_GETLBTEXT: echo " CB_GETLBTEXT"
of CB_GETLBTEXTLEN: echo " CB_GETLBTEXTLEN"
of CB_INSERTSTRING: echo " CB_INSERTSTRING"
of CB_RESETCONTENT: echo " CB_RESETCONTENT"
of CB_FINDSTRING: echo " CB_FINDSTRING"
of CB_SELECTSTRING: echo " CB_SELECTSTRING"
of CB_SETCURSEL: echo " CB_SETCURSEL"
of CB_SHOWDROPDOWN: echo " CB_SHOWDROPDOWN"
of CB_GETITEMDATA: echo " CB_GETITEMDATA"
of CB_SETITEMDATA: echo " CB_SETITEMDATA"
of CB_GETDROPPEDCONTROLRECT: echo " CB_GETDROPPEDCONTROLRECT"
of CB_SETITEMHEIGHT: echo " CB_SETITEMHEIGHT"
of CB_GETITEMHEIGHT: echo " CB_GETITEMHEIGHT"
of CB_SETEXTENDEDUI: echo " CB_SETEXTENDEDUI"
of CB_GETEXTENDEDUI: echo " CB_GETEXTENDEDUI"
of CB_GETDROPPEDSTATE: echo " CB_GETDROPPEDSTATE"
of CB_FINDSTRINGEXACT: echo " CB_FINDSTRINGEXACT"
of CB_SETLOCALE: echo " CB_SETLOCALE"
of CB_GETLOCALE: echo " CB_GETLOCALE"
of CB_GETTOPINDEX: echo " CB_GETTOPINDEX"
of CB_SETTOPINDEX: echo " CB_SETTOPINDEX"
of CB_GETHORIZONTALEXTENT: echo " CB_GETHORIZONTALEXTENT"
of CB_SETHORIZONTALEXTENT: echo " CB_SETHORIZONTALEXTENT"
of CB_GETDROPPEDWIDTH: echo " CB_GETDROPPEDWIDTH"
of CB_SETDROPPEDWIDTH: echo " CB_SETDROPPEDWIDTH"
of CB_INITSTORAGE: echo " CB_INITSTORAGE"
of CB_MULTIPLEADDSTRING: echo " CB_MULTIPLEADDSTRING"
of CB_GETCOMBOBOXINFO: echo " CB_GETCOMBOBOXINFO"
of CB_MSGMAX: echo " CB_MSGMAX"
#of WM_MOUSEFIRST: echo " WM_MOUSEFIRST"
of WM_LBUTTONDOWN: echo " WM_LBUTTONDOWN"
of WM_LBUTTONUP: echo " WM_LBUTTONUP"
of WM_LBUTTONDBLCLK: echo " WM_LBUTTONDBLCLK"
of WM_RBUTTONDOWN: echo " WM_RBUTTONDOWN"
of WM_RBUTTONUP: echo " WM_RBUTTONUP"
of WM_RBUTTONDBLCLK: echo " WM_RBUTTONDBLCLK"
of WM_MBUTTONDOWN: echo " WM_MBUTTONDOWN"
of WM_MBUTTONUP: echo " WM_MBUTTONUP"
of WM_MBUTTONDBLCLK: echo " WM_MBUTTONDBLCLK"
of WM_MOUSELAST: echo " WM_MOUSELAST"
of WM_MOUSEWHEEL: echo " WM_MOUSEWHEEL"
of WM_XBUTTONDOWN: echo " WM_XBUTTONDOWN"
of WM_XBUTTONUP: echo " WM_XBUTTONUP"
of WM_XBUTTONDBLCLK: echo " WM_XBUTTONDBLCLK"
#of WM_MOUSEHWHEEL: echo " WM_MOUSEHWHEEL"
of WM_PARENTNOTIFY: echo " WM_PARENTNOTIFY"
of WM_ENTERMENULOOP: echo " WM_ENTERMENULOOP"
of WM_EXITMENULOOP: echo " WM_EXITMENULOOP"
of WM_NEXTMENU: echo " WM_NEXTMENU"
of WM_SIZING: echo " WM_SIZING"
of WM_CAPTURECHANGED: echo " WM_CAPTURECHANGED"
of WM_MOVING: echo " WM_MOVING"
of WM_POWERBROADCAST: echo " WM_POWERBROADCAST"
of WM_DEVICECHANGE: echo " WM_DEVICECHANGE"
of WM_MDICREATE: echo " WM_MDICREATE"
of WM_MDIDESTROY: echo " WM_MDIDESTROY"
of WM_MDIACTIVATE: echo " WM_MDIACTIVATE"
of WM_MDIRESTORE: echo " WM_MDIRESTORE"
of WM_MDINEXT: echo " WM_MDINEXT"
of WM_MDIMAXIMIZE: echo " WM_MDIMAXIMIZE"
of WM_MDITILE: echo " WM_MDITILE"
of WM_MDICASCADE: echo " WM_MDICASCADE"
of WM_MDIICONARRANGE: echo " WM_MDIICONARRANGE"
of WM_MDIGETACTIVE: echo " WM_MDIGETACTIVE"
of WM_MDISETMENU: echo " WM_MDISETMENU"
of WM_ENTERSIZEMOVE: echo " WM_ENTERSIZEMOVE"
of WM_EXITSIZEMOVE: echo " WM_EXITSIZEMOVE"
of WM_DROPFILES: echo " WM_DROPFILES"
of WM_MDIREFRESHMENU: echo " WM_MDIREFRESHMENU"
#of WM_IME_REPORT: echo " WM_IME_REPORT"
of WM_IME_SETCONTEXT: echo " WM_IME_SETCONTEXT"
of WM_IME_NOTIFY: echo " WM_IME_NOTIFY"
of WM_IME_CONTROL: echo " WM_IME_CONTROL"
of WM_IME_COMPOSITIONFULL: echo " WM_IME_COMPOSITIONFULL"
of WM_IME_SELECT: echo " WM_IME_SELECT"
of WM_IME_CHAR: echo " WM_IME_CHAR"
of WM_IME_REQUEST: echo " WM_IME_REQUEST"
of WM_IMEKEYDOWN: echo " WM_IMEKEYDOWN"
#of WM_IME_KEYDOWN: echo " WM_IME_KEYDOWN"
of WM_IMEKEYUP: echo " WM_IMEKEYUP"
#of WM_IME_KEYUP: echo " WM_IME_KEYUP"
of WM_NCMOUSEHOVER: echo " WM_NCMOUSEHOVER"
of WM_MOUSEHOVER: echo " WM_MOUSEHOVER"
of WM_NCMOUSELEAVE: echo " WM_NCMOUSELEAVE"
of WM_MOUSELEAVE: echo " WM_MOUSELEAVE"
of WM_CUT: echo " WM_CUT"
of WM_COPY: echo " WM_COPY"
of WM_PASTE: echo " WM_PASTE"
of WM_CLEAR: echo " WM_CLEAR"
of WM_UNDO: echo " WM_UNDO"
of WM_RENDERFORMAT: echo " WM_RENDERFORMAT"
of WM_RENDERALLFORMATS: echo " WM_RENDERALLFORMATS"
of WM_DESTROYCLIPBOARD: echo " WM_DESTROYCLIPBOARD"
of WM_DRAWCLIPBOARD: echo " WM_DRAWCLIPBOARD"
of WM_PAINTCLIPBOARD: echo " WM_PAINTCLIPBOARD"
of WM_VSCROLLCLIPBOARD: echo " WM_VSCROLLCLIPBOARD"
of WM_SIZECLIPBOARD: echo " WM_SIZECLIPBOARD"
of WM_ASKCBFORMATNAME: echo " WM_ASKCBFORMATNAME"
of WM_CHANGECBCHAIN: echo " WM_CHANGECBCHAIN"
of WM_HSCROLLCLIPBOARD: echo " WM_HSCROLLCLIPBOARD"
of WM_QUERYNEWPALETTE: echo " WM_QUERYNEWPALETTE"
of WM_PALETTEISCHANGING: echo " WM_PALETTEISCHANGING"
of WM_PALETTECHANGED: echo " WM_PALETTECHANGED"
of WM_HOTKEY: echo " WM_HOTKEY"
of WM_PRINT: echo " WM_PRINT"
of WM_PRINTCLIENT: echo " WM_PRINTCLIENT"
of WM_APPCOMMAND: echo " WM_APPCOMMAND"
of WM_HANDHELDFIRST: echo " WM_HANDHELDFIRST"
of WM_HANDHELDLAST: echo " WM_HANDHELDLAST"
of WM_AFXFIRST: echo " WM_AFXFIRST"
of WM_AFXLAST: echo " WM_AFXLAST"
of WM_PENWINFIRST: echo " WM_PENWINFIRST"
of DM_GETDEFID: echo " DM_GETDEFID"
of DM_SETDEFID: echo " DM_SETDEFID"
of DM_REPOSITION: echo " DM_REPOSITION"
]#
else:
return DefWindowProc( hwnd
, message
, wParam
, lParam
)