www.mikrocontroller.net

Forum: PC-Programmierung Compilerprob beim Visual Studio


Autor: Karlheinz Druschel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leuts,

wenn ich eine globale Funktion schreibe in der ich folgenden Aufruf
mache:
  CListBox *p;
  p = (CListBox*) GetDlgItem(n);
krieg ich folgenden Fehler:

Global.cpp(45) : error C2660: 'GetDlgItem' : Funktion akzeptiert
keine 1 Parameter


Das kann aber doch irgendwie gar nicht sein, denn es gibt zwei
Versionen von GetDlgItem, wobei die eine laut MSDN nur den Integerwert
des Items benötigt.
Wenn ich den Funktzionsaufruf in einer Dialogklasse mache, dann klappt
das. Ich will die Funktion aber öfters nutzen, rufe sie also von
verschiedenen Dialogklassen auf und übergeben dabei jeweils den Wert
des Controls. Wieso meckert der Compiler ?


Greets
Karlheinz

Autor: Christoph __ (chris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenne nur die eine Variante, die offenbar zwei Parameter verlangt:
http://msdn.microsoft.com/library/en-us/winui/winu...

Dass dein Funktionsaufruf innerhalb der Dialogklasse funktioniert,
deutet stark darauf hin, dass "dein" GetDlgItem eben keine globale
Funktion ist. Das heißt, ohne ein Objekt der Dialogklasse macht
GetDlgItem wenig Sinn, daher beschwert sich der Compiler.

btw, wieso benutzt du C-Casts, wo du doch C++ programmierst?
Zum einen sind Casts in C++ nur in Ausnahmefällen nötig, zum anderen
benutzt man wenn dann reinterpret_cast<>:
CListBox* p =
reinterpret_cast<CListBox*>(DialogKlassenInstanz->GetDlgItem(n));

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
GetDlgItem mit einem Argument ist eine Memberfunktion von CWnd. In einer
Funktion, die nicht Memberfunktion einer von CWnd abgeleiteten Klasse
ist, kann diese Funktion folglich nicht aufgerufen werden.

Autor: Karlheinz Druschel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ah ja,

dann mal 1000dank für die hilfe


Greets
Karlheinz

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.