这个好像是罗云彬的程序吧,我没学到这啊。但说说自己的看法吧:
这些都是位运算问题,所以,都要把它们转换成二进制来看才清楚。
如,这里的:
F_PAUSE
equ
0001h
F_STOP
equ
0002h
F_COUNTING
equ
0004h
可以看成:0000 0000 0000 0001 B(F_PAUSE)、0000 0000 0000 0010 B(F_STOP)、0000 0000 0000 0100 B (F_COUNTING)
为了表述方便,以下只说它的第0位到第3位,即F_PAUSE是0001 B,其它类推;
在这4个位中,第0位为1,则表示是暂停;第1位是1,则表示停止;第2位为1,则表示正在计算当中;
在程序中,它是用dwOption来判断的。dwOption也转换成二进制形式,然后,从这二进制中判断第0、1、2这前三位分别是否为1或0 ;
.if
dwOption & F_COUNTING
or
dwOption,F_STOP
这的第一句,不管dwOptionr的第0、1位是什么(即暂停或停止),由于F_COUNTING是0100,“与”操作后,都为假,下一句就不执行了;但是,当dwOption的第2位是1,即它正处于计算中,则为真,or
dwOption,F_STOP 是要执行的;则执行这句后,dwOption的第1位是1,它就表示停止了。
其它的也是如此!
==========================
PS:讲得很啰嗦,不知道对LZ是否有用。暂且算是给自己增加一点回贴分吧。