TheText Object Model (TOM) is aMicrosoft WindowsAPI that provides developers with object-based rich text manipulation interfaces. It is implemented throughCOM, and can be accessed throughMicrosoft Word or additionally through the RichEdit controls that normally ship with Windows.[1]
When TOM was developed, it was influenced heavily by WordBasic,[1] amacro language used within Word beforeVBA (Word 95 and previous releases). TOM has developed alongside the RichEdit technology, and has been present since version 1.0 of the RichEdit components.[2] The API has been available as an option forWindows CE since the 2.5 release of RichEdit (Western Languages Only), which was at least used byPocket Word at that time.[2]
Version 8.0 of RichEdit, which shipped withWindows 8, added support forOpenType math.[3]
To retrieve an implemented instance ofITextDocumentinterface (the top-level document interface), theEM_GETOLEINTERFACE message may be sent via theSendMessage API to obtain a pointer to anIRichEditOle object, which also implements theITextDocument interface.[1] TOM may operate differently depending on the version of the RichEdit control the interface is retrieved for (RICHEDIT50W windows provide more functionality than the standard RICHEDIT20W or RICHEDIT20A controls, like proper table support).[2]