15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Как задать максимальное число символов в EditBox

Вариант1:

CEdit::LimitText(int nChars = 0);
CEdit::SetLimitText(UINT nMax);

Вариант2:

При помощи Class Wizard связать переменную CString с окошком редактирования и в Class Wizard установить максимальное количество символов. Затем добавить событие EN_CHANGE и в это событие добавить строку UpdateData(true).

Вариант3:

Обработать сообщение EN_CHANGE для окошка редактирования:

void CMydlgDlg::OnChangeEdit4() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CDialog::OnInitDialog()
	// function to send the EM_SETEVENTMASK message to the control
	// with the ENM_CHANGE flag ORed into the lParam mask.
	
	// TODO: Add your control notification handler code here
//
	int maxChars = 6;  // Максимальное кол-во символов

	CEdit *pWnd = (CEdit *)GetDlgItem(IDC_EDIT1); // замените Вашим ID
//
	if (pWnd->GetWindowTextLength() > maxChars)
	{
		CString str;
		pWnd->GetWindowText(str);
		str = str.Left(maxChars);
		pWnd->SetWindowText(str);
		pWnd->SetSel(maxChars,-1);
	}
	
}