Я работаю над программой, которая должна работать с импортированной DLL.Я могу загрузить DLL и нормально выполнять функции внутри нее.
Проблема возникает, когда мне нужно извлечь данные, которые она отправила с Send/PostMessage
.
В документации сказано:
MSG_PSKCHARRDY
Числовое значение: WM_USER + 1001 или 0x400 + 0x3E9 или 0x7E9 или 2025. Это сообщение отправляется из DLL в окно, дескриптор которого передается при вызове fnStartSoundCard.Он отправляется всякий раз, когда из приемника доступен символ ASCII, или если в режиме передачи, когда символ был отправлен звуковой картой.
Следующие параметры отправляются вместе с этим сообщением:
wParam = Символ ASCII (от 0 до 255)
lParam = -1, если это переданный символ, или номер канала приема (0-49)отправляет сообщение.
Я добавил это как случай в моем WindProc как case: WM_USER + 1001:
, и любой код внизу выполняется, когда вызывается функция fnStartSoundCard
Я знаю, что он получает сообщение.
Но когда я пытаюсь напечатать wParam
как строку символов, я всегда получаю исключение в конце моей функции DispatchMessage(&msg)
здесь:
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
Возникло исключение 0x76524463 (ucrtbase.dll) в PSK31.exe:
0xC0000005: Место чтения нарушения доступа 0x0000004D.
Мой обработчик сообщений выглядит следующим образом:
case WM_USER + 1001:
if (hWnd == GetActiveWindow()) {
char textChar;
SOMETHING = (char*)wParam;
printf(SOMETHING);
Sleep(1000);
}
break;
Как я могу извлечь символ из сообщения?