Problem mit GetDialogItem()

MortenV

Mitglied
Hi,
ich hab folgendes Problem:
Ich arbeite an einem VC++ 6.0 MFC MDI Projekt und erzeuge üner ein Menu-Aufruf ein nicht-modales Fenster. Dieser Dialog enthält nur ein Bild/Picture als Steuerelement.
In der dazugehörigen Klasse versuche ich ein Handle auf dieses Elements zu erhalten

Code:
 CWnd* pWnd = GetDlgItem (IDC_HISTO_DISP);

Danach ermittle ich die rect größe, das is aber egal.
Alles wird kompiliert, das Programm startet..
An der oben genannten Codestelle stürzt die Anwendung jedoch mit folgendem Fehler ab:

"Debug Assertion Failed"
.. mit einem Verweis auf winocc.cpp Zeile 76:

Code:
 CWnd* CWnd::GetDlgItem(int nID) const
{
ASSERT(::IsWindow(m_hWnd));
if (m_pCtrlCont == NULL)
return CWnd::FromHandle(::GetDlgItem(m_hWnd, nID));
else
return m_pCtrlCont->GetDlgItem(nID);
}

Ich bekomme also kein Handle.. aber warum nicht ?
Ich wäre über jeden Tip dankbar..
.. und sowas Freitag Nachmittag *grml

mfg Morten
 
Zuletzt bearbeitet:
Dieses Problem tritt meist auf, wenn du die ID neu zuweist! Dann weiß der Kompiler nicht mehr genau, welche Nummer er nehmen soll!

Am Besten lässt du dir den das Programm noch mal neu kompilieren (Komplett!). Das hilft meistens.

CU Mainstream
 
Wo rufst du denn das GetDlgItem auf? Das Assert an der Stelle besagt, dass du ein Item von einem ungültigem Window holen willst, das HWnd des Dialoges selbst ist also (noch) nicht gültig.

Du kannst das erst benutzen, nachdem der Dialog (Das HWnd, NICHT die Klasse) erzeugt ist. Am besten innerhalb OnInitDialog.
 
Aja,
ich hatte den Methodenaufruf gleich nach dem create(). Ich hab gedacht, wenn create TRUE zurückgibt, hab ich schon ein gültiges Hwnd.
Habs jetzt alles in der OnInitDialog() Methode..
jetzt läuft auch GetDlgItem problemlos durch..

besten dank :D
 

Neue Beiträge

Zurück