大家都知道在8086汇编中,我们可以直接利用int 8h中断来达到计时的目的。显然,Win32
编程是不会直接让用户来操作中断的。Windows提供了定时器来达到相同的目的。
当用户需要使用定时器时,要向Windows申请,SetTimer;结束时,需要释放,KillTmer。
需要注意的是,Windows定时器还是基于时钟中断的,所以精度是55ms。如果用户设定一个
任意时间产生中断,则可能存在一定的误差。
用法参见代码:
一、资源文件定义
#include <resource.h>
#define DLG_MAIN 1
#define ICO_1 1
#define ICO_2 2
#define IDC_SETICON 100
#define IDC_COUNT 101
ICO_1 ICON "1.ico"
ICO_2 ICON "2.ico"
DLG_MAIN DIALOG 50,50,113,40
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "定时器例子"
FONT 9,"宋体"
{
ICON ICO_1,IDC_SETICON,8,9,18,21
LTEXT "计数:",-1,35,16,25,10
LTEXT "",IDC_COUNT,62,16,40,10
}
二、主体代码
.386
.model flat,stdcall
option casemap:none
include windows.inc
include user32.in