[Mono-winforms-list] Implementing a window manager in C#

Michael Mudge michael at mudge.com
Mon Feb 14 16:24:34 EST 2011


We've ported Mono to a device that has a tiny GUI (no real concept of
a "window", just some control-like widgets) and it's time to implement
the XplatUIDriver.  The device has no keyboard, clipboard, mouse
cursor (it's touchscreen)... no system colors, no keyboard shortcuts,
etc.  I figure that more than half of the functions can be stubbed,
behave statically or be otherwise brushed aside.

Can someone describe what happens when, for example, the mouse is
clicked over a button?  An understanding of the execution path would
greatly help us understand the 100+ functions in XplatUIDriver.cs as
we sort through the code.  I'm particularly interested in how an
application drawing something on the screen gets it to the GUI.  What
major players are involved, and in what order?  GDIPlus?  Forms?
Graphics object?  Visual Theme?  XplatUIDriver?  A brief outline would
be great.

We also need to decide if it would be useful to leverage the existing
system's image widgets.  Blitting onto a widget and moving the widget
around is accelerated, but it might be simpler if we just write a
window-manager in C#.  Except for menus and drop-downs, we intend on
all windows being full-screen with no titlebar. Anyone have an opinion
on this?  Ideas for a high-level strategy?

- Michael "Kipp" Mudge
Welch Allyn, Inc.
Skaneateles, NY
Office: 315-554-4057


More information about the Mono-winforms-list mailing list