这是一个子程序,我想把这个调试好了加到另一个工程里,因为要实时显示时间,所以用到了多线程,现在的问题是子线程执行的时候 光标就移动到这行后面,主线程再打印什么东西的时候,屏幕显示就乱套了,怎么能解决啊,下面是代码片段。
void real_time(int X,int Y) //显示时间的函数,用到了光标移动函数,X,Y表示坐标
{
HideCursor(10, 0); //隐藏光标函数
hout = GetStdHandle(STD_OUTPUT_HANDLE);
struct tm *ptr;
ptr = Time();
SetCur(X, Y); //这个函数没贴出,用于移动光标
printf("%d-%d-%d ", ptr->tm_year + 1900, ptr->tm_mon + 1, ptr->tm_mday);
printf("%02d:", ptr->tm_hour);
printf("%02d:", ptr->tm_min);
while (1)
{
ptr = Time();
if (ptr->tm_min == 0)
{
SetCur(X+10, Y);
printf("%02d:%02d:%02d", ptr->tm_hour, ptr->tm_min, ptr->tm_sec);
continue;
}
else
{
if (ptr->tm_sec == 0)
{
SetCur(X+13, Y);
printf("%02d:%02d", ptr->tm_min, ptr->tm_sec);
continue;
}
else
{
SetCur(X+16, Y); //秒要变化,这里移动光标实现覆盖
printf("%02d", ptr->tm_sec);
}
}
}
}
DWORD WINAPI ThreadProc1(LPVOID lpParam) //子线程
{
real_time(0,1); //在第二行打印时间
return 0;
}
void main()
{
system("title 实时时间");
CreateThread(NULL, 0, ThreadProc1, NULL, 0, NULL); //创建线程
printf("\n\n\n"); //这里即使换行,最后的内容
printf("输入序号:"); //下面的代码只是模拟其他线程的操作
int k;
SetCur(0, 4); //即使设置光标到第5行,控制台窗口打印出的依然在子线程后面
scanf("%d", &k);
char ch = getchar();
············
············
}
怎么能让他不受子线程的影响