Edit控件特殊字符处理类

本文介绍了一个名为CMyEdit的自定义编辑控件的实现方法。该控件继承自CEdit,通过重写OnChar函数实现了只允许输入数字及删除操作的功能,并展示了如何在对话框中使用该控件并设置字符输入限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  .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);    //限制输入的字符数量


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值