Я думаю, что я прав, полагая, что если у меня есть программа, подобная этой, которая устанавливает функцию обратного вызова.
void MyCallbackFunction(char* data) {
cout << "some data arrived: " << data << endl;
}
int main(){
//sets up callback
SetDispatchFunction(&MyCallbackFunction));
while(1==1) {
sleep(1000);
}
return 0;
}
тогда, потому что это однопоточная программа, и выполнение всегда будет обрабатывать времяв цикле, программа не может обработать обработчик MyCallbackFunction?
Если это так, если я не хочу использовать несколько потоков, какие опции у меня есть, чтобы разрешить обработку функции обратного вызова?
Я решил привести реальный пример для демонстрации.
#include <iostream>
using namespace std;
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
BOOL CALLBACK EnumChildProc(HWND hwndChild, LPARAM lParam)
{
char szText[100] = {0};
GetWindowText(hwndChild, szText, 100);
if (lstrlen(szText) < 1) return true;
cout << "Window text: " << szText << endl;
return TRUE;
}
int main(int argc, char* argv[])
{
//latch onto Google Chrome if running
HWND windowHandle = FindWindow("Chrome_WidgetWin_0", 0);
if(windowHandle)
EnumChildWindows(windowHandle, EnumChildProc, 0);
//loop so program doesn't stop
while(1==1) {
Sleep(2000);
}
return 0;
}