Dragon  
Dragon
日历
<2008年10月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678
统计
  • 随笔 - 58
  • 文章 - 0
  • 评论 - 55
  • 引用 - 0

导航

常用链接

留言簿(3)

随笔分类(58)

随笔档案(58)

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 

两种方法实现回车响应tab键:
第一种比较简单:
只要在你的对话框类C**Dlg中右击添加虚函数PreTranslateMessage然后加如下代码即可:
BOOL CTest2Dlg::PreTranslateMessage(MSG* pMsg)
{
 // TODO: Add your specialized code here and/or call the base class
 if(pMsg->message==WM_KEYDOWN)
 {
  if(pMsg->wParam==VK_RETURN)
  {
   pMsg->wParam=VK_TAB;
  }
 }
 return CDialog::PreTranslateMessage(pMsg);
}

第二种方法好一点,但实现起来也比较难一点:
1.新建一个基于对话框的工程test3;我把"确定"和"取消"都删除了!
2.在对话框中插入如图的控件(其中Button1的ID是IDOK)

3.右击工程添加一个MFC类,类名为CMyEdit
4.然后右击这个新类添加WM_KEYDOWN消息函数OnKeyDown;并加如下代码:
void CMyEdit::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
 // TODO: Add your message handler code here and/or call default
 if(nChar==VK_RETURN)
 {
  CTest3Dlg * pwnd=(CTest3Dlg *)GetParent();//为个是主对话框类,所以在CPP文件中加#include "test3Dlg.h"
                                                          //不要在头文件中加,在头文件中会出错的!
  pwnd->NextDlgCtrl();
 }
 CEdit::OnKeyDown(nChar, nRepCnt, nFlags);
}

5.然后将主对话框中的两个编辑框定义关联变量:
在classwizard中选择 member variables 选项,class name选择对话框类,control ids中选择编辑框的id号,然后选择add variable按扭。在对话框中 categary选择control, variable type 刚才定义的类m_myedit1,m_myedit2;那时它会提示你加头文件
"MyEdit.h" 你此时就在头文件Test3Dlg.h加#include "MyEdit.h"

6.为了让焦点落在按钮1时,若按下回车响应按钮1的函数,我加了两个函数:
void CTest3Dlg::OnOK()//其中这个就是按钮1的响应函数
{
 // TODO: Add extra validation here
 MessageBox("dragon");
 //CDialog::OnOK();//我为了不让默认的OnOK函数执行,将它屏蔽了!
}

void CTest3Dlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)//右击类添加的!
{
 // TODO: Add your message handler code here and/or call default
 if(nChar==VK_RETURN)
  OnOK();
 CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}

posted on 2008-10-12 18:13 Dragon 阅读(1460) 评论(0)  编辑 收藏 引用 所属分类: VC

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


 
Copyright © Dragon Powered by: 博客园 模板提供:沪江博客