CSpinButtonCtrl控件处理小数的问题

翻译|其它|编辑:郝浩|2005-04-25 09:25:00.000|阅读 1593 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>


问题来源:

上下控件一般是和一个输入数字的Edit控件一起使用的,而且一般数字应该是整数,最近在项目开发中要求Edit中能输入小数。这样原来的上下控件就要做一些改动了。比如当前的Edit框中是4.3按了上下控件后应该为4和5。

改动思路:

写一个继承CSpinButtonCtrl的类CSpinButtonCtrl,响应OnLButtonDown,在该函数中由与上下控件相关编辑控件中的数字来重新设置上下控件的基点。

OnLButtonDown函数:

void CMySpinButtonCtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
int nRow;
int nUpper;
CMySpinButtonCtrl::GetRange(nRow, nUpper);
/*
*判断编辑框中的输入是否合法
*/

CString strNum;
CMySpinButtonCtrl::GetBuddy()->GetWindowText(strNum);
if ( g_IsNumber(strNum) ==FALSE )
{
MessageBox("请输入合法的数字");
return;
}
else
{
CRect Rect;
CMySpinButtonCtrl::GetWindowRect (&Rect);
if( strNum.Find('.') > 0 )
{
int nDotpos = strNum.Find('.');
int nLength = strNum.GetLength();
strNum = strNum.Left(nDotpos+1);
int pos = atoi(strNum);
if(point.y <((Rect.bottom-Rect.top)/2))
{
CMySpinButtonCtrl::SetPos(pos);
}
else
{
CMySpinButtonCtrl::SetPos(pos + 1);
}
}
else
{
int pos = atoi(strNum);
CMySpinButtonCtrl::SetPos(pos);
}
}

CSpinButtonCtrl::OnLButtonDown(nFlags, point);

}

//其中g_IsNumber是一个判断某个字符串是否是数字(可以是小数)的函数
 


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP