Не могу понять в чём может быть ошибка. Код ниже никогда не вызывает функцию ResultCallBack. Смотрю через spy++ сообщения отсылаются и получается ответ, но функция колбэка при этом не вызывается, подскажите что я делаю не так?
#include <Windows.h>
#include <iostream>
bool test = false;
VOID CALLBACK ResultCallBack(HWND hwnd, UINT uMsg, ULONG_PTR dwData, LRESULT
lResult) {
test = true;
}
int main() {
HWND hwnd = (HWND)0x00120726;
while (!test) {
SendMessageCallback(hwnd, WM_NCHITTEST, NULL, MAKELPARAM(555, 333), ResultCallBack, NULL);
//получается бесконечный цикл
}
system("pause");
}
spy++
В документации же ясно написано
If the target window belongs to a different thread from the caller, then the callback function is called only when the thread that called SendMessageCallback also calls GetMessage, PeekMessage, or WaitMessage.
Ваша программа явно делает SendMessageCallback для "чужого" окна. Поэтому пока ваша программа не сделает GetMessage, PeekMessage, or WaitMessage, ваш callback вызван не будет.
Мгновенный (синхронный) вызов callback происходит только в том случае, если вы вызываете SendMessageCallback для "своего" окна, т.е. окна, принадлежащего вызывающему потоку.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники