Я недавно начал изучать Win32 API, используя этот учебник:
http://www.winprog.org/tutorial/ (хотя я использую C ++, а не C, как в учебнике), в настоящее время я экспериментирую с "поле редактирования »- функция, в которой я пытаюсь сравнить текст, написанный в поле редактирования, с другой строкой символов.Код:
#define IDC_MAIN_EDIT 101
Код:
case WM_CREATE:
{
HFONT hfDefault;
HWND hEdit;
hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "",
WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL,
0, 0, 100, 100, hwnd, (HMENU)IDC_MAIN_EDIT, GetModuleHandle(NULL), NULL);
if(hEdit == NULL)
MessageBox(hwnd, "Could not create edit box.", "Error", MB_OK | MB_ICONERROR);
hfDefault = GetStockObject(DEFAULT_GUI_FONT);
SendMessage(hEdit, WM_SETFONT, (WPARAM)hfDefault, MAKELPARAM(FALSE, 0));
}
break;
case WM_SIZE:
{
HWND hEdit;
RECT rcClient;
GetClientRect(hwnd, &rcClient);
hEdit = GetDlgItem(hwnd, IDC_MAIN_EDIT);
SetWindowPos(hEdit, NULL, 0, 0, rcClient.right, rcClient.bottom, SWP_NOZORDER);
}
break;
Код:
bool comparison (HWND hEdit) {
LPWSTR pszText;
DWORD dwTextLength;
DWORD dwBufferSize;
dwTextLength = GetWindowTextLength(hEdit);
dwBufferSize = dwTextLength + 1;
GetWindowText(hEdit, pszText, dwBufferSize);
if(pszText == TEXT("3")) {
return true;
}
else {
return false;
}
}
Проблема, когда я вызываю функцию «сравнения», заключается в том, что pszText и hEdit arenне инициализирован.Я понимаю, почему pszText нет, и я попытался использовать new / delete, чтобы исправить это, но я не могу заставить его работать.Я понятия не имею о HEdit.Возможно, я неправильно использую функцию GetWindowText?Код предупреждения:
предупреждение C4700: используется неинициализированная локальная переменная 'pszText' предупреждение C4700: используется неинициализированная локальная переменная 'hEdit'
Ошибка проверки во время выполнения (появляется, когда я использую функциюи это только один из них) Код:
Ошибка проверки времени выполнения # 3 - переменная 'hEdit' используется без инициализации