Changing tab stops

The rich edit control has tab stops set every half inch by default. The tab stop is a paragraph attribute and you can change it by changing the paragraph format. The tab stop setting applies to the current selection, and if nothing is selected, the format will apply to the new text inserted at that point. The following code sets the tab stop to every inch.

We set the cTabCount to MAX_TAB_STOPS which is defined by Windows. When you specify the value for the tab stops, you specify absolute values. For instance, the first stop at = inch, the second at 1 inch, the third at 1= inch and so forth. Also, the values are specified in twips. A twip is 1/20 of a point and a point is 1/72 of an inch. That is, an inch is 1440 twips.

Although, we specify all the tab stops, you may choose to change only one or just thefirst few of the tab stops. The remainder of the tab stops would then be at the = inch interval.

	pf.cbSize = sizeof(PARAFORMAT);
	pf.dwMask = PFM_TABSTOPS ;
	pf.cTabCount = MAX_TAB_STOPS;
	// Set tab stops every inch (=1440 twip)
	for( int itab = 0 ; itab < pf.cTabCount  ; itab++ )
		pf.rgxTabs[itab] = (itab+1) * 1440 ;	
	SetParaFormat( pf );


  • How to get to jump five char with "tab"

    Posted by Legacy on 08/05/2002 12:00am

    Originally posted by: kenerl

    and how to get to jump two lines with "return"

  • Initializing rich edit control at windows 2000.

    Posted by Legacy on 12/04/2000 12:00am

    Originally posted by: D

    in windows 2000, the control has a lot of problems.
    GetRtf, SetRtf, using the control with tabs, etc.

    How do i intialize the control in windows 2000?

  • RichEdit 3.0 understands atbout tabs in 'plain' mode

    Posted by Legacy on 08/22/2000 12:00am

    Originally posted by: Petter Hesselberg

    RichEdit 3.0 supports the EM_SETTABSTOPS message; RichEdit 1.0 and RichEdit 2.0 do not. RichEdit 3.0 is only available with Windows 2000. It still resides in a DLL named Riched20.dll, though; see

  • This only works on the selected text. Example for full text :

    Posted by Legacy on 07/01/1999 12:00am

    Originally posted by: Franky Braem

    The code on the article only works when there is a text 
    selected in the view. This is an example for setting the
    tabs for the entire text :

    long lOldX;
    long lOldY;

    CRichEditCtrl &EditControl = GetRichEditCtrl();
    EditControl.GetSel(lOldX, lOldY);
    EditControl.HideSelection(TRUE, FALSE);
    EditControl.SetSel(0, -1); // Full selection

    pf.cbSize = sizeof(PARAFORMAT);
    pf.dwMask = PFM_TABSTOPS;
    pf.cTabCount = MAX_TAB_STOPS;
    for(int i = 0; i < pf.cTabCount; i++)
    pf.rgxTabs[i] = (i + 1) * 1440;

    EditControl.SetSel(lOldX, lOldY);
    EditControl.HideSelection(FALSE, FALSE);

  • Adding "Center, Right, and Decimal tabs" in a RichEdit control?

    Posted by Legacy on 04/22/1999 12:00am

    Originally posted by: Bryan Street

    I'm trying to create a CRichEditCtrl that supports other tab
    alignments: Center, Right, Decimal - like most word processors.
    I don't know where to start. Any suggestions?


  • Does not work in plain text mode

    Posted by Legacy on 02/16/1999 12:00am

    Originally posted by: Petter Hesselberg

    You can set the rich edit control to plain text mode by sending the EM_SETTEXTMODE message with a TM_PLAINTEXT parameter. After this, the EM_SETPARAFORMAT message returns 0, indicating failure, and no tab stops are changed. The EM_SETTABSTOPS message doesn't work either (well, it's not supposed to, so no surprises there).

    In fact, I haven't found *any* way to change the tab settings on a rich edit control in plain text mode. Ideas, anybody?

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Anthony Christie, the Chief Marketing Officer for Level Communications, is responsible for customer experience, worldwide marketing and product management. In this informative asset, he shares his insights into why a private network connection to cloud-bases applications is the right decision for your enterprise. Download now to find out more.

  • Moving from an on-premises environment to Office 365 does not remove the need to plan for disruptions or reduce the business risk requirements for protecting email services. If anything, some risks increase with a move to the cloud. Read how to ease the transition every business faces if considering or already migrating to cloud email. This white paper discusses: Setting expectations when migrating to Office 365 Understanding the implications of relying solely on Exchange Online security Necessary archiving …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date