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 einfachCClientDC 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!