Hallo,
das war mir schon bei deinem anderen Beitrag dazu aufgefallen: das ist kein gutes Design mit der statischen Methode
MainClass.WndProc, da sich die beiden Klassen gegenseitig referenzieren.
Ich würde ein Event (bzw. Delegat) in
WndClass deklarieren und mittels der
MainClass daran binden (und diese kann dann wiederum eine virtuelle Methode aufrufen).
Hier (in Kürze) der Code dazu:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
| public class MainClass { public MainClass() { _wndClass = new WndClass(); _wndClass.OnWndProc = OnWndProc; }
protected void OnWndProc(ref Message m) { WndProc(ref m); }
protected virtual void WndProc(ref Message m) { } }
class WndClass : NativeWindow { public delegate void WndProcDelegate(ref Message m);
public WndProcDelegate OnWndProc;
protected override void WndProc(ref Message m) { OnWndProc?.Invoke(ref m);
base.WndProc(ref m); } } |
(falls dir
?. nichts sagt, dies ist ab
C# 6 möglich: Null-Conditional Operator - ansonsten einfach wie in deinen bisherigen
OnDo...-Methoden aufrufen)
Und die
MainClass-Ereignisse dann nicht-statisch deklarieren.