我的问题是,我从edit派生一个类CEditNum,我应该在CEditNum中的哪个消息函数中开始获取字符数目呢?我想让edit框限制输入的是数字个数.
该如何处理呢?  

解决方案 »

  1.   

    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.
      

  2.   

    我是想自己设计一个通用类:
    // 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;就可以实现限制输入字符数目的功能.
      

  3.   

    没有这个必要啊.因为定义的这个类没有增加任何功能,限制字符输入的功能CEdit已经有了啊.你只需要在OnInitDialog中调用它的LimitText就行了,为什么要自己写一个呢?
      

  4.   

    你可以在程序的任何地方用LimitText重新设置啊.
      

  5.   

    晕啊,输入数字只需设置一下number就行了.
    faint~~~~~~~
      

  6.   

    :P
    ///
    我给你说的类没有增加任何功能的吗>