0

1 から 99 までの整数のみを取る編集コントロールがあります。これを実現するために、modifystyle() と limittext() を使用しました。0 の入力を制限する方法はありますか?

4

3 に答える 3

0

コードを使用して値を制限するように制御する必要はありません。ウィザードを使用して編集コントロールをサブクラス化(変数を追加)すると、より簡単になります。ここでUINTタイプを選択し、最小値と最大値を設定できます。また、スタイルをES_NUMBERに設定することを忘れないでください(編集コントロールのプロパティでNumberをTrueに設定します)。

于 2012-06-05T23:19:46.123 に答える
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 に答える