Thanx' sharing the ideas! But I found another way around my CHARFORMAT-problem than using the PreTranslateMessage(...) - here it is. What I did was that I made the CHARFORMAT-change to the full selection in response to *not* an UPDATE event but a CHANGE ev. As it turned out an update-ev. came over and over again if I did the work on EN_UPDATE - ON_CHANGE was less sensitive. So this is how the final solution looks: const void CCalFrameWnd::CCalendar::Note_EditChange() // Called from parent to signal that user are editing a note. { TRACE(_T("Note_EditChange()\n")); // Ensure usage of one charformat only. long lChar_Start = 0, lChar_End = 0; CHARFORMAT cf_def; cf_def.cbSize = sizeof(CHARFORMAT); m_pEdit_Note->GetDefaultCharFormat(cf_def); m_pEdit_Note->GetSel(lChar_Start, lChar_End); m_pEdit_Note->HideSelection(TRUE, FALSE); m_pEdit_Note->SetSel(0, -1); m_pEdit_Note->SetSelectionCharFormat(cf_def); m_pEdit_Note->SetSel(lChar_End, lChar_End); m_pEdit_Note->HideSelection(FALSE, FALSE); } So I just force the def-CHARFORMAT on to the entire selection having always set the def-format first. Also I remember to be able to restore to the orig. caret pos. Btw. Can one make a "ON_EN_REFLECT_CHANGE" for a edit/rich edit - work like this should be held totally inside the class as far as I can se. Regards, Michael Mogensen, mm it-consult dk. ><((((º> ·.¸¸.· ><((((º> ·.¸¸.· ><((((º>