mfc RichTextBox2.0变灰了

时间:2015-05-13 17:20:08

标签: c++ mfc richtextbox

我在C ++应用程序中使用mfc。我有CEdit控件并为CRichEditCtrl更改了它们。 应用程序是图形编辑器,其中包含节点中的内部代码,其中TextBox将窗口中的代码保存在与wnd和图形不同的窗口中。如果单击节点,则显示该wnd和对话框(不同的节点具有不同的wnds并在非活动时隐藏)

我的问题是,如果我在该文本框中有一些较长的文本,则文本框的整个区域将显示为灰色。文本仍然存在,可以通过鼠标单击设置插入符号,但在我做一些特殊操作之前,没有任何内容可见。例如:通过鼠标单击并拖动选择文本,包含文本的行再次为白色且文本可见。其他可能性是滚动,超出范围的线条会很好。

我设法通过在此控件上调用Invalidate来解决此问题,但是:

  1. 我真的不明白为什么会发生这种情况
  2. 我已经实现了搜索并在文本中选择了找到的单词,但仍然会出现这种灰色,而不是选择第一个文本。当在该节点中选择第二个单词并进行控制时,整个文本框将再次清理并正常工作,但在外出时与搜索结果情况重复。
  3. 在图片上,您可以看到红色字段之间的富文本框(保存控件的对话框的BG)。在左侧,控件是带有文本的漂亮的白色控件。右边是搜索后的相同控件,但是灰色并点击进入并选择一些带有两个“未显示”代码的文本。

    为什么会发生这种情况和/或我如何摆脱这种行为?

    Compare fine state and messed up grayed state of RichtextBox

    奇怪的是,当我尝试使用某些解决方案时,调用Invalidate()使其在某些情况下表现良好,但在使无效混乱之后再调用UpdateWindow()。

1 个答案:

答案 0 :(得分:0)

好的,我终于明白了。

在这里乱搞东西,看起来像我描述的问题并不是解决这个问题的真正线索。

我在为文本框调用此CWnd方法时找到了所有这些背后的琐事

SetWindowPos(&CWnd::wndBottom, 0, 0, width, height, SWP_NOMOVE);

当我使用MoveWindow(left,top,right,bottom,repaint)时,它工作正常,但当我至少留下一个SetWindowPos(设置其他控件)时,它被搞砸了。

我真的不明白为什么CRichEditCtrl这个问题对于CEdit来说是好的,所以如果你认识那些人,请告诉我。