Исправил. Текст ниже. Теперь цикл генератора | Код | for (int i = 0; i<lenText; i++)
|
заполняет почему-то все буферы (наверно не правильно определил размер), а | Код | GetWindowText(hEditBox, userInputCode, lenText+1);
|
не копирует текст из поля в буфер. И не вызывается MessageBox.
| Код | BOOL CALLBACK CrDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { char buffer[] = ""; HWND hEditBox; WORD twoChar; unsigned char ch; char calcCode[] = ""; char userInputCode[] = ""; int lenText; switch (uMsg) { case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: hEditBox = GetDlgItem(hDlg, IDC_USER_NAME); lenText = Edit_GetTextLength(hEditBox); GetWindowText(hEditBox, buffer, lenText+1); if ((lenText+1)<0xA) { MessageBox(hDlg, "Your name too short!", "Error", MB_OK | MB_ICONSTOP); return false; } for (int i = 0; i<lenText; i++) { twoChar = buffer[i]*buffer[i+1]; ch = twoChar % 0x20 + 'A'; calcCode[i] = ch; }
hEditBox = GetDlgItem(hDlg, IDC_EDIT1); lenText=Edit_GetTextLength(hEditBox); GetWindowText(hEditBox, userInputCode, lenText+1); if (strcmp(calcCode,userInputCode)) { MessageBox(hDlg, "Password OK.", "Info", MB_OK | MB_ICONASTERISK); return false; } else { MessageBox(hDlg, "Wrong Password!", "Error", MB_OK | MB_ICONSTOP); SendMessage(hEditBox, EM_SETSEL, 0, -1); } break;
case IDCANCEL: EndDialog(hDlg, 0); return true; } break; } return false; }
|
|