我認爲我正確地認爲如果我有一個像這樣的程序來設置回調函數。如何讓控制檯程序接受來自回調函數的數據
void MyCallbackFunction(char* data) {
cout << "some data arrived: " << data << endl;
}
int main(){
//sets up callback
SetDispatchFunction(&MyCallbackFunction));
while(1==1) {
sleep(1000);
}
return 0;
}
那麼,因爲這是一個單線程程序和執行將永遠處理while循環,是沒有辦法的程序來處理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;
}
什麼是'SetDispatchFunction'? –