Anzeigeproblem bei Registerkarte



  • Ich hab das Problem, das bei mir die einzelnen Dialogfelder falsch angezeigt werden, alle felder werden oben links in der bildschirmecke angezeigt, anstatt unterhalb der registerreiter (tab1, tab2, etc.).
    Ich benutz die XTabCtrl Klasse von http://www.fun-soft.de/.
    Hier die Funktion die eigentlich dafür sorgen sollte, das die Felder an der richtigen Position angezeigt werden.

    void CXTabCtrl::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);
    	}
    
    }
    


  • Ich poste das jetzt mal auf die Gefahr hin das es dir nicht weiter hilft, aber hatte gerade das selbe Problem und hab das dann so gemacht:

    //Einträge einfügen
        m_ctlTab.InsertItem(0,"Allgemein");
    	m_ctlTab.InsertItem(1,"Browser Einstellungen");
    	m_ctlTab.InsertItem(2,"Relativen Pfad einfügen");
    	m_ctlTab.InsertItem(3,"Farbcode einfügen");
    	m_ctlTab.InsertItem(4,"Schlüsselwörter");
    
            //Werte des Tab Steuerelementes
    	RECT rec;
    	m_ctlTab.GetWindowRect(&rec);
    
            //Werte des Ersten Reiters
    	RECT ItemRect;
    	m_ctlTab.GetItemRect(0,&ItemRect);
    
            //Position des Formview bestimmen
    	RECT NewPos;
    	NewPos.left = 1;
    	NewPos.right = rec.right - rec.left - 4;
    	NewPos.top = ItemRect.bottom+1;
    	NewPos.bottom = rec.bottom - rec.top - NewPos.top -3;
    
            //Die einzeilen Formviews allokieren und auf ihre Position setzten    
    	m_pPage1 = new CHtmlConfigPage1Dlg;
    	m_pPage1->Create(MAKEINTRESOURCE(IDD_HTMLCONFIGPAGE1),&m_ctlTab);
    	m_pPage1->SetWindowPos(&wndTop,NewPos.left,NewPos.top,NewPos.right,NewPos.bottom,0);
    	m_pPage1->ShowWindow(SW_SHOW);
    
    	m_pPage2 = new CHtmlConfigPage2Dlg;
    	m_pPage2->Create(MAKEINTRESOURCE(IDD_HTMLCONFIGPAGE2),&m_ctlTab);
    	m_pPage2->SetWindowPos(&wndTop,NewPos.left,NewPos.top,NewPos.right,NewPos.bottom,0);
    
    //Hier kommen dann noch die restlichen Formviews
    

    Ich hoffe das hilft die ein bissel 🙂 .



  • der Dialog muss Child sein


Anmelden zum Antworten