Autor Beitrag
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2006
Erhaltene Danke: 366

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Mi 29.03.17 03:38 
Hallo Forum

Problemstellung:
Ich möchte eine Klassenbibliothek bereitstellen, die nur Konstanten aufweisen wird, also jene Werte, die für Windows-Messages und Co. gedacht sind. Die Informationen werde ich aus dem Artikel: About Messages and Message Queues entnehmen.
Möchte man sowas in C# umsetzen, muss folgendes beachtet werden:
Zitat:
The #define directive cannot be used to declare constant values as is typically done in C and C++. Constants in C# are best defined as static members of a class or struct. If you have several such constants, consider creating a separate "Constants" class to hold them.

So habe ich mich entschlossen, mehrere struct zu erstellen, je nach "Zugehörigkeit" der Message:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
public struct WM
{
    public const int NONE = 0;  // oder doch besser IntPtr statt int ??
    // ...
}

Der Aufruf würde im Anwendungsfall entsprechend aussehen: if (e.Msg == WM.NONE) ...

Frage, gibt es Attribute dafür, dass mir sowohl der Wert für .NONE angezeigt wird und gegebenfalls auch eine Beschreibung dazu? Wenn ja, welche Attribute?

Danke für's Mitdenken!

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18601
Erhaltene Danke: 1597

W10 x64 (Chrome, IE11)
Delphi 10.1 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 29.03.17 06:29 
Du meinst in IntelliSense? Dafür kannst du XML Kommentare verwenden: XML-Dokumentationskommentare

Moderiert von user profile iconTh69: URL-Titel hinzugefügt.

_________________
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Für diesen Beitrag haben gedankt: Frühlingsrolle
Frühlingsrolle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2006
Erhaltene Danke: 366

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Mi 29.03.17 06:41 
Ja genau. :) Die Frage hätte ich mir wirklich ersparen können mit etwas Nachdenken. Dankeschön jaenicke !

Die Frage hat sich erledigt !!!

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4262
Erhaltene Danke: 851


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 29.03.17 11:17 
Der Wert 0 steht übrigens für WM_NULL nicht NONE. Da Window Messages keine Pointer sind sondern einfach Marker wäre IntPtr falsch.
Und dafür eine struct zu nehmen fühlt sich falsch an. Ich würde zu einer static class tendieren.

Für diesen Beitrag haben gedankt: Frühlingsrolle
Frühlingsrolle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2006
Erhaltene Danke: 366

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Mi 29.03.17 11:40 
Das WM.NONE war nur als Beispiel gedacht. Ich verspreche beim WM.NULL eine Notiz zu hinterlassen, dass du mich vor diesem Fauxpas bewahrt hast. ;) Ich würde die Werte auch lieber als int definieren, aber, weil das EventArg in der WinProc() Methode die Eigenschaft .Msg als IntPtr hinterlegt hat, fand ich im Nachhinein die Idee mit dem IntPtr für WM's nicht verkehrt.
Inwiefern wäre es für jenes Vorhaben falsch, ein struct zu nehmen? Es ist nur eine Auflistung von konstanten Zahlenwerten, die weder vererbt noch instanziert werden sollen. Sie sollen nur präsent sein, wenn man sie mal braucht.

Hoppala, nicht die .Msg, sondern die .wParam Eigenschaft ist als IntPtr festgelegt.
Auch nicht gerade zufriedenstellend.

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 3740
Erhaltene Danke: 762

Win7
C++, C# (VS 2015/17)
BeitragVerfasst: Mi 29.03.17 11:55 
Wie kommst du auf IntPtr? In der Doku zu Message.Msg ist diese Eigenschaft aber als int angegeben.

Oh - hast du wohl gerade selbst gesehen (und nacheditiert).

Und ich würde hier auch eine static class nehmen (static struct gibt es ja nicht in C#, da es dasselbe wie static class wäre - und irritierend sein würde), denn man sollte ja keine Instanz davon erzeugen können.

Für diesen Beitrag haben gedankt: Frühlingsrolle
Frühlingsrolle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2006
Erhaltene Danke: 366

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Mi 29.03.17 12:04 
Japps, wir haben einander nur um 3sek verpasst. Ich muss mir das noch ganz genau überlegen, wie ich es aufbauen werde und was wie definiert werden soll. PInvoke ist auch nicht gerade eine große Hilfe. Mal wird ein und die selbe Konstante als uint oder int abgelegt, dabei sind die Werte so klein, sodass ein Typ Byte mehr als genug wäre.

Gut, also doch static class!

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)