Не могу понять в чём может быть ошибка. Код ниже никогда не вызывает функцию 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
для "своего" окна, т.е. окна, принадлежащего вызывающему потоку.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
В 17 стандарте появилась возможность инициализировать переменную внутри условия if (init; condition) Значит я могу сделать так if(int i =12; d < i){} или...
Подскажите, как запустить бесконечный цикл добавления у убирания класса?