SetWindowPos wirft Assertion ??
-
Ich bekomme in einem CStatic Control indem ich ein SetWindowPos aufrufe
void CGraphCtrl::Resize(const long width, const long height) { SetWindowPos(NULL, 0, 0, width, height, SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER); }eine Fehlermeldung an folgender Stelle
BOOL CWnd::SetWindowPos(const CWnd* pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags) { ASSERT(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));Anscheint weil m_hWnd==NULL ist. Die gleiche Assertion wird dann an weiteren Stellen noch ein paar mal in anderen Aufrufen geworfen.
Exact der gleiche Quellcode funktioniert aber in diversen anderen Projekten.
Was läuft das falsch ?
Matthias
-
Das Objekt ist zwar als Instanz existent, aber es existiert eben kein Fenster, bzw. DU hast kein Fenster an diese Objekt gebunden (SubclassWindow) oder eben kein Fenster erzeugt (Create´).
-
Das Fenster ist der Dialog der Applikation und die Funktion wird in OnInitdialog aufgerufen nachdem der Dialog Initialisiert wurde.
Ich sehe daher nicht warum das Objekt noch nicht initialisiert sein sollte.
Matthias
-
Du meinst Du hast eine Member-Variable in Deinem Dialog.
Wenn dem so ist, dann gibt es folgendes:
1. CDialog::OnInitDialog wurde nicht aufgerufen und damit kein Subclass durchgeführt.
2. Du hast Dein Control in dem Dialog nicht an die Member-Variable gebunden (DDX-COntrol fehlt in DoDataExchange).