Ich nehme an, dir geht es um folgende Strukturen:
Winapi.Messages?
Da in C# die Signatur von
WndProc bzw.
PreFilterMessage fest vorgegeben ist, also mit dem Parameter
ref Message, müßte man mindestens einmal das Casten selber vornehmen. Jedoch gibt es dabei folgende Probleme:
- Strukturen können nicht direkt gecastet werden (außer mittels
unsafe per Zeiger zu arbeiten)
- Strukturen können auch nicht vererbt werden (ansonsten könnte man passende Eigenschaften oder Methoden hinzufügen)
Ich habe auch im Internet keine Definitionen der WinApi-Message-Strukturen für C#/.NET gefunden (auch nicht auf
P/Invoke.com) - anscheinend greifen alle direkt auf die
Message-Member (
WParam,
LParam) zu.
Das einzige, was mir einfällt, wären explizite Methodenerweiterungen. Hier mal ein Beispiel:
Ideone-Code (mit eigener
Message-Struktur, da
System.Windows.Forms nicht bekannt).
Hier noch mal der relevante Code:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| static class WinExtensions { public static bool WMActivateApp_Active(this Message m) { return (int)m.WParam != 0; } }
public class Test { public static void Main() { Message m = new Message(); Console.WriteLine(m.WMActivateApp_Active()); } } |
Eine andere Möglichkeit sehe ich noch im Marshalling, wie z.B. in
C#: Convert struct to another struct beschrieben.
Ich hoffe, eine der Möglichkeiten kannst du für dich umsetzen.