回调函数 与 主线程 执行顺序疑问
kpszh 2010-01-26 11:17:58 VOID CALLBACK MySendAsyncProc(
HWND hwnd, // handle to destination window
UINT uMsg, // message
DWORD dwData, // application-defined value
)
{
char szWndText[255];
memset(szWndText,0,255);
char *szGameText = (char*)dwData;
int nLen = strlen(szGameText);
GetWindowText(hwnd,szWndText,255);
szWndText[nLen + 1] = 0;
if (lstrcmpi(szGameText,szWndText) == 0)
{
OutputDebugString("Found Hwnd");
}
}
void CTest2Dlg::OnButton3()
{
char *Title = "画板";
::SendMessageCallback(HWND_BROADCAST, WM_PAINT, 0, 0, (SENDASYNCPROC)MySendAsyncProc, (DWORD)Title);
Sleep(2000);//无论这里延时多少
OutputDebugString("Over");
}
注意,无论上面延时多少,总是先输出Over ,然后再输出Found Hwnd,,怎么样办呢?我Sleep(2000)就是想等回调函数被执行,然后再执行OutputDebugString("Over")