屏蔽Button按钮对Enter回车键的响应 及实现Enter->Tab效果

本文介绍了一种方法,用于在网页中使Button按钮不响应Enter键,仅响应鼠标点击,并实现了Enter键到Tab键的功能转换。具体而言,当TextBox1非空时按Enter键,光标会移至TextBox2;当TextBox2非空时按Enter键,光标会移至Button;当光标位于Button上时按Enter键,光标会返回TextBox1。

案例如下:
一般情况下
当一个页面有TextBox以及Button的时候
当光标停留在TextBox上 此时按Enter键 回车
就会发现光标将焦点停留在Button上
并且触发了Button的按钮事件

本例实现如下效果
0.一个包含[姓名TextBox1]和[备注TextBox2]以及[确定Button按钮]的页面
1.屏蔽按钮对回车键的响应 而只响应鼠标的点击
2.以及实现Enter键->Tab键的转换
  即TextBox1非空时 按回车键 光标转到TextBox2
  当TextBox2非空时 按回车键 光标转到Button
  当光标停留在Button上时 按回车键 光标转到TextBox1
---------------------------------------
相关代码示例如下:

 1ExpandedBlockStart.gifContractedBlock.gif<%dot.gif@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
 2None.gif<html>
 3None.gif<head id="Head1" runat="server">
 4None.gif    <title>屏蔽Button按钮对Enter键的响应</title>
 5ExpandedBlockStart.gifContractedBlock.gif    <script language="javascript" type="text/javascript">dot.gif
 6InBlock.gif       
 7InBlock.gif        //TextBox1的 onkeydown事件
 8InBlock.gif        //若TextBox1非空 则光标停留在TextBox2
 9InBlock.gif        function TextBox1onKeyDown()
10ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
11InBlock.gif            if(event.keyCode==13)
12ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
13InBlock.gif                if(document.all.TextBox1.value=="")
14ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
15InBlock.gif                    document.all.TextBox1.focus();
16InBlock.gif                    event.keyCode = 0;
17InBlock.gif                    event.returnValue = false;                    
18ExpandedSubBlockEnd.gif                }

19InBlock.gif                else
20ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
21InBlock.gif//                  event.keyCode=9;//Enter键->Tab键
22InBlock.gif                    document.all.TextBox2.focus();
23InBlock.gif                    event.keyCode = 0;
24InBlock.gif                    event.returnValue = false;   
25ExpandedSubBlockEnd.gif                }

26ExpandedSubBlockEnd.gif            }

27ExpandedSubBlockEnd.gif        }

28InBlock.gif        
29InBlock.gif        //TextBox2的 onkeydown事件
30InBlock.gif        //若TextBox2非空 则光标停留在Button1
31InBlock.gif        function TextBox2onKeyDown()
32ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{            
33InBlock.gif            if(event.keyCode==13)
34ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
35InBlock.gif                if(document.all.TextBox2.value=="")
36ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
37InBlock.gif                    document.all.TextBox2.focus();
38InBlock.gif                    event.keyCode = 0;
39InBlock.gif                    event.returnValue = false;                    
40ExpandedSubBlockEnd.gif                }

41InBlock.gif                else
42ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
43InBlock.gif//                  event.keyCode=9;//Enter键->Tab键
44InBlock.gif                    document.all.Button1.focus();
45InBlock.gif                    event.keyCode = 0;
46InBlock.gif                    event.returnValue = false;   
47ExpandedSubBlockEnd.gif                }

48ExpandedSubBlockEnd.gif            }

49ExpandedSubBlockEnd.gif        }

50InBlock.gif        
51InBlock.gif        //Button1的 onkeydown事件
52InBlock.gif        //如果是回车键
53InBlock.gif        //则光标停留在TextBox1
54InBlock.gif        //不触发按钮事件
55InBlock.gif        function Button1onKeyDown()
56ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
57InBlock.gif            if(event.keyCode==13)
58ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
59InBlock.gif                document.all.TextBox1.focus();
60InBlock.gif                event.keyCode = 0;
61InBlock.gif                event.returnValue = false;                    
62ExpandedSubBlockEnd.gif            }

63ExpandedSubBlockEnd.gif        }
      
64InBlock.gif
65InBlock.gif        //Button1的 onClick事件
66InBlock.gif        function btnOnClick()
67ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
68InBlock.gif            alert(event.keyCode);
69InBlock.gif            alert('onclick');
70ExpandedSubBlockEnd.gif        }

71InBlock.gif        
72ExpandedBlockEnd.gif    
</script>
73None.gif</head>
74None.gif<body>
75None.gif    <form id="form1" runat="server">
76None.gif        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
77None.gif        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
78None.gif        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click"  />
79None.gif    </form>
80None.gif</body>
81None.gif</html>


后台代码:
public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            this.TextBox1.Attributes.Add("onkeydown", "TextBox1onKeyDown();");
            this.TextBox2.Attributes.Add("onkeydown", "TextBox2onKeyDown();");
            this.Button1.Attributes.Add("onkeydown", "Button1onKeyDown();");
            this.Button1.Attributes.Add("onclick", "btnOnClick();");
            this.TextBox1.Focus();
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Write("onclickServer");
    }
}

转载于:https://www.cnblogs.com/freeliver54/archive/2007/02/28/659011.html

BOOL CKA026_TIN_PCBTestToolV10Dlg::PreTranslateMessage(MSG* pMsg) { CString s; //USES_CONVERSION; /*if((b_AutoTesting || b_ManualTesting) && (IsDlgButtonChecked(IDC_CHK_KeyTest)==BST_CHECKED || IsDlgButtonChecked(IDC_CHK_KeyAutoTest)==BST_CHECKED || IsDlgButtonChecked(IDC_CHK_FrequencyTest)==BST_CHECKED)) {*/ if(Autotest==true||IsDlgButtonChecked(IDC_CHECK_manual_test)==BST_CHECKED&&keytesting==true) { if (pMsg->message == WM_KEYUP || pMsg->message == WM_SYSKEYUP)// || pMsg->message == WM_SYSCHAR ) { char cKey[32]={0}; TCHAR szKeyName[32] ={0}; GetKeyNameText(pMsg->lParam,szKeyName,sizeof (szKeyName) / sizeof (TCHAR)); strcpy(cKey,szKeyName); //---------- /*if (IsDlgButtonChecked(IDC_CHK_DebugLog)==BST_CHECKED) { SYSTEMTIME cur_time; char m_cTimeBuf[200]; GetLocalTime(&cur_time); sprintf_s(m_cTimeBuf, sizeof(m_cTimeBuf), "%04d-%02d-%02d %02d:%02d:%02d.%03d:pMsg->message=%X,pMsg->wParam=%d,KeyName=%s", cur_time.wYear,cur_time.wMonth,cur_time.wDay,cur_time.wHour, cur_time.wMinute, cur_time.wSecond, cur_time.wMilliseconds,pMsg->message,pMsg->wParam,cKey); InsertItem_Debug(m_cTimeBuf,0); }*/ //---------- //s.Format(_T("%d"),pMsg->wParam); //AfxMessageBox(s); if(pMsg->wParam==27) { m_Label_Key[0].SetBkColor(RGB(0, 255, 0)); b_keyok[0]=true; } else if(pMsg->wParam==49)//1 { m_Label_Key[1].SetBkColor(RGB(0, 255, 0)); b_keyok[1]=true; } else if(pMsg->wParam==50)//2 { m_Label_Key[2].SetBkColor(RGB(0, 255, 0)); b_keyok[2]=true; } else if(pMsg->wParam==51)//3 { m_Label_Key[3].SetBkColor(RGB(0, 255, 0)); b_keyok[3]=true; } else if(pMsg->wParam==52)//4 { m_Label_Key[4].SetBkColor(RGB(0, 255, 0)); b_keyok[4]=true; } else if(pMsg->wParam==53)//5 { m_Label_Key[5].SetBkColor(RGB(0, 255, 0)); b_keyok[5]=true; } else if(pMsg->wParam==54)//6 { m_Label_Key[6].SetBkColor(RGB(0, 255, 0)); b_keyok[6]=true; } else if(pMsg->wParam==55)//7 { m_Label_Key[7].SetBkColor(RGB(0, 255, 0)); b_keyok[7]=true; } else if(pMsg->wParam==56)//8 { m_Label_Key[8].SetBkColor(RGB(0, 255, 0)); b_keyok[8]=true; } else if(pMsg->wParam==57)//9 { m_Label_Key[9].SetBkColor(RGB(0, 255, 0)); b_keyok[9]=true; } else if(pMsg->wParam==48)//0 { m_Label_Key[10].SetBkColor(RGB(0, 255, 0)); b_keyok[10]=true; } else if(pMsg->wParam==189)//_ { m_Label_Key[11].SetBkColor(RGB(0, 255, 0)); b_keyok[11]=true; } else if(pMsg->wParam==187)//= { m_Label_Key[12].SetBkColor(RGB(0, 255, 0)); b_keyok[12]=true; } else if(pMsg->wParam==8 && stricmp(cKey,"Backspace")==0) //backspace { m_Label_Key[13].SetBkColor(RGB(0, 255, 0)); b_keyok[13]=true; } else if(pMsg->wParam==9)//TAB { m_Label_Key[14].SetBkColor(RGB(0, 255, 0)); b_keyok[14]=true; } else if(pMsg->wParam==81)//Q { m_Label_Key[15].SetBkColor(RGB(0, 255, 0)); b_keyok[15]=true; } else if(pMsg->wParam==87)//W { m_Label_Key[16].SetBkColor(RGB(0, 255, 0)); b_keyok[16]=true; } else if(pMsg->wParam==69)//E { m_Label_Key[17].SetBkColor(RGB(0, 255, 0)); b_keyok[17]=true; } else if(pMsg->wParam==82)//R { m_Label_Key[18].SetBkColor(RGB(0, 255, 0)); b_keyok[18]=true; } else if(pMsg->wParam==84)//T { m_Label_Key[19].SetBkColor(RGB(0, 255, 0)); b_keyok[19]=true; } else if(pMsg->wParam==89)//Y { m_Label_Key[20].SetBkColor(RGB(0, 255, 0)); b_keyok[20]=true; } else if(pMsg->wParam==85)//U { m_Label_Key[21].SetBkColor(RGB(0, 255, 0)); b_keyok[21]=true; } else if(pMsg->wParam==73)//I { m_Label_Key[22].SetBkColor(RGB(0, 255, 0)); b_keyok[22]=true; } else if(pMsg->wParam==79)//O { m_Label_Key[23].SetBkColor(RGB(0, 255, 0)); b_keyok[23]=true; } else if(pMsg->wParam==80)//P { m_Label_Key[24].SetBkColor(RGB(0, 255, 0)); b_keyok[24]=true; } else if(pMsg->wParam==219)//[ { m_Label_Key[25].SetBkColor(RGB(0, 255, 0)); b_keyok[25]=true; } else if(pMsg->wParam==221)//] { m_Label_Key[26].SetBkColor(RGB(0, 255, 0)); b_keyok[26]=true; } else if(pMsg->wParam==220)// | { m_Label_Key[27].SetBkColor(RGB(0, 255, 0)); b_keyok[27]=true; } else if(pMsg->wParam==20)//CAP { m_Label_Key[28].SetBkColor(RGB(0, 255, 0)); b_keyok[28]=true; } else if(pMsg->wParam==65)//A { m_Label_Key[29].SetBkColor(RGB(0, 255, 0)); b_keyok[29]=true; } else if(pMsg->wParam==83)//S { m_Label_Key[30].SetBkColor(RGB(0, 255, 0)); b_keyok[30]=true; } else if(pMsg->wParam==68)//D { m_Label_Key[31].SetBkColor(RGB(0, 255, 0)); b_keyok[31]=true; } else if(pMsg->wParam==70)//F { m_Label_Key[32].SetBkColor(RGB(0, 255, 0)); b_keyok[32]=true; } else if(pMsg->wParam==71)//G { m_Label_Key[33].SetBkColor(RGB(0, 255, 0)); b_keyok[33]=true; } else if(pMsg->wParam==72)//H { m_Label_Key[34].SetBkColor(RGB(0, 255, 0)); b_keyok[34]=true; } else if(pMsg->wParam==74)//J { m_Label_Key[35].SetBkColor(RGB(0, 255, 0)); b_keyok[35]=true; } else if(pMsg->wParam==75)//K { m_Label_Key[36].SetBkColor(RGB(0, 255, 0)); b_keyok[36]=true; } else if(pMsg->wParam==76)//L { m_Label_Key[37].SetBkColor(RGB(0, 255, 0)); b_keyok[37]=true; } else if(pMsg->wParam==186)//; { m_Label_Key[38].SetBkColor(RGB(0, 255, 0)); b_keyok[38]=true; } else if(pMsg->wParam==222)//" { m_Label_Key[39].SetBkColor(RGB(0, 255, 0)); b_keyok[39]=true; } else if(pMsg->wParam==13)//Enter { m_Label_Key[40].SetBkColor(RGB(0, 255, 0)); b_keyok[40]=true; } else if(pMsg->wParam==16 && stricmp(cKey,"Shift")==0)//shift1 { m_Label_Key[41].SetBkColor(RGB(0, 255, 0)); b_keyok[41]=true; } else if(pMsg->wParam==90)//Z { m_Label_Key[42].SetBkColor(RGB(0, 255, 0)); b_keyok[42]=true; } else if(pMsg->wParam==88)//X { m_Label_Key[43].SetBkColor(RGB(0, 255, 0)); b_keyok[43]=true; } else if(pMsg->wParam==67)//C { m_Label_Key[44].SetBkColor(RGB(0, 255, 0)); b_keyok[44]=true; } else if(pMsg->wParam==86)//V { m_Label_Key[45].SetBkColor(RGB(0, 255, 0)); b_keyok[45]=true; } else if(pMsg->wParam==66)//B { m_Label_Key[46].SetBkColor(RGB(0, 255, 0)); b_keyok[46]=true; } else if(pMsg->wParam==78)//N { m_Label_Key[47].SetBkColor(RGB(0, 255, 0)); b_keyok[47]=true; } else if(pMsg->wParam==77)//M { m_Label_Key[48].SetBkColor(RGB(0, 255, 0)); b_keyok[48]=true; } else if(pMsg->wParam==188)//< { m_Label_Key[49].SetBkColor(RGB(0, 255, 0)); b_keyok[49]=true; } else if(pMsg->wParam==190)//> { m_Label_Key[50].SetBkColor(RGB(0, 255, 0)); b_keyok[50]=true; } else if(pMsg->wParam==191)//? { m_Label_Key[51].SetBkColor(RGB(0, 255, 0)); b_keyok[51]=true; } else if(pMsg->wParam==16 && stricmp(cKey,"Right Shift")==0)//shift2 { m_Label_Key[52].SetBkColor(RGB(0, 255, 0)); b_keyok[52]=true; } else if(pMsg->wParam==17 && stricmp(cKey,"Ctrl")==0)//Ctrl1 { m_Label_Key[53].SetBkColor(RGB(0, 255, 0)); b_keyok[53]=true; } //else if(pMsg->wParam==135)//Fn //{ // m_Label_Key[54].SetBkColor(RGB(0, 255, 0)); // b_keyok[54]=true; //} else if(pMsg->wParam==127)//WINWOWS 91 现用:125 { m_Label_Key[54].SetBkColor(RGB(0, 255, 0)); b_keyok[54]=true; //-模拟按下,弹起windows key,关闭该功能键弹出的窗口 //if(!b_winPress) //{ // Sleep(500); // keybd_event(91,0,0,0); //key down // Sleep(500); // keybd_event(91,0,KEYEVENTF_KEYUP,0);//key up // b_winPress=true; //} //- } else if(pMsg->wParam==18 && stricmp(cKey,"Alt")==0)//Alt1 { m_Label_Key[55].SetBkColor(RGB(0, 255, 0)); b_keyok[55]=true; } else if(pMsg->wParam==32)//Space { m_Label_Key[56].SetBkColor(RGB(0, 255, 0)); b_keyok[56]=true; } else if(pMsg->wParam==18 && stricmp(cKey,"Right Alt")==0)//Alt2 { m_Label_Key[57].SetBkColor(RGB(0, 255, 0)); b_keyok[57]=true; } else if(pMsg->wParam==17 && stricmp(cKey,"Right Ctrl")==0)//Ctrl2 { m_Label_Key[58].SetBkColor(RGB(0, 255, 0)); b_keyok[58]=true; } else if(pMsg->wParam==37)//Left { m_Label_Key[59].SetBkColor(RGB(0, 255, 0)); b_keyok[59]=true; } else if(pMsg->wParam==38)//PgUp { m_Label_Key[60].SetBkColor(RGB(0, 255, 0)); b_keyok[60]=true; } else if(pMsg->wParam==40)//PgDn { m_Label_Key[61].SetBkColor(RGB(0, 255, 0)); b_keyok[61]=true; } else if(pMsg->wParam==39)//Right { m_Label_Key[62].SetBkColor(RGB(0, 255, 0)); b_keyok[62]=true; }//[64]-[69] sensor touchpannel test else if(pMsg->wParam==192) { m_Label_Key[63].SetBkColor(RGB(0, 255, 0)); b_keyok[63]=true; } else if(pMsg->wParam==112)//F1 VK_F1 需要屏蔽F1功能 OnHelpInfo()//消息队列中去重构 { m_Label_Key[64].SetBkColor(RGB(0, 255, 0)); b_keyok[64]=true; } else if(pMsg->wParam==113)//F2 { m_Label_Key[65].SetBkColor(RGB(0, 255, 0)); b_keyok[65]=true; } //else if(pMsg->wParam==124)// //{ // m_Label_Key[66].SetBkColor(RGB(0, 255, 0)); // b_keyok[66]=true; //} //else if(pMsg->wParam==133)// //{ // m_Label_Key[67].SetBkColor(RGB(0, 255, 0)); // b_keyok[67]=true; //} else if(pMsg->wParam==114)// { m_Label_Key[66].SetBkColor(RGB(0, 255, 0)); b_keyok[66]=true; } else if(pMsg->wParam==115)// { m_Label_Key[67].SetBkColor(RGB(0, 255, 0)); b_keyok[67]=true; } else if(pMsg->wParam==116)// { m_Label_Key[68].SetBkColor(RGB(0, 255, 0)); b_keyok[68]=true; } //else if(pMsg->wParam==128)// //{ // m_Label_Key[69].SetBkColor(RGB(0, 255, 0)); // b_keyok[69]=true; //} else if(pMsg->wParam==117)// { m_Label_Key[69].SetBkColor(RGB(0, 255, 0)); b_keyok[69]=true; } else if(pMsg->wParam==118)//F7 { m_Label_Key[70].SetBkColor(RGB(0, 255, 0)); b_keyok[70]=true; } else if(pMsg->wParam==120)//F8 { m_Label_Key[71].SetBkColor(RGB(0, 255, 0)); b_keyok[71]=true; } else if(pMsg->wParam==121)//F9 { m_Label_Key[72].SetBkColor(RGB(0, 255, 0)); b_keyok[72]=true; } else if(pMsg->wParam==123)//F10 { m_Label_Key[73].SetBkColor(RGB(0, 255, 0)); b_keyok[73]=true; } else if(pMsg->wParam==122)//F12 { m_Label_Key[76].SetBkColor(RGB(0, 255, 0)); b_keyok[76]=true; } else if(pMsg->wParam==132)//F12 { m_Label_Key[77].SetBkColor(RGB(0, 255, 0)); b_keyok[77]=true; } else if(pMsg->wParam==46) { m_Label_Key[74].SetBkColor(RGB(0, 255, 0)); b_keyok[74]=true; } else if(pMsg->wParam==119) { m_Label_Key[75].SetBkColor(RGB(0, 255, 0)); b_keyok[75]=true; } /* else if(pMsg->wParam==124)//FnLock { m_Label_Key[70].SetBkColor(RGB(0, 255, 0)); b_keyok[70]=true; } else if(pMsg->wParam==112)//F1 VK_F1 需要屏蔽F1功能 OnHelpInfo() { m_Label_Key[71].SetBkColor(RGB(0, 255, 0)); b_keyok[71]=true; } else if(pMsg->wParam==113)//F2 { m_Label_Key[72].SetBkColor(RGB(0, 255, 0)); b_keyok[72]=true; } else if(pMsg->wParam==114)//F3 { m_Label_Key[73].SetBkColor(RGB(0, 255, 0)); b_keyok[73]=true; } else if(pMsg->wParam==115)//F4 { m_Label_Key[74].SetBkColor(RGB(0, 255, 0)); b_keyok[74]=true; } else if(pMsg->wParam==116)//F5 { m_Label_Key[75].SetBkColor(RGB(0, 255, 0)); b_keyok[75]=true; } else if(pMsg->wParam==117)//F6 { m_Label_Key[76].SetBkColor(RGB(0, 255, 0)); b_keyok[76]=true; } else if(pMsg->wParam==118)//F7 { m_Label_Key[77].SetBkColor(RGB(0, 255, 0)); b_keyok[77]=true; } else if(pMsg->wParam==44)//F8 { m_Label_Key[78].SetBkColor(RGB(0, 255, 0)); b_keyok[78]=true; } else if(pMsg->wParam==120)//F9 { m_Label_Key[79].SetBkColor(RGB(0, 255, 0)); b_keyok[79]=true; } else if(pMsg->wParam==121)//F10 { m_Label_Key[80].SetBkColor(RGB(0, 255, 0)); b_keyok[80]=true; } else if(pMsg->wParam==122)//F11 { m_Label_Key[81].SetBkColor(RGB(0, 255, 0)); b_keyok[81]=true; } else if(pMsg->wParam==123)//F12 { m_Label_Key[82].SetBkColor(RGB(0, 255, 0)); b_keyok[82]=true; } else if(pMsg->wParam==125)//APPP1 PrtSc { m_Label_Key[83].SetBkColor(RGB(0, 255, 0)); b_keyok[83]=true; } else if(pMsg->wParam==126)//APP2 Insert { m_Label_Key[84].SetBkColor(RGB(0, 255, 0)); b_keyok[84]=true; } else if(pMsg->wParam==46)//Delete { m_Label_Key[85].SetBkColor(RGB(0, 255, 0)); b_keyok[85]=true; } */ return TRUE; } else if (pMsg->message == WM_KEYDOWN || pMsg->message == WM_SYSKEYDOWN) { char cKey[32]={0}; TCHAR szKeyName[32] ={0}; GetKeyNameText(pMsg->lParam,szKeyName,sizeof (szKeyName) / sizeof (TCHAR)) ; strcpy(cKey,szKeyName); //---------- /*if (IsDlgButtonChecked(IDC_CHK_DebugLog)==BST_CHECKED) { SYSTEMTIME cur_time; char m_cTimeBuf[200]; GetLocalTime(&cur_time); sprintf_s(m_cTimeBuf, sizeof(m_cTimeBuf), "%04d-%02d-%02d %02d:%02d:%02d.%03d:pMsg->message=%X,pMsg->wParam=%d,KeyName=%s", cur_time.wYear,cur_time.wMonth,cur_time.wDay,cur_time.wHour, cur_time.wMinute, cur_time.wSecond, cur_time.wMilliseconds,pMsg->message,pMsg->wParam,cKey); InsertItem_Debug(m_cTimeBuf,0); }*/ //---------- if(pMsg->wParam==27) { m_Label_Key[0].SetBkColor(RGB(255, 255, 0)); b_keyok[0]=false; } else if(pMsg->wParam==49)//1 { m_Label_Key[1].SetBkColor(RGB(255, 255, 0)); b_keyok[1]=false; } else if(pMsg->wParam==50)//2 { m_Label_Key[2].SetBkColor(RGB(255, 255, 0)); b_keyok[2]=false; } else if(pMsg->wParam==51)//3 { m_Label_Key[3].SetBkColor(RGB(255, 255, 0)); b_keyok[3]=false; } else if(pMsg->wParam==52)//4 { m_Label_Key[4].SetBkColor(RGB(255, 255, 0)); b_keyok[4]=false; } else if(pMsg->wParam==53)//5 { m_Label_Key[5].SetBkColor(RGB(255, 255, 0)); b_keyok[5]=false; } else if(pMsg->wParam==54)//6 { m_Label_Key[6].SetBkColor(RGB(255, 255, 0)); b_keyok[6]=false; } else if(pMsg->wParam==55)//7 { m_Label_Key[7].SetBkColor(RGB(255, 255, 0)); b_keyok[7]=false; } else if(pMsg->wParam==56)//8 { m_Label_Key[8].SetBkColor(RGB(255, 255, 0)); b_keyok[8]=false; } else if(pMsg->wParam==57)//9 { m_Label_Key[9].SetBkColor(RGB(255, 255, 0)); b_keyok[9]=false; } else if(pMsg->wParam==48)//0 { m_Label_Key[10].SetBkColor(RGB(255, 255, 0)); b_keyok[10]=false; } else if(pMsg->wParam==189)//_ { m_Label_Key[11].SetBkColor(RGB(255, 255, 0)); b_keyok[11]=false; } else if(pMsg->wParam==187)//= { m_Label_Key[12].SetBkColor(RGB(255, 255, 0)); b_keyok[12]=false; } else if(pMsg->wParam==8 && stricmp(cKey,"Backspace")==0) //backspace { m_Label_Key[13].SetBkColor(RGB(255, 255, 0)); b_keyok[13]=false; } else if(pMsg->wParam==9)//TAB { m_Label_Key[14].SetBkColor(RGB(255, 255, 0)); b_keyok[14]=false; } else if(pMsg->wParam==81)//Q { m_Label_Key[15].SetBkColor(RGB(255, 255, 0)); b_keyok[15]=false; } else if(pMsg->wParam==87)//W { m_Label_Key[16].SetBkColor(RGB(255, 255, 0)); b_keyok[16]=false; } else if(pMsg->wParam==69)//E { m_Label_Key[17].SetBkColor(RGB(255, 255, 0)); b_keyok[17]=false; } else if(pMsg->wParam==82)//R { m_Label_Key[18].SetBkColor(RGB(255, 255, 0)); b_keyok[18]=false; } else if(pMsg->wParam==84)//T { m_Label_Key[19].SetBkColor(RGB(255, 255, 0)); b_keyok[19]=false; } else if(pMsg->wParam==89)//Y { m_Label_Key[20].SetBkColor(RGB(255, 255, 0)); b_keyok[20]=false; } else if(pMsg->wParam==85)//U { m_Label_Key[21].SetBkColor(RGB(255, 255, 0)); b_keyok[21]=false; } else if(pMsg->wParam==73)//I { m_Label_Key[22].SetBkColor(RGB(255, 255, 0)); b_keyok[22]=false; } else if(pMsg->wParam==79)//O { m_Label_Key[23].SetBkColor(RGB(255, 255, 0)); b_keyok[23]=false; } else if(pMsg->wParam==80)//P { m_Label_Key[24].SetBkColor(RGB(255, 255, 0)); b_keyok[24]=false; } else if(pMsg->wParam==219)//[ { m_Label_Key[25].SetBkColor(RGB(255, 255, 0)); b_keyok[25]=false; } else if(pMsg->wParam==221)//] { m_Label_Key[26].SetBkColor(RGB(255, 255, 0)); b_keyok[26]=false; } else if(pMsg->wParam==220)// | { m_Label_Key[27].SetBkColor(RGB(255, 255, 0)); b_keyok[27]=false; } else if(pMsg->wParam==20)//CAP { m_Label_Key[28].SetBkColor(RGB(255, 255, 0)); b_keyok[28]=false; } else if(pMsg->wParam==65)//A { m_Label_Key[29].SetBkColor(RGB(255, 255, 0)); b_keyok[29]=false; } else if(pMsg->wParam==83)//S { m_Label_Key[30].SetBkColor(RGB(255, 255, 0)); b_keyok[30]=false; } else if(pMsg->wParam==68)//D { m_Label_Key[31].SetBkColor(RGB(255, 255, 0)); b_keyok[31]=false; } else if(pMsg->wParam==70)//F { m_Label_Key[32].SetBkColor(RGB(255, 255, 0)); b_keyok[32]=false; } else if(pMsg->wParam==71)//G { m_Label_Key[33].SetBkColor(RGB(255, 255, 0)); b_keyok[33]=false; } else if(pMsg->wParam==72)//H { m_Label_Key[34].SetBkColor(RGB(255, 255, 0)); b_keyok[34]=false; } else if(pMsg->wParam==74)//J { m_Label_Key[35].SetBkColor(RGB(255, 255, 0)); b_keyok[35]=false; } else if(pMsg->wParam==75)//K { m_Label_Key[36].SetBkColor(RGB(255, 255, 0)); b_keyok[36]=false; } else if(pMsg->wParam==76)//L { m_Label_Key[37].SetBkColor(RGB(255, 255, 0)); b_keyok[37]=false; } else if(pMsg->wParam==186)//; { m_Label_Key[38].SetBkColor(RGB(255, 255, 0)); b_keyok[38]=false; } else if(pMsg->wParam==222)//" { m_Label_Key[39].SetBkColor(RGB(255, 255, 0)); b_keyok[39]=false; } else if(pMsg->wParam==13)//Enter { m_Label_Key[40].SetBkColor(RGB(255, 255, 0)); b_keyok[40]=false; } else if(pMsg->wParam==16 && stricmp(cKey,"Shift")==0)//shift1 { m_Label_Key[41].SetBkColor(RGB(255, 255, 0)); b_keyok[41]=false; } else if(pMsg->wParam==90)//Z { m_Label_Key[42].SetBkColor(RGB(255, 255, 0)); b_keyok[42]=false; } else if(pMsg->wParam==88)//X { m_Label_Key[43].SetBkColor(RGB(255, 255, 0)); b_keyok[43]=false; } else if(pMsg->wParam==67)//C { m_Label_Key[44].SetBkColor(RGB(255, 255, 0)); b_keyok[44]=false; } else if(pMsg->wParam==86)//V { m_Label_Key[45].SetBkColor(RGB(255, 255, 0)); b_keyok[45]=false; } else if(pMsg->wParam==66)//B { m_Label_Key[46].SetBkColor(RGB(255, 255, 0)); b_keyok[46]=false; } else if(pMsg->wParam==78)//N { m_Label_Key[47].SetBkColor(RGB(255, 255, 0)); b_keyok[47]=false; } else if(pMsg->wParam==77)//M { m_Label_Key[48].SetBkColor(RGB(255, 255, 0)); b_keyok[48]=false; } else if(pMsg->wParam==188)//< { m_Label_Key[49].SetBkColor(RGB(255, 255, 0)); b_keyok[49]=false; } else if(pMsg->wParam==190)//> { m_Label_Key[50].SetBkColor(RGB(255, 255, 0)); b_keyok[50]=false; } else if(pMsg->wParam==191)//? { m_Label_Key[51].SetBkColor(RGB(255, 255, 0)); b_keyok[51]=false; } else if(pMsg->wParam==16 && stricmp(cKey,"Right Shift")==0)//shift2 { m_Label_Key[52].SetBkColor(RGB(255, 255, 0)); b_keyok[52]=false; } else if(pMsg->wParam==17 && stricmp(cKey,"Ctrl")==0)//Ctrl1 { m_Label_Key[53].SetBkColor(RGB(255, 255, 0)); b_keyok[53]=false; } //else if(pMsg->wParam==135)//Fn //{ // m_Label_Key[54].SetBkColor(RGB(255, 255, 0)); // b_keyok[54]=false; //} else if(pMsg->wParam==127)//WINWOWS 91,现用125 { m_Label_Key[54].SetBkColor(RGB(255, 255, 0)); b_keyok[54]=false; //-模拟按下,弹起windows key,关闭该功能键弹出的窗口 //keybd_event(91,0,0,0); //key down //keybd_event(91,0,KEYEVENTF_KEYUP,0);//key up //- } else if(pMsg->wParam==18 && stricmp(cKey,"Alt")==0)//Alt1 { m_Label_Key[55].SetBkColor(RGB(255, 255, 0)); b_keyok[55]=false; } else if(pMsg->wParam==32)//Space { m_Label_Key[56].SetBkColor(RGB(255, 255, 0)); b_keyok[56]=false; } else if(pMsg->wParam==18 && stricmp(cKey,"Right Alt")==0)//Alt2 { m_Label_Key[57].SetBkColor(RGB(255, 255, 0)); b_keyok[57]=false; } else if(pMsg->wParam==17 && stricmp(cKey,"Right Ctrl")==0)//Ctrl2 { m_Label_Key[58].SetBkColor(RGB(255, 255, 0)); b_keyok[58]=false; } else if(pMsg->wParam==37)//Left { m_Label_Key[59].SetBkColor(RGB(255, 255, 0)); b_keyok[59]=false; } else if(pMsg->wParam==38)//PgUp { m_Label_Key[60].SetBkColor(RGB(255, 255, 0)); b_keyok[60]=false; } else if(pMsg->wParam==40)//PgDn { m_Label_Key[61].SetBkColor(RGB(255, 255, 0)); b_keyok[61]=false; } else if(pMsg->wParam==39)//Right { m_Label_Key[62].SetBkColor(RGB(255, 255, 0)); b_keyok[62]=false; }//[64]-[69] sensor touchpannel test else if(pMsg->wParam==192) { m_Label_Key[63].SetBkColor(RGB(255, 255, 0)); b_keyok[63]=false; } else if(pMsg->wParam==112)//F1 VK_F1 需要屏蔽F1功能 OnHelpInfo() { m_Label_Key[64].SetBkColor(RGB(255, 255, 0)); b_keyok[64]=false; } else if(pMsg->wParam==113)//F2 { m_Label_Key[65].SetBkColor(RGB(255, 255, 0)); b_keyok[65]=false; } //else if(pMsg->wParam==124)// //{ // m_Label_Key[66].SetBkColor(RGB(255, 255, 0)); // b_keyok[66]=false; //} //else if(pMsg->wParam==133)// //{ // m_Label_Key[67].SetBkColor(RGB(255, 255, 0)); // b_keyok[67]=false; //} else if(pMsg->wParam==114)// { m_Label_Key[66].SetBkColor(RGB(255, 255, 0)); b_keyok[66]=false; } else if(pMsg->wParam==115)// { m_Label_Key[67].SetBkColor(RGB(255, 255, 0)); b_keyok[67]=false; } else if(pMsg->wParam==116)// { m_Label_Key[68].SetBkColor(RGB(255, 255, 0)); b_keyok[68]=false; } //else if(pMsg->wParam==128)// //{ // m_Label_Key[69].SetBkColor(RGB(255, 255, 0)); // b_keyok[69]=false; //} else if(pMsg->wParam==117)// { m_Label_Key[69].SetBkColor(RGB(255, 255, 0)); b_keyok[69]=false; } else if(pMsg->wParam==118)//F7 { m_Label_Key[70].SetBkColor(RGB(255, 255, 0)); b_keyok[70]=false; } else if(pMsg->wParam==120)//F8 { m_Label_Key[71].SetBkColor(RGB(255, 255, 0)); b_keyok[71]=false; } else if(pMsg->wParam==121)//F9 { m_Label_Key[72].SetBkColor(RGB(255, 255, 0)); b_keyok[72]=false; } else if(pMsg->wParam==123)//F10 { m_Label_Key[73].SetBkColor(RGB(255, 255, 0)); b_keyok[73]=false; } else if(pMsg->wParam==122)//F12 { m_Label_Key[76].SetBkColor(RGB(255, 255, 0)); b_keyok[76]=false; } else if(pMsg->wParam==46) { m_Label_Key[74].SetBkColor(RGB(255, 255, 0)); b_keyok[74]=false; } else if(pMsg->wParam==132)//F12 { m_Label_Key[77].SetBkColor(RGB(255, 255, 0)); b_keyok[77]=false; } else if(pMsg->wParam==119) { m_Label_Key[75].SetBkColor(RGB(255, 255, 0)); b_keyok[75]=false; } /* else if(pMsg->wParam==124)//FnLock { m_Label_Key[70].SetBkColor(RGB(255, 255, 0)); b_keyok[70]=false; } else if(pMsg->wParam==112)//F1 { m_Label_Key[71].SetBkColor(RGB(255, 255, 0)); b_keyok[71]=false; } else if(pMsg->wParam==113)//F2 { m_Label_Key[72].SetBkColor(RGB(255, 255, 0)); b_keyok[72]=false; } else if(pMsg->wParam==114)//F3 { m_Label_Key[73].SetBkColor(RGB(255, 255, 0)); b_keyok[73]=false; } else if(pMsg->wParam==115)//F4 { m_Label_Key[74].SetBkColor(RGB(255, 255, 0)); b_keyok[74]=false; } else if(pMsg->wParam==116)//F5 { m_Label_Key[75].SetBkColor(RGB(255, 255, 0)); b_keyok[75]=false; } else if(pMsg->wParam==117)//F6 { m_Label_Key[76].SetBkColor(RGB(255, 255, 0)); b_keyok[76]=false; } else if(pMsg->wParam==118)//F7 { m_Label_Key[77].SetBkColor(RGB(255, 255, 0)); b_keyok[77]=false; } else if(pMsg->wParam==44)//F8 { m_Label_Key[78].SetBkColor(RGB(255, 255, 0)); b_keyok[78]=false; } else if(pMsg->wParam==120)//F9 { m_Label_Key[79].SetBkColor(RGB(255, 255, 0)); b_keyok[79]=false; } else if(pMsg->wParam==121)//F10 { m_Label_Key[80].SetBkColor(RGB(255, 255, 0)); b_keyok[80]=false; } else if(pMsg->wParam==122)//F11 { m_Label_Key[81].SetBkColor(RGB(255, 255, 0)); b_keyok[81]=false; } else if(pMsg->wParam==123)//F12 { m_Label_Key[82].SetBkColor(RGB(255, 255, 0)); b_keyok[82]=false; } else if(pMsg->wParam==125)//APPP1 PrtSc { m_Label_Key[83].SetBkColor(RGB(255, 255, 0)); b_keyok[83]=false; } else if(pMsg->wParam==126)//APP2 Insert { m_Label_Key[84].SetBkColor(RGB(255, 255, 0)); b_keyok[84]=false; } else if(pMsg->wParam==46)//Delete { m_Label_Key[85].SetBkColor(RGB(255, 255, 0)); b_keyok[85]=false; } */ return TRUE; } } else { HWND hwnd = ::GetFocus(); int iID = ::GetDlgCtrlID(hwnd); if (pMsg->message == WM_KEYDOWN) { if (pMsg->wParam == VK_ESCAPE) return TRUE; // 防止按回车键后,非法退出的问题 if(iID != IDC_EDIT1_IntputSN && iID != IDC_InputVersion && iID !=IDC_EDIT_Comport&&iID!=IDC_EDIT_PASStimes&&iID!=IDC_EDIT_FailTimes&& iID != IDC_EDIT1_BT/*&& iID !=IDC_EDIT_KeyPadVersion && iID !=IDC_EDIT_WirelessChgVersion && iID !=IDC_EDIT_BT*/) return TRUE; if (pMsg->wParam ==VK_RETURN) { if(IDC_EDIT1_IntputSN == iID) { OnBnClickedButton1(); return TRUE; }else { return TRUE; } } } } return CDialogEx::PreTranslateMessage(pMsg); } 在 MFC 中实现汽车遥控器 UI,特别是需要圆形/椭圆形按钮且支持按下/抬起状态变化,需要在这里设置键值
06-23
详细分析解释一下chromium源码中的下面的函数: bool OmniboxViewViews::HandleKeyEvent(views::Textfield* textfield, const ui::KeyEvent& event) { PermitExternalProtocolHandler(); if (event.type() == ui::EventType::kKeyReleased) { // The omnibox contents may change while the control key is pressed. if (event.key_code() == ui::VKEY_CONTROL) { model()->OnControlKeyChanged(false); } return false; } // Skip processing of [Alt]+<num-pad digit> Unicode alt key codes. // Otherwise, if num-lock is off, the events are handled as [Up], [Down], etc. if (event.IsUnicodeKeyCode()) { return false; } // Show a notification if the clipboard is restricted by the rules of the // data leak prevention policy. This state is used by the // IsTextEditCommandEnabled(ui::TextEditCommand::PASTE) cases below. base::AutoReset<bool> show_rejection_ui(&show_rejection_ui_if_any_, true); const bool shift = event.IsShiftDown(); const bool control = event.IsControlDown(); const bool alt = event.IsAltDown() || event.IsAltGrDown(); const bool command = event.IsCommandDown(); switch (event.key_code()) { case ui::VKEY_RETURN: { WindowOpenDisposition disposition = WindowOpenDisposition::CURRENT_TAB; if ((alt && !shift) || (shift && command)) { disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB; } else if (alt || command) { disposition = WindowOpenDisposition::NEW_BACKGROUND_TAB; } else if (shift) { disposition = WindowOpenDisposition::NEW_WINDOW; } // According to unit tests and comments, holding control when pressing // enter has special behavior handled by `AcceptInput` so in this case // the user is selecting their input (possibly with modification like // appending ".com") and not the row match. This is indicated with an // explicit `kNoMatch` line selection. if (model()->PopupIsOpen() && !control) { model()->OpenSelection(model()->GetPopupSelection(), event.time_stamp(), disposition); } else { model()->OpenSelection( OmniboxPopupSelection(OmniboxPopupSelection::kNoMatch), event.time_stamp(), disposition); } return true; } case ui::VKEY_ESCAPE: return model()->OnEscapeKeyPressed(); case ui::VKEY_CONTROL: model()->OnControlKeyChanged(true); break; case ui::VKEY_DELETE: if (shift && model()->PopupIsOpen()) { model()->TryDeletingPopupLine(model()->GetPopupSelection().line); } break; case ui::VKEY_UP: // Shift-up is handled by the text field class to enable text selection. if (shift) { return false; } if (IsTextEditCommandEnabled(ui::TextEditCommand::MOVE_UP)) { ExecuteTextEditCommand(ui::TextEditCommand::MOVE_UP); return true; } break; case ui::VKEY_DOWN: // Shift-down is handled by the text field class to enable text selection. if (shift) { return false; } if (IsTextEditCommandEnabled(ui::TextEditCommand::MOVE_DOWN)) { ExecuteTextEditCommand(ui::TextEditCommand::MOVE_DOWN); return true; } break; case ui::VKEY_PRIOR: if (control || alt || shift || GetReadOnly()) { return false; } model()->OnUpOrDownPressed(false, true); return true; case ui::VKEY_NEXT: if (control || alt || shift || GetReadOnly()) { return false; } model()->OnUpOrDownPressed(true, true); return true; case ui::VKEY_V: if (control && !alt && IsTextEditCommandEnabled(ui::TextEditCommand::PASTE)) { ExecuteTextEditCommand(ui::TextEditCommand::PASTE); return true; } break; case ui::VKEY_INSERT: if (shift && !control && IsTextEditCommandEnabled(ui::TextEditCommand::PASTE)) { ExecuteTextEditCommand(ui::TextEditCommand::PASTE); return true; } break; case ui::VKEY_BACK: // No extra handling is needed in keyword search mode, if there is a // non-empty selection, or if the cursor is not leading the text. if (model()->is_keyword_hint() || model()->keyword().empty() || HasSelection() || GetCursorPosition() != 0) { return false; } model()->ClearKeyword(); return true; case ui::VKEY_HOME: // The Home key indicates that the user wants to move the cursor to the // beginning of the full URL, so it should always trigger an unelide. if (UnapplySteadyStateElisions(UnelisionGesture::HOME_KEY_PRESSED)) { if (shift) { // After uneliding, we need to move the end of the selection range // to the beginning of the full unelided URL. size_t start, end; GetSelectionBounds(&start, &end); SetSelectedRange(gfx::Range(start, 0)); } else { // After uneliding, move the caret to the beginning of the full // unelided URL. SetCaretPos(0); } TextChanged(); return true; } break; case ui::VKEY_SPACE: { if (model()->PopupIsOpen() && !control && !alt && !shift) { if (model()->OnSpacePressed()) { return true; } OmniboxPopupSelection selection = model()->GetPopupSelection(); if (selection.IsButtonFocused()) { model()->OpenSelection(selection, event.time_stamp()); return true; } } break; } default: break; } if (is_mouse_pressed_ && select_all_on_mouse_release_) { // https://crbug.com/1063161 If the user presses the mouse button down and // begins to type without releasing the mouse button, the subsequent release // will delete any newly typed characters due to the SelectAll happening on // mouse-up. If we detect this state, do the select-all immediately. SelectAll(true); select_all_on_mouse_release_ = false; } return HandleEarlyTabActions(event); }
最新发布
08-02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值