Einfügen eines TabControls in einen modalen Dialog



  • Hallöchen,

    hab ne SDI-Anwendung bei der, wenn man auf den "Neu"-Button klickt, ein Dialog aufgeht, der einen Tab-Control enthalten soll.
    Hab schön brav die FAQ gelesen, entsprechende Befehle eingefügt, und bekomme beim Ausführen nen Fehler an dieser Stelle:

    LONG CTabCtrl::InsertItem(UINT nMask, int nItem, LPCTSTR lpszItem,int nImage, LPARAM lParam)
     {
      ASSERT(::IsWindow(m_hWnd));
    ...
    

    Was hab ich da wieder vergessen? 😞

    Ciao Mel



  • Hi.

    Asserts zeigen dir an, wenn logische Fehler bestehen, ein Wert also FALSE zurückliefert. In deinem Fall übergibst du einen leeren Zeiger. Also ist dein Fenster beim Aufruf von diesem Code noch nicht erstellt. Mehr kann man hier leider nicht sagen. Wenn du das Problem nicht lösen kannst, dann poste einfach ein bisschen Code.



  • Hm, zeig mal was mehr Code, der da oben ist nicht
    so aussagekräftig.

    Devil



  • Hab's eben nochmal probiert, also jetzt funktionierts, aber ich weiß nicht, woran es gelegen hat.

    Das ist der aufrufende Dialog:

    MM_TabControl m_tbCtrl;
    
    BOOL CNewComponent::OnInitDialog()
     {
      CDialog::OnInitDialog();
    
      m_tbCtrl.InsertItem(0, "HM8012");
      m_tbCtrl.InsertItem(1, "HM80XX");
    
      m_tbCtrl.Initialisierung();
    
      return TRUE;  // return TRUE unless you set the focus to a control
      // AUSNAHME: OCX-Eigenschaftenseite muss FALSE zurückgeben.
     }
    

    Und hier wird initialisiert:

    void MM_TabControl::Initialisierung()
    {
    	m_aktuelleSeite=0;
    
    	m_tabellenSeite[0]->Create(IDD_SEITE1, this);
    	m_tabellenSeite[1]->Create(IDD_SEITE2, this);
    
    	m_tabellenSeite[0]->ShowWindow(SW_SHOW);
    	m_tabellenSeite[1]->ShowWindow(SW_HIDE);
    
    	SetRec();
    }
    
    void MM_TabControl::SetRec()
    {
    	CRect tabRec, itemRec;
    	int nX, nY, nXz, nYz;
    
    	GetClientRect(&tabRec);
    	GetItemRect(0, &itemRec);
    
    	nX=itemRec.left;
    	nY=itemRec.bottom+1;
    	nXz=tabRec.right-itemRec.left-1;
    	nYz=tabRec.bottom-nY-1;
    
    	m_tabellenSeite[0]->SetWindowPos(&wndTop, nX, nY, nXz, nYz, SWP_SHOWWINDOW);
    	for(int nZaehler=1; nZaehler < m_Seitennummern; nZaehler++)
    	{
    		m_tabellenSeite[nZaehler]->SetWindowPos(&wndTop, nX, nY, nXz, nYz, SWP_HIDEWINDOW);
    	}
    
    }
    

Anmelden zum Antworten