您的位置:首页 > 其它

多编辑框响应回车键处理

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对话框,各灰阶编辑框的回车处理操作:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: