Edit控件特殊字符处理类

  .h文件

#pragma once


// CMyEdit

class CMyEdit : public CEdit
{
 DECLARE_DYNAMIC(CMyEdit)

public:
 CMyEdit();
 virtual ~CMyEdit();

protected:
 DECLARE_MESSAGE_MAP()
 virtual LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam);
public:
 afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
};

 

.cpp文件

// MyEdit.cpp : implementation file
//

#include "stdafx.h"
#include "MyEdit.h"
#include "resource.h"
// CMyEdit

IMPLEMENT_DYNAMIC(CMyEdit, CEdit)

CMyEdit::CMyEdit()
{

}

CMyEdit::~CMyEdit()
{
}


BEGIN_MESSAGE_MAP(CMyEdit, CEdit)
 ON_WM_CHAR()
END_MESSAGE_MAP()

 

// CMyEdit message handlers

 

LRESULT CMyEdit::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
 // TODO: Add your specialized code here and/or call the base class
 
 return CEdit::DefWindowProc(message, wParam, lParam);
}

void CMyEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
 // TODO: Add your message handler code here and/or call default

 UINT ch = nChar;
 
 HWND hWnd = ::GetFocus();
 int CtrlId = ::GetDlgCtrlID(hWnd);
 if (ch == VK_BACK)
 {
  CEdit::OnChar(nChar, nRepCnt, nFlags);
 }
 
 else
 {
  if ((ch >= '0' && ch <= '9')|| ch == VK_DELETE)
  {
   CEdit::OnChar(nChar, nRepCnt, nFlags);
  }
 }
}

 

实际使用实例:

在使用的类定义中定义:CMyEdit m_editTimes;

在使用的类函数OnInitDialog中对需要做字符输入限制的编辑控件添加如下语句:

m_editTimesSubclassDlgItem(IDC_EDIT1,this);

如果有字符个数输入限制则在DoDataExchange函数中添加如下语句:

DDX_Text(pDX, IDC_EDIT2, m_csEditTimes);   //关联一个CString变量到Edit控件
  DDV_MaxChars(pDX, m_csEditTimes, 8);    //限制输入的字符数量


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值