多编辑框响应回车键处理

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,这句不能省略。


另,对编辑框回车键的处理可以参考下文:

http://blog.csdn.net/phenixyf/article/details/41083381




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值