设为首页 加入收藏

TOP

MFC问题集之EDIT控件
2014-11-17 18:10:22 】 浏览:4928
Tags:MFC 问题 EDIT 控件

  问题:在基于对话框的MFC中添加一个EDIT控件,在里面输入数据(包括后字符)按回车想让它执行按钮控件里的代码,但默认的是在EDIT中输入完后按回车会关掉程序,怎么解决这 个问题(我把默认的OK按钮删除了,添加的是新的按钮)?


  解决方法之一:


  取消OK按钮的”默认“属性,并调整EDIT控件的属性,使其能够接受”Enter“键按下的事件,然后对EDIT空间添加相应的事件响应函数。但这样做可能影响其他功能的实现(比如像实现”按回车,使光标在不同的EDIT中切换“,如果OK按钮不是处于默认状态的话,就要对每个EDIT空间添加”Enter“键按下的消息响应函数)。


  解决方法之二(推荐的方法):


  先保证EDIT控件的"Want Return"属性是False的。不取消OK按钮的”默认“属性,对其添加一个OnBnClickedOk()函数,这样写:


  void XXXX:: OnBnClickedOk()


  {


  if (GetDlgItem(EDIT1) == GetFocus()) //这个是检测当前的焦点是否在EDIT1控件上


  {


  //这里是你想要执行的代码


  }else{


  OnOK();


  }


  }


  这里的EDIT1就是刚才提到的EDIT控件。


  如此,不但能解决你的问题,而且还有可能对今后其他功能的添加带来便利


  解决方法之三


  重载PreTranslateMessage函数,让它收到回车键被按下的消息后执行你所需要的代码。给你一个例子:


  BOOL CTestDlg::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)


  {


  AfxMessageBox("你好");


  }


  return CDialog::PreTranslateMessage(pMsg);


  编辑特别推荐:


  }


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇使动态创建的控件响应消息的方法 下一篇MFC问题集之List控件

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目