Warum klappt das nicht in der MFC / RTF



  • Hi Leute ;),

    im *ausgabeBuffer steht von oben nach unten das kleine 1X1 !
    Result ist ein CString Array !
    Ich wollte die Ausgabe auf dem RTF View so formattieren dass in 10 Spalten das 1 X 1 ausgegeben wird !
    Also :
    1.....2.....10
    2.....4.......
    3.....6.......
    4.............
    5.............
    6.............
    7.............
    8.............
    9.............
    10.........100
    aber egal was ich om Format anstelle es klappt einfach nicht es wird immer horizontal oder sonstwie ausgegeben nur nicht wie oben beschrieben !
    Hier mal der Code:

    int *ausgabeBuffer;	// Buffer zur Aufnahme des ErgebnisArrays
    
    	CRichEditCtrl& rCtrl = GetRichEditCtrl();
    	CHARFORMAT cfm;
    	rCtrl.SetSel (0,8);
    	cfm.cbSize		= sizeof(CHARFORMAT);
    	cfm.dwMask		= CFM_ITALIC;
    	cfm.dwEffects	= CFM_ITALIC;
    
    	for (int k = 1; k <= 100;k++)
    	{
    		Result[k].Format("%i\n",ausgabeBuffer[k]);
    		rCtrl.ReplaceSel(Result[k]);
     	}	
    
    	rCtrl.SetSelectionCharFormat (cfm);
    

    In einer Konsolenanwendung funktionierts doch auch :

    int *ausgabeBuffer;					// Buffer zur Aufnahme des ErgebnisArrays
    	ausgabeBuffer = calc.berechne ();
    
    	for (int k = 1; k <= 100; k++)
    	{
    		cout << ausgabeBuffer[k] << "\t";
    	}
    	cout << endl << endl << endl << endl << endl;
    	return 0;
    

    Könnt ihr mir sagen wie ichs richtig machen muss ? 😕 😕 😕
    Vielen Dank für eure Hilfe
    ShadowEater



  • Hi,
    O.K. in der Konsole funktionierts wegen der Fensterbreite (Zufall)!!!
    Aber wie mach ichs auf dem RTF ???

    😉
    ShadowEater



  • Da mußt du vermutlich selber die Zeilenumbrüche dort reinsetzen, wo du sie benötigst (indem du in jedem zehnten Schleifendurchlauf ein '\n' an den Ausgabestring anhängst).



  • Hi,
    danke für Deine Antwort.
    O.K. jeder 10. Durchlauf heisst ich lass nen Counter int count beispielsweise mitlaufen, aber wie häng ich denn den Zeilenumbruch an ???
    Ich find nix dazu echt net ?

    Danke für die Mühe
    ShadowEater



  • Hi,
    ich nehme an Du hast das so gemeint:

    int *ausgabeBuffer;					// Buffer zur Aufnahme des ErgebnisArrays
    	ausgabeBuffer = Calc.berechne ();
    
    	int count = 0;
    	CRichEditCtrl& rCtrl = GetRichEditCtrl();
    	CHARFORMAT cfm;
    	rCtrl.SetSel (0,8);
    	cfm.cbSize		= sizeof(CHARFORMAT);
    	cfm.dwMask		= CFM_ITALIC;
    	cfm.dwEffects	= CFM_ITALIC;
    	for (int k = 0; k <= 100;k++)
    	{	
    		count++;
    		Result[k].Format("%d",ausgabeBuffer[k]);
    		rCtrl.ReplaceSel(Result[k]);
    		if (count == 10)
    		{ 
      :confused:   :confused:   :confused:   :confused:   :confused:   :confused: 
    		}
    
     	}
    

    Danke nochmal
    SgadowEater 🙂 😕



  • Hallo

    /n steht für Zeilenumbruch.

    chrische



  • Hi,
    @chrische5
    Ja klar... 😉

    int *ausgabeBuffer;					// Buffer zur Aufnahme des ErgebnisArrays
    	ausgabeBuffer = Calc.berechne ();
    
    	int count = 0;
    	CRichEditCtrl& rCtrl = GetRichEditCtrl();
    	CHARFORMAT cfm;
    	rCtrl.SetSel (0,8);
    	cfm.cbSize		= sizeof(CHARFORMAT);
    	cfm.dwMask		= CFM_ITALIC;
    	cfm.dwEffects	= CFM_ITALIC;
    	for (int k = 1; k <= 100;k++)
    	{	
    		count++;
    		Result[k].Format("%d\t",ausgabeBuffer[k]);
    		rCtrl.ReplaceSel(Result[k]);
    		if (count == 10)
    		{ 
    			rCtrl.ReplaceSel("\n");
    			count = 0;
    		}
    
     	}
    

    ich habs jetzt so gelöst, unglaublich dass das so einfach war, ich dachte wieder mal um 7 Ecken !!!

    Danke euch
    😉
    ShadowEater



  • Du kannst sogar den Zähler weglassen und deinen Array-Index als Kennung verwenden:

    if(k%10==0)...
    


  • Hallo

    Habe ich irgendwas überlesen, oder warum zwinkerst du mir zu?

    chrische



  • Hi Chrissche,

    hast Du mich gemeint mit dem zwinkern ?
    war nix, einfach so !

    Shadoweater


Anmelden zum Antworten