代码如下:
ULONG i=0;
char buffer[32]="";
void CALLBACK TimerFunc(HWND handle,ULONG uMsg,ULONG timerid,DWORD timecount)
{
i++;
wsprintf(buffer,"%d",i);
MessageBox(NULL,buffer,NULL,MB_OK);
}void TestSetTimer()
{
ULONG TimerID=SetTimer(NULL,0,1000,(TIMERPROC)TimerFunc);
if(TimerID==0)
{
MessageBox(NULL,"SetTimer error",NULL,MB_OK);
//return FALSE;
}
}问题:
1.回调函数里不会执行弹出窗口。而主函数改成if(TimerID!=0)时,会正常每1秒弹出一个窗口。
这个怎么解释?
2.怎么才能让回调函数正常执行?
ULONG i=0;
char buffer[32]="";
void CALLBACK TimerFunc(HWND handle,ULONG uMsg,ULONG timerid,DWORD timecount)
{
i++;
wsprintf(buffer,"%d",i);
MessageBox(NULL,buffer,NULL,MB_OK);
}void TestSetTimer()
{
ULONG TimerID=SetTimer(NULL,0,1000,(TIMERPROC)TimerFunc);
if(TimerID==0)
{
MessageBox(NULL,"SetTimer error",NULL,MB_OK);
//return FALSE;
}
}问题:
1.回调函数里不会执行弹出窗口。而主函数改成if(TimerID!=0)时,会正常每1秒弹出一个窗口。
这个怎么解释?
2.怎么才能让回调函数正常执行?
解决方案 »
- vs2012编译的DLL,在winXP上无法使用
- 想好好的学习一下GDI+,不知道怎么入手,请指教比较好的教材
- visual c++ 网络高级编程 源代码
- 只报错:Error executing link.exe.是什么意思
- 关于在vc++中,使用模版的问题???
- 如果我想在两分钟之内存贮几万个点的坐标,那我用ODBC好呢还是DAO好呢?我用ACCESS
- 有谁知道哪里有《Teach Yourself Database Programming with Visula c++》的电子书
- 驱动与用户程序通讯,阻塞等待用户程序响应的问题
- libcurl发包时修改包头
- 100分!!! 怎样得到RichEditView中光标的行列位置?
- 求教SetTimer函数的用法
- 本论坛插入的代码用的是什么字体
TimerID!=0 显然是真啊,就可以执行0为假,其它为真,包括负数。
解决方法:用非模态对话框Create
{
i++;
wsprintf(buffer,"%d",i);
WritePrivateProfileString("APP","Key",buffer,"testini");
}void TestSetTimer()
{
ULONG TimerID=SetTimer(NULL,0,1000,(TIMERPROC)TimerFunc);
}问题不在这。简化后,发现回调函数根本就没有执行。
{
i++;
wsprintf(buffer,"%d",i);
WritePrivateProfileString("APP","Key",buffer,"testini");
}void TestSetTimer()
{
ULONG TimerID=SetTimer(NULL,0,1000,(TIMERPROC)TimerFunc);
}问题不在这。简化后,发现回调函数根本就没有执行。第一步必须知道SetTimer是否成功,没有成功,设断点,watch里输入@err,hr,看看GetLastError的结果。
可以用MFC的TRACE
如果不是MFC可以用 OutDebugString