CEdit :: ModifyStyle(),当在CDialog :: OnInitDialog中设置es_number时dosallow 0

时间:2012-06-05 20:10:17

标签: visual-c++

我有一个编辑控件,只能在1到99之间取整数。要实现这一点,我使用了,modifystyle()和limittext()。有没有办法限制输入0?

3 个答案:

答案 0 :(得分:0)

您无需使用代码控制值限制它。 如果使用向导子类化(添加变量)编辑控件会更容易,您可以选择UINT类型并在此处设置最小值和最大值。 也不要忘记将样式设置为ES_NUMBER(在编辑控件属性中将Number设置为True)。

答案 1 :(得分:0)

如果您绝对需要,则必须从CEdit派生一个类并相应地处理输入。渲染“不可接受的字符”的气球可能有点难以给出在线错误。只有当你计划在多个地方使用这样的类(编辑控制)时,该类才有用,最好是在不同的范围内。

答案 2 :(得分:0)

这与原始帖子中的问题完全不同。

确保您的旋转控件立即跟随Z顺序中的编辑控件(Tab键顺序)。 在资源集微调器样式中:UDS_AUTOBUDDY UDS_SETBUDDYINT,UDS_ALIGNRIGHT,。 这将使微调器成为:选择编辑控件作为伙伴,在编辑框中设置整数,将自身置于编辑控件中的右边缘。

为此,在微调器集的属性中:“Auto Buddy”为True,“Set Buddy Integer”为True,“Alingment”为右对齐。

您必须为编辑控件设置最小值和最大值,现在在EN_CHANGE通知的命令处理程序中处理它。

将此代码放在处理程序中。

void CYourDlg::OnEnChangeEditNum()
{
    int iValue = GetDlgItemInt(IDC_EDIT1);
    if(iValue < 1 || iValue > 99)
    {
        m_Edit.ShowBalloonTip(_T("Number Out of Range"), _T("Value must fall between 1 and 99."), TTI_INFO_LARGE);
    }

}