gpt4 book ai didi

c++ - mfc RichTextBox2.0变灰

转载 作者:太空宇宙 更新时间:2023-11-04 13:34:19 25 4
gpt4 key购买 nike

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

我的问题是,如果我在那个文本框中有一些较长的文本,文本框的整个区域都是灰色的。文本仍然存在,可以通过单击鼠标设置插入符号,但在我做一些特别的事情之前什么都看不到。例如:通过鼠标单击和拖动选择文本,包含文本的行再次变为白色并且文本可见。另一种可能性是滚动,超出范围的行会很好。

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

  1. 我真的不明白为什么会这样
  2. 我已经在文本中实现了搜索和选择找到的单词,但这种变灰的情况仍然存在,而不是选择第一个文本。当在该节点和控件中选择第二个词时,整个文本框再次干净并正常工作,但当搜索结果出现和出现时,情况会重复。

在图片上,您可以看到红色字段之间的富文本框(包含控件的对话框 BG)。左边的控件是带有文本的漂亮的白色控件。右边是搜索后的相同控件,但在单击它并选择一些带有两段“未公开”代码的文本后变灰了。

关于为什么会发生这种情况和/或我怎样才能摆脱这种行为的任何建议?

Compare fine state and messed up grayed state of RichtextBox

奇怪的是,当我尝试一些解决方案时,调用 Invalidate() 使其在某些情况下表现良好,但在 invalidate 之后调用 UpdateWindow() 又把事情搞砸了。

最佳答案

好的,我终于明白了。

抱歉把事情搞砸了,看来我描述的问题并不是解决这个问题的真正线索。

我发现这一切背后的罪魁祸首是为我的文本框调用这个 CWnd 方法

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

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

我真的不明白为什么这对 CRichEditCtrl 来说是个问题,而对 CEdit 来说还可以,所以如果你知道,请告诉我。

关于c++ - mfc RichTextBox2.0变灰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30221426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com