OnInitDialog



  • Muß ich den irgendwo deklarieren?

    [cpp][code]
    BOOL CBeispiel1Doc::OnNewDocument()
    {
    if (!CDocument::OnNewDocument())
    return FALSE;

    // TODO: Hier Code zur Reinitialisierung einfügen
    // (SDI-Dokumente verwenden dieses Dokument)
    //Color
    CString greeting = "Hello Sir, how are you today?";
    int X = 0, Y = 0; // Position where string is printed
    int Pos = greeting.Find(" "); // Position of first blank
    BOOL Red = TRUE; // Word is red colour or not
    while (Pos >= 0)
    {
    // Picks up the first or next word
    CString Word = greeting.Mid(0, Pos + 1);
    // Sets colour and prints the word
    COLORREF TextColor = pDC->SetTextColor(Red ? RGB(255, 0, 0) : RGB(0, 0, 255));
    pDC->TextOut(X, Y, Word);
    pDC->SetTextColor(TextColor);
    // Updates position for next word
    X += pDC->GetTextExtent(Word).cx;
    // Discards the word from the sentance
    greeting = greeting.Mid(Pos + 1);
    // Finds position of next blank
    Pos = greeting.Find(" ");
    // Updates flag for text colour
    Red = !Red;
    }
    // Sets colour and prints the last word
    COLORREF TextColor = pDC->SetTextColor(Red ? RGB(255, 0, 0) : RGB(0, 0, 255));
    pDC->TextOut(X, Y, greeting);
    pDC->SetTextColor(TextColor);
    return TRUE;



  • vor dem Quellcode

    [cpp]

    schreiben
    danach

    [/cpp]

    schreiben
    so kann das doch keiner entziffern^^

    aber in der Tat, von nichts kommt nichts.
    Den musst du anlegen und mit nem Fenster füttern, damit er weis wohin
    er zeichnen soll (schau MSD nach CDC und CClientDC, je nachdem)



  • Sorry, bin noch nicht solange hier!

    BOOL CBeispiel1Doc::OnNewDocument()
    {
    	if (!CDocument::OnNewDocument())
    		return FALSE;
    
    	// TODO: Hier Code zur Reinitialisierung einfügen
    	// (SDI-Dokumente verwenden dieses Dokument)
    //Color
    CString greeting = "Hello Sir, how are you today?";
    int  X = 0, Y = 0;			// Position where string is printed
    int  Pos = greeting.Find(" ");		// Position of first blank
    BOOL Red = TRUE;			// Word is red colour or not
    while  (Pos >= 0)
    {
    	// Picks up the first or next word
    	CString Word = greeting.Mid(0, Pos + 1);
    	// Sets colour and prints the word
    	COLORREF TextColor = pDC->SetTextColor(Red ? RGB(255, 0, 0) : RGB(0, 0, 255));
    	pDC->TextOut(X, Y, Word);
    	pDC->SetTextColor(TextColor);
    	// Updates position for next word
    	X += pDC->GetTextExtent(Word).cx;
    	// Discards the word from the sentance
    	greeting = greeting.Mid(Pos + 1);
    	// Finds position of next blank
    	Pos = greeting.Find(" ");
    	// Updates flag for text colour
    	Red = !Red;
    }
    // Sets colour and prints the last word
    COLORREF TextColor = pDC->SetTextColor(Red ? RGB(255, 0, 0) : RGB(0, 0, 255));
    pDC->TextOut(X, Y, greeting);
    pDC->SetTextColor(TextColor);
    	return TRUE;
    


  • So richtig schlau werde ich aus der MSDN ja nicht. Wo muß ich diesen Pointer denn überall anmelden? Danke Euch!



  • Du missbrauchst hier irgendwie die Dokumentklasse.
    Die Dokumentklasse soll Daten nur speichern.
    Andere Fenster sollen nun die Daten aus der Dokumentklasse holen und sie darstellen.
    Wenn du in einer Fensterklasse(!!!) bist machst du einfach

    CClientDC dc(this);
    dc.SetTextColor(Red ? RGB(255, 0, 0) : RGB(0, 0, 255));
    //usw.
    

    Ausnahme: du befindest dich in der OnDraw(..) Methode, dort hast du dann schon deinen Device Context und kannst ihn einfach benutzen.



  • Danke für Deinen Tip.
    Ich habe den oben aufgeführten Teil aus der Dokumentenklasse herausgenómmen und in OnDraw kopiert. Es kommt immer noch die Fehlermeldung, das pDC nicht deklariert ist.
    Ich dachte in der OnDraw Klasse braucht man das nicht mehr? 😞



  • also in meiner OnPaint()-Methode wird das hier automatisch vom Assistenten erstellt:

    CPaintDC dc(this); // device context for painting
    

    heißt halt dc anstatt pDC



  • Das Problem mit dem Pointer habe ich danke Deiner Hilfe erledigt. Bei mir hieß der pDoc.
    Jetzt habe ich noch eine Frage zur Funktion SetTextColor. Mein Compiler macht eine Fehlermeldung, weil er diese Funktion nicht kennt. Ich habe aber ein Klasse RichEditCtrl erstellt, also müssten diese Befehle doch bekannt sein, oder habe ich noch etwas vergessen? 🙂



  • *lol* einen lügenden Compiler habe ich noch nicht gesehen 😉
    Die Klasse beistzt die Funktion wirklich nicht.
    "?->Index" im VC 6, Dort Klassennamen eingeben und schwups kann man sich die Memberfunktionen(Class Members) anzeigen lassen. Falls es zu wenig erscheint unten auf Base Class Members klicken. damit man auch die geerbten Methoden sieht.
    Das hilft oft.



  • Erstmal vielen Dank für die Hilfe. Werde es später mal ausprobieren. Vielleich melde ich mich dann nochmal.
    Schönes WE! 🙂


Anmelden zum Antworten