是一个与图书有关的软件,我在 edit box输入书号(isbn)回车,即触发查询,等。
1。我现在用cedit en_change的事件触发,但是必须把cedit属性设置了多行和autovscroll的属性才触发,但是,这样的结果焦点备移到了下一行,看不到录入的书号了,我不想让他移到下一行,也不想改触发时机,该怎么办?
2。我于是换了触发时机,我加了一个自定义的CMyedit类,继承CEdit,定义了Onchar的事件,并且定义了成员变量与该控件关联,回车事件是触发了,但是原来的程序的函数都是定义在CView的视图类中,我在CMyedit类中调用CView类的方法告诉我错误,我怎么能调用CView的方法?
1。我现在用cedit en_change的事件触发,但是必须把cedit属性设置了多行和autovscroll的属性才触发,但是,这样的结果焦点备移到了下一行,看不到录入的书号了,我不想让他移到下一行,也不想改触发时机,该怎么办?
2。我于是换了触发时机,我加了一个自定义的CMyedit类,继承CEdit,定义了Onchar的事件,并且定义了成员变量与该控件关联,回车事件是触发了,但是原来的程序的函数都是定义在CView的视图类中,我在CMyedit类中调用CView类的方法告诉我错误,我怎么能调用CView的方法?
解决方案 »
- API函数MessageBox中的HWND怎么获取啊?
- DirectShow进行视频捕捉的一个问题。
- CString怎么转化为VARIANT?
- 急问:怎样获取硬盘的信息?
- 30分高手指教,DLL里面如何起用一个回调函数??(在线等待!)
- 有熟悉objectarx的朋友吗?
- 请帮忙
- 如何使操作系统进入休眠状态,用哪个函数,什么参数,MSDN上没找到
- 如何动态创建数据表
- MDI程序,基于不同文档模板(不同的CChldFrame,不同的视图类)的子窗口,当一个最大化时则所有的子窗口显示时都最大化,一个还原时所有子窗口又全还原,这一点应用程序框架是如何实现的?如何去掉这种特性?
- 单文档窗体,显示主窗体后如何自动最大化显示一对话框
- 我是个VC初学者!!敬请给予帮助!!谢谢!!
{
// TODO: Add your specialized code here and/or call the base class
if (pMsg->message == WM_KEYDOWN)
{
if (pMsg->wParam == VK_RETURN)
{
AfxMessageBox(_T("11"));//调用你想用的函数
return TRUE;
}
} return CEdit::PreTranslateMessage(pMsg);
}
2 先确定你的view和 CMyedit 是什么关系 传递 view 的指针到 CMyedit 里面就可以调用 view 的函数了
if ((pMsg->hwnd == m_Edit.GetSafeHwnd()) // 假定m_Edit是和控件绑定的CEdit型变量,或者通过控件ID判断:if ((::GetDlgCtrlID(pMsg->hwnd) == IDC_EDITID)
&& (pMsg->message == WM_CHAR)
&& (pMsg->wParam == VK_RETURN))
{
Query(); // 视图类的成员查询函数
return TRUE;
}
mackz我用你的代码报这个错误,谢谢
{
// TODO: Add your specialized code here and/or call the base class
if (pMsg->message == WM_KEYDOWN)
{
if (pMsg->wParam == VK_RETURN)
{
AfxMessageBox(_T("11"));//调用你想用的函数
return TRUE;
}
}
return CEdit::PreTranslateMessage(pMsg);
}
说明一下:这是个虚函数,主要是用于在消息传递给窗口之前截获你想要处理的消息。像楼主这种情况,最好是
在这个函数中处理。
没有添加函数声明。你可在类视图中在CMyEdit上点击右键,选择“Add virtual function”来自动生成函数声明。(2)在CMyEdit中调用视图类的方法可以这样写:CMyView *pView = (CMyView*)(AfxGetMainWnd()->GetActiveView());
再用这个pView去调用CMyView类的函数就可以了。
virtual BOOL PreTranslateMessage(MSG* pMsg);