void CALLBACK ShowText2(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime)
{
static i=0;
i++;
CTryTimerDlg::pselfDlg->SetDlgItemInt(IDC_EDIT_SHOW,i);
}
void CTryTimerDlg::OnBtnStart()
{
unsigned int iRet = SetTimer(1,1000,ShowText2);
SetDlgItemInt(IDC_EDIT_SHOW,iRet );
}
、、、、、、、、、、、、、、、、
#include <stdio.h>
#include <stdlib.h>
void InMode (int* mod); //输入定时器计数器的工作方式
void GetIn (int* in); //输入的数值的获取
void InValue (int mode, int* value); //输入定时器计数器的定时时间(us)
void GetInit (int mode, int value, int* init); //获得定时器计数器的初值
int main (void)
{
int mode;
int value;
int init;
while (1)
{
InMode (&mode); //输入定时器计数器的工作方式
InValue (mode, &value); //输入定时器计数器的定时时间(us)
GetInit (mode, value, &init); //获得定时器计数器的初值
printf ("方式%c计时%dus的初值为%xH\n", mode, value, init);
}
return 0;
}
void InMode (int* mod) //输入定时器计数器的工作方式
{
int in;
printf ("工作方式(0-3):\t");
while (1)
{
in = getchar ();
if (in >= '0' && in <= '3') //输入符合条件
break;
else
{
printf ("输入非法,重输:\t");
fflush (stdin); //清空输入缓冲区
}
}
fflush (stdin); //清空输入缓冲区
*mod = in; //方式字返回
}
void GetIn (int* in) //输入的数值的获取
{
int to;
int value = 0;
int num = 0; //输入字符个数
printf ("计时微秒数:\t");
while (1)
{
to = getchar ();
if (to >= '0' && to <= '9') //输入符合条件
value = value * 10 + (to - '0');
else
{
if ('\n' == to)
{
if (0 == num) //还没输入数,重输
{
printf ("输入为空,重输:\t");
continue;
}
break; //输入数合理,退出循环
}
printf ("输入非法,重输:\t");
fflush (stdin); //清空输入缓冲区
value = 0; //重新附初值
}
num ++; //输入字符个数加1
}
fflush (stdin); //清空输入缓冲区
*in = value; //输入的数返回
}
void InValue (int mode, int* value) //输入定时器计数器的定时时间(us)
{
int in;
char flag = 'n';
while ('n' == flag)
{
GetIn (&in);
switch (mode)
{
case '0':
if (in > 0X1FFF + 1) //大于方式的最大允许值
printf ("输入值超过方式0的最大允许值.\n");
else
{
flag = 'y';
*value = in; //返回输入方式0的值
}
break;
case '1':
if (in > 0X0FFFF + 1) //大于方式的最大允许值
printf ("输入值超过方式1的最大允许值.\n");
else
{
flag = 'y';
*value = in; //返回输入方式1的值
}
break;
case '2':
if (in > 0X0FF + 1) //大于方式的最大允许值
printf ("输入值超过方式2的最大允许值.\n");
else
{
flag = 'y';
*value = in; //返回输入方式2的值
}
break;
case '3':
if (in > 0X0FF + 1) //大于方式的最大允许值
printf ("输入值超过方式3的最大允许值.\n");
else
{
flag = 'y';
*value = in; //返回输入方式3的值
}
break;
default:
break;
}
}
}
void GetInit (int mode, int value, int* init) //获得定时器计数器的初值
{
switch (mode)
{
case '0':
*init = 0X1FFF - value + 1;
break;
case '1':
*init = 0X0FFFF - value + 1;
break;
case '2':
*init = 0X0FF - value + 1;
break;
case '3':
*init = 0X0FF - value + 1;
break;
default:
break;
}
}