请教,当edit获取当前输入的时候,如何设置登陆按钮为选中,表示按回车就直接点了登陆按钮 我想在有一个登陆框,里面有用户名和密码,登陆,取消几个控件。之间可以用tab键进行切换。我想的是:当焦点在用户名和密码的输入框的时候,如果让用户觉的当前按下enter的时候,响应的是login按钮。就是login有边框。不理解的看看QQ的登陆 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 处理窗体的OnKeyPress事件 Enter->Tab 捕捉vk_enter消息后执行 login 函数啊, 设置login按钮为default 按钮, tab索引是所有按钮的第一个.ok , 结贴给分. 把登陆按钮的ID设置为,IDOK,编辑框框Want Return属性为FALSE.就可以了 在属性里把登录按钮的default button属性设置成true 另外在对话框启动的时候把焦点设置到loginbutton上 设置defid,是可以让当焦点在用户名,密码那的时候,显示“按回车就相当于点了登陆”。但是,当我用tab键在这几个控件间切换的时候,比如当tab到取消登陆那按钮时,登陆显示还是被选中状态~~~~ 设置defid,是可以让当焦点在用户名,密码那的时候,显示“按回车就相当于点了登陆”。 但是,当我用tab键在这几个控件间切换的时候,比如当tab到取消登陆那按钮时,登陆显示还是被选中状态~~~~ 不行~~ 当tab在取消上的时候,登陆按钮状态还是选中状态,一直都选中~~~ 汗,那样的话就。 让用户觉的登陆怎么总是选中,请看看QQ的登陆~~~ 这么简单,你用SetFocus把焦点定在输入框中,按“登录”按钮在资源编辑器中设置为缺省按钮不就OK了 Login按钮的default button属性设置成true不就好了 我提供一种比较笨一点的方法:在你的程序里面重写一个消息:WM_CHAR收到消息时,判断1>当前焦点是否在两个 EDIT控件上面,2>当前输入的CHAR是不是RETURN,同时满足的时候就调用你LOGIN的响应函数代码如下:void CXXXDLG::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags){ // TODO: Add your message handler code here and/or call default if(VK_RETURN == nChar) { CWnd* wndEdit = GetDlgItem(IDC_EDIT1); if(IsWindow(wndEdit->GetSafeHwnd())) { if(wndEdit->GetSafeHwnd() == GetFocus()->GetSafeHwnd()) { // CALL LOGIN FUNCTION. } } } CDialog::OnChar(nChar, nRepCnt, nFlags);}未验证过,大概思路是这样的。你试一下。 不好意思,函数写错了。OnChar函数可能触发不了。因为窗口的消息会发送给带有焦点的窗口。要处理这个消息就要在有焦点的窗口处理之前拦截。这时要处理的函数应该是PreTranslateMessage.BOOL xxxdlg::PreTranslateMessage(MSG* pMsg) { if (WM_CHAR == pMsg->message && HIBYTE(GetKeyState(VK_RETURN))) { //call you function. } return yyydlg::PreTranslateMessage(pMsg);} 控件的登录ID用这个IDOK,也就是系统生成的那个ok按钮,就可以了!当然要default button 要选中当在该对话框按回车就会login退出!如果不想退出,可以在void CTestDlg::OnOK() 函数中判断一下,来确定是不是要这样做当tab到取消按钮的时候,取消按钮就有虚线边框,然后无论再点空格还是回车键都可以正常退出,我刚写完测试! 恩 可以了,其实,上面一些朋友说的是可以的,但是,主要是我使用了一个:http://www.codeproject.com/KB/buttons/cxskinbutton.aspx中的继承自CBUTTON的类,想实现对button背景图片样式什么的改变。这样导致在default id的时候,没有这个效果。哪位朋友有好的EX_CBUTTON类?可以实现换肤,并且上面提到的问题不会出现? 如何响应多媒体键盘的事件 如何编写虚拟网卡(驱动) 问大家一个关于Windows系统还原的问题 如何使右键弹出菜单的某一项变灰? 请问怎么样截获另一进程向其它进程所发送的消息?? 如何利用CSocket实现这种传送文件方法? 数据库方面 小女子的程序怎么这么难,还没有移植好呀! 有关堆栈的小问题 有谁知道这个问题呀? 64位Windows Server 2003下无法用C语言连接ODBC数据源 内存问题
ok , 结贴给分.
编辑框框Want Return属性为FALSE.就可以了
但是,当我用tab键在这几个控件间切换的时候,比如当tab到取消登陆那按钮时,登陆显示还是被选中状态~~~~
设置defid,是可以让当焦点在用户名,密码那的时候,显示“按回车就相当于点了登陆”。
但是,当我用tab键在这几个控件间切换的时候,比如当tab到取消登陆那按钮时,登陆显示还是被选中状态~~~~ 不行~~
收到消息时,判断
1>当前焦点是否在两个 EDIT控件上面,
2>当前输入的CHAR是不是RETURN,
同时满足的时候就调用你LOGIN的响应函数
代码如下:
void CXXXDLG::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default if(VK_RETURN == nChar)
{
CWnd* wndEdit = GetDlgItem(IDC_EDIT1);
if(IsWindow(wndEdit->GetSafeHwnd()))
{
if(wndEdit->GetSafeHwnd() == GetFocus()->GetSafeHwnd())
{
// CALL LOGIN FUNCTION.
}
}
}
CDialog::OnChar(nChar, nRepCnt, nFlags);
}未验证过,大概思路是这样的。你试一下。
要处理这个消息就要在有焦点的窗口处理之前拦截。这时要处理的函数应该是PreTranslateMessage.BOOL xxxdlg::PreTranslateMessage(MSG* pMsg)
{
if (WM_CHAR == pMsg->message && HIBYTE(GetKeyState(VK_RETURN)))
{
//call you function.
}
return yyydlg::PreTranslateMessage(pMsg);
}
如果不想退出,可以在
void CTestDlg::OnOK() 函数中判断一下,来确定是不是要这样做
当tab到取消按钮的时候,取消按钮就有虚线边框,然后无论再点空格还是回车键都可以正常退出,我刚写完测试!
http://www.codeproject.com/KB/buttons/cxskinbutton.aspx
中的继承自CBUTTON的类,想实现对button背景图片样式什么的改变。
这样导致在default id的时候,没有这个效果。
哪位朋友有好的EX_CBUTTON类?可以实现换肤,并且上面提到的问题不会出现?