Frage zu WndProc (nix mit WinAPI)
-
Servus,
naja ich hab jetzt mal ne kleine Frage, viele die C++ programmieren wolllen veilleicht ihr Programm nicht alles in WinMain schreiben sondern das Programm über ihre eigene Klasse zum Beispiel CMain steuern. So wie ich des mache.
Jetzt hab ich aber ein Problem mit der Windows Prozedur, es wäre blöd wenn ich sie als normale Funktion hätte damit hab ich keinen Zugriff auf die Member-Variablen und Funktion der CMain Klasse.
Wie stell ich des am besten an.
Beim Regestrieren der WindowsKlasse muss ich eine Windows-Prozedur angeben.WNDCLASSEX wc; wc.cbSize = sizeof(WNDCLASSEX); wc.style = CS_CLASSDC; wc.lpfnWndProc = WndProc; // Hier wc.cbClsExtra = NULL; wc.cbWndExtra = NULL; wc.hInstance = GetModuleHandle(NULL); wc.hIcon = NULL; wc.hCursor = NULL; wc.hbrBackground = NULL; wc.lpszMenuName = NULL; wc.lpszClassName = "Direct3D 9"; wc.hIcon = NULL; RegisterClassEx(&wc);
Und dort fangen die Probleme an, ist es möglich auch irgendwie eine Member-Funktion anzugeben, wenn es nicht anders geht von mir aus eine statische.
Mich würd interessiern wie ihr des macht, denn vor diesem Problem werden schon viele gestanden sein.
lpfnWndProc will eine long (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)' Funktion.
-
Die Frage wurde schon mindestens 10 mal gestellt. :p
Such im Forum. WinAPI/FAQ/C++. Du mußt die Methode auf jeden Fall static machen.
-
Dazu steht sogar ein Arikel in der WinAPI-FAQ.
cya
-
hab ich doch gesagt :p
-
Sorry, habs grad selber bemerkt bevor ihrs mir gesagt habt, hab aber nicht gedacht dass beu der WinPai FAQ steht, ich hab nur in der C++ FAQ gescuth
sorry
-
Nein, du sagtest WinAPI ODER FAQ ODER C++, für mich heisst so ein '/' immer 'oder' :p . Ich hab deine Aussage also nur präzisiert ;).
cya
-
Original erstellt von <GUI>:
Die Frage wurde schon mindestens 10 mal gestellt. :p
Such im Forum. WinAPI/FAQ/C++. Du mußt die Methode auf jeden Fall static machen.stimmt nicht, ich hab mal das gegenteil bewiesen is auch in den faq:p
-
Tolles Gegenteil. Dann kann man aber nur ein Fenster erstellen, bei nem zweiten stürzt es ab.
-
steht auch inner faq :p das das nich sooooo toll ist.
-
Aber trozdem funktioniert dein beispeil und ich benutze es.
Und wie meinst du des mit nur einem Fenster?
-
Wenn du ein zweites Fenster mit Bigors Methode erstellen willst *crash*
-
Thread verschoben ins WinApi Forum WinAPI
-
Hmm, des ist aber nicht so toll. Aber da muss es doch noch ne andere Möglichkeit geben.
Und wie ist des mit zweitem fenster, auch wenn des fenster ne andere klasse ist die angeüpasst ist geht es nicht oder wie?
-
Dann mach die Funktion halt static. Ist sowieso besser.
-
Is baer auch nich so die perfekte Lösung aber wahrscheinlich die einzieg andere.