Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » CTabCtrl / Kein Zugriff auf die Dialogfelder

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
04.10.2005, 16:34 Uhr
oli2006



Hi. Ich habe ein Problem mit CTabCtrl. Bei mir besteht das TabCtrl aus 2 Tabs, in denen sich Eingabefelder befinden. Ich kann das Programm auch fehlerfrei ausführen, jedoch kann ich auf die beiden Dialogfelder nicht zugreifen. Wenn ich über die Registerreiter einen Dialog anwähle wird dieser dargestellt, wenn ich jedoch versuche den Focus in eines der Eingabefelder zu setzen passiert nichts!

Ich bin folgendermaßen vorgegangen:

-CMyTabCtrl von CTabCtrl ableiten
-Variable anlegen:

C++:
CMyTabCtrl    m_tabMyTabCtrl;


-2 Dialoge erstellt
-für jeden Dialog eine Klasse erstellt
-Registerseiten im Konstrukor erzeugen und im Destruktor löschen

C++:
CMyTabCtrl::CMyTabCtrl()
{
  m_tabPages[0]=new CTabSuche;
  m_tabPages[1]=new CTabStatistik;
  
  m_nNumberOfPages=2;
}

CMyTabCtrl::~CMyTabCtrl()
{
  for(int nCount=0; nCount < m_nNumberOfPages; nCount++)
  {
    delete m_tabPages[nCount];
  }
}



-Methoden zur Initialisierung und Behandlungsroutine für Mausklick

C++:
void CMyTabCtrl::Init()
{
  m_tabCurrent=0;
  
  m_tabPages[0]->Create(IDD_SUCHE, this);
  m_tabPages[1]->Create(IDD_STATISTIK, this);

  m_tabPages[0]->ShowWindow(SW_SHOW);
  m_tabPages[1]->ShowWindow(SW_HIDE);

  SetRectangle();
}

void CMyTabCtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
  CTabCtrl::OnLButtonDown(nFlags, point);

  if(m_tabCurrent != GetCurFocus())
  {
    m_tabPages[m_tabCurrent]->ShowWindow(SW_HIDE);
    m_tabCurrent=GetCurFocus();
    m_tabPages[m_tabCurrent]->ShowWindow(SW_SHOW);
    m_tabPages[m_tabCurrent]->SetFocus();
  }
}

void CMyTabCtrl::SetRectangle()
{
  CRect tabRect, itemRect;
  int nX, nY, nXc, nYc;

  GetClientRect(&tabRect);
  GetItemRect(0, &itemRect);

  nX=itemRect.left;
  nY=itemRect.bottom+1;
  nXc=tabRect.right-itemRect.left-1;
  nYc=tabRect.bottom-nY-1;

  m_tabPages[0]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_SHOWWINDOW);
  for(int nCount=1; nCount < m_nNumberOfPages; nCount++)
  {
    m_tabPages[nCount]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_HIDEWINDOW);
  }
}



-Hinzufügen der Tabs in OnInitialUpdate der Formview

C++:
void CProjektView::OnInitialUpdate()
{
  CFormView::OnInitialUpdate();

  TC_ITEM tcItem;

  tcItem.mask = TCIF_TEXT;
  tcItem.pszText = _T("Suche");
  tcItem.cchTextMax = (int) strlen(_T("Suche"));
  m_tabMyTabCtrl.InsertItem(0, &tcItem);

  tcItem.mask = TCIF_TEXT;
  tcItem.pszText = _T("Statistik");
  tcItem.cchTextMax = (int) strlen(_T("Statistik"));
  m_tabMyTabCtrl.InsertItem(1, &tcItem);
  
  m_tabMyTabCtrl.Init();
}



Wieso kann ich die Dialogfelder nicht ansprechen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: