【转】MFC 自定义edit 限制输入十六进制内容 响应复制粘贴全选剪切的功能 MFC 自定义edit 限制输入内容 响应复制粘贴全选剪切的功能

参考地址:MFC 自定义edit 限制输入内容 响应复制粘贴全选剪切的功能

 

Ctrl组合键ASCII码      

^Z代表Ctrl+z                     
ASCII值 控制字符  ASCII值 控制字符  ASCII值 控制字符  ASCII值 控制字符
0(00)        NULL       8(08)        ^H         16(10)    ^P             24(18)    ^X
1(01)         ^A           9(09)        ^I            17(11)    ^Q           25(19)    ^Y
2(02)         ^B          10(0A)       ^J           18(12)    ^R           26(1A)    ^Z
3(03)        ^C           11(0B)       ^K           19(13)    ^S           27(1B)    ^[
4(04)        ^D           12(0C)       ^L           20(14)    ^T           28(1C)    ^\
5(05)        ^E           13(0D)       ^M          21(15)    ^U            29(1D)    ^]
6(06)        ^F           14(0E)       ^N          22(16)    ^V             30(1E)    ^^
7(07)        ^G           15(0F)       ^O          23(17)    ^W             31(1F)    ^_

限制输入内容 :

响应消息OnChar

复制代码
void CEnglishEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
    // TODO:  在此添加消息处理程序代码和/或调用默认值
    if (

      (ch >= '0' && ch <= '9')||
      (ch >= 'a' && ch <= 'f')||
      (ch >= 'A' && ch <= 'F')||
      ch == VK_BACK || ch == VK_DELETE||
      nChar == 01 || nChar == 03 || //ctrl + a c
      nChar == 24 || nChar == 22 //ctrl + x v 

       )
    {
        CEdit::OnChar(nChar, nRepCnt, nFlags);
    }
    else
    {
        return;
    }
}
复制代码

代码中红色部分是实现 复制粘贴全选剪切的功能;

进过实践发现重写 PreTranslateMessage()  不能实现复制粘贴剪切的功能,可以实现全选功能,根据最上边Ctrl组合键ASCII码 来添加自己需要的功能.

Ctrl组合键ASCII码      

^Z代表Ctrl+z                     
ASCII值 控制字符  ASCII值 控制字符  ASCII值 控制字符  ASCII值 控制字符
0(00)        NULL       8(08)        ^H         16(10)    ^P             24(18)    ^X
1(01)         ^A           9(09)        ^I            17(11)    ^Q           25(19)    ^Y
2(02)         ^B          10(0A)       ^J           18(12)    ^R           26(1A)    ^Z
3(03)        ^C           11(0B)       ^K           19(13)    ^S           27(1B)    ^[
4(04)        ^D           12(0C)       ^L           20(14)    ^T           28(1C)    ^\
5(05)        ^E           13(0D)       ^M          21(15)    ^U            29(1D)    ^]
6(06)        ^F           14(0E)       ^N          22(16)    ^V             30(1E)    ^^
7(07)        ^G           15(0F)       ^O          23(17)    ^W             31(1F)    ^_

限制输入内容 :

响应消息OnChar

复制代码
void CEnglishEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
    // TODO:  在此添加消息处理程序代码和/或调用默认值
    if (

      (ch >= '0' && ch <= '9')||
      (ch >= 'a' && ch <= 'f')||
      (ch >= 'A' && ch <= 'F')||
      ch == VK_BACK || ch == VK_DELETE||
      nChar == 01 || nChar == 03 || //ctrl + a c
      nChar == 24 || nChar == 22 //ctrl + x v 

       )
    {
        CEdit::OnChar(nChar, nRepCnt, nFlags);
    }
    else
    {
        return;
    }
}
复制代码

代码中红色部分是实现 复制粘贴全选剪切的功能;

进过实践发现重写 PreTranslateMessage()  不能实现复制粘贴剪切的功能,可以实现全选功能,根据最上边Ctrl组合键ASCII码 来添加自己需要的功能.

猜你喜欢

转载自www.cnblogs.com/2018shawn/p/9325772.html