Существует форма, в ней Edit.
При открытии окна (OnShowWindow) говорю эдиту ограничивать ввод:
SendDlgItemMessage(IDC_EDTPASSW, EM_SETLIMITTEXT,
7L, 0L);
Ошибка вот в чем:
Если поставить значение больше 7 при наборе текста в эдит вылетает ошибка о недоступности памяти.
Работаю с эдитом так (вдруг неправильно)

:
int EditLen = (int)SendDlgItemMessage(IDC_EDTLOGIN, EM_LINELENGTH, 0L, 0L);
char* lpszBuffer = new char[EditLen];
SendDlgItemMessage(IDC_EDTLOGIN, EM_GETLINE, 0L, (LPARAM)lpszBuffer);
if (userIni.strUserName != NULL)
ZeroMemory(userIni.strUserName, sizeof(userIni.strUserName));
if ((strlen(lpszBuffer)) > 0)
{
userIni.strUserName = new char[strlen(lpszBuffer)];
strcpy(userIni.strUserName, lpszBuffer);
}
Подскажите, почему может вылетать ошибка с памятью плиз.
... << RSDN@Home 1.1.3 stable >>
Здравствуйте, alilua-jah, Вы писали:
AJ>Существует форма, в ней Edit.
AJ>При открытии окна (OnShowWindow) говорю эдиту ограничивать ввод:
AJ> SendDlgItemMessage(IDC_EDTPASSW, EM_SETLIMITTEXT, 7L, 0L);
AJ>Ошибка вот в чем:
AJ> Если поставить значение больше 7 при наборе текста в эдит вылетает ошибка о недоступности памяти.
AJ> Работаю с эдитом так (вдруг неправильно)
:
AJ> int EditLen = (int)SendDlgItemMessage(IDC_EDTLOGIN, EM_LINELENGTH, 0L, 0L);
AJ> char* lpszBuffer = new char[EditLen];
AJ> SendDlgItemMessage(IDC_EDTLOGIN, EM_GETLINE, 0L, (LPARAM)lpszBuffer);
AJ> if (userIni.strUserName != NULL)
AJ> ZeroMemory(userIni.strUserName, sizeof(userIni.strUserName));
AJ> if ((strlen(lpszBuffer)) > 0)
AJ> {
AJ> userIni.strUserName = new char[strlen(lpszBuffer)];
AJ> strcpy(userIni.strUserName, lpszBuffer);
AJ> }
AJ>Подскажите, почему может вылетать ошибка с памятью плиз.
Было у меня нечто подобное, помогло вот это:
GetWindowTextLength(GetDlgItem(hDlg,IDC_EDTLOGIN))+1
hDlg — хендл окна родителя твоего эдита, попробуй, может поможет
Здравствуйте, RMikola, Вы писали:
AJ>>Подскажите, почему может вылетать ошибка с памятью плиз.
RM>Было у меня нечто подобное, помогло вот это:
RM>GetWindowTextLength(GetDlgItem(hDlg,IDC_EDTLOGIN))+1
RM>hDlg — хендл окна родителя твоего эдита, попробуй, может поможет
Не помогло

Самое главное что в Debug работает гладко, а в Release — фигу.
... << RSDN@Home 1.1.3 stable >>
Здравствуйте, _Jah, Вы писали:
_J>Здравствуйте, RMikola, Вы писали:
AJ>>>Подскажите, почему может вылетать ошибка с памятью плиз.
RM>>Было у меня нечто подобное, помогло вот это:
RM>>GetWindowTextLength(GetDlgItem(hDlg,IDC_EDTLOGIN))+1
RM>>hDlg — хендл окна родителя твоего эдита, попробуй, может поможет
_J>Не помогло
_J>Самое главное что в Debug работает гладко, а в Release — фигу.
Странно, я откомпилил твой кусок — все работает нормально! Только вот ты забыл в
(IDC_EDTPASSW, EM_SETLIMITTEXT, 7L, 0L) указать окно родителя — след. образом:
(
hDlg,IDC_EDTPASSW, EM_SETLIMITTEXT, 7L, 0L), у меня без него просто не компилилось, а так и debug и release работают нормально.
Здравствуйте, RMikola, Вы писали:
RM>Странно, я откомпилил твой кусок — все работает нормально! Только вот ты забыл в
RM>(IDC_EDTPASSW, EM_SETLIMITTEXT, 7L, 0L) указать окно родителя — след. образом:
RM>(hDlg,IDC_EDTPASSW, EM_SETLIMITTEXT, 7L, 0L), у меня без него просто не компилилось, а так и debug и release работают нормально.
Ну вот я об энтом же

А
hDlg я не забыл, я просто с MFC работаю.
Возникло подозрение что это глюк MFC

Сегодня убил vc6, ставлю 7. А вдруг поможет...
... << RSDN@Home 1.1.3 stable >>