1 から 99 までの整数のみを取る編集コントロールがあります。これを実現するために、modifystyle() と limittext() を使用しました。0 の入力を制限する方法はありますか?
3 に答える
コードを使用して値を制限するように制御する必要はありません。ウィザードを使用して編集コントロールをサブクラス化(変数を追加)すると、より簡単になります。ここでUINTタイプを選択し、最小値と最大値を設定できます。また、スタイルをES_NUMBERに設定することを忘れないでください(編集コントロールのプロパティでNumberをTrueに設定します)。
これは、元の投稿の問題とはまったく異なる問題です。
スピン コントロールが、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);
}
}
絶対に必要な場合は、からクラスを派生させ、CEdit
それに応じて入力を処理する必要があります。「容認できないキャラクター」と書かれた吹き出しをレンダリングすると、online-errorを出すのが少し難しいかもしれません。このクラスは、そのようなクラス (編集コントロール) を複数の場所で、できれば異なる範囲で使用する予定がある場合にのみ役立ちます。