其实很早就想过这个问题,一直没有实现,后来学了C++ Builder,有这样的代码,
意思就是只能输入0-9和'-',',',和backspace,我倒是知道VC里edit可以选
数字,就是只能输入数字,但如果想完成上面说的这种情况,怎么做?
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if((Key>'9'||Key<'0')&&(Key!='-'&&Key!=','&&Key!='\b'))
{
Key = 0;
}
}
意思就是只能输入0-9和'-',',',和backspace,我倒是知道VC里edit可以选
数字,就是只能输入数字,但如果想完成上面说的这种情况,怎么做?
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if((Key>'9'||Key<'0')&&(Key!='-'&&Key!=','&&Key!='\b'))
{
Key = 0;
}
}
解决方案 »
- 回车键的处理,高手帮一下忙
- VC单文档程序初始运行对话框
- 自定义图像浏览控件,应该对MFC的哪个控件子类化?
- VC中怎么添加一个View类
- MMD,货款被骗,欲哭无泪啊
- 【菜鸟问题】如何几个工程共存
- 求救:问题一、我在Combobox中按回车没有反应(控件为dropdown型)?二、回车后如何使光标跳到对话框的下一个控件?
- 动态链接库刚连上的时候是哪个函数?释放的时候又是哪个?
- 在ListBox加入文本该用什么函数?(SDK编程)
- 求救!!!利用消息钩子中的外壳钩子函数实现截获系统活动窗口的标题和程序名???
- 请问我一个对话框里有100个编辑框,怎么给它们批量赋值呢?
- 求给ComboBox中的ScrollBar换肤的代码,告诉我原理也行啊
switch(nChar)
{
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
case VK_BACK:
bRet = TRUE;
break;
default:
break;
}
if(bRet)
CEdit::OnChar(nChar, nRepCnt, nFlags);
对你的dlg上的一个变量绑定生成CMyEdit m_Edit
与你在程序中用m_Edit.SubClassWindow(IDC_EDIT);
在CMyEdit的OnChar 中进行过滤。
BEGIN_MESSAGE_MAP(CMyEdit, CEdit)
//{{AFX_MSG_MAP(CMyEdit)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
ON_WM_CHAR(WM_CHAR, OnChar)END_MESSAGE_MAP()或者通用的BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
if(WM_RBUTTONDOWN == pMsg->message)
if(pMsg->hwnd == GetDlgItem(IDOK)->GetSafeHwnd())
AfxMessageBox("右键点击Button1");
return CDialog::PreTranslateMessage(pMsg);
} 这种方法感谢jenf