求助:MFC中有关WM_CREATE消息的说明.
我只知道在创建完一个窗口后,显示窗口前要调用OnCreate函数,由于Windows应用程序是一种消息处理机制,当创建完一个窗口后,Windows应用程序就处于等待消息的...
我只知道在创建完一个窗口后,显示窗口前要调用OnCreate函数,由于Windows应用程序是一种消息处理
机制,当创建完一个窗口后,Windows应用程序就处于等待消息的状态,如果我在OnCreate函数中定义一个计时器,
SetTimer(1,1,NULL),也就是每一豪秒发送一个OnTimer函数,可这种情况只有在OnCreate函数一直被调用,并
且调用的很频繁,每一毫秒就发送WM_CREATE(这里的一毫秒是SetTimer中的一毫秒,一秒也是一样),然后调用
SetTimer。这就是我不理解WM_CREATE消息的地方,难道是一个应用程序在创建后就一直以很快的速度发送
WM_CREATE消息?请帮我解说下怎么才发送WM_CREATE消息,谢谢!
当我在一个按钮控件上调用SetTimer(1,1000,NULL),然后在OnTimer函数中调用取得当前时间的函数为什么就没用呢? 展开
机制,当创建完一个窗口后,Windows应用程序就处于等待消息的状态,如果我在OnCreate函数中定义一个计时器,
SetTimer(1,1,NULL),也就是每一豪秒发送一个OnTimer函数,可这种情况只有在OnCreate函数一直被调用,并
且调用的很频繁,每一毫秒就发送WM_CREATE(这里的一毫秒是SetTimer中的一毫秒,一秒也是一样),然后调用
SetTimer。这就是我不理解WM_CREATE消息的地方,难道是一个应用程序在创建后就一直以很快的速度发送
WM_CREATE消息?请帮我解说下怎么才发送WM_CREATE消息,谢谢!
当我在一个按钮控件上调用SetTimer(1,1000,NULL),然后在OnTimer函数中调用取得当前时间的函数为什么就没用呢? 展开
2个回答
展开全部
你理解错啦,WM_CREATE 顾名思意就是创建窗口,你一毫秒创建一个窗口怎么了得。
Timer被设置后会一直存在,直到用 KillTimer 删除。
Timer被创建后,每隔一定时间会发送 WM_TIMER 消息,只要加个WM_TIMER 消息处理函数就可以了,当收到WM_TIMER 消息后,程序就会调用函数。
当然,你也可以在创建Timer时指定回调函数。
SetTimer 原形如下,注意 CWnd 类的 SetTimer 方法没有第一个参数:
UINT_PTR SetTimer(
HWND hWnd, // handle to window
UINT_PTR nIDEvent, // timer identifier
UINT uElapse, // time-out value
TIMERPROC lpTimerFunc // timer procedure
);
四个参数分别是:
hWnd 所属的窗口句柄,如果 lpTimerFunc 为空,这个窗口将接收 WM_TIMER 消息。
nIDEvent Timer的ID值,发送 WM_TIMER消息时会附带发送这个值。
uElapse 超时时间。
lpTimerFunc 回函数,如果为空,将发送 WM_TIMER 消息给 hWnd 指定的窗口的消息队列。lpTimerFunc 的函数原型如下:
VOID CALLBACK TimerProc(
HWND hwnd, // handle to window
UINT uMsg, // WM_TIMER message
UINT_PTR idEvent, // timer identifier
DWORD dwTime // current system time
);
Timer被设置后会一直存在,直到用 KillTimer 删除。
Timer被创建后,每隔一定时间会发送 WM_TIMER 消息,只要加个WM_TIMER 消息处理函数就可以了,当收到WM_TIMER 消息后,程序就会调用函数。
当然,你也可以在创建Timer时指定回调函数。
SetTimer 原形如下,注意 CWnd 类的 SetTimer 方法没有第一个参数:
UINT_PTR SetTimer(
HWND hWnd, // handle to window
UINT_PTR nIDEvent, // timer identifier
UINT uElapse, // time-out value
TIMERPROC lpTimerFunc // timer procedure
);
四个参数分别是:
hWnd 所属的窗口句柄,如果 lpTimerFunc 为空,这个窗口将接收 WM_TIMER 消息。
nIDEvent Timer的ID值,发送 WM_TIMER消息时会附带发送这个值。
uElapse 超时时间。
lpTimerFunc 回函数,如果为空,将发送 WM_TIMER 消息给 hWnd 指定的窗口的消息队列。lpTimerFunc 的函数原型如下:
VOID CALLBACK TimerProc(
HWND hwnd, // handle to window
UINT uMsg, // WM_TIMER message
UINT_PTR idEvent, // timer identifier
DWORD dwTime // current system time
);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询