1. 程式人生 > >【轉】MFC 自定義edit 限制輸入十六進制內容 響應復制粘貼全選剪切的功能

【轉】MFC 自定義edit 限制輸入十六進制內容 響應復制粘貼全選剪切的功能

edi 限制 flag asc 處理程序 tle ^h alt sci

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碼 來添加自己需要的功能.

【轉】MFC 自定義edit 限制輸入十六進制內容 響應復制粘貼全選剪切的功能