如何实时显示 程序运行的时间!!!!!!

ccnuxjg 2002-11-14 11:55:23
我想新开一个线程,然后在死循环里面不断的通过GetTickCount的值相减来计算

可是有两个问题:
1、程序效率低下,新线程的大部分时间浪费在循环上面
2、新线程不能操纵界面来显示时间,只有通过发自定义消息来和主线程通信。不知为什么,我的消息发出去了总是不响应:
::PostMessage ( ::GetActiveWindow(), WM_MY_MESSAGE, (WPARAM)time, 0 );

但是我在别的地方测试,我的消息却能够响应。

如何解决!?
...全文
89 点赞 收藏 6
写回复
6 条回复
wj59 2002年11月14日
up
回复 点赞
li01bin 2002年11月14日
timer并不浪费cpu资源,它由独立的硬件支持
回复 点赞
newsb 2002年11月14日
你可以在新线程里面设置Sleep时间,不要不停的循环,这样效率利用不高,
在线程里面完全可以控制显示时间,无论你是工作线程还是界面线程都可以。
你是工作线程,那么你可以将你的显示控件的指针传递进来,就可以不用传递消息了
回复 点赞
ccnuxjg 2002年11月14日
第二个问题已经明白了,
::GetActiveWindow()总是返回空,可能是在静态成员函数里面的原因吧。
我在创建线程的时候,将主程序句柄传给线程就好了。

我不想在OnTimer里面实现该功能,但是又认为这样的线程太费系统资源了。

哪位有更优雅的解决方案???
回复 点赞
alphapiao 2002年11月14日
::GetActiveWindow()改成你主窗口的句柄试试,可以把你的主窗口句柄用全局变量保存起来传给线程
回复 点赞
ljn2 2002年11月14日
降低新线程的优先级,如果只是做个计时器用Timer更合适。
回复 点赞
发动态
发帖子
VC/MFC
创建于2007-09-28

7898

社区成员

42.1w+

社区内容

VC/MFC相关问题讨论
社区公告
暂无公告