Я не думаю, что вы собираетесь работать с RichEdit - у более поздних версий есть хотя бы поддержка математического дисплея, но, как я понимаю, они не обрабатывают прямой ввод данных. По крайней мере, я не мог найти ничего в Интернете, в котором описывалось, как вы можете ввести формулу.
Если вы можете положиться на клиентов, имеющих хотя бы Windows 7, вы можете открыть панель ввода Math, которая поместит полученное уравнение в формате MathML в буфер обмена - см., Например, this blog post. Неважно, действительно ли это помогает или нет, зависит от того, что вы хотите сделать с полученным уравнением. Без лишнего контекста невозможно сказать.
EDIT1: Еще несколько предложений возникают у меня. Если вы можете положиться на установленный Microsoft Office, вы можете получить доступ к редактору Microsoft Equation Editor из OLE. Уловка в том, что это старое, и есть опасность, что они могут его отбросить, поскольку он только теперь позволяет разрешать уравнения в старых документах Word.
Более интересный подход состоял бы в том, чтобы позволить пользователю вводить какую-либо форму (например, LaTeX), а затем обрабатывать ее для создания изображения. Например, вы можете запустить уравнение через LaTeX в фоновом режиме, как это делает this website, или вы можете исследовать MathJax, который представляет собой библиотеку Javascript для визуализации уравнений - вы можете запустить это в экземпляре MSHTML. Конечно, ни одна из них не является особенно простой.
EDIT2: Если вы можете положиться на RichEdit 8 (для которого вам понадобится Windows 8 или недавняя версия Office), вы получите некоторую математическую поддержку в RichEdit. С некоторым тестированием, я могу включить линейный вход формы «M_0,3/б» в этом:
Это используется следующий код (недавний Windows SDK требуется), чтобы создать математическую зону из текста «M_0,3/b»:
CWnd* edit = GetDlgItem(IDC_RICHEDIT);
CComPtr<IRichEditOle> reo;
edit->SendMessage(EM_GETOLEINTERFACE,0,(LPARAM)&reo);
CComQIPtr<ITextDocument2> doc = reo;
CComPtr<ITextRange2> range;
doc->Range2(0,0,&range);
range->Expand(tomStory,0);
range->BuildUpMath(0);
Вы хотите смешать фракции с другим текстом? Или вы просто хотите использовать элемент управления richedit как поле ввода фракций? В любом случае я не думаю, что это будет возможно/легко. –
* Или вы просто хотите использовать элемент управления richedit как поле ввода фракций? * На данный момент пользователи просто хотят ввести математические формулы, поэтому, я думаю, ответ на ваш вопрос таков: я хочу использовать его как поле ввода фракций , – AlwaysLearningNewStuff