我读过的内容here(当用户选择编辑控件时,......并使用反向视频突出显示其文本)如果我理解正确,CEdit应突出显示(我希望它是相同的)当我点击它时,选择)文本。
我正在使用CMFCPropertyGridCtrl和CMFCPropertyGridProperty。但是当我点击网格(一个属性值)时,它不会选择任何内容。
我发现:属性在内部创建CEdit,用于手动编辑属性值。它已创建,其字体已设置等。然后调用SetFocus,然后调用UpdateWindow - 这将重绘编辑框并在第一个字符之前设置光标。在此之后,再次唤起鼠标点击以点击编辑框 - 这似乎是正确的。但是没有选择任何文字。
我还尝试创建自己的属性类,该类派生自CMFCPropertyGridProperty。在这之后我打电话给SetSel。它确实选择了我的文本,但它只是取消选择它(在下一个Redraw中)。我还得到的是,在重绘之后,只选择了从开始到鼠标点击的文本(当我在第4个字符后单击时,只选择了前4个字符。)
我的问题:
首次点击鼠标后CEdit是否应该真正选择自动文本? (你有一些资源吗?)
难道你不知道,为什么这不适用于CMFCPropertyGridProperty?
CMFCPropertyGridCtrl和CMFCPropertyGridProperty可以在mfc源代码目录中的afxpropertygridctrl.h / .cpp中找到。
答案 0 :(得分:0)
所以我终于找到了:
CEdit点击它后可能没有选择文字。这必须通过例如SetSel函数手动完成。
但是在CMFCPropertyGridCtrl中,如果单击,则将其传递给CMFCPropertyGridProperty并重复单击。因此,如果我使用SetSel,它会取消选择文本。所以我必须编写自己的类继承CMFCPropertyGridProperty并跳过此步骤(再次单击)。它足够SetFocus和SetSel(它也将光标设置为CEdit窗口)。