多编辑框响应回车键处理
2016-02-05 14:31
267 查看
1. 在编辑框所在对话框类下重构PreTranslateMessage函数:
注意:要通过Class Wizard来重构,自己添加编写会报溢出错误。
2. 在PreTranslateMessage函数中,区分出回车消息,以及区分出各编辑框的回车消息。
2.1 通过pMsg->wParam区分出回车消息:
switch(pMsg->wParam)
{
case VK_RETURN:
case VK_ESCAPE:
return TRUE;
break;
}
2.2 通过pMsg->wParam区分出具体是那个编辑框的回车操作:
// get red gray edit enter key
if ( (pMsg->hwnd) == (GetDlgItem(IDC_EDIT_FPGASETDLG_GRAYRED)->m_hWnd)
)
{
......
}
实例参考程序如下,本例为slabHID项目中,FPGASetting对话框,各灰阶编辑框的回车处理操作:
注意事项:在PreTranslateMessage函数中,区分按键的部分,即
switch(pMsg->wParam)
{
case VK_RETRUN:
......
case VK_ESCAPE:
......
retrun TRUE;
break;
}中,一定要注意返回值为TRUE,这句不能省略。
另,对编辑框回车键的处理可以参考下文:
/article/9314172.html
注意:要通过Class Wizard来重构,自己添加编写会报溢出错误。
2. 在PreTranslateMessage函数中,区分出回车消息,以及区分出各编辑框的回车消息。
2.1 通过pMsg->wParam区分出回车消息:
switch(pMsg->wParam)
{
case VK_RETURN:
case VK_ESCAPE:
return TRUE;
break;
}
2.2 通过pMsg->wParam区分出具体是那个编辑框的回车操作:
// get red gray edit enter key
if ( (pMsg->hwnd) == (GetDlgItem(IDC_EDIT_FPGASETDLG_GRAYRED)->m_hWnd)
)
{
......
}
实例参考程序如下,本例为slabHID项目中,FPGASetting对话框,各灰阶编辑框的回车处理操作:
BOOL CFPGASetting::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class switch(pMsg->wParam) { case VK_RETURN: { if ( (pMsg->hwnd) == (GetDlgItem(IDC_EDIT_FPGASETDLG_GRAYRED)->m_hWnd) ) // get red gray edit enter key { fpgagrayflag = GetDlgItemInt(IDC_EDIT_FPGASETDLG_GRAYRED); if ((fpgagrayflag<0)|(fpgagrayflag>255)) AfxMessageBox("The value over range, please fill again"); else { m_cscrollbar_FPGADlg_rgray.SetScrollPos(fpgagrayflag); fpgaPatflag = FPGA_R_PAT; MakeGrayAdjPacket(fpgaPatflag,fpgagrayflag,Write_HID_Buf); flag_FpgaDlgtoMainDlg = FPGADLGSENDDATA; fpgaCallMainMsg(); } } else { if ((pMsg->hwnd) == (GetDlgItem(IDC_EDIT_FPGASETDLG_GRAYGREEN)->m_hWnd)) // get green gray edit enter key { fpgagrayflag = GetDlgItemInt(IDC_EDIT_FPGASETDLG_GRAYGREEN); if ((fpgagrayflag<0)|(fpgagrayflag>255)) AfxMessageBox("The value over range, please fill again"); else { m_cscrollbar_FPGADlg_ggray.SetScrollPos(fpgagrayflag); fpgaPatflag = FPGA_G_PAT; MakeGrayAdjPacket(fpgaPatflag,fpgagrayflag,Write_HID_Buf); flag_FpgaDlgtoMainDlg = FPGADLGSENDDATA; fpgaCallMainMsg(); } } else { if ((pMsg->hwnd) == (GetDlgItem(IDC_EDIT_FPGASETDLG_GRAYBLUE)->m_hWnd)) // get blue gray edit enter key { fpgagrayflag = GetDlgItemInt(IDC_EDIT_FPGASETDLG_GRAYBLUE); if ((fpgagrayflag<0)|(fpgagrayflag>255)) AfxMessageBox("The value over range, please fill again"); else { m_cscrollbar_FPGADlg_bgray.SetScrollPos(fpgagrayflag); fpgaPatflag = FPGA_B_PAT; MakeGrayAdjPacket(fpgaPatflag,fpgagrayflag,Write_HID_Buf); flag_FpgaDlgtoMainDlg = FPGADLGSENDDATA; fpgaCallMainMsg(); } } else { if ((pMsg->hwnd) == (GetDlgItem(IDC_EDIT_FPGASETDLG_GRAYWHITE)->m_hWnd))// get white gray edit enter key { fpgagrayflag = GetDlgItemInt(IDC_EDIT_FPGASETDLG_GRAYWHITE); if ((fpgagrayflag<0)|(fpgagrayflag>255)) AfxMessageBox("The value over range, please fill again"); else { m_cscrollbar_FPGADlg_wgray.SetScrollPos(fpgagrayflag); fpgaPatflag = FPGA_W_PAT; MakeGrayAdjPacket(fpgaPatflag,fpgagrayflag,Write_HID_Buf); flag_FpgaDlgtoMainDlg = FPGADLGSENDDATA; fpgaCallMainMsg(); } } } } } } case VK_ESCAPE: return TRUE; break; } return CDialog::PreTranslateMessage(pMsg); }
注意事项:在PreTranslateMessage函数中,区分按键的部分,即
switch(pMsg->wParam)
{
case VK_RETRUN:
......
case VK_ESCAPE:
......
retrun TRUE;
break;
}中,一定要注意返回值为TRUE,这句不能省略。
另,对编辑框回车键的处理可以参考下文:
/article/9314172.html
相关文章推荐
- poj1325 2010.2.21
- [Leetcode]152. Maximum Product Subarray @python
- CF Educational Codeforces Round 6 E题 dfs+线段树
- Python ConfigParser的使用
- 1003. 我要通过!
- poj1080 2010.2.20
- 监控apache虚拟主机进程
- 限定checkbox最多选中数量
- swift学习笔记之-函数
- 107. Binary Tree Level Order Traversal II
- ASP.NET List泛型分页代码
- 哈理工OJ 1708 许可证【临街表+dfs】
- poj2056 2010.2.20
- poj1200 2010.2.20
- iOS FMDB 不需要关闭
- DataTable、DataView、DataReader和DataSet,DataGrid等的区别
- 一元多项式的建立及其运算
- 【POI2008】【BZOJ1132】Tro
- poj2488 2010.2.20
- 怎么给kibana加上权限?