Wie kann ich diese Zeile übersetzen
-
Ich will folgende Win32-Funktion in die MFC übersetzen, scheitere aber die ganze Zeit:
CreateWindow("Static",NULL, WS_CHILD | WS_VISIBLE |SS_BITMAP,bx,by,16,16,hwnd,0,hInst,0);
Es handelt sich um ein kleines Fenster, in das ein Bild geladen werden soll. Davon solls in einem Dialog ganz viele geben, ein gazes Raster solls werden.
Ich habs auch mit dieser CreateWindow-Funktion versucht, aber der erwartet ein HWND-Parent, was es bei der MFC, glaub ich, nicht gibt. Gibt es ein MFC-Äquivalent?
-
Wenn ich mich nicht irre, dann ist dieses HWND-Parent der handle auf das aufrufende Fenster. Probiers an der Stelle wo der HWND-Parent rein soll mal mit "this".
-
Chris++ schrieb:
Wenn ich mich nicht irre, dann ist dieses HWND-Parent der handle auf das aufrufende Fenster. Probiers an der Stelle wo der HWND-Parent rein soll mal mit "this".
Ich hab schon alles in die Richtung versucht.
Aber von CWnd* (das this das du meinst) kann nicht nach HWND gecastet werden. LOL ich habs sogar mit einem reinterpret_cast versucht, einfach nur aus Verzweiflung
Aber danke für deine Antwort.
-
CWnds haben doch das Member m_hwnd - hilft das?
-
estartu_de schrieb:
CWnds haben doch das Member m_hwnd - hilft das?
Vielen Dank! Das hilft.
Aber jetzt steh ich vor einem neuen Problem. Ich habe jetzt mal zum Testen ein komplett neues MFC-Projekt erstellt, dialogfeldbasierend. In die Funktion zum Initialisieren hab ich folgendes geschrieben:
// ZU ERLEDIGEN: Hier zusätzliche Initialisierung einfügen CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP1); HBITMAP hbitmap=static_cast<HBITMAP>(bitmap); HWND test=CreateWindow("Static",NULL,WS_CHILD|WS_VISIBLE|SS_BITMAP,5,5,16,16,m_hWnd,0,0,0); ::SendMessage(test,STM_SETIMAGE,IMAGE_BITMAP,(LPARAM)hbitmap); ::UpdateWindow(m_hWnd); UpdateData(false);
Der Code wird kompiliert. Allerdings wird dieses test-Fenster nicht im Dialog angezeigt. Wie man sieht, hab ich es mit zwei Update-Funktionen versucht, aber vergebens. Um mal zu gucken, ob überhaupt ein test-Fenster erzeugt wird und mit der Grafik geladen wird, habich nicht WS_CHILD sondern WS_OVERLAPPED genommen.. und es wird tatsächlich eins mit einer Grafik erstellt.
Aber wie kann ich es nun hinkriegen, dass es im Dialog angezeigt wird? Dieses Zusammenspiel mit der Win32 und MFC will nicht so ganz. UpdateData etc wollen jedenfalls nichts sichtbar machen.
-
Natürlich muss man ein ShowWindow machen.
-
Ich danke dir.
-
Wenn man schon WS_VISIBLE hat dann braucht man nicht ShowWindow.