SendMessageCallback не вызывает функцию callback

87
24 августа 2021, 16:40

Не могу понять в чём может быть ошибка. Код ниже никогда не вызывает функцию 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++

Answer 1

В документации же ясно написано

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 для "своего" окна, т.е. окна, принадлежащего вызывающему потоку.

READ ALSO
Инициализация внутри if

Инициализация внутри if

В 17 стандарте появилась возможность инициализировать переменную внутри условия if (init; condition) Значит я могу сделать так if(int i =12; d < i){} или...

127
each + setinterval +addClass [дубликат]

each + setinterval +addClass [дубликат]

Подскажите, как запустить бесконечный цикл добавления у убирания класса?

345
как передать переменной значение span class

как передать переменной значение span class

Пишу скрипт, вот кусок кода страницы

179
JSON Сериализация Dictionary

JSON Сериализация Dictionary

Помогите плиз, как можно такое заджейсонитьИспользую юнити

204