Programm läuft nicht mehr
-
Hi @all,
ich habe ein Programm mit VC++ 6.0 geschrieben und jetzt Visual C++.NET als neue Plattform bekommen (die Standard-Version). Aber egal welches Programm ich bisher versucht habe mit .NET zu kompilieren, es klappt net.
Warum???
Gibt es irgendwelche Einstellungen, die man zusätzlich noch durchführen muß??Hier ein Beispiel.
Beim Kompilieren sagt er alles verlief erfolgreich, öffnet aber nicht die .exe
Wechsel ich in den Debug-Ordner und starte die erstellte .exe bekomme ich folgende FehlermeldungUnbehandelte Ausnahme bei 0x7c239d5a (mfc71d.dll) in Hauptprog Empfangsstation.exe: 0xC0000005: Zugriffsverletzung-Leseposition 0x00000020.
Wenn ich auf Debug gehe bleibt er hier stehen.
BOOL CWnd::SetWindowPos(const CWnd* pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags) { ASSERT(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL)); //hier bleibt er stehen, aber keine Ahnung warum. if (m_pCtrlSite == NULL) return ::SetWindowPos(m_hWnd, pWndInsertAfter->GetSafeHwnd(), x, y, cx, cy, nFlags); else return m_pCtrlSite->SetWindowPos(pWndInsertAfter, x, y, cx, cy, nFlags); }Die winocc.cpp wird aber doch automatisch erstellt bzw. in das Projekt geladen.
Ich habe da zumindest nichts dran verändert.
-
wenn er an der zeile stehen bleibt heist das m_hWnd ist kein Window-Handle oder m_pCtrlSite gleich NULL. Wär jetzt interessant zu wissen was genau den ASSERT erzeugt

-
Beim Debuggen habe ich festgestellt, das die Werte in SetWindowPos aus der
OnInitDialog() gesetzt werden.pMedia->SetWindowPos(NULL, 0, 0 , 320, 240, SWP_NOOWNERZORDER | SWP_NOZORDER);hier setzte ich die Position und Größe eines Mediaplayers. In 6.0 klappte das auch reibungslos. Wieso ist das unter .net falsch bzw. was ist daran falsch?
-
Hat sich erledigt.
.NET ist ziemlich anfällig.
Beispiel:
Pointer auf Mediaplayer = falschpMedia->SetWindowPos(NULL, 0, 0 , 320, 240, SWP_NOOWNERZORDER | SWP_NOZORDER);Membervariable auf Mediaplayer = richtig
m_cMediaPlayer.SetWindowPos(NULL, 0, 0 , 320, 240, SWP_NOOWNERZORDER | SWP_NOZORDER);GetDlgItem wird gar nicht mehr akzeptiert.