Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Wechseln des CtrlTabs im Programm

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
05.11.2004, 10:44 Uhr
OnkelHotte



Hallo,
ich hab ein Problem, den Tab in meinem Programm automatisch zu wechseln. Als Grundlage habe ich die CMyTabCtrl benutzt. Hier im Forum habe ich auch was zu dem Thema gefunden, aber es funktioniert bei mir nicht. Es soll bei einem Fehler auf das entsprechende Tab gewechselt werden.


Code:

void CMyTabCtrl::ShowDialog(int iNeuerDialog)
{
    tabellenSeite[aktuelleSeite]->ShowWindow(SW_HIDE);
    aktuelleSeite=iNeuerDialog;
    tabellenSeite[aktuelleSeite]->ShowWindow(SW_SHOW);
    tabellenSeite[aktuelleSeite]->SetFocus();
    tabellenSeite[aktuelleSeite]->SetDlgItemText(IDC_EDIT, "Fehler");
}



Im Grunde ist dies auch der Code, der bei dem OnLButtonDown Event benutzt wird...
Er springt zwar in die Methode, setzt auch die aktuelleSeite um, aber es wird immer noch das alte Fenster angezeigt. Kann es vielleicht daran liegen, dass ich einen Timer in der CMyTabCtrl benutze und in diesem Timer den Tab wechseln will?

Dieser Post wurde am 05.11.2004 um 10:54 Uhr von OnkelHotte editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.11.2004, 11:01 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


du übergibst nicht zufällig iNeuerDialog 1 zu hoch? Ein Array fängt ja bei 0 an, evtl ist das dein Fehler, am Timer sollte es nicht liegen. Um "oben" die Tab-Buttons (falls du welche hast) zu wechseln, musst du SetCurSel oder sowas von dem TabCtrl aufrufen (kannste auch in der obigen Wechselfunktion machen)
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.11.2004, 11:06 Uhr
OnkelHotte




Zitat von FloSoft:
... musst du SetCurSel oder sowas ...


Jep, das hat gefehlt. Jetzt geht es. INeuerDialog war natürlich richtig übergeben

Bis denne Mail,
OnkelHotte
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
05.11.2004, 12:06 Uhr
OnkelHotte



Hm, nun hab ich ein anderes Problem:

Auf dem Tab ist eine Listbox. Diese soll nun den Fehler anzeigen und speichern. Normalerweise würde man das ja mit AddString machen, aber dann spuckt mir der Compiler diesen Fehler aus:


Code:

tabellenSeite[aktuelleSeite]->m_Error.AddString(Fehler);

error C2039: 'm_Error' : Ist kein Element von 'CDialog'
        c:\programme\microsoft visual studio\vc98\mfc\include\afxwin.h(2568) : Siehe Deklaration von 'CDialog'
error C2228: Der linke Teil von '.AddString' muss eine Klasse/Struktur/Union sein


m_Error ist die Membervariable von der IDC_LIST auf dem Tab. Ansonsten hab ich z.B. Editfelder mit


Code:

tabellenSeite[aktuelleSeite]->SetDlgItemText(IDC_EDIT1, "Fehler!");



füllen können.

Was ich noch machen will ist, dass das Programm in den Vordergrund kommt, sobald ein Fehler angeezeigt wird. Mit


Code:

SetForegroundWindow();



blinkt unten das Programm nur in der Taskleiste. Mit welchem Befehl kommt es denn wirklich vor andere Applikationen?

Bis denne Mail,
OnkelHotte
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
05.11.2004, 12:50 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


du musst es erst auf deine Dialog-Klasse casten, also z.b


C++:
((CMyDialog*)tabellenseite[xyz])->m_Error...


--
class God : public ChuckNorris { };
 
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: