title: How do I decide if a selection of text in CRichEditCtrl has multiple font sizes?
body: <p>Problem:
  How can I tell if a selection of text in the CRichEditCtrl has multiple font sizes in it?</p>
  
  <hr>
  
  <p>Goal:
  I am sort of making my own RichEdit toolbar (bold, italic, font type, font size, etc).  I want to emulate what MS Word does when a selection of text has more than a single font size spanning the selection.</p>
  
  <p>Ex - You have a line of text with the first 10 characters 9 pt font and the next 15 characters 14 pt font.  If you highlight the first 5 characters, the "Font Pt Selection" drop down displays "9".  If you then select the first 20 characters, the same drop down should have a empty/blank display.</p>
  
  <hr>
  
  <p>What I have going so far:
  I am getting the necessary notification when the selection changes inside of the CRichEditCtrl.  Also, if there is only a single font size in the selection I am able to figure that out</p>
  
  <pre><code>CHARFORMAT cf;
  cf.cbSize = sizeof(CHARFORMAT);
  CRichEditCtrl ctrl;
  ctrl.GetSelectionCharFormat( cf );
  int nFontPtSize = cf.yHeight / 20;
  </code></pre>
  
  <p>This will give me the needed info for the first case of my example above.  Unfortunately, what I seem to get for the second part of my example only gives me back the info for where the selection ends (instead of the entire selection).</p>
  
  <p>In conclusion, is there some info I am missing in the CHARFORMAT or some other struct I can get from the CRichEditCtrl or some kind of interesting calculation I can do to make the decision that there are multiple sizes in the selection?  So far my only idea is to chug through the selection a character at a time and see if the current font size of that character is different than any of the previous characters.  I am mostly just hoping the info I need is there, and I just don't see it (In a similar way that from the CHARFORMAT's dwMask member tells me that any or all of Bold, Italic, Underline, etc are turned on).</p>