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


  • Mod

    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


  • Mod

    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).


Anmelden zum Antworten