SDI CFrameWnd HWND Handler
-
Also ich brauche in einer SDI Anwendung von einer CFrameWnd Klasse einen HWND Hndler, wie kann ich das machen. Mit
AfxGetMainWnd()->m_hWnd;
macht der mir nicht ganz das was ich will. sondedrn macht das ganze in meinem MainFrame, was ja auch normal ist, aber was muss ich machen damir er das von meiner anderen Klasse nimmt?
-
Ups, was ich noch wissen wollte, bekommt man hier auch als nicht eingeloggter ne antwort, oder hat dann keiner Bock einem zu antworten?
-
Hi,
ich verstehe nicht so ganz was du meinst, aber AfxGetMainWnd() liefert dir
das CWnd vom Hauptfenster also CFrameWnd welches auch Dein Hauptframe ist,
also CMainFrame wenn du es so belassen hast, wie es der Projektwizard default
erstellt.Die sicherste Methode die Rückgabe von AfxGetMainWnd() sieht so aus:
CFramwWnd* pFrame = DYNAMIC_DOWNCAST(CFrameWnd, AfxGetMainWnd()); ASSERT(pFrame); HWND hwnd = pFrame->GetSafeHwnd(); ASSERT(hwnd);
Gruss
EB
-
Wennn ich das do mache
CSide* pFrame2 = DYNAMIC_DOWNCAST(CSide, AfxGetMainWnd()); //CSide ist meine FrameWnd Klasse ASSERT(pFrame2); HWND hwnd = pFrame2->GetSafeHwnd(); ASSERT(hwnd);
Macht dder nicht das was ich will, sondern erstellt ein seperates Windows in dem der DirectX läd, was die Funktion eigentlich nur macht, wenn hwnd nicht vergeben ist! Aber es ist ja vergeben.
PS: Ich musste pFrame in pFrame2 umändern, da ich sonnst pFrame doppelt difiniert hääte.
-
Noch mal zur verdeutlichung, ich muss einer DX 9 Funktion einen HWND Handler zuweisen aber ich weiß nicht wie ich den bekomme.
Das Projekt basiert auf MFC SDI mit die gesplittet ist und ich brauch den HWND von einem der CFrameWnd die die beim Splitter sind.
Hoffentlich kann das jemand verstehen, sonnst
-
Kann mir denn nieman sagen, wie ich nen HWND Handler von einer CFormWnd Klasse bekomme? Das muss doch irgendwie gehen, oder kann man das à la konvertierung machen?
-
Also, jetzt hab ich den Code von EarlyBird nochmal getestet, und jetzt geht er in sofern, das es nicht mecker, und auch kein sepperrates Fenster geladen wird. Sondern nicht geladen wird aber das Programm im Hintergrund noch läuft.
Kann das daran liegen, das das Frame mit in einem Splitter ist? Muss man das dann anders machen?