mfc中如何通过按方向键移动编辑框
答案:2 悬赏:20 手机版
解决时间 2021-11-28 12:53
- 提问者网友:棒棒糖
- 2021-11-27 23:18
mfc中如何通过按方向键移动编辑框
最佳答案
- 五星知识达人网友:零点过十分
- 2021-11-27 23:55
//该段代码是处理按键时,移动到下一编辑框代码,注意保证一点,就是你编辑框的ID为连续ID值;
CString sButtonText;
CWnd *pWnd;
pWnd = GetNextDlgTabItem(GetFocus());
int ret = pWnd->GetDlgCtrlID();
SendDlgItemMessage(ret,EM_SETSEL,0,-1);
pWnd->SetFocus();
pWnd->GetWindowText(sButtonText);
至于按键消息的处理(即按哪个键来控制移动):
可在该稍息不完成:
if(pMsg->message == WM_KEYDOWN)
{
if( pMsg->wParam == VK_F2)//我这里是以“F2”为例,至于你要用什么键来控制,查找到相应的键值填在这里即可。
{
//这里是消息响应部分,即可填为上面的代码
}
}
完整代码为:
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_KEYDOWN)
{
if( pMsg->wParam == VK_F2)
{
// TODO: Add extra validation here
CString sButtonText;
CWnd *pWnd;
pWnd = GetNextDlgTabItem(GetFocus());
int ret = pWnd->GetDlgCtrlID();
SendDlgItemMessage(ret,EM_SETSEL,0,-1);
pWnd->SetFocus();
pWnd->GetWindowText(sButtonText);
}
}
return CDialog::PreTranslateMessage(pMsg);
}
添加消息如下图:
CString sButtonText;
CWnd *pWnd;
pWnd = GetNextDlgTabItem(GetFocus());
int ret = pWnd->GetDlgCtrlID();
SendDlgItemMessage(ret,EM_SETSEL,0,-1);
pWnd->SetFocus();
pWnd->GetWindowText(sButtonText);
至于按键消息的处理(即按哪个键来控制移动):
可在该稍息不完成:
if(pMsg->message == WM_KEYDOWN)
{
if( pMsg->wParam == VK_F2)//我这里是以“F2”为例,至于你要用什么键来控制,查找到相应的键值填在这里即可。
{
//这里是消息响应部分,即可填为上面的代码
}
}
完整代码为:
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_KEYDOWN)
{
if( pMsg->wParam == VK_F2)
{
// TODO: Add extra validation here
CString sButtonText;
CWnd *pWnd;
pWnd = GetNextDlgTabItem(GetFocus());
int ret = pWnd->GetDlgCtrlID();
SendDlgItemMessage(ret,EM_SETSEL,0,-1);
pWnd->SetFocus();
pWnd->GetWindowText(sButtonText);
}
}
return CDialog::PreTranslateMessage(pMsg);
}
添加消息如下图:
全部回答
- 1楼网友:纵马山川剑自提
- 2021-11-28 00:02
完全可以.一个是响应方向键移动的函数,PreTranslatedMSG().
然后就是在函数中Switch 对应各按键虚拟指写代码.移动编辑框.就用SetWindowsPos()函数就可以了.这个函数是用来设置窗口显示的一些信息.包括位置,大小,Z秩序等等
然后就是在函数中Switch 对应各按键虚拟指写代码.移动编辑框.就用SetWindowsPos()函数就可以了.这个函数是用来设置窗口显示的一些信息.包括位置,大小,Z秩序等等
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯