www.mikrocontroller.net

Forum: PC-Programmierung C# vordefinierte Strukturen verwenden


Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte mit GetWindowInfo 
(http://msdn.microsoft.com/en-us/library/ms633516.aspx) die Fenstergröße 
eines Fensters herausfinden. Dafür wird die WINDOWINFO Structure 
verwendet. Laut http://msdn.microsoft.com/en-us/library/ms632610.aspx 
ist diese Struktur in Winuser.h (include Windows.h) definiert. Wie kann 
ich diese Struktur verwenden?
#include <Windows.h> führt immer zur Fehlermeldung "Preprocessor 
Directive expected"

Autor: Chris ... (dechavue)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Markus schrieb:
> Wie kann ich diese Struktur verwenden?

Gar nicht, du musst in C# eine äquivalente Struktur erstellen.
Für WinAPI-Funktionen finden sich diese fast immer auf www.pinvoke.net

(In deinem Fall http://pinvoke.net/default.aspx/Structures.WINDOWINFO 
und http://pinvoke.net/default.aspx/user32.GetWindowInfo )

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, danke. Hab die beiden Strukturen WINDOWINFO 
(http://www.pinvoke.net/default.aspx/Structures/WIN...) und 
RECT (http://www.pinvoke.net/default.aspx/Structures/RECT.html) 
rüberkopiert und bekomme als Fehlermeldung "Inconsistent accessibility: 
parameter type 'out WindowsFormsApplication1.Form1.WINDOWINFO' is less 
accessible than method 
'WindowsFormsApplication1.Form1.GetWindowInfo(System.IntPtr, out 
WindowsFormsApplication1.Form1.WINDOWINFO)'

Sehr frustrierend alles. Ich muss wohl leider wieder MCs only 
programmieren, C# ist irgendwie zu hoch für mich :-(

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Markus schrieb:
> OK, danke. Hab die beiden Strukturen WINDOWINFO
> (http://www.pinvoke.net/default.aspx/Structures/WIN...) und
> RECT (http://www.pinvoke.net/default.aspx/Structures/RECT.html)
> rüberkopiert und bekomme als Fehlermeldung "Inconsistent accessibility:
> parameter type 'out WindowsFormsApplication1.Form1.WINDOWINFO' is less
> accessible than method
> 'WindowsFormsApplication1.Form1.GetWindowInfo(System.IntPtr, out
> WindowsFormsApplication1.Form1.WINDOWINFO)'

GetWindowInfo erwartet im "Original" einen Zeiger auf eine Struktur vom 
Typ WINDOWINFO. D.h. in C# wäre das richtige Attribut ref und nicht out 
(so wie es auch auf pinvoke.net gemacht wird).
out wird verwendet, um bspw. mehrere Werte zurückzugeben wobei die 
aufgerufene Funktion/Methode dann einen Wert zuweisen muss. Anders 
gesagt: Der Aufrufer darf auch nicht initialisierte (Zeiger auf) 
Variablen übergeben.
ref dagegen erwartet initialisierte Variablen.
Die Fehlermeldung kommt sehr wahrscheinlich daher, dass WINDOWINFO jetzt 
irgendwo anders definiert wird, aber nicht public gemacht wurde. D.h. 
die Struktur ist einfach nicht sichtbar.


>
> Sehr frustrierend alles. Ich muss wohl leider wieder MCs only
> programmieren, C# ist irgendwie zu hoch für mich :-(

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, Du hast recht, das wars. Vielen Dank für Deine Erklärung, ich glaube 
ich habs sogar kapiert!

Autor: Sven H. (dsb_sven)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> C# ist irgendwie zu hoch

Deshalb nennt man so was auch Hochsprache...

;-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.