У меня есть текстовое поле CEdit, которое является частью панели свойств и допускает только числовые значения (положительные целые числа). Поле работает нормально, когда люди вводят нечисловые значения, но когда они удаляют значение в поле, появляется диалоговое окно с сообщением: «Пожалуйста, введите положительное целое число».
Вот ситуация:
1. У меня есть число (скажем, 20) в поле.
2. Я удаляю число.
3. Я получаю диалоговое окно с ошибкой.
Кто-нибудь может мне сказать как я могу перехватить это событие и поместить туда значение по умолчанию?
Вот как выглядит моя панель свойств:
const int DEFAULT_VALUE = 20;
class MyPropertyPane:public CPropertyPane
{
//....
private:
CEdit m_NumericBox;
int m_value;
//....
public:
afx_msg void OnEnChangeNumericBox();
//....
}
void MyPropertyPane::MyPropertyPane()
{
// Set a default value
m_value = DEFAULT_VALUE;
}
//....
void MyPropertyPane::DoDataExchange(CDataExchange* pDX)
{
DDX_Control(pDX, IDC_NUMERIC_BOX, m_NumericBox);
// this sets the displayed value to 20
DDX_Text(pDX, IDC_NUMERIC_BOX, m_value);
}
//....
void MyPropertyPane::OnEnChangeNumericBox()
{
// Somebody deleted the value in the box and I got an event
// saying that the value is changed.
// I try to get the value from the box by updating my data
UpdateData(TRUE);
// m_value is still 20 although the value is
// deleted inside the text box.
}