0

我有一个编辑控件,它应该只取 1 到 99 之间的整数。为此,我使用了 modifystyle() 和 limittext()。有没有办法限制输入 0?

4

3 回答 3

0

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

确保您的旋转控件紧跟在 Z 顺序(制表顺序)中的编辑控件之后。在资源中设置微调器样式为: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);
    }

}
于 2012-06-06T23:47:43.187 回答
0

如果您绝对需要,则必须从中派生一个类CEdit并相应地处理输入。渲染“不可接受的字符”的气球可能有点棘手,无法给出online-error。仅当您计划在多个位置使用此类(编辑控制)时,该类才有用,最好具有不同的范围。

于 2012-06-06T15:48:34.447 回答
0

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

于 2012-06-05T23:19:46.123 回答