当我设置编辑控件只接收数字输入,并且添加了一个double类型的变量。
只接收数字输入是没问题,但却无法输入小数,因为小数点无法输入!
令人遗憾的是这个问题在VS2005中还存在……
有什么解决方法吗?
只接收数字输入是没问题,但却无法输入小数,因为小数点无法输入!
令人遗憾的是这个问题在VS2005中还存在……
有什么解决方法吗?
解决方案 »
- 请教高手,关于CListCtrl的自绘。。
- 急啊 快疯了 各位达人来帮帮忙吧
- win32 console 如何调用MFC GUI static lib
- 如何实现像我的电脑中地址栏那样把系统的树结构显示到下拉列表中呢?
- 急!求救!使用ADO对数据库插入操作怎么释放内存
- 关于在Grid中显示图片的问题。
- 三地招聘vc++程序员,想来的都可以试试看,
- 那位老大可以推荐一些关于STL中string的使用方法的文章、教程、讲义、例程,多谢!
- 请问怎么在vc中控制时间函数?
- win7 32位真彩 写文字 显示不出来
- 用一张大图片做背景, 上面添加若干个小图片
- 求助:如何控制另一个exe程序中的菜单操作(高价求助,解决问题为主)
自己处理EN_CHANGE
CcEdit::OnChar(UINT nChar,UINT nRepCnt,UINT nFlags)
{
if(((nChar>='0')&&(nChar<='9'))||(nChar=='.'))
CEdit::OnChar(UINT nChar,UINT nRepCnt,UINT nFlags);
}
Libby,修改后的控件可以在对话框中直接放置吗?
还有一个方法,就是不重载OnChar函数,而是重载PreTranslateMessage(MSG* pMsg)函数,截获所有的键盘消息,如果是数字或点点话就响应。当然,这个前提是你在这个对话框中没有其他的地方要相应键盘消息。例子如下:
BOOL CsDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message==WM_KEYDOWN)
{
if((int(pMsg->wParam)>=96&&int(pMsg->wParam)<=105)//小键盘0-9
||int(pMsg->wParam)==8||int(pMsg->wParam)==110||int(pMsg->wParam)==229)
if (::GetKeyState(VK_SHIFT) >= 0) //shift没有被按下
{
return CWnd::PreTranslateMessage(pMsg);
}
else
return true;
else
return true;
}
return CWnd::PreTranslateMessage(pMsg);
}
重载后要在对话框头文件里声明。