Forum: PC-Programmierung Compilerprob beim Visual Studio


von Karlheinz Druschel (Gast)


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

von Christoph _. (chris)


Lesenswert?

Ich kenne nur die eine Variante, die offenbar zwei Parameter verlangt:
http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/dialogboxes/dialogboxreference/dialogboxfunctions/getdlgitem.asp

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));

von Rufus Τ. F. (rufus) Benutzerseite


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.

von Karlheinz Druschel (Gast)


Lesenswert?

ah ja,

dann mal 1000dank für die hilfe


Greets
Karlheinz

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.