一、控制台打印字符串
#define GRS_USEPRINTF() TCHAR pBuf[1024] = {}
#define GRS_PRINTF(...) \
StringCchPrintf(pBuf,1024,__VA_ARGS__);\
WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE),pBuf,lstrlen(pBuf),NULL,NULL);
......
......
GRS_USEPRINTF();
PMYDATA pDataArray = (PMYDATA)lpParam;
GRS_PRINTF(_T("Parameters = %d, %d\n"),pDataArray->val1, pDataArray->val2);
WriteConsole:多线程访问安全
二、判断子线程是否退出
BOOL GetExitCodeThread (
HANDLE hThread, // in,线程handle,也就是CreateThread()的返回值
LPDWORD lpExitCode //out,存储线程结束代码,也就是线程的返回值
);
说明: 此函数调用成功返回TRUE,失败返回FALSE,只表示这个函数是否调用成功而己.
不能根据返回值来判断一个线程是否结束,而要根据 lpExitCode的值来确定,
lpExitCode 值STILL_ACTIVE 表示线程正在运行.
若线程己经结束,则lpExitCode中存储指定线程的返回值.