Hi everyone,
I’m experiencing a weird problem. Here is my test simplified code for you to understand the problem
fn keyDown s e =
(
format "key down: %
" e
)
dnForm = dotNetObject "MaxCustomControls.MaxForm"
dnForm.showModeless()
dotNet.setLifeTimeControl dnForm #dotNet
dotNet.addEventHandler dnForm "KeyDown" keyDown
I wanna catch the KeyDown event but i work for every key except the Escape one. Every time i press it, it throws an error :
************** Exception Text **************
System.Runtime.InteropServices.SEHException (0x80004005): External component has thrown an exception.
at MXS_dotNet.DotNetObjectWrapper.RunEventHandlers(DotNetObjectWrapper* , Value* target, Value* eventName, Array* handlers, Object[] delegateArgsArray)
at MXS_dotNet.DotNetObjectWrapper.ProcessEvent(DotNetObjectWrapper* , String eventName, Object delegateArgs)
at MXS_dotNet.DotNetObjectManaged.delegate_proxy_type.ProcessEvent(String eventName, Object delegateArgs)
at System.Windows.Forms.Control.ProcessKeyEventArgs(Message& m)
at System.Windows.Forms.Control.WmKeyChar(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
If i use only the KeyUp event instead of KeyDown everything works fine but it’s not the behaviour i want for my script. Maybe i’m doing something wrong.
Thanks.
Tony.
EDIT : was just trying with :
fn keyDown s e =
(
format "key down: %
" e
)
fn keyUp s e =
(
format "key up: %
" e
)
dnForm = dotNetObject "System.Windows.Forms.Form"
dnForm.show()
dotNet.setLifeTimeControl dnForm #dotNet
dotNet.addEventHandler dnForm "KeyDown" keyDown
dotNet.addEventHandler dnForm "KeyUp" keyUP
And it worked. I think this is the Maxform that can’t handle correctly keydown event
EDIT 2 :
New problem the DotNet Form doesn’t handle F1-F12 key , maxForm does…