Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
04.01.2008, 23:14
Felheart



Hi.

Quellcode:void Dialog::Show()
{
DialogBox(0,MAKEINTRESOURCE(DialogResource),0,&Dialog::DialogProc);
}
Hier krieg ich den Fehler:

Quellcode:error C2664: 'DialogBoxParamA': Konvertierung des Parameters 4 von 'INT_PTR (__stdcall Dialog::* )(HWND,UINT,WPARAM,LPARAM)' in 'DLGPROC' nicht möglich
Aber warum ist die Konvertierung nicht möglich?
Wenn ich nur "DialogProc" mach dann kommt ein Fehler das ich wenn ich einen
Zeiger auf nen Memeber machen will lieber "&Dialog::DialogProc" schreiben soll.

Hier der Kopf von Dialog::DialogProc
Quellcode:INT_PTR CALLBACK Dialog::DialogProc(HWND me, UINT message, WPARAM wp, LPARAM lp)

--

zum Seitenanfang zum Seitenende Profil || Suche
001
04.01.2008, 23:26
Bluthund



Ist bei dir Kopf gleich Deklaration?
Falls dem so ist: Callback auf eine Memberfunktion? Macht da ne statische Methode nicht mehr Sinn?

Dann sollte nämlich der Aufruf auch so funzen:
Quellcode:DialogBox(0,MAKEINTRESOURCE(DialogResource),0,DialogProc); Sofern der Typ deiner übergebenen Funktion gleich dem verlangten (DLGPROC) ist.

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-

zum Seitenanfang zum Seitenende Profil || Suche
002
05.01.2008, 00:23
Felheart



Wenn ich aus
Quellcode:INT_PTR CALLBACK Dialog::DialogProc(HWND me, UINT message, WPARAM wp, LPARAM lp)
das hier
Quellcode:static INT_PTR CALLBACK Dialog::DialogProc(HWND me, UINT message, WPARAM wp, LPARAM lp)
mache dann kommen endlos viele Fehler unter anderem auch
"'Dialog::DialogProc': 'static' sollte nicht für Memberfunktionen verwendet werden, die außerhalb der Klasse definiert werden"

--

zum Seitenanfang zum Seitenende Profil || Suche
003
05.01.2008, 00:31
Bluthund



Welcher Compiler meldet dir das?
Sicher kann man Memberfunktionen als static deklarieren und außerhalb der Klasse definieren.
Hast du das static evtl vor die Definition anstatt vor die Deklaration geschrieben?!

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-

zum Seitenanfang zum Seitenende Profil || Suche
004
05.01.2008, 00:34
Felheart



Microsoft VisualStudio 2005 auf Vista64
Ich habs so geschrieben wie obene steht:
static INT_PTR CALLBACK Dialog::DialogProc(...)

--

zum Seitenanfang zum Seitenende Profil || Suche
005
05.01.2008, 00:43
Bluthund



Tja dann sind wir beide Idioten:
Ich, weil ich hätte erkennen müssen, dass deine Zeile eine Definition sein muss (siehe scope-operator) und sich daher meine Frage nach Deklaration/Definition erübrigt.
Und du, weil du versuchst ne Methodendefinition static zu machen.
Ich kann mit meinem Fehler leben. Du solltest es nicht können und dir ein Buch über Klassen und speziell deren Methodentypen in C++ genehmigen.

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-

zum Seitenanfang zum Seitenende Profil || Suche