除了OnTime()外还有什么控制程序运行时间的函数.

monical 2001-12-10 02:56:57
因为我的程序中没有窗口所以无法使用SetTimer()与OnTime(),请问还有其他能达到定时效果的方法没有??

或者怎样在本来没有窗口的程序中为了使用SetTimer() OnTime()而建立一个窗口??


各位大虾帮忙啊!!
...全文
192 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
whool 2001-12-10
  • 打赏
  • 举报
回复
setTimer()试可以的了,你将窗口句柄设为NULL,然后她 还有一个CALLBACK函数,只要你制定这个函数,当定时器消息到时,就会自定调用你的函数。
或者你可于永多媒体定时器SetTimerEvent()不用窗口,而且特别准确,他是一个单独的线程,系统再忙也不会丢失定时器消息。
whool 2001-12-10
  • 打赏
  • 举报
回复
setTimer()试可以的了,你将窗口句柄设为NULL,然后她 还有一个CALLBACK函数,只要你制定这个函数,当定时器消息到时,就会自定调用你的函数。
或者你可于永多媒体定时器SetTimerEvent()不用窗口,而且特别准确,他是一个单独的线程,系统再忙也不会丢失定时器消息。
monical 2001-12-10
  • 打赏
  • 举报
回复
登陆了就可以发问了.
JoeXu 2001-12-10
  • 打赏
  • 举报
回复
另,friend,你现在如果在的话,我有个问题?我刚才写了个贴子,可是我发现好象没有点进去,怎么回事?不会是我现在还没有资格发问把?
monical 2001-12-10
  • 打赏
  • 举报
回复
TO JoeXu(Joe):
NO process and NO thread.
呵呵~~~~ 不菜就不问这种问题了.
amoroso 2001-12-10
  • 打赏
  • 举报
回复
LARGE_INTEGER litmp;
LONGLONG QPart1,QPart2;

QueryPerformanceFrequency(&litmp);
LONGLONG llFreqCounter=LONGLONG(litmp.QuadPart/(你需要的频率));
QueryPerformanceCounter(&litmp);
QPart2 = litmp.QuadPart;
while(条件满足)
{
QPart1 = QPart2;
//你的工作
do
{
QueryPerformanceCounter(&litmp);
QPart2 = litmp.QuadPart;
}while(QPart2-llFreqCounter<QPart1);
}
JoeXu 2001-12-10
  • 打赏
  • 举报
回复
通信等待超时:
这个不是很简单的吗,你随便去哪找段代码都就知道了,不需要我paste上来把,而且基本上server's communicate code is not window!
JoeXu 2001-12-10
  • 打赏
  • 举报
回复
控制程序的运行时间:有更多的方法,如果你是在多process或者是多thread,你可以用mutex或者是event来精确的控制,
你好象比我还菜呀?呵呵,我是刚来到MS的阵营的,以前我就是搞搞机器语言的
kingfish 2001-12-10
  • 打赏
  • 举报
回复
我用它做通信等待超时,我觉得很准
monical 2001-12-10
  • 打赏
  • 举报
回复
TO JoeXu(Joe):
能象你说的最好,我也需要那样的触发机制.
但是能具体说说怎么做吗?
JoeXu 2001-12-10
  • 打赏
  • 举报
回复
实现Timer控制的方法是很多的,GetSystime和GetTickCount都可以是,但是OnTimer的好处是callback,所以你如果想,你可以写一个Timer机制,这个在Linux中是独立的代码。而且who说OnTimer是要靠Window的?不是的,Timer机制不需要Window的介入。
monical 2001-12-10
  • 打赏
  • 举报
回复
TO wavecheng(CryingOwl):
sleep()不行,我是要控制程序的运行时间,运行了一段时间就挺下来.

TO kingfish(今飞):
你的方法精不精确啊??
kingtsui 2001-12-10
  • 打赏
  • 举报
回复
可以拿sock里的select做一个非常精确的时钟使用
kingfish 2001-12-10
  • 打赏
  • 举报
回复
如果为了控制超时等
可以这么做

DWORD StartPoint = GetTickCount();
while((GetTickCount()-StartPoint)<10000)
{
//do something
}
wavecheng 2001-12-10
  • 打赏
  • 举报
回复
sleep(1000)

16,551

社区成员

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

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

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