Forum: PC-Programmierung CTabCtrl MFC Tab Dialog zuweisen


von ani (Gast)


Lesenswert?

Hallo,

ich arbeite gerade daran eine TabControll in mein Programm(MFC) 
einzufügen.
Es werden auch zwei Dialoge mit unterschiedlichen Titel erstellt. Das 
Problem ist, dass in jedem Tab der gleiche Dialog/Text angezeigt wird.
1
  CTabCtrl* pTabCtrl = (CTabCtrl*)GetDlgItem(IDC_TABCONTROL);
2
 
3
  m_Tab1.Create(IDD_TAB1, pTabCtrl);
4
 
5
  TCITEM item1;
6
  item1.mask    = TCIF_TEXT | TCIF_PARAM;
7
  item1.lParam  = (LPARAM)& m_Tab1;
8
  item1.pszText = _T("Titel Tab1");
9
  pTabCtrl->InsertItem(0, &item1);
10
11
  CRect rcItem1; 
12
  //m_tabcontrol.InsertItem(0, &item1);
13
  pTabCtrl->GetItemRect(0, &rcItem1);
14
  
15
  m_Tab1.SetWindowPos(NULL, rcItem1.left, rcItem1.bottom + 1, 0, 0, SWP_NOSIZE | SWP_NOZORDER );
16
   m_Tab1.ShowWindow(SW_SHOW);
17
  
18
  m_Tab2.Create(IDD_TAB2, pTabCtrl);
19
  TCITEM item2;
20
  item2.mask    = TCIF_TEXT | TCIF_PARAM;
21
  item2.lParam  = (LPARAM)& m_Tab2;
22
  item2.pszText = _T("Titel Tab2");
23
  pTabCtrl->InsertItem(1, &item2);
24
 
25
  // Dialog positionieren
26
  CRect rcItem2;   
27
  //m_tabcontrol.InsertItem(1, &item2);
28
  pTabCtrl->GetItemRect(1, &rcItem2);
29
  
30
  m_Tab2.SetWindowPos(NULL, rcItem2.left, rcItem2.bottom + 1, 0, 0, SWP_NOSIZE | SWP_NOZORDER );
31
 
32
  m_Tab2.ShowWindow(SW_SHOW);

Ich habe schon andere Codes studiert und rumprobiert. Aber es klappt 
irgendwie nicht, dass ich jeweiligen Tab den entsprechenden Dialog 
zuordne. Es wird in beiden Tabs das gleich angezeigt.
Wäre super wenn ihr mir einen Tip geben könntet.

danke schonmal

ani

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Könnte es sein, daß Du da was missverstanden hast? Einen tabbed dialog 
macht man mit PropertySheets und PropertyPages, und da kümmert sich das 
System um die korrekte Darstellung.

von ani (Gast)


Lesenswert?

also ich will nicht ausschließen, dass ich etwas falsch verstanden habe.
Ich habe mich nach diesem Tutorial gerichtet:

http://www.youtube.com/watch?v=7LSqZ7Kl6CE

Leider erstellen sie in dem Tutorial nur 1 Tab. Bei mir scheint es ja 
auch fast zu klappen. Nur leider steht in den beiden Tabs das gleiche. 
Also immer der zweite Dialog.

Bist du dir sicher, dass es so nichts wird und ich vielleicht nicht nur 
einen kleinen Fehler drinnen habe?

danke schonmal

ani

von ani (Gast)


Lesenswert?

ok ich habe es hinbekommen.

Falls es jemanden interessiert, man muss noch diesen Teil einfügen:
1
void CTestFensterDlg::OnTcnSelchangeTabcontrol(NMHDR *pNMHDR, LRESULT *pResult)
2
{
3
  // TODO: Fügen Sie hier Ihren Kontrollbehandlungscode für die Benachrichtigung ein.
4
  
5
  int Seite;
6
  Seite=  m_tabcontrol.GetCurFocus();
7
  TRACE("%i\n",Seite);
8
  if (Seite==0)
9
  {
10
    m_Tab1.ShowWindow(SW_SHOW);
11
    m_Tab2.ShowWindow(SW_HIDE);
12
  }
13
  if (Seite==1)
14
  {
15
    m_Tab1.ShowWindow(SW_HIDE);
16
    m_Tab2.ShowWindow(SW_SHOW);
17
  }
18
  *pResult = 0;
19
}

Ist wahrscheinlich programmiertechnisch nicht das schönste, aber es 
funktioniert ;-)

gruß

ani

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.