Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Registerkartename auslesen

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
15.12.2004, 12:45 Uhr
OnkelHotte



Hallo,
ich kann bei meinem Dialog den Namen des TabCtrls nicht auslesen. Ich benutze folgende Methode:


Code:

TCITEM tcItem;
tcItem.mask = TCIF_TEXT;
if (GetItem(TabIndex, &tcItem))
{
   CString =  tcItem.pszText;
}



Aber beim GetItem gibt er false zurück, die Werte im tcItem werden auch nicht verändert.

Bis denne Mail,
OnkelHotte
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.12.2004, 13:45 Uhr
~mike
Gast


Hi!
Wenn du im Dialog drauf zugreifen willst - dann nur über die CTabCtrl Instanz.
Du kannst den Text auch nicht der Klasse CString zuweisen.
Siehe MSDN Bsp.:

C++:
void CDialogDlg::OnChangeItem()
{
TCITEM tcItem;
CString pszString;

//  Get text for the tab item.
GetDlgItemText(IDC_ITEM_TEXT, pszString);

//  Get the current tab item text.
tcItem.mask = TCIF_TEXT;
m_tabCtrl.GetItem(0, &tcItem);

//  Set the new text for the item.
tcItem.pszText = pszString.GetBuffer(256);

//  Set the item in the tab control.
m_tabCtrl.SetItem(0, &tcItem);

}


mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.12.2004, 14:53 Uhr
OnkelHotte



Im Programm weise den Wert auch nicht der Klasse CString zu, hab nur CString in den Code geschrieben damit klar ist, dass der Wert in eine Variable des Typs CString kopiert werden soll.

Was meinst du denn mit CTabCtrl Kontrollinstanz? In der Methode, in der ich die Tabüberschrift auslesen will, habe ich Zugriff auf das TabCtrl, z.B. kann ich die Überschrift neu setzen, will ich sie aber direkt danach auslesen, bleibt tcItem.pszText leer, obwohl er dann eigentlich den Wert "Neuer Text" haben müsste.


Code:

tcItem.pszText = "Neuer Text";
SetItem(TabIndex,  &tcItem);

tcItem.pszText = "";
GetItem(aktuelleSeite, &tcItem);



Auch ein casten des ParentWindow, damit ich an die Membervariable von dem TabCtrl komme, bringt nichts...

Bis denne Mail,
OnkelHotte

PS: Dein MSDN Beispiel hab ich nicht gefunden. Habe VS6 und dort gibt es weder CDialogDlg, noch OnChangeItem (nur OnChange und OnChangeItemPosition, die haben aber nix mit CDialog zu tun).

Dieser Post wurde am 15.12.2004 um 14:57 Uhr von OnkelHotte editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
15.12.2004, 15:09 Uhr
~mike
Gast


Also fassen wir zusammen:
* Du hast einen Dialog mit einerm CTabCtrl drinnen
* aus diesem TabCtrl möchtest du eine Überschift auslesen.

Trifft das zu - dann:
Du musst eine Membervariable anlegen (in den Klassenassi gehen und bei Membervariablen dein Tab aus wählen IDC_TAB??). Dann kannst du auf das CTabCtrl mal zugreifen.
Dann ruf einfach folgendes auf:
TCITEM tcItem;
CString pszString;
tcItem.mask = TCIF_TEXT;
m_tabCtrl.GetItem(0, &tcItem);
pszString = tcItem.pszText;
AfxMessageBox(pszString);
tcItem.pszText = "Bla";
m_tabCtrl.SetItem(0, &tcItem);

mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
15.12.2004, 15:45 Uhr
OnkelHotte



Jetzt habe ichs. Ich musste vorher initialisieren:


Code:

TCITEM tcItem; = {0};
TCHAR s[255]; //Fehlte vorher
CString text;

tcItem.mask = TCIF_TEXT;
tcItem.pszText=s; //Fehlte vorher
tcItem.cchTextMax=255; //Fehlte vorher

GetItem(TabIndex, &tcItem);
text =  tcItem.pszText;



Ein Zugriff über die Membervariable ist aber nicht zwingend notwendig.


Danke trotzdem für die Hilfe!


Bis denne Mail,
OnkelHotte
 
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: