这是在Vista上发生的。
我创建了一个新的基于MFC对话框的对话框来对此进行测试。我在对话框中添加了一个CEdit控件。我调用SetLimitText,让我的CEdit接收100000个字符。我都尝试过:

this->m_cedit1.SetLimitText(100000);
UpdateData(FALSE);


static_cast<CEdit*>(GetDlgItem(IDC_EDIT1))->LimitText(100000);

我将这些调用放在InitDialog上。

当我将5461个字符粘贴到CEdit中后,它变为空且无响应。关于什么导致此问题的任何想法,以及变通办法都可以将长文本字符串粘贴到CEdit或任何其他控件中?

注意:5461是二进制的0x1555或1010101010101,我觉得很奇怪。

如果我粘贴5460个字符,我没有问题。

最佳答案

我联系了microsof支持。

目标是使
单个中包含240000个字符
可编辑的文字行。

我能够在上重现该问题
Windows Vista(x64和x32均),但是
不适用于Windows XP。

这段代码在XP中可以正常工作:

 BOOL ClongeditXPDlg::OnInitDialog()
 {
     CDialog::OnInitDialog();

     // Set the icon for this dialog.  The framework does this automatically
     //  when the application's main window is not a dialog
     SetIcon(m_hIcon, TRUE);            // Set big icon
     SetIcon(m_hIcon, FALSE);        // Set small icon

     // TODO: Add extra initialization here
     UINT limit = m_longEdit.GetLimitText();
     m_longEdit.SetLimitText(240000);
     UINT limit2 = m_longEdit.GetLimitText();

     CString str;
     str = _T("");
     for(int i = 0; i < 250000; i++)
         str += _T("a");

     m_longEdit.SetWindowText(str);

     return TRUE;  // return TRUE  unless you set the focus to a control
 }

如果我改用CRichEdit控件,
当我按“结束”键或“向右
长长的字符串后粘贴箭头键
在里面,我看不到所有
Rich Edit控件中的字符。
试图滚动过去的可见
字符会发出哔声。其余的
角色在那里,我知道这个
因为如果我双击Rich
编辑控件并使用复制文本
ctrl-c,然后将其粘贴到文本上
编辑,我可以看到240000
人物。因此,控件正在保持
适当数量的字符,但是
最后的字符不可见
除了在外部编辑器中,所以我的
原来的问题仍然存在。

这是微软的答案
代表:



微软的另一个答案:



最后一个:

关于visual-c++ - Vista中CEdit中的SetLimitText()不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/206600/

10-15 03:13