如何限制编辑框中的准许字符 如何限制编辑框中的准许字符 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果用户在编辑控件中只允许接收数字,可以使用一个标准的编辑控件并指定新的创建标志ES_NUMBERS,它是Windows 95新增加的标志,该标志限制 编辑控件只按收数字字符。如果用户需要复杂的编辑控件,可以使用Microsoft 的屏蔽编辑控件,它是一个很有用的OLE定制控件。 如果希望不使用OLE 定制控件自己处理字符,可以派生一个CEdit 类并处理WM_CHAR消息,然后从编辑控件中过滤出特定的字符。首先,使用ClassWizard 建立一个 CEdit的派生类,其次,在对话类中指定一个成员变量将编辑控件分类在OnInitdialog 中调用CWnd: : SubclassDlgItem .//In your dialog class declaration (.H file )private : CMyEdit m_wndEdit ; // Instance of your new edit control .//In you dialog class implementation (.CPP file )BOOL CSampleDialog : : OnInitDialog ( ){ //Subclass the edit lontrod . m_wndEdit .SubclassDlgItem (IDC_EDIT,this ); …} 使用ClassWizard处理WM_CHAR消息,计算nChar参量并决定所执行的操作,用户可以确定是否修改、传送字符。下例说明了如何显示字母字符,如果字符是字母字符,则调用CWnd ; OnChar,否则不调用OnChar.//Only display alphabetic dharacters .void CMyEdit : : OnChar (UINT nChar , UINT nRepCnt , UITN nFlags ){ //Determine if nChar is an alphabetic character . if (: : IsCharAlpha ( ( TCHAR) nChar ) ) CEdit : : OnChar (nChar, nRepCnt , nFlags );} 如果要修改字符,则不能仅仅简单地用修改过的nChar调用CEdit : : OnChar,然后CEdit: : OnChar调用CWnd: : Default获取原来的wParam 和lParam 的值 ,这样是不行的。要修改一个字符,需要首先修改nChar,然后用修改过的nChar调用CWnd: : DefWindowProc。下例说明了如何将字符转变为大写: //Make all characters uppercasevoid CMyEdit : : OnChar (UINT nChar , UINT nRepCnt , UINT nFlags ){ //Make sure character is uppercase . if (: : IsCharAlpha ( .( TCHAR) nChar) nChar=: : CharUpper (nChar ) ; //Bypass default OnChar processing and directly call //default window proc. DefWindProc (WM_CHAR, nChar , MAKELPARAM (nRepCnt , nFlags )) ;} 使用SkinPPWTL.DLL界面库出现问题 用过cximage的人进来拿分 CRecordSet.Open的问题 VS.net 怎么在2000 pro sp2 上安装 已经安装了 IIS 菜鸟问题,送分了 VC高高手请进来,问个ScrollWindow函数问题 枚举获得计算机支持的串口号,错在哪? 找MFC高手写一个自助设备的后台程序 什么叫“状态回调”?谢谢您! 疵点检测能否提供个思路?小白 喜糖--大家快来接呀! 请教各位创建三态下压按钮
定新的创建标志ES_NUMBERS,它是Windows 95新增加的标志,该标志限制 编辑控
件只按收数字字符。如果用户需要复杂的编辑控件,可以使用Microsoft 的屏蔽
编辑控件,它是一个很有用的OLE定制控件。
如果希望不使用OLE 定制控件自己处理字符,可以派生一个CEdit 类并处理
WM_CHAR消息,然后从编辑控件中过滤出特定的字符。首先,使用ClassWizard 建
立一个 CEdit的派生类,其次,在对话类中指定一个成员变量将编辑控件分类在
OnInitdialog 中调用CWnd: : SubclassDlgItem .//In your dialog class declaration (.H file )
private :
CMyEdit m_wndEdit ; // Instance of your new edit control .//In you dialog class implementation (.CPP file )
BOOL CSampleDialog : : OnInitDialog ( )
{ //Subclass the edit lontrod .
m_wndEdit .SubclassDlgItem (IDC_EDIT,this ); …
}
使用ClassWizard处理WM_CHAR消息,计算nChar参量并决定所执行的操作,用
户可以确定是否修改、传送字符。下例说明了如何显示字母字符,如果字符是字母
字符,则调用CWnd ; OnChar,否则不调用OnChar.
//Only display alphabetic dharacters .
void CMyEdit : : OnChar (UINT nChar , UINT nRepCnt , UITN nFlags )
{
//Determine if nChar is an alphabetic character .
if (: : IsCharAlpha ( ( TCHAR) nChar ) )
CEdit : : OnChar (nChar, nRepCnt , nFlags );
}
如果要修改字符,则不能仅仅简单地用修改过的nChar调用CEdit : : OnChar,
然后CEdit: : OnChar调用CWnd: : Default获取原来的wParam 和lParam 的值 ,这
样是不行的。要修改一个字符,需要首先修改nChar,然后用修改过的nChar调用
CWnd: : DefWindowProc。下例说明了如何将字符转变为大写:
//Make all characters uppercase
void CMyEdit : : OnChar (UINT nChar , UINT nRepCnt , UINT nFlags )
{
//Make sure character is uppercase .
if (: : IsCharAlpha ( .( TCHAR) nChar)
nChar=: : CharUpper (nChar ) ; //Bypass default OnChar processing and directly call
//default window proc.
DefWindProc (WM_CHAR, nChar , MAKELPARAM (nRepCnt , nFlags )) ;
}