000
04.01.2008, 23:14
Felheart
|
Hi.
void Dialog::Show() { DialogBox(0,MAKEINTRESOURCE(DialogResource),0,&Dialog::DialogProc); }
Hier krieg ich den Fehler:
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
INT_PTR CALLBACK Dialog::DialogProc(HWND me, UINT message, WPARAM wp, LPARAM lp)
--
|
|
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:
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-
|
|
Profil || Suche
|
002
05.01.2008, 00:23
Felheart
|
Wenn ich aus
INT_PTR CALLBACK Dialog::DialogProc(HWND me, UINT message, WPARAM wp, LPARAM lp)
das hier
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"
--
|
|
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-
|
|
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(...)
--
|
|
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-
|
|
Profil || Suche
|