,参数lpszNewText 指向用来替换
的字符串。参数bCanUndo 的值为TRUE 说明替换是可以被撤消的。
如果在编辑控件中只允许接收数字, 可以在一个标准的编辑控件中指定标志
ES_NUMBERS,该标志限制编辑控件只按收数字字符。如果用户需要复杂的编辑控件,可以
使用微软公司提供的屏蔽编辑控件,它是一个很有用的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 implcomntation (.CPP file )
BOOL CSampleDialog : : OnInitDialog ( )
{
…
//Subclass the edit lontrod .
m_wndEdit.SubclassDlgItem (IDC_EDIT,this );
…
}
然后使用ClassWizard 处理WM_CHAR 消息,计算nChar 并决定所执行的cāo作,用户可
以确定是否修改、传送字符。
下例说明了如何显示字母字符,如果字符是字母字符,则调用CWnd::OnChar,否则不
调用OnChar。
//Only display alphabetic dharacters .
void CMyEdit::OnChar (UINT nChar,UINT nRepCnt,UINT nFlags)
{
//Determine if nChar is an alphabetic character .
if (::IsCharAlpha ((TCHAR) nChar))
CEdit::OnChar (nChar, nRepCnt , nFlags );
}
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·108·
如果要修改字符,则不能仅仅简单地用修改过的nChar 调用CEdit::OnChar,然后用
CEdit::OnChar 调用CWnd::Default 获取原来的wParam 和lParam 的值。要修改一个字符,
需要首先修改nChar,然后用修改过的nChar 调用CWnd: : DefWindowProc。下例说明了如何
将字符转变为大写。
//Make all charact