我有一个CEdit
框,用户可以输入相关信息。只要他\她开始在箱子里写字,我需要一个通知,以便我可以拨打doSomething()
执行一些其他任务。 Windows是否提供回调,如果是,我该如何使用它?如何从“CEdit”框中获取通知?
0
A
回答
1
如果您双击资源编辑器中的编辑框,它会自动为您创建OnEnChanged事件。
4
有了MFC,就没有回调了,而是通过为相应的事件实现处理程序来做到这一点。您需要处理的两个事件之一:WM_CHAR
或EN_CHANGE
处理对话框的EN_CHANGE
例如实时的对话框上的其他地方复制输入的文本。您需要先添加在对话框的消息映射条目,其次覆盖相应的处理程序:
BEGIN_MESSAGE_MAP(CstackmfcDlg, CDialog)
ON_EN_CHANGE(IDC_EDIT1, &CstackmfcDlg::OnEnChangeEdit1)
END_MESSAGE_MAP()
void CstackmfcDlg::OnEnChangeEdit1()
{
CString text;
m_edit.GetWindowText(text);
m_label.SetWindowText(text); // update a label control to match typed text
}
或者,处理编辑框类的WM_CHAR
例如防止某些字符,例如输入忽略数字输入以外的任何数字。从CEdit派生类,处理该类的事件(不是对话框),并使您的编辑控件成为该类的一个实例。
BEGIN_MESSAGE_MAP(CCtrlEdit, CEdit)
ON_WM_CHAR()
END_MESSAGE_MAP()
void CCtrlEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// Do nothing if not numeric chars entered, otherwise pass to base CEdit class
if ((nChar >= '0' && nChar <= '9') || VK_BACK == nChar)
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
注意,你可以使用VS IDE摆在存根处理程序通过使用消息映射块鼠标选择属性栏覆盖。
编辑:增加了示例代码,并纠正了我错误的WM_CHAR
解释。
0
以下假定您有一个MFC对话框应用程序。
双击控制ID(具有小绿色加的图标)的新的编辑控件添加相应的成员变量的班上。
类和活动向导会更新类定义,并添加CEdit
成员:
afx_msg void OnEnChangeEdit1(); // Added by event wizard
CEdit m_edit1; // member added by class wizard
类向导将更新功能:
void CMFCApplication5Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_EDIT1, m_edit1); // new variable added with class wizard
}
双击控件或右键单击并选择添加事件向导将更新消息映射并创建函数de claration和定义:
BEGIN_MESSAGE_MAP(CMFCApplication5Dlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_EN_CHANGE(IDC_EDIT1, &CMFCApplication5Dlg::OnEnChangeEdit1) // new event handler added with wizard
END_MESSAGE_MAP()
最后的代码可以更新与编辑控件交互:
void CMFCApplication5Dlg::OnEnChangeEdit1()
{
// TODO: Add your control notification handler code here
CString text;
m_edit1.GetWindowText(text);
//m_edit1.SetWindowText(text);
}
相关问题
- 1. 如何从剪贴板获取通知?
- 2. RoboVM - 如何从MPMoviePlayerController获取通知
- 3. 如何从Facebook获取通知
- 4. WappWolf如何从Google Drive获取通知?
- 5. Visual C++从Cedit获取字符串
- 6. 从通知栏获取通知
- 7. 如何获取通知ID?
- 8. 如何在android中获取BLE通知?
- 9. 如何在yii中更改复选框时获取通知
- 10. 如何从活动中捕获通知
- 11. 如何从iOS中的Firebase消息通知中获取主题?
- 12. 如何从通知中取消IntentService?
- 13. 从GCM通知中获取数据
- 14. Iphone从推送通知中获取url
- 15. 从AccessibilityService中的通知获取意图
- 16. 如何通过ios推送通知服务从Youtube获取通知
- 17. 如何从通知中心读取iOS级别通知设置
- 18. 如何取消从通知中心,这是推送通知
- 19. 如何从android firebase通知中获取自定义数据?
- 20. 如何从Android的数据库内容中获取通知?
- 21. 如何从服务器中获取通知iphone
- 22. 如何从C#/ WPF中的嵌套属性获取通知?
- 23. 如何从推送通知中获取文本字符串?
- 24. 如何从推送通知中获取数据?
- 25. 如何从拼贴通知中获取号码
- 26. 如何从Android中的另一台服务器获取通知
- 27. 如何从eBay通知中获取数据
- 28. 如何从Twitter 2.1中的Twitter RSS Feeds获取推送通知?
- 29. 从多行CEdit控件中获取文本?
- 30. 如何从iPhone获取通话结束通知事件?
WM_CHAR是不够的,因为你可以粘贴到例如控制。 –