在VC++中用回车键切换输入焦点

Windows程序中Tab键是默认的切换输入焦点的按键,但用回车键切换输入焦点更符合人们的输入习惯。Delphi、VB中这个问题比较容易解决,VC++中却很少有资料提到。通过反复尝试,我找到了一种方法,或许对大家有所帮助。

1.VC++中appwizard生成一个基于对话框的程序。切换resourseview状态,在对话框中插入一个编辑框,同时修改其styles属性,选中multiline 、want return两项。

2.①在classwizard中选add class增加一个新类,name定义为myedit,base class选择edit。其余采用默认选项。

②在新生成的my-edit类中加入wm-keydown的消息映射函数,加入如下代码。

oid Myedit::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
if (nChar= = VK_RETURN) //插入开始部分
{
CDialog* Pwnd=(CDialog*)GetParent() ;//取得对话框指针
Pwnd->NextDlgCtrl( ); //切换到下一个输入焦点
}
//插入结束部分
CEditView::OnKeyDown(nChar, nRepCnt, nFlags);
}

3.在classwizard中选择 member variables 选项,class name选择对话框类,control ids中选择编辑框的id号,然后选择add variable按扭。在对话框中 categary选择control, variable type 刚才定义的类myedit。

至此,全部工作结束,编译运行程序,定位到编辑框中输入回车键,看一看效果如何。

时间: 2024-10-16 03:53:02

在VC++中用回车键切换输入焦点的相关文章

cocos2d x-cocos2d-x 怎么在两个CCLabelTTF上自由切换输入焦点,在键盘存在的情况

问题描述 cocos2d-x 怎么在两个CCLabelTTF上自由切换输入焦点,在键盘存在的情况 我是用两个CCLabelTTF输入用户名和密码,但现在有个问题,在输入完用户名后,点击密码输入框无法获取输入焦点,必须将键盘隐藏后,才可以,有什么办法可以解决吗,求大家帮忙解决一下,在此感谢..

Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法_jquery

做项目时,客户要求能够用enter回车直接切换输入(焦点),当最后一个时候,直接提交信息. 第一想法就是,网上去copy一段代码直接用.但了百度.谷歌找了个遍,找到的代码80%以上都是一样的.有的代码太老,都不能用.有的只有部分浏览器能用.折腾了半小时也没个合适的办法.最后一想,干脆自己动手. 一.思路 每次点击回车的时候,获取当前的焦点位置,然后设置它的下一个元素获取焦点; 二.代码 <script type="text/javascript"> $('input:tex

Enter回车切换输入焦点实现思路与代码兼容各大浏览器_jquery

做项目时,客户要求能够用enter回车直接切换输入(焦点),当最后一个时候,直接提交信息. 第一想法就是,网上去copy一段代码直接用.但了百度.谷歌找了个遍,找到的代码80%以上都是一样的.有的代码太老,都不能用.有的只有部分浏览器能用.折腾了半小时也没个合适的办法.最后一想,干脆自己动手. 一.思路 每次点击回车的时候,获取当前的焦点位置,然后设置它的下一个元素获取焦点; 二.代码 <script type="text/javascript"> $('input:tex

js/jquery实现回车键切换输入框焦点代码

下面来个例子:  代码如下 复制代码 <script type="text/javascript"> function handleEnter (field, event) { var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; if (keyCode == 13) { var i; for (i = 0; i < field.form.el

mfc-vc如何实现按下回车后编辑框输入焦点传递到下一编辑框?控件如何绑定类

问题描述 vc如何实现按下回车后编辑框输入焦点传递到下一编辑框?控件如何绑定类 vc如何实现按下回车后编辑框输入焦点传递到下一编辑框?控件如何绑定类? 解决方案 在对话框界面按下Ctrl+D组合键,将各个控件的Order进行排序,设置你想要的次序,设置好后,添加PreTranslateMessage函数并加入如下代码···试试吧 BOOL CCodeMess::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code

回车代替Tab移动输入焦点

很多时候,我们都用Tab键来移动输入焦点,但是有些情况下,比如输入用户名后还需要输入密码,由于习惯性,你有可能在输入用户名后就按了一下回车,希望到密码框里继续输入,可是却按了"确定"键,报告密码错误,所以使用以下代码来让"回车"键代替"TAB"键下移一个控件: 在窗体上放两个控件,Edit1和Edit2,再加入下列代码拦截击键: Procedure TForm1.Edit1KeyPress(Sender:Tobject;Var Key:Char)

listview-vc中怎么用CListCtl(ListView)怎么实现输入焦点传递

问题描述 vc中怎么用CListCtl(ListView)怎么实现输入焦点传递 vc中怎么用CListCtl(ListView)怎么实现输入焦点传递即按下回车,光标跳到下一行的单元格中.就是实现像excel中敲一下回车,自动换行到下一行的同列单元格中,这样就不用鼠标去点了. 解决方案 这个需要自己捕获回车按键,然后获取当前item,然后i计算索引,加一后SetItem 解决方案二: ListView本身连单元格编辑都不支持,需要自己写大量的代码.别说转移到下一行了.建议使用第三方商业网格控件.

TextBox获取输入焦点时自动全选的实现方法_C#教程

      C#开发WinForm,如何实现TextBox获取输入焦点时自动全选?       肯定不少朋友一看就会觉得再容易不过了:给TextBox添加GotFocus事件,然后在事件中调用TextBox.SelectAll()不就完事了吗?巢皮一开始也理所当然得这么认为,但要是你试试这么做,你会发现的当你用点击鼠标左键让TextBox.获得输入焦点时,里面的文本根本不会全选.       这是why咧?原因是通过鼠标让TextBox获得输入焦点时,TextBox触发的事件顺序是:MouseD

c++-vc中用struct来将txt文件中的数据导入到数组中

问题描述 vc中用struct来将txt文件中的数据导入到数组中 我用的是struct来做的,但是显示的数据和原来数据不符,数据发生了变化,这是为什么?? 解决方案 是不是没有进行字节对其呢 如果没有字节对其 TA在解析的时候 可能会自动字节对齐了 解决方案二: 和struct没关系,你所谓的不一样:小数位数不一样.使用了科学计数法.列没对齐,都可以使用printf函数解决. cout默认输入当然不会给你做这些处理.