请教一个关于对话框响应键盘上下键的只有菜鸟才可能问的问题

lgs1426 2007-05-18 02:10:09
我在对话框上放了两个或多个编辑框控件.当其中一个数据输入完后,按上下键将光标移到另一个编辑框再输入数据.我试了几种方法,不怎么好使.期待哪位仁兄提供一种吊一点的方法.兄弟我将给分不尽.
...全文
552 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
lgs1426 2007-05-18
  • 打赏
  • 举报
回复
哦,,,我也只有晚上或放假聊天的,,,好了就这么定了,以后跟你混了哈哈.
dayong576 2007-05-18
  • 打赏
  • 举报
回复
我在大连
但是白天公司不让聊天只能晚上或者放假的时候哦
dayong576 2007-05-18
  • 打赏
  • 举报
回复
QQ 116918606
MSN :chenyong@global-ltd.co.jp
lgs1426 2007-05-18
  • 打赏
  • 举报
回复
呵呵!牛比兄真是太让我感动了,问题解决了!!
非常感谢,,做个朋友吧,我在上海,QQ313117497你呢,,在哪里啊,QQ多少啊!!
本人也是刚学VC以后还碰到问题还想找你啊,,呵呵!你人真好
dayong576 2007-05-18
  • 打赏
  • 举报
回复
你自己体会一下哦
dayong576 2007-05-18
  • 打赏
  • 举报
回复
if( pMsg->message == WM_KEYDOWN )
{
if ( pMsg->wParam == VK_UP )
{
CWnd* pWnd = GetFocus();
UINT nCtrlID = pWnd->GetDlgCtrlID();
switch( nCtrlID )
{
case IDC_EDIT1:
GetDlgItem(IDC_EDIT2)->SetFocus();
break;
case IDC_EDIT2:
GetDlgItem(IDC_EDIT3)->SetFocus();
break;
case IDC_EDIT3:
GetDlgItem(IDC_EDIT4)->SetFocus();
break;
case IDC_EDIT4:
GetDlgItem(IDC_EDIT5)->SetFocus();
break;
case IDC_EDIT5:
GetDlgItem(IDC_EDIT6)->SetFocus();
break;
default:
break;
}

}
}
这么写就可以
dayong576 2007-05-18
  • 打赏
  • 举报
回复
if ( pMsg->wParam == VK_UP )
{
CWnd* pWnd = GetFocus();
UINT nCtrlID = pWnd->GetDlgCtrlID();
switch( nCtrlID )
{
case IDC_EDIT1:
GetDlgItem(IDC_EDIT2)->SetFocus();
break;
case IDC_EDIT2:
GetDlgItem(IDC_EDIT3)->SetFocus();
break;
case IDC_EDIT3:
GetDlgItem(IDC_EDIT4)->SetFocus();
break;
case IDC_EDIT4:
GetDlgItem(IDC_EDIT5)->SetFocus();
break;
case IDC_EDIT5:
GetDlgItem(IDC_EDIT6)->SetFocus();
break;
default:
break;
}

}
你把这段代码设置节点运行
他就是正常的
不设置节点它就不正常
おかしい
lgs1426 2007-05-18
  • 打赏
  • 举报
回复
呵呵!
不气不气
dayong576 2007-05-18
  • 打赏
  • 举报
回复
晕了
我把所有的代码都给你写上啊
你气死我了
lgs1426 2007-05-18
  • 打赏
  • 举报
回复
牛比兄:
现在又碰到一个这样的问题,光标从IDC_EDIT1到IDC_EDIT2当到IDC_EDIT2的时候又很快的跳到IDC_EDIT3去了
dayong576 2007-05-18
  • 打赏
  • 举报
回复
PreTranslateMessage(MSG* pMsg) 函数里写上面的代码就可以了
dayong576 2007-05-18
  • 打赏
  • 举报
回复
VK_DOWN
和VK_UP是对应的
dayong576 2007-05-18
  • 打赏
  • 举报
回复
CWnd* pWnd = GetFocus();
UINT nCtrlID = pWnd->GetDlgCtrlID();
if ( pMsg->wParam == VK_UP )
{
switch( nCtrlID )
{
case IDC_EDIT1:
GetDlgItem(IDC_EDIT2)->SetFocus();
break;

}
}
少写了一句不好意思
lgs1426 2007-05-18
  • 打赏
  • 举报
回复
牛比兄:
现在碰到一个这样的问题.
当上面的编辑框IDC_EDIT1输入一个数据后光标马上跳到IDC_EDIT2编辑框里去了
dayong576 2007-05-18
  • 打赏
  • 举报
回复
WM_KEYDOWN是向上的
dayong576 2007-05-18
  • 打赏
  • 举报
回复
WM_KEYUP 是向下的快捷键,具体你自己体会
dayong576 2007-05-18
  • 打赏
  • 举报
回复
if( pMsg->message == WM_KEYUP )
{

CWnd* pWnd = GetFocus(); //コントロールのフォーカスを取得
UINT nCtrlID = pWnd->GetDlgCtrlID(); //コントロールID の取得
switch( nCtrlID )
{
case IDC_EDIT1:
GetDlgItem(IDC_EDIT2)->SetFocus();
break;

}
}
return CDialog::PreTranslateMessage(pMsg);
lgs1426 2007-05-18
  • 打赏
  • 举报
回复
哦哦,明白了了了

呵呵!!!
dayong576 2007-05-18
  • 打赏
  • 举报
回复
WM_KEYUP改为WM_SYSKEYUP
dayong576 2007-05-18
  • 打赏
  • 举报
回复
WM_KEYDOWN 该为你想要得WM_SYSKEYDOWN或者WM_KEYUP就可以了
加载更多回复(4)

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧