将格式化文本输出到屏幕
Output formatted text to Screen
我有一个存储对的向量。每对包含一个 CString 和一个布尔值。如果 CString 是要加下划线的,那么 bool 是真的,否则它是假的。
我想将矢量中的文本输出到屏幕,确保文本在正确的位置带有下划线。
到目前为止,我有以下代码:
void CEmergenceView::AppendText( CString msg ) {
int nBegin;
CRichEditCtrl &rec = GetRichEditCtrl();
nBegin = rec.GetTextLength();
rec.SetSel(nBegin, nBegin); // Select last character
rec.ReplaceSel(msg); // Append, move cursor to end of text
rec.SetSel(-1,0); // Remove Black selection bars
nBegin = rec.GetTextLength(); // Get New Length
rec.SetSel(nBegin,nBegin); // Cursor to End of new text
// Fix annoying "do you want to save your changes?" when program exits
GetDocument()->SetModifiedFlag(FALSE); // -Optional- (sometimes you want this)
}
int nEnd = 0;
// loop through start of text to end of text
for(int k = 0; k < groups.size(); k++) {
rEditCtrl.SetSel(nEnd, nEnd);
rEditCtrl.GetSelectionCharFormat(cf);
if(groups.at(k).second) {
if(!cf.dwEffects & !CFE_UNDERLINE) {
CRichEditView::OnCharUnderline();
}
}
else if(!groups.at(k).second) {
if(cf.dwEffects & CFE_UNDERLINE) {
CRichEditView::OnCharUnderline();
}
}
AppendText(groups.at(k).first);
nEnd = nEnd + (groups.at(k).first.GetLength());
}
然而,这根本不是强调....谁能告诉我我做错了什么??谢谢!
我认为你应该实现 OnCharUnderline
尝试调用自己的函数而不是默认函数:
你可以从这里得到它:
void CMyRichEditView::OnCharUnderline ()
{
CHARFORMAT2 cf;
cf = GetCharFormatSelection();
if (!(cf.dwMask & CFM_UNDERLINE) || !(cf.dwEffects & CFE_UNDERLINE))
cf.dwEffects = CFE_UNDERLINE;
else
cf.dwEffects = 0;
cf.dwMask = CFM_UNDERLINE;
SetCharFormat(cf);
}
相关文章:
- 按回车键后输出屏幕关闭
- 如何使用方法覆盖在输出屏幕上显示堆栈整数值
- 始终输出到屏幕并允许重定向
- 它是一个"X",漂浮在输出屏幕上并实时移动
- 在 C++ 中将输出屏幕冻结一段时间
- 什么是bad_alloc?为什么输出屏幕没有显示所有值
- 从CSV读取数据到屏幕输出
- 将交易从文本文件输出到屏幕
- 垃圾输出到NXT屏幕
- C++ & WinApi - 在创建的窗口中将文本从键盘输出到屏幕
- 如何防止输出屏幕在 Visual Studio 2013 C++编译器中消失
- 将格式化文本输出到屏幕
- 将矢量输出到屏幕
- 使用和if/else语句输出到屏幕或文件
- visualstudio-提供空白屏幕作为输出
- 为什么我的OpenGL引擎中没有从MyGUI获得任何屏幕输出
- 正在将控制台输出重定向到同一解决方案中的MFC屏幕输出
- 如何禁用ROOT(CERN)中的屏幕输出
- C++应用程序在没有屏幕输出的情况下执行
- 如何在c++中使用pthread或诅咒同时向屏幕输出多个字符串