自己设计类的问题:(up有分!) 我的问题是,我从edit派生一个类CEditNum,我应该在CEditNum中的哪个消息函数中开始获取字符数目呢?我想让edit框限制输入的是数字个数.该如何处理呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CEdit::LimitText void LimitText( int nChars = 0 );ParametersnCharsSpecifies the length (in bytes) of the text that the user can enter. If this parameter is 0, the text length is set to UINT_MAX bytes. This is the default behavior. 我是想自己设计一个通用类:// EditNum.cpp : implementation file//#include "stdafx.h"#include "usermanager.h"#include "EditNum.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CEditNumCEditNum::CEditNum(){ // Initialize the variables m_nLetters = 0;}CEditNum::~CEditNum(){}BEGIN_MESSAGE_MAP(CEditNum, CEdit) //{{AFX_MSG_MAP(CEditNum) ON_WM_CHAR() ON_CONTROL_REFLECT(EN_MAXTEXT, OnMaxtext) //}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CEditNum message handlersvoid CEditNum::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: Add your message handler code here and/or call default if ((nChar >= '0' && nChar <= '9') || (nChar == 8)) { if(nChar != 8) { ++m_nLetters; } if(m_nLetters > m_nMaxLetters) { return; } } else { return; } CEdit::OnChar(nChar, nRepCnt, nFlags);}void CEditNum::SetMaxNumberLetters(UINT nMaxNumLetters){ m_nMaxLetters = nMaxNumLetters;}void CEditNum::OnMaxtext() { // TODO: Add your control notification handler code here }然后:CEditNum m_ctrlEdit;就可以实现限制输入字符数目的功能. 没有这个必要啊.因为定义的这个类没有增加任何功能,限制字符输入的功能CEdit已经有了啊.你只需要在OnInitDialog中调用它的LimitText就行了,为什么要自己写一个呢? 你可以在程序的任何地方用LimitText重新设置啊. 晕啊,输入数字只需设置一下number就行了.faint~~~~~~~ :P///我给你说的类没有增加任何功能的吗> 关于BMP图片的显示?? 一个listctrl奇怪的问题 我觉得Win7下,界面库意义不大,Win7本身界面够炫了 请问,这个界面用哪个ODBC_API函数打开的? 如何设置CListCtrl控件(Report类型)行高? 《深入浅出MFC(第二版)》对于现在的初学者是否还适用吗? 怎样使对话框在启动时就是隐藏的?? 函数 “手册“是什么东西?? 二进制问题!不是很简单!!!! 我的表格控件在行列过大的时候为什么MemDC.CreateCompatibleDC(pdc)失败? 奇怪问题~~~~~
void LimitText( int nChars = 0 );ParametersnCharsSpecifies the length (in bytes) of the text that the user can enter. If this parameter is 0, the text length is set to UINT_MAX bytes. This is the default behavior.
// EditNum.cpp : implementation file
//#include "stdafx.h"
#include "usermanager.h"
#include "EditNum.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif/////////////////////////////////////////////////////////////////////////////
// CEditNumCEditNum::CEditNum()
{
// Initialize the variables
m_nLetters = 0;
}CEditNum::~CEditNum()
{
}
BEGIN_MESSAGE_MAP(CEditNum, CEdit)
//{{AFX_MSG_MAP(CEditNum)
ON_WM_CHAR()
ON_CONTROL_REFLECT(EN_MAXTEXT, OnMaxtext)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////
// CEditNum message handlersvoid CEditNum::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
if ((nChar >= '0' && nChar <= '9') || (nChar == 8))
{
if(nChar != 8)
{
++m_nLetters;
} if(m_nLetters > m_nMaxLetters)
{
return;
}
}
else
{
return;
}
CEdit::OnChar(nChar, nRepCnt, nFlags);
}void CEditNum::SetMaxNumberLetters(UINT nMaxNumLetters)
{
m_nMaxLetters = nMaxNumLetters;}void CEditNum::OnMaxtext()
{
// TODO: Add your control notification handler code here
}然后:
CEditNum m_ctrlEdit;就可以实现限制输入字符数目的功能.
faint~~~~~~~
///
我给你说的类没有增加任何功能的吗>