问题描述
我使用CEdit
文本字段在MFC应用程序中输入搜索词。当以FullHD分辨率使用它时,它可以正常工作,我可以根据需要输入尽可能长的字符串,但是以4k分辨率使用时,文本限制为10个字符。 GetLimitText
的返回值为3000,如果我SetLimitText
的值小于10,则它可以工作,限制为更多(例如20)不起作用,则只能输入10个字符。有人遇到过这个问题吗?或者可能是我的实现造成的?
解决方法
我以某种方式“修复”了它。我正在打电话给CWnd::ModifyStyleEx(0,WS_EX_CLIENTEDGE)
。我替换为CWnd::ModifyStyle(0,WS_BORDER)
。这不是真正的解决方案,因为它会改变外观,但是我想这是一个错误。
动态地为CDialogBar创建等效的资源时(而不是使用资源编辑器),我遇到了类似的问题。控件之一是CEdit控件,正如user3808318所指出的那样,MFC或Windows神秘地忽略了您使用SetLimitText分配的任何值,并且似乎忽略了键入的任何字符,这些字符将超出屏幕上的编辑控件。
这是我创建导致此问题的编辑控件的原始方式。
创建(WS_CHILD | WS_VISIBLE | WS_BORDER,rectDummy,this,IDC_FIND_TEXT)
这是正确的方法,现在包括ES_AUTOHSCROLL选项。
创建(WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL,rectDummy,this,IDC_FIND_TEXT)