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

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

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

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

如何解决!?
...全文
252 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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更合适。

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧