Zurück tutorials.de > Programming > .NET > .NET Windows Forms

 
 
Hallo und herzlich willkommen! Tutorials.de ist eine Hilfe-Community mit dem Motto User helfen Usern. Als Gast verfügst Du über Schreibrechte in unseren Foren und Blogs. Du kannst dich aber gerne auch kostenlos registrieren und Teil unserer Gemeinschaft werden! Viel Spaß & Erfolg bei der Vermehrung deines Wissens :-)

Themen: 242.975 | Beiträge: 1.352.293 | Mitglieder: 169.418 (Stand 28.01.10) | Fragen zur Nutzung von Tutorials.de? Nutzungsregeln | Kontaktformular | Impressum

Jubiläums-Countdown 23.02 23.03 23.04 23.05 23.06 23.07 23.08 23.09


4 kostenlose Bücher bei unserer Buch-Verschenkaktion 03/2010
  AntwortAntworten (über Gastzugang)    
  AntwortAntworten (über Gastzugang)    
 
Themen-Optionen Ansicht
Alt 08.02.10, 22:26   #1 (permalink)
Großer Enumerator
 
Benutzerbild von Marschal  
 
Registriert seit: May 2008
Ort: Lohfelden (bei Kassel)
Beiträge: 293
Renommee-Modifikator: 6
Marschal ist einfach richtig nettMarschal ist einfach richtig nett

[.NET WinForms C++] Namespace-Erweiterung

Guten Abend Liebe Community.

Mein Problem ist, wie man am Quelltext-Ausschnitt schon merken wird, etwas speziell. Hängt mit dem Projekt zusammen, mit dem ich arbeite.

Ich versuche es mal zu erklären.

In meiner Form.h geschieht folgender Aufruf:
cpp Code:
  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
//Connect to the Wiimote
//**********************
//add event listeners to changes in the wiiremote
//fired for every input report - usually 100 times per second if acclerometer is enabled
    this->wm->WiimoteChanged += gcnew WiimoteLib::WiimoteChangedEventHandler();
//fired when the extension is attached on unplugged
    this->wm->WiimoteExtensionChanged += gcnew WiimoteExtensionChangedEventHandler();

wm ist ein Objekt der Klasse Wiimote, die wiederum in dem WiimoteLib namespace aus der WiimoteLib.dll implementiert ist.

so nun wollte ich den Namespace in einer anderen datei (Events.h) erweitern. Etwa so:
cpp Code:
  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
namespace WiimoteLib
{
...
public delegate void WiimoteChangedEventHandler(System::Object^ sender, WiimoteChangedEventArgs^ args);
...
public delegate void WiimoteExtensionChangedEventHandler(System::Object^ sender, WiimoteChangedEventArgs^ args);
...
}

Nun meldet der Kompiler folgendes:
Code:
error C2039: 'WiimoteChangedEventHandler': Ist kein Element von 'WiimoteLib'
error C2061: Syntaxfehler: Bezeichner 'WiimoteChangedEventHandler'
error C2039: 'WiimoteExtensionChangedEventHandler': Ist kein Element von 'WiimoteLib'
 error C2061: Syntaxfehler: Bezeichner 'WiimoteExtensionChangedEventHandler'
Die Syntaxfehler sind "Folgefehler", aber die eigentliche Ursache kann ich leider nicht nachvollziehen.

Interessant ist auch, dass Wenn ich im Kompiler die Zeile schreibe:
---->WiimoteLib
und danach die zwei "::" setze wird im PopUp die o.g. Funktion gelisstet, dennoch erscheint die Meldung.

Was mach ich falsch? Hoffe mir kann jemand helfen.

MfG Marschal
__________________
╔══════════════════════════════════════════════════════════════════════╗
ABI 2010 DV-LK (geschafft) + 19.03 Mathe-LK + 22.03 Deutsch Schriftl. + 24.03 Abgabe der besonderen Lernleistung.
╚══════════════════════════════════════════════════════════════════════╝

Das ist ein Spaß...:)

" Gehirn: ein Organ, mit dem wir denken, daß wir denken. "
Ambrose Bierce
  Marschal ist offline  
 
Alt 08.02.10, 23:04   #2 (permalink)
Mitglied Diamant
 
Registriert seit: Jun 2005
Beiträge: 5.917
Renommee-Modifikator: 53
deepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiter

AW: [.NET WinForms C++] Namespace erweiterung

Hi.

Warum willst du denn unbedingt den Event-Handler in dem fremden Namensraum erstellen?

Wo wird denn der Fehler angezeigt? Welche Dateien sind da jetzt beteiligt und wo wird welche Datei include'd?

Gruß
__________________
.:Mitglied des 1. offiziellen Sven Uwe Fan-Clubs:.
  deepthroat ist gerade online  
 
Alt 08.02.10, 23:11   #3 (permalink)
Großer Enumerator
 
Benutzerbild von Marschal  
 
Registriert seit: May 2008
Ort: Lohfelden (bei Kassel)
Beiträge: 293
Renommee-Modifikator: 6
Marschal ist einfach richtig nettMarschal ist einfach richtig nett

AW: [.NET WinForms C++] Namespace erweiterung

Hi, danke für deine schnelle Antwort,

Der Eventhandler wird ja nicht im fremden Namespace deklariert, oder?!

Also.
Ich habe die Form1.h, in der Auch der Fehler entsteht.

Dan die Main, in der auch alles includet wird, also die form1.h und die events.h.

In der Events.h ist der Namespace "WiimoteLib", in dem die zwei delegate Funktionen sind.

Der eigentliche Namespace "WiimoteLib" ist in einer externen managed DLL (WiimoteLib.dll)
__________________
╔══════════════════════════════════════════════════════════════════════╗
ABI 2010 DV-LK (geschafft) + 19.03 Mathe-LK + 22.03 Deutsch Schriftl. + 24.03 Abgabe der besonderen Lernleistung.
╚══════════════════════════════════════════════════════════════════════╝

Das ist ein Spaß...:)

" Gehirn: ein Organ, mit dem wir denken, daß wir denken. "
Ambrose Bierce
  Marschal ist offline  
 
Alt 09.02.10, 08:37   #4 (permalink)
Mitglied Diamant
 
Registriert seit: Jun 2005
Beiträge: 5.917
Renommee-Modifikator: 53
deepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiter

AW: [.NET WinForms C++] Namespace erweiterung

Zitat:
Zitat von Marschal Beitrag anzeigen
Der Eventhandler wird ja nicht im fremden Namespace deklariert, oder?!
Stimmt. Du hast gar keinen Event-Handler deklariert/definiert.

Aber wozu willst du die delegate in einem fremden Namensraum deklarieren? Man pfuscht nicht in anderen Namensräumen rum.
Zitat:
Zitat von Marschal Beitrag anzeigen
Also.
Ich habe die Form1.h, in der Auch der Fehler entsteht.

Dan die Main, in der auch alles includet wird, also die form1.h und die events.h.
Und in form1.h inkludierst du events.h nicht?

Warum willst du denn überhaupt nochmal neue delegate erstellen? Zumal das dann völlig unterschiedliche Typen sind...
cpp Code:
  1.  
this->wm->WiimoteChanged += gcnew EventHandler<WiimoteChangedEventArgs^>(this, &Klass::ChangedHandlerMethod);
Gruß
__________________
.:Mitglied des 1. offiziellen Sven Uwe Fan-Clubs:.
  deepthroat ist gerade online  
 
Alt 09.02.10, 20:34   #5 (permalink)
Großer Enumerator
 
Benutzerbild von Marschal  
 
Registriert seit: May 2008
Ort: Lohfelden (bei Kassel)
Beiträge: 293
Renommee-Modifikator: 6
Marschal ist einfach richtig nettMarschal ist einfach richtig nett

AW: [.NET WinForms C++] Namespace-Erweiterung

Also mein Prolem mit den delegate Funktionen hat sich nun geklärt Ich hatte die Datei falsch includet. Ich hab sie jetzt in der stdafx.h includet, im Vorkompilierten Header ist das ganze deutlich handsamer. Doch nun ein anderes Problem

ich möchte eine Klasse Ableiten. Doch krieg ich die Fehlermeldung:
Code:
...Events.h(24) : error C2011: 'WiimoteLib::WiimoteExtensionChangedEventArgs': 'class' Typneudefinition
...wiimotelib.dll: Siehe Deklaration von 'WiimoteLib::WiimoteExtensionChangedEventArgs'
Die Klasse hab ich wie folgt Angelegt:
cpp Code:
  1.  
  2.  
  3.  
ref class WiimoteExtensionChangedEventArgs :
        public System::EventArgs
        {

Kompilieren tue ich übrigends mit /clrure, immer noch .net, immer noch selbiges Projekt.
Was mach ich falsch.

@deepthroat: Übrigends, warum ich "in anderen Namensräumen rumpfusche" ist, weil ich mich an einem Ähnlichen Beispiel orientiere, dieses ist jedoch in c# gestalltet. Deswegen möchte ich den Code erst mal genau so lauffähig kriegen. Ich werde nacher eh noch aufräumen müssen... Oder schlägst mir den Code aus der Events.h in die Form1.h zu übernehmen.

Hier mal Die Events.h:
cpp Code:
  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.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
#pragma once
 
using namespace System;
 
namespace WiimoteLib //der namespace aus der WiimoteLib.dll ist der selbe...liegt der Hund evtl hier?
{
    /// <summary>
    /// Event to handle a state change on the Wiimote
    /// </summary>
    /// <param name="sender">Object sending the event</param>
    /// <param name="args">Current Wiimote state</param>
public delegate void WiimoteChangedEventHandler(System::Object^ sender, WiimoteChangedEventArgs^ args);
 
    /// <summary>
    /// Event to handle insertion/removal of an extension (Nunchuk/Classic Controller)
    /// </summary>
    /// <param name="sender">Object sending the event</param>
    /// <param name="args">Current extension status</param>
public delegate void WiimoteExtensionChangedEventHandler(System::Object^ sender, WiimoteChangedEventArgs^ args);
 
    /// <summary>
    /// Argument sent through the WiimoteExtensionChangedEvent
    /// </summary>
ref class WiimoteExtensionChangedEventArgs :
        public System::EventArgs
        {
        /// <summary>
        /// The extenstion type inserted or removed
        /// </summary>
    public: ExtensionType p_ExtensionType;
        /// <summary>
        /// Whether the extension was inserted or removed
        /// </summary>
    public: bool Inserted;
 
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="type">The extension type inserted or removed</param>
        /// <param name="inserted">Whether the extension was inserted or removed</param>
    public: WiimoteExtensionChangedEventArgs(ExtensionType ext, bool inserted)
        {
            ExtensionType type = ext;
            Inserted = inserted;
        }
    };
 
    /// <summary>
    /// Argument sent through the WiimoteChangedEvent
    /// </summary>
 ref class WiimoteChangedEventArgs:
    public EventArgs
    {
        /// <summary>
        /// The current state of the Wiimote and extension controllers
        /// </summary>
    public: WiimoteState p_WiimoteState;
 
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="ws">Wiimote state</param>
    public: WiimoteChangedEventArgs(WiimoteState wss)
        {
            WiimoteState ws = wss;
        }
    };
}

MfG Marschal
__________________
╔══════════════════════════════════════════════════════════════════════╗
ABI 2010 DV-LK (geschafft) + 19.03 Mathe-LK + 22.03 Deutsch Schriftl. + 24.03 Abgabe der besonderen Lernleistung.
╚══════════════════════════════════════════════════════════════════════╝

Das ist ein Spaß...:)

" Gehirn: ein Organ, mit dem wir denken, daß wir denken. "
Ambrose Bierce
  Marschal ist offline  
 
Alt 09.02.10, 20:47   #6 (permalink)
Mitglied Diamant
 
Registriert seit: Jun 2005
Beiträge: 5.917
Renommee-Modifikator: 53
deepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiter

AW: [.NET WinForms C++] Namespace-Erweiterung

Hi.
Zitat:
Zitat von Marschal Beitrag anzeigen
ich möchte eine Klasse Ableiten. Doch krieg ich die Fehlermeldung:
Code:
...Events.h(24) : error C2011: 'WiimoteLib::WiimoteExtensionChangedEventArgs': 'class' Typneudefinition
...wiimotelib.dll: Siehe Deklaration von 'WiimoteLib::WiimoteExtensionChangedEventArgs'
Das könnte wieder ein include Problem sein.
Zitat:
Zitat von Marschal Beitrag anzeigen
@deepthroat: Übrigends, warum ich "in anderen Namensräumen rumpfusche" ist, weil ich mich an einem Ähnlichen Beispiel orientiere, dieses ist jedoch in c# gestalltet.
Das ist kein Grund es überhaupt zu versuchen. Was spricht dagegen sich einfach einen eigenen Namen auszudenken?

Und warum willst du das überhaupt in C++/CLI machen? Gibt es dafür einen Grund?

Gruß
__________________
.:Mitglied des 1. offiziellen Sven Uwe Fan-Clubs:.
  deepthroat ist gerade online  
 
Alt 09.02.10, 20:59   #7 (permalink)
Großer Enumerator
 
Benutzerbild von Marschal  
 
Registriert seit: May 2008
Ort: Lohfelden (bei Kassel)
Beiträge: 293
Renommee-Modifikator: 6
Marschal ist einfach richtig nettMarschal ist einfach richtig nett

AW: [.NET WinForms C++] Namespace-Erweiterung

Nein es gibt eigentlich keinen grund C++ mit CLI zu verwenden, aber ich find C++ allgemein eine schöne Sprache, auch wen C++ und C++/CLR auser dem Namen und zwei drei Systax Sachen nix gemeinsam haben, ne keine Ahnung, gibt keinen Grund.

Ich schätze mal du würdest mir wahrscheinlich auch C# ans Herz legen, wenn ich mit einer managed DLL arbeite
__________________
╔══════════════════════════════════════════════════════════════════════╗
ABI 2010 DV-LK (geschafft) + 19.03 Mathe-LK + 22.03 Deutsch Schriftl. + 24.03 Abgabe der besonderen Lernleistung.
╚══════════════════════════════════════════════════════════════════════╝

Das ist ein Spaß...:)

" Gehirn: ein Organ, mit dem wir denken, daß wir denken. "
Ambrose Bierce
  Marschal ist offline  
 
Alt 10.02.10, 08:52   #8 (permalink)
Mitglied Diamant
 
Registriert seit: Jun 2005
Beiträge: 5.917
Renommee-Modifikator: 53
deepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiter

AW: [.NET WinForms C++] Namespace-Erweiterung

Zitat:
Zitat von Marschal Beitrag anzeigen
Nein es gibt eigentlich keinen grund C++ mit CLI zu verwenden, aber ich find C++ allgemein eine schöne Sprache
Ehrlich?! Naja, es gibt schönere / elegantere Sprachen.
Zitat:
Zitat von Marschal Beitrag anzeigen
Ich schätze mal du würdest mir wahrscheinlich auch C# ans Herz legen, wenn ich mit einer managed DLL arbeite
Ja, aber nicht nur dann. Man sollte die passende Sprache für ein Problem wählen. C++ bzw. C++/CLI sind nur unter bestimmten Bedingungen sinnvoll. Da du sowieso .NET hast, würde ich z.B. C# verwenden. Die Sprache ist klarer, bietet so angenehme Dinge wie LINQ und IntelliSense funktioniert meistens auch richtig (nicht so wie mit C++).

Gruß
__________________
.:Mitglied des 1. offiziellen Sven Uwe Fan-Clubs:.
  deepthroat ist gerade online  
 
Alt 10.02.10, 09:06   #9 (permalink)
Großer Enumerator
 
Benutzerbild von Marschal  
 
Registriert seit: May 2008
Ort: Lohfelden (bei Kassel)
Beiträge: 293
Renommee-Modifikator: 6
Marschal ist einfach richtig nettMarschal ist einfach richtig nett

AW: [.NET WinForms C++] Namespace-Erweiterung

S****se Dan werd ich einfach meine GUI übernehmen, und eben das ganze in C# aufbauen

Ich hätte von Anfang an auf nen Kumpel hören sollen:P Der meinte das selbe

Zu c# findet man auch deutlich mehr im Netz als zu C++/CLI

Aus Interesse, wofür biete sich den c++/cli "besser" an? Ist es theoretisch nicht egal welche Sprache ich mit CLR verwende? ist der Sinn des .NET nicht die Sprachen-unabhängige-Programmierung; wenn ich mich so ausdrücken darf?

Wenn du gute Links zu diesem Thema kennst wäre ich sehr dankbar, habe zwar den Wiki Artikel gelesen, aber wie es aussieht ist das immer noch nicht ausreichen

MfG
__________________
╔══════════════════════════════════════════════════════════════════════╗
ABI 2010 DV-LK (geschafft) + 19.03 Mathe-LK + 22.03 Deutsch Schriftl. + 24.03 Abgabe der besonderen Lernleistung.
╚══════════════════════════════════════════════════════════════════════╝

Das ist ein Spaß...:)

" Gehirn: ein Organ, mit dem wir denken, daß wir denken. "
Ambrose Bierce
  Marschal ist offline  
 
Alt 10.02.10, 09:32   #10 (permalink)
Mitglied Diamant
 
Registriert seit: Jun 2005
Beiträge: 5.917
Renommee-Modifikator: 53
deepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiterdeepthroat ist berühmt wie kein Zweiter

AW: [.NET WinForms C++] Namespace-Erweiterung

Zitat:
Zitat von Marschal Beitrag anzeigen
Aus Interesse, wofür biete sich den c++/cli "besser" an? Ist es theoretisch nicht egal welche Sprache ich mit CLR verwende? ist der Sinn des .NET nicht die Sprachen-unabhängige-Programmierung; wenn ich mich so ausdrücken darf?
C++ ist generell eine maschinennahe Sprache.

Und es ist die einzige Sprache des .NET Universums dessen Compiler nativen Code erzeugen kann und mit der man nativen/unmanaged C++ Code in managed Code nach dem IJW (it just works) Prinzip nutzen kann ohne das man P/Invoke oder COM verwenden muss.

Wenn man also alten Code hat, den man in .NET nutzen möchte, oder aus Effizienzgründen "handoptimierten" Code schreiben möchte oder einfach native Bibliotheken nutzen möchte (ohne P/Invoke etc.) dann wäre C++/CLI z.B. sinnvoll.

http://www.functionx.com/cppcli/index.htm
http://blogs.msdn.com/jolson/archive...-or-c-cli.aspx

Gruß
__________________
.:Mitglied des 1. offiziellen Sven Uwe Fan-Clubs:.
  deepthroat ist gerade online  
 
 
 
Lesezeichen:


Themen-Optionen
Ansicht
Ähnliche Themen
 
Thema Autor Forum Antworten Letzter Beitrag
Hilfesystem für Web und Winforms tomkruse Coders Talk 0 16.11.09 11:50
C++&WinForms Tutorials WinnerZero .NET Windows Forms 0 02.12.07 20:49
C++ Winforms Designer OnkelBeBu .NET Café 2 25.11.07 22:11
[Mac] WinForms snowtom .NET Windows Forms 2 09.08.06 15:19
Videos in WinForms VideoProcessor .NET Archiv 2 19.07.04 20:13
» Tools
 
tutorials.de-Tools tutorial.de-Suchfeld tutorial.de-Widget tutorial.de-RSS-Feed tutorial.de-Banner
» Neue Links
 
Hits: 138
»
JHT's Planetary...
(Cinema 4D-Objekte)
Hits: 265
»
Tageslicht ohne GI
(Cinema 4D-Tutorials)
Hits: 154
»
Puzzle
(Cinema 4D-Tutorials)
Hits: 104
»
Lacreme
(Cinema 4D-Tutorials)
Hits: 195
»
Liquid Light
(Cinema 4D-Tutorials)
» Aktuelle Umfrage
 
Bist du mit der Geschwindigkeit der Tutorials.de-Website zufrieden?
Ja, es putzt mir glatt den Staub vom Bildschirm! - 80,61%
158 Stimmen
Nein, ich denke da muss noch nachgebessert werden... - 19,39%
38 Stimmen
Stimmen gesamt: 196
Du darfst bei dieser Umfrage nicht abstimmen.

 

Alle Zeitangaben in WEZ +1. Es ist jetzt 15:12 Uhr.


Powered by vBulletin® Version 3.8.5 (Deutsch) & vBadvanced CMPS v.3.2.0
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.5.0 RC2 ©2010, Crawlability, Inc.
Alle Rechte vorbehalten ©2000 - 2010 tutorials.de
Design by Mark, CSS by Maik & Sven Mintel
Seite generiert in 0,25195 Sekunden mit 26 queries