Funktionszeiger einer Messagehandlermethode in WNDCLASSEX zuweisen
-
Hi!
Ich möchte mir eine eigene Buttonklasse basteln. Da Buttons ja im Grunde nichts anderes sind, als Childfenster, müssen diese mit CreateWindowEx() erzeugt werden. Dafür ist ja eine WindowClassEx Struktur nötig, die wiederum einen Zeiger auf auf die Messagehandler Funktion braucht. Ich wollte das alles intern in meiner Klasse im constructor lösen. Leider liefert mir der Compiler bei der Zuweisung des Funktionszeigers immer einen Konvertierungsfehler. Wie kann ich das lösen?
#include <windows.h> class StandButton { private: HWND Button; LRESULT CALLBACK BtnWndProc(HWND,UINT,WPARAM,LPARAM); public: StandButton(int,int,int,int); }; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE VorInstanz,LPSTR CmdLine,int ShowCmd) { return 1; } StandButton::StandButton(int x,int y,int xWidth,int yWidth) { WNDCLASSEX FH; FH.lpfnWndProc=BtnWndProc; //error C2440: '=' : cannot convert from 'long //(__stdcall StandButton::*)(struct HWND__ *,unsigned int,unsigned int,long)' //to 'long (__stdcall *)(struct HWND__ *,unsigned int,unsigne }
-
faq winapi
gruß
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Die Callback muss immer statisch sein (oder global)!
=>class StandButton { static LRESULT CALLBACK BtnWndProc(HWND,UINT,WPARAM,LPARAM); };Und nun hast Du ein Problem... deshalb schau Dir mal die Implementierung der MFC an, dann siehst Du was man da so alles machen muss... (ich sag nur "AfxHookWindowCreate")
Add: Bzw. "CWnd::FromHandlePermanent" und "afxMapHWND"
-
Nu hab ich das Problem gelöst, kommt doch glatt das nächste. Ich glaub das meintest du auch @J.K.
Da hätt ich dann doch mal ne Frageclass Klasse private: struct struktur { int Inhalt; struktur* nach; Klasse* instanz; }; static struktur* pointer; public: Klasse(void); }; struktur* Klasse::pointer=NULL //Der Typ struktur ist nicht bekanntWie kann ich das lösen?
-
Den Typ struktur gibts nicht, Klasse::struktur aber schon.

-
NEIN!! Wie peinlich.. darauf hät ich auch selber kommen können. Trotzdem danke für eure Geduld mit mir