阅读:1752回复:3
FUNCTION:OnIdle(LONG lCount),谁愿意给我解释一下,它是什么时候被触发,是谁调用的。。。
我正在研究WIN98的运行内核,我在跟踪AP运行时,发现消息运行机制的消息就是通过这个函数触发调用的,但我不知道它又是谁触发调用的,是系统定时触发,还是别的。另外,它的唯一的形参是一个定时变量,具体是怎么控制的不清楚,看MSDN也没有弄明白。其实最可能的就是系统定时触发,但我用DEBUG跟了一下,在WINDOWS没有新消息产生的时候,不对它产生调用,只有我移动了一下鼠标(或别的)时,它才会被调用。看了一下它的定时变量,为0。
谁能给我具体讲一下,先谢谢了。 FUNCTION:OnIdle(LONG lCount),谁愿意给我解释一下,它是什么时候被触发,是谁调用的。。。 [lvyingf 编辑于 2001-07-19 11:07] |
|
沙发#
发布于:2001-07-20 09:13
对于你自己的AP来说,它的确如此(对你的AP,它只做一些状态条更新等内容,如果你没有在这个函数里增加一些后台程序的话)。但对于整个WINDOWS的运行来说,它就是至关重要的一个函数了。因为在RUN()循环中,处理的是AP私有的消息(不一定对,我还在继续分析),此时循环中这个空闲处理函数它做了一件事就是扫描WINDOWS打开的所有进程中有无新的消息,有,就会进行相应的处理。
如果我说的不对,不要见笑,请多指教 |
|
板凳#
发布于:2001-07-19 22:35
那 OnIdle() 都做些什么呢?
里面不会是些 nop 吧? :confused: |
|
|
地板#
发布于:2001-07-19 18:10
OnIdle()函数是在应用程序的消息队列中没有消息时由Run()函数调用。
应用程序的大部分时间都是在应用类的Run()成员函数中打转转,WinMain()函数在调用InitInstance()进行初始化完毕后,就调用Run()处理消息循环。 |
|