http://www.losscherers.de

14 Jun 2009

C# UI – Not focusable

Posted by Michael

Unter C# habe ich ewig gesucht bis ich endlich das Verhalten von Javas JFrame.notFocusable() nachstellen konnte.
Meine Anwendung, läuft auf einen Touchscreen, sollte zwar Mausklicks empfangen, aber sich nicht den Fokus krallen. Das hat den Nachteil, dass die bisherige Anwendung den Fokus verliert.
Bei einem Rennsimulator und Tempo >200km/h eher doof. ;)

Naja, hier der Code, damit ich ihn nicht wieder verschlamper …


///

/// Avoid getting the focus
/// http://msdn.microsoft.com/en-us/library/ms633591(VS.85).aspx ==> WS_EX_NOACTIVATE
///

private void SetNotFocusable()
{
int GWL_EXSTYLE = -20;
int WS_EX_NOACTIVATE = 0x08000000;
// read old style
int style = GetWindowLong(Handle, GWL_EXSTYLE);
// set new style, avoid focus
SetWindowLong(Handle, GWL_EXSTYLE, (style | WS_EX_NOACTIVATE));
// Some things are cached, needs that!
SetWindowPos(Handle);
}

Leave a Reply

Message: