【转】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码 来添加自己需要的功能.

原文地址:https://www.cnblogs.com/2018shawn/p/9325772.html

时间: 2024-11-02 00:58:28

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

自定义Edit控件控制输入范围

1 //自定义Edit,实现十六进制输入控制,使用OnChar()函数实现 2 //MyEdit.h 3 #pragma once 4 5 class CMyEdit : public CEdit { 6 DECLARE_DYNAMIC(CMyEdit) -----------------------① 7 8 public: 9 CMyEdit(){}; 10 protected: 11 DECLARE_MESSAGE_MAP() ----------------------------② 1

Edit Control响应全选(Ctrl+A)

MFC中的Edit控件用于输入数据,当输入的数据为大段数字的时候,全选功能就显得非常重要了,可偏偏在MFC中Edit控件就不 支持全选.Ctrl+A不行,双击也不行. Ctrl+C和Ctrl+V都是默认支持的.因此为了使用方便,我们仅仅能自己让Edit去支持Ctrl+A全选 功能了. 实现的方式也比較简单,自己处理消息就是! Ctrl+A是一个组合消息,在检測到A或者a按键按下的时候.推断Ctrl键的状态,假设Ctrl键有效则说明用户按下了Ctrl+A按键,这时候我们将Edit中内容设置为全选就

个人永久性免费-Excel催化剂功能第44波-可见区域复制粘贴不覆盖隐藏内容

Excel的复制粘贴操作,每天都在进行,若其中稍能提升一点效率,长久来说,实在是很可观的效率提升. Excel自带的复制粘贴功能,若复制的数据源或粘贴的目标位置中有隐藏的行列内容,简单一个复制粘贴充满许多的坑坑哇哇.Excel催化剂今天为你全部解决,填满所有的坑! 文章出处说明 原文在简书上发表,再同步到Excel催化剂微信公众号或其他平台上,文章后续有修改和更新将在简书上操作, 其他平台不作同步修改更新,因此建议阅读其他出处的文章时,尽可能跳转回简书平台上查看. 使用场景 在数据临时加工处理过

C++ 一个程序获取另一个程序Edit控件的内容

//一个程序获取另一个程序Edit控件的内容 //根据指定程序的标题名获取改程序窗口的句柄 HWND hWnd=::FindWindow(NULL,"zhang001"); if(hWnd) { MessageBox("get windows"); //根据窗口句柄获取EDIT控件的ID,但是这个ID是通过VS工具spy++获取的 HWND h = ::GetDlgItem(hWnd,0x3E9); if (h!=NULL) { CString str0; //要知

[WinForm][DevExpress]自定义GridControl中按钮文字内容

最近项目开发中,使用到了GridControl的FindPanel,这样可以很好的对数据进行筛选,可是所展现的按钮文字是英文,如图: 那怎么定义两个按钮问题,以符合项目需求了?经过一番搜索发现利用GridLocalizer可以很好实现: 核心代码: public class BuilderGridLocalizer : GridLocalizer { Dictionary<GridStringId, string> CusLocalizedKeyValue = null; /// <su

QWidget类中默认是忽略inputMethodEvent事件(要获取输入的内容就必须使用这个事件)

因为项目的需要以及主管的要求,准备将工程移植到Qt中,这样就可以比较容易的实现跨平台了.因为之前工程是在windows下开发的,第一个平台又是mobile所以除了底层框架之外其他的都是使用的windows的API以及编程模式,现在要移植到Qt中,第一个要面临的问题就是如何将windows的消息机制很好的转换为Qt中的处理机制.windows中是消息,Qt中是事件和信号.槽,其实原理都是一样的. 1.常用事件 因为所有和界面相关的类都是继承自QWidget类,所以QWidget类有的时间和方法,在

通过if判断区分输入的内容

Mzlw原创文章,转载请注明出处:http://www.cnblogs.com/mzlw/p/5813861.html 编程时我们常需要判断输入的内容为数字.字母.或者标点符号等等,可以通过if判断来实现,我来分享一下我的经验. 以下均为C#代码. 1 ... 2 string Str; 3 char strCheck; 4 Str=Console.Readline(); 5 if(Str.Length == 0){ //判断是否有输入,无输入即结束 6 return; 7 }else{ 8 f

对文本框中输入的内容放大显示和格式化

在最近做的项目中,发现用户在输入手机号.身份证或者银行卡这些重要的数据的时候,文本框显示的文字不是非常大,也不是非常明显的显示给用户. 往往这些重要数据用户都需要核对好几次,在确保正确无误的时候才敢点击保存,这样总会浪费一点时间,对用户的体验也不是非常友好,如果我们能在用户输入框的上面对输入的内容进行放大.颜色突出并且按照不同的分隔显示,是不是这样更能便于用户快速的核实数据呢. 于是自己利用业务时间就动手封装了一个小插件: 第一步:创建一个样式表sytle.css 1 @charset "utf

WIN32窗口子类化----自定义Edit控件的右键菜单

前言 Win32应用程序中,子控件的消息都是分发到其父窗口的消息处理函数中去了,这对于我们需要自定义子控件的某些特性时时十分不方便的,还好,Windows为我们提供了控件子类化的相关接口API.核心的思想是:通过获取子控件的消息处理函数地址,设置子控件的消息处理函数到自己定义的函数里,也就是Get/SetWindowLong API的使用. 测试代码 这里是一个简单的测试程序,在控制台程序中创建一个对话框,然后对话框上有一个EDIT控件(资源编辑器里拖入的,不多说),子类化EDIT控件,右键弹出