草庐IT

c++ - 如何在禁用的 MFC CEdit 控件中显示插入符号?

如果编辑控件被禁用,插入符号就会消失。在这种情况下,如果编辑显示的是长文本,则无法看到其余的单词。使用插入符号i,我们可以做到这一点。 最佳答案 我认为您必须使用启用的只读编辑控件而不是禁用的。在编辑框属性窗口中勾选'readonly'或者调用Create时使用ES_READONLY。另外,不要忘记检查AutoHScroll(ES_AUTOHSCROLL)(如果是多行,则检查AutoVScroll)。CEdit*pEdit=newCEdit;pEdit->Create(ES_MULTILINE|WS_CHILD|WS_VISIBLE

windows - 如何从 `CEdit` 框获取通知?

我有一个CEdit框,用户可以在其中输入相关信息。一旦他/她开始在框中书写,我就需要一个通知,以便我可以调用doSomething()来执行其他任务。Windows是否提供回调,如果提供,我该如何使用它? 最佳答案 在MFC中没有这样的回调,而是通过为适当的事件实现一个处理程序来实现。您需要处理以下两个事件之一:WM_CHAR或EN_CHANGE处理对话框的EN_CHANGE,例如实时复制对话框其他地方输入的文本。您需要首先在对话框的消息映射中添加一个条目,然后覆盖相应的处理程序:BEGIN_MESSAGE_MAP(Cstackmf

c++ - CEdit 数字验证事件 C++ MFC

我有一个CEdit文本框,它是属性Pane的一部分,并且只允许数值(正整数)。当人们输入非数字值时,该框工作正常,但当他们删除框中的值时,会弹出一个对话框说:“请输入一个正整数。”情况是这样的:1.我在盒子里有一个数字(比如20)。2.我把号码删了。3.我收到错误对话框。谁能告诉我如何拦截此事件并在其中放置默认值?这是我的属性面板的样子:constintDEFAULT_VALUE=20;classMyPropertyPane:publicCPropertyPane{//....private:CEditm_NumericBox;intm_value;//....public:afx_m

c++ - CEdit 控件 MFC,将光标置于 SetWindowText 之后的字符串末尾

我正在使用VC9,我有一个CEdit控件,其内容在单击按钮时重置为默认测试(例如-“填充”),然后我调用CEdit控件的SetFocus。问题是光标在默认文本的开头闪烁,我希望它在默认字符串的末尾闪烁。如何做到这一点? 最佳答案 您可以使用CEdit::SetSel来完成那个。例子:CEdit*e=(CEdit*)GetDlgItem(IDC_EDIT1);e->SetWindowText("helloworld");e->SetFocus();e->SetSel(0,-1);//selectalltextandmovecursor

c++ - CEdit不显示特殊字符

为什么CEdit控件不显示特殊字符,例如™(商标)?例如,创建一个带有CEdit控件的CDialog,并将Dialog标题和CEdit控件设置为相同的CString并得到不同的结果。CStrings(_T("ShowTM™"));SetWindowText(s);//SetDialogTitle(shows™)editCtrl.SetWindowText(s);//SetEditControl(doesnotshow™) 最佳答案 感谢克里斯蒂安和保罗。在您的帮助下,我能够拼凑出正在发生的事情。结论可能有缺陷,但VisualStud

c++ - CEdit::GetLine() Windows 7

我有以下代码段,其中m_edit是一个CEdit控件:TCHARlpsz[MAX_PATH+1];//gettheeditboxtextm_edit.GetLine(0,lpsz,MAX_PATH);这在运行WindowsXP和更早版本的计算机上完美运行。我没有在Vista中对此进行测试,但在Windows7上,lpsz将垃圾unicode字符插入其中(有时还有实际文本)。知道这里发生了什么吗? 最佳答案 既然您正在使用MFC,为什么不利用它的CString类呢?这是许多程序员被MFC吸引的原因之一,因为它使处理字符串变得更加容易。